基于Proteus仿真51交通灯毕设.doc

基于Proteus仿真51交通灯毕设.doc

ID:59096346

大小:81.00 KB

页数:15页

时间:2020-09-15

基于Proteus仿真51交通灯毕设.doc_第1页
基于Proteus仿真51交通灯毕设.doc_第2页
基于Proteus仿真51交通灯毕设.doc_第3页
基于Proteus仿真51交通灯毕设.doc_第4页
基于Proteus仿真51交通灯毕设.doc_第5页
资源描述:

《基于Proteus仿真51交通灯毕设.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、基于51单片机的交通灯C语言程序设计2011-05-0707:57十字交叉路口的交通灯控制器,是很常见的课程设计题目。做而论道以前写过一个,功能十分简单。最近,综合了一些百度知道中的题目要求,写出了一个稍稍复杂一点设计方案,使用了大家比较喜欢的C语言编写程序。基本功能如下:(1)东西、南北方向各设有一个绿、黄、红指示灯,两个显示数码管。(2)两个方向交替允许通行,基本放行时间为25s,另外有黄灯闪烁5s。(3)控制人员可以暂停自动的交替,使某个方向可以无限长时间的通行。(4)暂停期间,控制人员可以调整通行的时间,程序中

2、还设置了调整的上下限。(5)暂停之后,灯光将按照设置的通行时间自动变换通行方向。(6)在正常通行期间,可以强制变换通行方向。强制变换的时候,也是要先显示闪烁的黄灯,然后切换到指定的方向。程序用PROTEUS仿真成功,并没有进行硬件实验。仿真截图画面如下。C语言的控制程序如下://------------------------------------------------#include#defineucharunsignedchar#defineuintunsignedintuchardatabu

3、f[4];uchardatasec_dx=30;//东西数默认uchardatasec_nb=30;//南北默认值uchardataset_timedx=30;uchardataset_timenb=30;intn;uchardatab;//定时器中断次数sbitk1=P1^6;//定义5组开关sbitk2=P1^7;sbitk3=P2^7;sbitk4=P3^0;sbitk5=P3^1;sbitYellow_nb=P2^5;//南北黄灯标志sbitYellow_dx=P2^2;//东西黄灯标志sbitGreen_nb

4、=P2^4;sbitGreen_dx=P2^1;sbitRed_nb=P2^6;sbitRed_dx=P2^3;sbitBuzz=P3^7;bitBuzzer_Indicate;bittime=0;//灯状态循环标志bitset=1;//调时方向切换键标志ucharcodetable[10]={//共阴极字型码0x3f,//--00x06,//--1?0x5b,//--2?0x4f,//--30x66,//--4?0x6d,//--50x7d,//--60x07,//--7?0x7f,//--80x6f,//--9//

5、0x00//--NULL};//函数的声明部分voiddelay(intms);//延时子程序voidkey();//按键扫描子程序voidkey_to1();//键处理子程序voidkey_to2();voidkey_to3();voiddisplay();//显示子程序voidlogo();//开机LOGOvoidBuzzer();//主程序voidmain(){TMOD=0X01;TH0=0XD8;TL0=0XF0;EA=1;ET0=1;TR0=1;EX0=1;EX1=1;logo();P2=0Xc3;//开始默

6、认状态,东西绿灯,南北黄灯sec_nb=sec_dx+5;while(1){key();//调用按键扫描程序display();//调用显示程序Buzzer();}}//函数的定义部分voidkey()//按键扫描子程序{if(k1!=1){delay(10);if(k1!=1){while(k1!=1){key_to1();for(n=0;n<40;n++){display();}}}}if(k2!=1){delay(10);if(k2!=1){while(k2!=1){key_to2();for(n=0;n<40;

7、n++){display();}}}}if(k3!=1){TR0=1;//启动定时器Buzzer_Indicate=0;sec_nb=set_timenb;//从中断回复,仍显示设置过的数值sec_dx=set_timedx;if(time==0){P2=0X99;sec_nb=sec_dx+5;}else{P2=0xC3;sec_dx=sec_nb+5;}}if(k4!=1){delay(10);if(k4!=1){while(k4!=1);set=!set;}}if(k5!=1){delay(10);if(k5!=

8、1){while(k5!=1)key_to3();}}}voiddisplay()//显示子程序{buf[1]=sec_dx/10;//第1位东西秒十位buf[2]=sec_dx%10;//第2位东西秒个位buf[3]=sec_nb/10;//第3位南北秒十位buf[0]=sec_nb%10;//第4位南北秒个位P1=0xff;/

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。