当前位置:首页 > 基于AT89c51单片机实现的交通灯 - 图文
temp1 = 4; temp2 = 34; TMOD=0x01; TH0=(65535-50000)/256; TL0=(65535-50000)%6; EA=1; ET0=1; TR0=1; while(Key1==1 && Key2==1 && Key3==1) { if(flag1 == 4 && flag2 ==1) { flag2=0; temp1--; temp2--; ARED_NB=0; AYELLOW_NB=1; AGREEN_NB=1; BRED_NB=0; BYELLOW_NB=1; BGREEN_NB=1; ARED_DX=1; AYELLOW_DX=0; AGREEN_DX=1; BRED_DX=1; BYELLOW_DX=0; BGREEN_DX=1; shi1=0; shi2=temp2/10; ge1=temp1; ge2=temp2; if(temp1==0) { temp1 = 4; break; } } display(ge1,shi1,ge2,shi2); //调用数码管显示函数 } flag1 = 5; }
void State6()//第6个状态(东西绿灯亮27秒,南北红灯亮27秒)函数的定义 {
uint temp; temp = 30; TMOD=0x01; TH0=(65535-50000)/256; TL0=(65535-50000)%6; EA=1; ET0=1; TR0=1; while(Key1==1 && Key2==1 && Key3==1)
25
{ if(flag1 == 5 && flag2 ==1) { flag2=0; temp--; ARED_NB=0; AYELLOW_NB=1; AGREEN_NB=1; BRED_NB=0; BYELLOW_NB=1; BGREEN_NB=1; ARED_DX=1; AYELLOW_DX=1; AGREEN_DX=0; BRED_DX=1; BYELLOW_DX=1; BGREEN_DX=0; shi1=temp / 10; shi2=temp / 10; ge1=temp % 10; ge2=temp % 10; if(temp == 3) { temp = 30; break; } }
display(ge1,shi1,ge2,shi2); //调用数码管显示函数 } flag1 = 6; }
void State7()//第7个状态(东西绿灯闪 3秒,南北红灯亮 3秒)函数的定义 {
uint temp; temp = 3; TMOD=0x01; TH0=(65535-50000)/256; TL0=(65535-50000)%6; EA=1; ET0=1; TR0=1; while(Key1==1 && Key2==1 && Key3==1) { if(flag1 == 6 && flag2 ==1) { flag2=0; temp--; ARED_NB=0; AYELLOW_NB=1; AGREEN_NB=1; BRED_NB=0; BYELLOW_NB=1; BGREEN_NB=1; ARED_DX=1; AYELLOW_DX=1; AGREEN_DX ~AGREEN_DX;
=
26
BRED_DX=1; BYELLOW_DX=1; BGREEN_DX ~BGREEN_DX; shi1 = 0; shi2 = 0; ge1 = temp ; ge2 = temp ; if(temp == 0) { temp = 3; break; } }
display(ge1,shi1,ge2,shi2); //调用数码管显示函数 } flag1 = 7; }
void State8()//第8个状态(东西黄灯亮 4秒,南北黄灯亮 4秒)函数的定义 {
uint temp; temp = 4; TMOD=0x01; TH0=(65535-50000)/256; TL0=(65535-50000)%6; EA=1; ET0=1; TR0=1; while(Key1==1 && Key2==1 && Key3==1) { ARED_NB=1; AGREEN_NB=1; BRED_NB=1; BGREEN_NB=1; ARED_DX=1; AGREEN_DX=1; BRED_DX=1; BGREEN_DX=1; if(flag1 == 7 && flag2 ==1) { flag2=0; temp --; AYELLOW_DX=0; BYELLOW_DX=0; AYELLOW_NB=0; BYELLOW_NB=0; shi1 = 0; shi2 = 0; ge1=temp % 10; ge2= ge1;
=
27
if(temp == 0) { temp = 4; break; } }
display(ge1,shi1,ge2,shi2); //调用数码管显示函数 } flag1 = 0; }
void display(uint shi1,uint ge1,uint shi2,uint ge2) {
P3 = 0x00; DXweixuan1 = 1; P1=~table[ge1]; delay(5); //调用延时函数 P3 = 0x00; DXweixuan2 = 1; P1=~table[shi1]; delay(5); P3 = 0x00; NBweixuan1 = 1; P1=~table[ge2]; delay(5); P3 = 0x00; NBweixuan2 = 1; P1=~table[shi2]; delay(5); }
void xtimer0() interrupt 1 //定时器 1 {
TH0=(65535-50000)/256; TL0=(65535-50000)%6; if(++aa>=20) // aa为20时是1s { aa = 0; flag2 = 1; } }
void delay(uint z) //延时函数的定义
//数码管显示函数的定义 28
共分享92篇相关文档