基于AT89c51单片机实现的交通灯 - 图文

2026/4/30 2:51:45

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


基于AT89c51单片机实现的交通灯 - 图文.doc 将本文的Word文档下载到电脑
搜索更多关于: 基于AT89c51单片机实现的交通灯 - 图文 的文档
相关推荐
相关阅读
× 游客快捷下载通道(下载后可以自由复制和排版)

下载本文档需要支付 10

支付方式:

开通VIP包月会员 特价:29元/月

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:xuecool-com QQ:370150219