单片机交通灯程序带车流量Word格式文档下载.docx

上传人:b****5 文档编号:8333621 上传时间:2023-05-11 格式:DOCX 页数:14 大小:16.78KB
下载 相关 举报
单片机交通灯程序带车流量Word格式文档下载.docx_第1页
第1页 / 共14页
单片机交通灯程序带车流量Word格式文档下载.docx_第2页
第2页 / 共14页
单片机交通灯程序带车流量Word格式文档下载.docx_第3页
第3页 / 共14页
单片机交通灯程序带车流量Word格式文档下载.docx_第4页
第4页 / 共14页
单片机交通灯程序带车流量Word格式文档下载.docx_第5页
第5页 / 共14页
单片机交通灯程序带车流量Word格式文档下载.docx_第6页
第6页 / 共14页
单片机交通灯程序带车流量Word格式文档下载.docx_第7页
第7页 / 共14页
单片机交通灯程序带车流量Word格式文档下载.docx_第8页
第8页 / 共14页
单片机交通灯程序带车流量Word格式文档下载.docx_第9页
第9页 / 共14页
单片机交通灯程序带车流量Word格式文档下载.docx_第10页
第10页 / 共14页
单片机交通灯程序带车流量Word格式文档下载.docx_第11页
第11页 / 共14页
单片机交通灯程序带车流量Word格式文档下载.docx_第12页
第12页 / 共14页
单片机交通灯程序带车流量Word格式文档下载.docx_第13页
第13页 / 共14页
单片机交通灯程序带车流量Word格式文档下载.docx_第14页
第14页 / 共14页
亲,该文档总共14页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

单片机交通灯程序带车流量Word格式文档下载.docx

《单片机交通灯程序带车流量Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《单片机交通灯程序带车流量Word格式文档下载.docx(14页珍藏版)》请在冰点文库上搜索。

单片机交通灯程序带车流量Word格式文档下载.docx

0xc0,0xf9,0xa4,0xb0,

0x99,0x92,0x82,0xf8,

0x80,0x90,0x88,0x83,

0xc6,0xa1,0x86,0x8e};

voiddelayms(uintxms);

intDX_Num=23,NB_Num=10;

//数码管显示数字

intnumt0;

//定时器计时

intJS_NB_Num,JS_DX_Num;

intNB_Num_GREEN,DX_Num_GREEN;

intXZ=0;

//按键2选择

intBJ=0;

//按键1选择

intJS=0;

//按键5选择

intTemp1=1;

//中断是否

inttemp=1;

//数码管是否循环

//intflag=0;

intDX_Flag=0,NB_Flag=1;

//红绿灯状态

intDX_RED=33,DX_GREEN=15,DX_YELLOW=3;

//红绿灯时间

intNB_RED=38,NB_GREEN=10,NB_YELLOW=3;

intNB_BLUE=10,DX_BLUE=10;

//左转时间

voiddisplay(ucharnum1dis,ucharnum2dis);

voidkeyscan();

voidinit()//中断红绿灯初始化函数

{

Beer=1;

//蜂鸣器关断

TMOD=0x01;

//中断程序初始化

TH0=(65536-50000)/256;

TL0=(65536-50000)%256;

EA=1;

ET0=1;

TR0=1;

//EX1=1;

//开外部中断1

//IT1=1;

//外部中断下降沿触发

//EX0=1;

//开外部中断0

//IT0=1;

DX_Red=0;

//红绿灯初始化

DX_Yellow=1;

DX_Green=1;

NB_Red=1;

NB_Yellow=1;

NB_Green=0;

}

voidmain()//主函数

init();

while

(1)

{

keyscan();

if(temp==1)

{

display(NB_Num,DX_Num);

}

}

voiddisplay(ucharnum1dis,ucharnum2dis)//数码管显示函数

{

intNB_Shi,NB_Ge,DX_Shi,DX_Ge;

NB_Shi=num1dis/10;

NB_Ge=num1dis%10;

DX_Shi=num2dis/10;

DX_Ge=num2dis%10;

P0=table[NB_Shi];

//送十位段选数据

P2=0xfe;

delayms(3);

P0=table[NB_Ge];

P2=0xfd;

P0=table[DX_Shi];

P2=0xfb;

P0=table[DX_Ge];

P2=0xf7;

voidkeyscan()//按键扫描函数

if(key1==0)

{

delayms(10);

if(key1==0)

{

if(BJ==0)

{

BJ=1;

Beer=0;

Temp1=2;

temp=2;

NB_Blue=1;

DX_Blue=1;

DX_Yellow=1;

DX_Green=1;

DX_Red=0;

NB_Yellow=1;

NB_Green=1;

NB_Red=0;

while(!

key1);

}

elseif(BJ==1)

{

Beer=1;

BJ=0;

NB_Red=1;

NB_Green=0;

DX_Num=DX_RED-10;

NB_Num=NB_GREEN;

NB_Flag=1;

DX_Flag=0;

temp=1;

Temp1=1;

}

}

if(key2==0)

if(key2==0)

if(XZ==0)

XZ=1;

EA=0;

DX_Num=DX_RED;

key2);

elseif(XZ==1)

{

DX_Green=0;

DX_Red=1;

XZ=2;

DX_Num=DX_GREEN;

NB_Num=NB_RED;

elseif(XZ==2)

XZ=0;

EA=1;

}

if(key3==0)

if(key3==0)

if(XZ==1)

DX_Num++;

DX_RED++;

NB_Num++;

NB_GREEN++;

key3);

elseif(XZ==2)

DX_Num++;

DX_GREEN++;

NB_RED++;

if(key4==0)

if(key4==0)

DX_Num--;

DX_RED--;

NB_Num--;

NB_GREEN--;

key4);

DX_Num--;

DX_GREEN--;

NB_RED--;

if(key5==0)

if(key5==0)

if(JS==0)

JS=1;

DX_Num=0;

NB_Num=0;

EX1=1;

IT1=1;

EX0=1;

IT0=1;

key5);

elseif(JS==1)

JS=0;

//DX_Green=1;

//DX_Red=0;

if(NB_Num>

5)

{

if(DX_Num>

{

NB_Num_GREEN=NB_GREEN;

DX_Num_GREEN=DX_GREEN;

JS_NB_Num=NB_Num;

JS_DX_Num=DX_Num;

NB_GREEN=JS_NB_Num*(NB_Num_GREEN+DX_Num_GREEN)/(JS_NB_Num+JS_DX_Num);

DX_GREEN=NB_Num_GREEN+DX_Num_GREEN-NB_GREEN;

NB_RED=NB_GREEN+23;

DX_RED=DX_GREEN+23;

}

}

EX1=0;

IT1=0;

EX0=0;

//关外部中断0

IT0=0;

//关外部中断下降沿触发

DX_Num=DX_RED-10;

NB_Num=NB_GREEN;

NB_Flag=1;

DX_Flag=0;

Temp1=1;

temp=1;

voiddelayms(uintxms)//延时函数

uinti,j;

for(i=xms;

i>

0;

i--)//i=xms即延时约xms毫秒

for(j=110;

j>

j--);

voidT0_time()interrupt1

numt0++;

if(BJ==1)

P2=0xff;

if(numt0>

4)

numt0=0;

Beer=~Beer;

if(Temp1==1)

if(numt0>

20)

numt0=0;

NB_Num--;

DX_Num--;

if(NB_Num<

1)

if(NB_Flag==1)

NB_Flag=2;

NB_Num=NB_YELLOW;

NB_Green=1;

NB_Yellow=0;

}

elseif(NB_Flag==2)

NB_Flag=0;

NB_Yellow=1;

NB_Red=0;

NB_Blue=0;

elseif(NB_Flag==0)

NB_Red=1;

NB_Green=0;

DX_Blue=1;

}

if(DX_Num<

if(DX_Flag==0)

DX_Flag=1;

DX_Red=1;

DX_Green=0;

NB_Blue=1;

elseif(DX_Flag==1)

DX_Flag=2;

DX_Num=DX_YELLOW;

DX_Green=1;

DX_Yellow=0;

elseif(DX_Flag==2)

DX_Num=DX_RED;

DX_Red=0;

DX_Blue=0;

voidT1EXT()interrupt2//使用了外部中断1的键盘扫描子函数

EX1=0;

NB_Num++;

}

EX1=1;

voidT0EXT()interrupt0//使用了外部中断1的键盘扫描子函数

EX0=0;

if(JS==1)

{if(numt0>

DX_Num++;

EX0=1;

}

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 人文社科 > 法律资料

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2