宿州学院本科生毕业设计 基于单片机AT89C51的交通灯控制器的设计
k=0;/*清零*/
switch(k)/*switch 语句*/ {
case 0:SN=SN_G,WE=SN_G+Y;break;/*南北方向显示时间为南北方向绿灯通行时间,东西方向显示时间为南北方向绿灯通行时间加黄灯闪亮时间*/
case 1:SN=Y,WE=Y;break; /*东西南北方向显示时间均为黄灯闪亮时间*/
case 2:SN=WE_G+Y,WE=WE_G;break;/*南北方向显示时间为东西方向绿灯通行时间加黄灯闪亮时间,东西方向显示时间为东西方向绿灯通行时间*/
case 3:SN=Y,WE=Y;break; /*东西南北方向显示时间均为黄灯闪亮时间*/ } } }
/*交通灯函数*/ void light() {
P1=deng[k];/*交通灯对应着k的值变化*/
if(P1==deng[1]&&count==0)/*当南北方向亮黄灯且count=0时,执行程序*/
{
TH1=(65536-50000)/256;
}
TL1=(65536-50000)%6;/*延时50ms*/
P1=0xDF;/*南北方向黄灯熄灭,东西方向亮红灯*/ }
else
if(P1==deng[3]&&count==0)/*当东西方向亮黄灯且count=0时,执行程序*/
{
TH1=(65536-300000)/256;
TL1=(65536-300000)%6;/*延时50ms*/
P1=0xFB;/*南北方向亮红灯,东西方向黄灯熄灭*/
22
宿州学院本科生毕业设计 基于单片机AT89C51的交通灯控制器的设计
}
}
/*数码管函数*/ void led() { }
/*主函数*/
void main(void) {
init();/*调用程序初始化函数*/ {
key();/*调用键盘程序*/ light();/*调用交通灯函数*/ led(); /*调用数码管函数*/ }
while(1)/*无条件循环*/
P2=weima[0],P0=duanma[SN];/*显示南北方向个位*/ P2=weima[1],P0=duanma[SN/10];/*显示南北方向十位*/ delayms(10);/*延时*/
P2=weima[2],P0=duanma[WE];/*显示东西方向个位*/ delayms(10);/*延时*/
P2=weima[3],P0=duanma[WE/10];/*显示东西方向十位*/ delayms(10); /*延时*/ delayms(10);/*延时*/
}
23