版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、精选优质文档-倾情为你奉上#include<reg52.h>#define uchar unsigned char#define uint unsigned intuchar code table=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40;/*digit display port*sbit led_w1=P11;sbit led_w2=P10;sbit led_w3=P13;sbit led_w4=P12;/*define led port *sbit R1=P24; /east and west red leds
2、bit Y1=P23; /east and west yellow ledsbit G1=P22; /east and west green ledsbit R2=P25; /south and north red ledsbit Y2=P26; /south and north yellow ledsbit G2=P27; /south and north green led/*define key*sbit k0=P30; /emergencysbit k1=P31; /east and west passsbit k2=P32; /south and north passsbit k3=
3、P33; /start and subtract 1sbit k4=P34; /pause and add 1sbit k5=P35; /set time/*define variable*bit flag,flag_t;uchar dx_time,nb_time;uchar cnt,pass_time,cnt1,y_time;uchar k0num,k1num,k2num,k3num,k4num,k5num;/*define key*void delay(uint i)uint x,y;for(x=i;x>0;x-)for(y=110;y>0;y-); void timer0_i
4、nit()TMOD=0x11;TH0=(65536-50000)/256;TL0=(65536-50000)%256;TH1=(65536-50000)/256;TL1=(65536-50000)%256;EA=1;ET0=1;ET1=1;void led_display(uchar dx,nb)uchar dx1,dx2,nb1,nb2;dx2=dx/10;dx1=dx%10;nb2=nb/10;nb1=nb%10;if(dx>99)led_w1=1;led_w2=1;elseled_w1=0;P0=tabledx1;delay(5);led_w1=1;if(dx<10&
5、&dx>0) led_w2=1;elseled_w2=0;P0=tabledx2;delay(5);led_w2=1;if(nb>99)led_w3=1;led_w4=1;elseled_w3=0;P0=tablenb1;delay(5);led_w3=3;if(nb<10&&nb>0) led_w4=1;elseled_w4=0;P0=tablenb2;delay(5);led_w4=4;/*light work*void circle_led()if(!flag)if(pass_time>5)led_display(pass_time-
6、5,pass_time);R1=1;Y1=1;G1=0;/east and west passR2=0;Y2=1;G2=1;/south and north stopif(pass_time<=5&&pass_time>0)if(cnt>=10) led_display(pass_time,pass_time);else led_display(100,pass_time);R1=1;G1=1; /east and west yellow led flashif(cnt>=10)Y1=0;else Y1=1;R2=0;Y2=1;G2=1;if(pass_
7、time=0)pass_time=nb_time;flag=1;elseif(pass_time>5)led_display(pass_time,pass_time-5);R1=0;Y1=1;G1=1;/east and west stopR2=1;Y2=1;G2=0;/south and north passif(pass_time<=5&&pass_time>0)if(cnt>=10) led_display(pass_time,pass_time);else led_display(pass_time,100);R1=0;Y1=1;G1=1;R2=
8、1;G2=1; /south and north yellow led flashif(cnt>=10)Y2=0;else Y2=1;if(pass_time=0)pass_time=dx_time;flag=0;void emergency() /east and west,south and north stopled_display(0,0);R1=0;Y1=1;G1=1;R2=0;Y2=1;G2=1;void dx_pass() /east and west pass,south and north stopled_display(100,100);if(y_time<=5
9、&&y_time>0)TR1=1;R1=0;Y1=1;G1=1;R2=1;G2=1; /south and north yellow led flashif(cnt1>=10)Y2=0;else Y2=1;if(y_time=0)TR1=0;R1=1;Y1=1;G1=0;R2=0;Y2=1;G2=1;void nb_pass() /south and north pass,east and west stopled_display(100,100);if(y_time<=5&&y_time>0)TR1=1;R1=1;G1=1;if(cnt
10、1>=10)Y1=0;/east and west yellow led flashelse Y1=1;R2=0;Y2=1;G2=1;if(y_time=0)TR1=0;R1=0;Y1=1;G1=1;R2=1;Y2=1;G2=0;/*keyboard scan*void keyscan() if(!k5num) if(k0=0) /*emergency*delay(10);if(k0=0)while(!k0);TR0=0;k0num=1; if(!k1num&&!k0num)if(k1=0)delay(10);if(k1=0)while(!k1);k1num=1;k2nu
11、m=0;y_time=5; /单方向通行时,黄灯闪烁时间TR0=0;TR1=1;if(!k2num&&!k0num)if(k2=0)delay(10);if(k2=0)while(!k2);k1num=0;k2num=1;y_time=5;/单方向通行时,黄灯闪烁时间TR0=0;TR1=1;if(k3=0)delay(10);if(k3=0)while(!k3);if(k1num|k2num)pass_time=dx_time; /由东西或南北通行返回时,重新开始执行。k0num=0;k1num=0;k2num=0;k4num=0;k5num=0;TR0=1;TR1=0;fla
12、g_t=0;if(!k4&&!k0num)/pausedelay(10);if(k4=0)while(!k4);TR0=0;k4num=1; if(k4num=1) /暂停键按下时,才可以调整两个方向通行时间if(k5=0)delay(10);if(k5=0)k5num+;while(!k5);switch(k5num)case 1:TR0=1;flag_t=1; /调整时间时,pass_time值不变。k5num=1;break;case 2:k5num=2;break;case 3:TR0=0;k5num=0;pass_time=dx_time; /重新赋值break;if
13、(k5num!=0)if(k3=0)delay(10);if(k3=0)while(!k3);switch(k5num)case 1:dx_time-;if(dx_time<10)dx_time=99;break;case 2:nb_time-;if(nb_time<10)nb_time=99;break;if(k4=0)delay(10);if(k4=0)while(!k4);switch(k5num)case 1:dx_time+;if(dx_time>=100)dx_time=10;break;case 2:nb_time+;if(nb_time>=100)nb_
14、time=10;break;void main()timer0_init();dx_time=45;nb_time=30;pass_time=dx_time;while(1)keyscan();if(k0num)emergency();elseswitch(k4num)case 0:if(!k1num&&!k2num)circle_led();elseif(k1num) dx_pass();if(k2num) nb_pass();break;case 1: switch(k5num)case 0:if(!k1num&&!k2num)circle_led();el
15、seif(k1num) dx_pass();if(k2num) nb_pass();break;case 1:R1=1;Y1=1;G1=1; /调整时间时,关闭所有灯R2=1;Y2=1;G2=1;if(cnt<=10)led_display(100,nb_time);elseled_display(dx_time,nb_time);break;case 2:R1=1;Y1=1;G1=1;/调整时间时,关闭所有灯R2=1;Y2=1;G2=1;if(cnt<=10)led_display(dx_time,100);elseled_display(dx_time,nb_time);break;break;void timer0()
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年河南省义马市高二历史下册期末考试模拟卷及答案
- 2025年吉林省梅河口市高二生物下册期末考试模拟检测卷含完整答案【名校卷】
- 2026年辽宁省凌源市高二历史上册期末考试测试卷(综合卷)附答案
- 2026中国疫苗行业产品差异化与竞争优势分析报告
- 2026金属冶炼行业现状分析及投资风险评估报告
- 2026电缆剪产品寿命周期评估与回收再利用体系报告
- 2026中国液体化工物流行业企业竞争力评价与提升路径研究报告
- 2026中国眼科高值耗材带量采购政策影响与企业应对策略报告
- 2026建筑工业化转型路径与市场前景分析报告
- 2026中国液体化工物流市场资本运作与投融资策略研究报告
- 2026云南曲靖市水务投资限公司招聘工程专业技术人员(第77期)易考易错模拟试题(共500题)试卷后附参考答案
- 设备点检员安全综合水平考核试卷含答案
- 2026年中秋国庆节前安全专题培训(危化化工版)
- 2026国家会展中心(天津)有限责任公司人员招聘9人笔试备考试题及答案详解
- 制造业数字化转型2026年培训课件
- 科粤版九年级化学上册第二单元《空气、物质的构成与组成》单元检测卷(含答案)
- 儿童淋巴结肿大诊治共识
- 甘肃省医保政策培训课件
- 舞台灯光调试与安装施工方案
- (正式版)DB65∕T 4733-2023 《石化行业雷电灾害隐患排查指南》
- 学堂在线 庄子哲学导读 章节测试答案
评论
0/150
提交评论