新手的我写到这就没有头绪了,#include
typedef unsigned int u16;
typedef unsigned char u8;
sbit RED_A=P0^0;
sbit YELLOW_A=P0^1;
sbit GREEN_A=P0^2;
sbit RED_B=P0^3;
sbit YELLOW_B=P0^4;
sbit GREEN_B=P0^5;
主要要弄清楚交通信号灯的原理,想好哪些灯是同步的,灯之间如何变化,只要把这个弄好了,大体上就完成了。
如果你想做得更好一点,建议加个时间显示用来倒计时,用中断来定时。
定义好交通灯花样,要求不高就用延时函数控制交通灯时间间隔。以前写过1个,用的P1口取反后接的交通灯。代码供参考
#include <reg51.h> //预处理(定义了特殊寄存器的名称)
//定义交通灯花样数据
unsigned char code design[]={0x11,0x33,0x35,0x1e,0x2e};
// 延时函数
void delay_ms(unsigned int time)
{
unsigned int t;
for(;time>0;time--)
{
t=1600;
while(t--);
}
}
/***************************************************************************
* 函数名: 主函数main
* 函数功能:让交通灯按照花样中的数据显示
* 入口参数:无
* 出口参数:无
***************************************************************************/
void main()
{
int j;
while(1)
{
for(j=1;j<=4;j++)
{
P1=design[j]; //读交通灯数据写到P1口
if(j%2)
delay_ms(500);
else
delay_ms(100);
}
}
}