基于51单片机的交通灯设计报告_51单片机实现红绿灯设计方案

(2) 2024-08-06 21:12

Hi,大家好,我是编程小6,很荣幸遇见你,我把这些年在开发过程中遇到的问题或想法写出来,今天说一说
基于51单片机的交通灯设计报告_51单片机实现红绿灯设计方案,希望能够帮助你!!!。

利用51单片机控制各个路口红绿灯及时间显示  

1  系统设计

1.1 设计要求

1.1.1 设计任务   

利用51单片机控制各个路口红绿灯及时间显示。

1.1.2 性能指标要求  

1、各方向的红、绿色信号灯能按照设定规则运行;

2、绿灯亮之前,黄灯闪烁5次;

3、红灯和绿灯倒计时间能够正确显示;

4、两干道的车辆不会会车冲突。

5、可以扩展其他功能(如按键设置时间,按键模拟警车)

1.2 设计思路及设计框图

1.2.1设计思路

1、各个路口红绿灯亮灭的规则,暂不考虑左转方向;

2、倒计时的实现,利用单片机的定时器进行计数得到秒信号;

3、时间显示:东西南北四个方向的时间一致,当东西方向为60秒绿灯通行时间,同时南北方向为60秒红灯禁止时间,因此硬件连接时可考虑东西南北方向可采用同一接法;最后相当于2个数码管动态显示,具体见参考电路框图。

4、按键设置(扩展要求):设置键按一次,设置主干道通信时间(即次干道禁止时间),按第二次,设置主干道禁止时间(即次干道通信时间),按第三次,可作为紧急通信键。设置时间需要确定,可通过确定键实现,也可通过延时确定,如10秒。当然也可根据需要增加相应的按键。

1.2.2总体设计框图

基于51单片机的交通灯设计报告_51单片机实现红绿灯设计方案_https://bianchenghao6.com/blog__第1张

 

2  各个模块程序的设计

芯片模块:

基于51单片机的交通灯设计报告_51单片机实现红绿灯设计方案_https://bianchenghao6.com/blog__第2张

 

按键模块:

基于51单片机的交通灯设计报告_51单片机实现红绿灯设计方案_https://bianchenghao6.com/blog__第3张

12M晶振电路模块:

基于51单片机的交通灯设计报告_51单片机实现红绿灯设计方案_https://bianchenghao6.com/blog__第4张

复位端模块:

基于51单片机的交通灯设计报告_51单片机实现红绿灯设计方案_https://bianchenghao6.com/blog__第5张

交通灯功能模块:

基于51单片机的交通灯设计报告_51单片机实现红绿灯设计方案_https://bianchenghao6.com/blog__第6张

 

数码管显示模块:

基于51单片机的交通灯设计报告_51单片机实现红绿灯设计方案_https://bianchenghao6.com/blog__第7张

3  调试过程

(1)将下载线连接下载口,即供电的时候,板子在没有任何程序进入的情况下,装上芯片后各个方向的红黄绿灯都是亮的,但数码管没有任何显示。

(2)然后将程序下载到单片机内,各个方向的灯开始按照程序所设置的进行亮灭,数码管进入倒计时状态。证明硬件没问题。

(3)通过硬件验证软件,基本的交通灯功能实现。

4  功能测试

4.1 测试仪器与设备

万用表一个、计算机一台、USB下载线一根

4.2 性能指标测试

1、各方向的红、绿色信号灯能按照设定规则运行;

2、绿灯亮之前,黄灯闪烁5次;

3、红灯和绿灯倒计时间能够正确显示;

4、两干道的车辆不会会车冲突。

5  实训心得体会

       单片机实训功能要求真是说的容易做的难,以为一步一步画出原理图操作后面就很快能完成。等到实训真正开始的时候发现自己突然之间不知道该干嘛,原理图感觉是没问题了,程序自己不会编,单片机的知识自己又相当薄弱。关于实训器件芯片,数码管,下载口等等的管脚分布,都需要学会自行查找资料。然后这次实训焊板的过程相比之前简单,首次用到了万能板,要点对点的连接,看着原理图里线的走向来接跳线,即使电路短接,拆线也方便。其次就是程序编写阶段了,在翻阅单片机书,老师指导和同学的帮助下,渐渐有了思路,但是一次次的调试失败,关于中断,关于延时等的知识运用相当薄弱,验收的时候就很难受,还有数码管的段暄位选,实现的原理,没有做好提前准备,回答的时候不会。将自己写好的程序烧录到板子时,看着自己的实验板实现基本功能真心感到开心,即使按键功能做不出来,结束后我也会从新看看,争取搞懂。这次实训让我认识自己的单片机知识有多缺乏,暴露出一些在学习上的问题,要好好的记住他的原理。希望自己能够更多的学习专业知识,能够把课本的知识运用到实际生活中。

6  参考文献

1.、谢自美.电子线路设计·实验·测试(第二版).武汉:华中科技大学出版社,2000

2、《单片机原理与应用技术》 喻宗泉、李建民、喻晗 西安电子科技大学出版社

3、《单片机原理与应用》 韩桂明  浙江大学出版社

7 附录

附录1:电路原理图

基于51单片机的交通灯设计报告_51单片机实现红绿灯设计方案_https://bianchenghao6.com/blog__第8张

 

附录2:程序清单

#include <reg52.h> #include<stdio.h> #include<absacc.h> #define uint unsigned int #define uchar unsigned char char code dx516[3] _at_ 0x003b; uchar data timelist=60; uchar count=0; uchar yelltime=0; uchar intswitch; uchar data time[4]={60,5,60,5}; uchar data disbuf[4]={0}; uchar n=0; uchar yellow=0xff; sbit P3_2=P3^2; sbit P3_3=P3^3; sbit P3_4=P3^4; uchar code table[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; void timer0(void)interrupt 1 { TH0=-50000/256; TL0=-50000%256; count++; yelltime++; if(yelltime==10) { yelltime=0; yellow=yellow^0x12; } if(count==20) { count=0; timelist--; if(timelist==0) { n++; if(n==4) n=0; timelist=time[n]; } } } void dlms(uint x) { uint i=x,j; while(i--) { j=100; while(j--); } } void int0(void)interrupt 0 { dlms(5); if(!P3_2) { while(!P3_2) { dlms(1); } dlms(5); if(P3_2) { TR0=!TR0; if(TR0==1) { count=0; n=0; timelist=time[n]; } } } } void int1(void)interrupt 2 { dlms(5); if(!P3_3) { while(!P3_3) { dlms(1); } dlms(5); if(P3_3) { if(TR0==1) { count=0; n=0; timelist=time[n]; } if(TR0==0) { time[0]=time[0]+1; } if(time[0]>90) { time[0]=10; } } } } void time1(void)interrupt 3 { TH1=0xff; TL1=0xff; dlms(5); if(!P3_4) { while(!P3_4) { dlms(1); } dlms(5); if(P3_4) { if(TR0==1) { count=0; n=2; timelist=time[n]; } if(TR0==0) {  time[2]=time[2]+1; } if(time[2]>90) { time[2]=10; } } } } void disp(void) { uchar i,j; uchar sel; if(TR0==0) { disbuf[0]=time[2]%10; disbuf[1]=time[2]/10; disbuf[2]=time[0]%10; disbuf[3]=time[0]/10; P2=~0xff; sel=0x01; for(i=0;i<4;i++) { j=disbuf[i]; P2=(sel^0xff); P0=table[j]; dlms(2); P2=~0xff; sel=sel<<1; P1=0x36; } } if(TR0==1) { disbuf[0]=timelist%10; disbuf[1]=timelist/10; disbuf[2]=timelist%10; disbuf[3]=timelist/10; P2=~0xff; sel=0x01; for(i=0;i<4;i++) { j=disbuf[i]; P2=(sel^0xff); P0=table[j]; dlms(2); P2=~0xff; sel=sel<<1; if(n==0) { P1=0x33; } if(n==1||n==3) { P1=yellow; } if(n==2) { P1=0x1e; } } } } main() { TCON=0x05; TMOD=0x51; TH0=-50000/256; TL0=-50000%256; TH1=0xff; TL1=0xff; EA=1; ET0=1; EX0=1; ET1=1; EX1=1; TR1=1; TR0=1; while(1) { disp(); } } 

今天的分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。

上一篇

已是最后文章

下一篇

已是最新文章

发表回复