新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 交通信号灯的控制

交通信号灯的控制

作者:时间:2012-09-14来源:网络收藏
此程序是在黄莺老师的源程序上加以修改,在单片机板子上运行成功,这里是板子的硬件资料http://www.51hei.com/mcu/1019.html,数码管是四位子,程序没有进行

点击浏览下一页

 #include reg51.h>#define uint unsigned int#define uchar unsigned charuint temp,temp1,temp2,num,shi,ge,i,j;uchar code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};sbit WX1=P0^0;sbit WX2=P0^1;sbit WX3=P0^2;sbit WX4=P0^3;sbit NBL=P2^2;sbit NBY=P2^1;sbit NBR=P2^0;sbit DXL=P2^5;sbit DXY=P2^4;sbit DXR=P2^3;void init(){P0=0xff;P2=0xff;temp=0;temp1=0;temp2=0;shi=0;ge=0;TMOD=0x21;  TH0=0x3c; //50msTL0=0xb0;EA=1;ET0=1;TF0=0;TR0=1;}void delay(uchar z){uchar x,y;for(x=110;x>0;x--)for(y=z;y>0;y--);}void display(){shi=num/10;ge=num%10;P1=table[ge];WX3=1;WX2=0;WX1=0;WX4=0;delay(10);WX2=1;P1=table[shi];WX2=1;WX3=0;WX1=0;WX4=0;delay(10);WX3=1;  }void time0() interrupt 1 using 1{temp++;temp1++;TH0=0x3c;TL0=0xb0;TR0=1; }void main(){init();while(1){if(temp==0){DXR=1;NBY=1;DXL=0;NBR=0;num=21;temp1=0;for(i=20;i>0;i--){num--;while(temp1!=20){display();}temp1=0;}}if(temp==400)  {DXY=1;NBR=0;DXL=0;num=3;j=0; for(i=7;i>0;i--){j++;if(j%2==0){num--;}temp2=temp;DXL=!DXL;  //灯闪烁while(temp-temp2!=10){display();};}     }if(temp==470){   DXL=1;DXY=0;NBR=0;num=3;temp1=0;for(i=3;i>0;i--){num--;while(temp1!=20){display();}temp1=0;}if(temp==530){DXY=1;DXR=0;NBR=1;NBL=0;num=26;temp1=0;for(i=25;i>0;i--){num--;while(temp1!=20){display();}temp1=0;}}if(temp==1030){DXY=1;DXR=0;NBL=0;num=3;j=0; for(i=7;i>0;i--){j++;if(j%2==0){num--;}temp2=temp;NBL=!NBL;  //灯闪烁while(temp-temp2!=10){display();};}     }if(temp==1100){   DXL=1;DXR=0;NBY=0;num=3;temp1=0;for(i=3;i>0;i--){num--;while(temp1!=20){display();}temp1=0;}temp=0;}}}}


评论


相关推荐

技术专区

关闭