交通灯完整代码

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
{
unsigned int j;
for(;i>0;i--)
for(j=0;j<60;j++)
{;}
}
void display(uchar a,uchar b,uchar c,uchar d)
{
wela=1;
P0=0xfe;
wela=0;
dula=1;
P0=table[a]; //北十位
dula=0;
wela=0;
dula=1;
P0=table[d]; //西个位
dula=0;
Delay(2);
}
void timer0() interrupt 1 using 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
shu++;
if(shu%20==0)
{
xianshi--;
void init()//初始化函数
{
shu=0;
xianshi=30;
xianshi2=35;
aa=3;
bb=0;
cc=3;
dd=5;
P0=0xff;
P1=0;
TMOD=0x01; //用定时器0方式1
EA=1; //打开中断
ET0=1;//打开定时器0中断
TL0=25536/256;
TH0=25536%256;
EX0=1;//外部中断0
EX1=1;//外部中断1
IT0=0;//外部中断0电平触发
IT1=0;//外部中断1电平触发
PX1=1;//设定外部中断1为高优先级
}
void delayms(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void Delay(unsigned int i)//延时程序
while(P33==0){};
P1=0xf3;
xianshi=30;
shu=0;
aa=3;
bb=5;
cc=3;
dd=0;
}
//蜂鸣器
void aaa()
{
loop1:fmq=1;
if(key1==0)
{
delayms(200);
if(key1==1)
while(1)
{
fmq=0;
//delay(200);
{
P0=0xff;
P1=0xf3;//南北绿东西红
while(P32==0){};
P1=0xDE;
xianshi=30;
shu=700;
aa=3;
bb=0;
cc=3;
dd=5;
}
void inter1() interrupt 2 using 3//东西方向绿灯
{
P0=0xff;
P1=0xDE;//东西绿南北红
sbit key2=P3^5;
sbit key3=P3^6;
sbit key4=P3^7;
sbit dula=P2^6;
sbit wela=P2^7;
sbit fmq=P2^3;
uint shu;
uchar xianshi,xianshi2;
uchar aa,bb,cc,dd;
uchar code tablewe[]={
Delay(2);
wela=1;
P0=0xfd;
wela=0;
dula=1;
P0=table[b]; //北个位
dula=0;
Delay(2);
wela=1;
P0=0xfb;
wela=0;
dula=1;
P0=table[c]; //西十位
dula=0;
Delay(2);
wela=1;
P0=0xf7;
xianshi2--;
aa=xianshi/10;
bb=xianshi%10;
cc=xianshi2/10;
dd=xianshi2%10;
}
if(shu==600)
{
P1=0xf5;//南北黄亮,东西依然红灯
xianshi=5;
}
if(shu==700)
{
P1=0xDE;//南北亮红灯,东西绿灯
xianshi=35;
xianshi2=30;
}
if(shu==1300)
{
P1=0xee;//东西亮黄灯,南北红灯
xianshi2=5;
}
if(shu==1400)//再过5s返回
{
shu=0;
xianshi=30;
xianshi2=35;
P1=0xБайду номын сангаас3;//点亮南北绿灯,东西红灯
}
}
void inter0() interrupt 0 using 2 //南北方向绿灯
//fmq=!fmq;
//delay(200);
if(key1==0)
{
delayms(300);
if(key1==1)
goto loop1;
}
}
}
}
//流水灯
void bbb()
{
uchar a;
loop2:P1=0xff;
if(key2==0)
{
delayms(200);
if(key2==1)
a=0xfe;
交通灯完整代码文档全部是精华文档排版清楚质量好
#include <reg52.h>
#include <intrins.h>
#defineuint unsigned int
#defineuchar unsigned char
sbit P32=P3^2;
sbit P33=P3^3;
sbit key1=P3^4;
}
}
//主函数
void main()
{
while(1)
{
while(!key1)aaa();
while(!key2)bbb();
while(!key3)ccc();
while(!key4)ddd();
}
}
0xfe,0xfd,0xfb,0xf7,0xef,0xdf};
uchar code table[]={0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,0x7f,0x6f};
void Delay(unsigned int i);
void delayms(uint z);
dula=0;
numdu++;
delayms(8);
if(key3==0)
{
delayms(200);
if(key3==1)
goto loop3;
}
}
}
}
void ddd()
{
init();
TR0=1;//启动定时器0
P1=0xff;
P1=0xf3;//点亮南北绿灯,东西红灯
while(1)
{
display(aa,bb,cc,dd);
P0=0xff;
wela=0;
if(key3==0)
{
delayms(200);
if(key3==1)
while(1)
{
if(numwe==6)
numwe=0;
wela=1;
P0=tablewe[numwe];
wela=0;
numwe++;
if(numdu==6)
numdu=0;
dula=1;
P0=table[numdu];
while(1)
{
P1=a;
delayms(50);
a=_crol_(a,1);
if(key2==0)
{
delayms(200);
if(key2==1)
goto loop2;
}
}
}
}
//数码管
void ccc()
{
uchar numdu,numwe;
numdu=0;numwe=0;
loop3:wela=1;
相关文档
最新文档