交通灯完整代码.docVIP

  • 19
  • 0
  • 约3.75千字
  • 约 6页
  • 2023-06-12 发布于湖北
  • 举报
#include reg52.h #include intrins.h #define uint unsigned int #define uchar unsigned char sbit P32=P3^2; sbit P33=P3^3; sbit key1=P3^4; 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[]={ 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); 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;x0;x--) for(y=110;y0;y--); } void Delay(unsigned int i)//延时程序 { unsigned int j; for(;i0;i--) for(j=0;j60;j++) {;} } void display(uchar a,uchar b,uchar c,uchar d) { wela=1; P0=0xfe; wela=0; dula=1; P0=table[a]; //北十位 dula=0; 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; 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--; 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=0xf3;//点亮南北绿灯,东西红灯 } } void inter0() interrupt 0 using 2 //南北方向绿灯 { P0=0xff; P1=0xf3;//南北绿 东西红 while(P32==0){}; P1=0xDE; xianshi=30; shu=700; aa=3; bb=0; cc=3;

文档评论(0)

1亿VIP精品文档

相关文档