专注电子技术学习与研究
当前位置:单片机教程网 >> MCU设计实例 >> 浏览文章

交通信号灯的控制

作者:佚名   来源:本站原创   点击数:  更新时间:2010年09月05日   【字体:

  此程序是在黄莺老师的源程序上加以修改,在单片机板子上运行成功,这里是板子的硬件资料http://www.51hei.com/mcu/1019.html,数码管是四位共阳管子,程序没有进行仿真测试



 

 #include <reg51.h>
 #define uint unsigned int
 #define uchar unsigned char
 uint 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; //50ms
  TL0=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;
}
}
}
}
关闭窗口

相关文章