欢迎来到天天文库
浏览记录
ID:15106067
大小:141.00 KB
页数:12页
时间:2018-08-01
《基于单片机的交通灯设计》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、开封大学《单片机原理及应用》期末课程设计——单片机控制交通灯目录第1节系统主要硬件电路设计………………………………………………………51.1单片机控制系统原理…………………………………………………………51.2单片机系统工作原理…………………………………………………………51.3单片机主要系统电路………………………………………………………5第2节系统软件设计………………………………………………………………72.1每秒钟的设定…………………………………………………………………72.2计数器硬件延时……………………………………………………………72.2.1计数器初值计算………………………………
2、……………………72.2.2计算公式……………………………………………………………72.2.31秒的方法…………………………………………………………72.2.4相应程序代码………………………………………………………72.3软件延时………………………………………………………………………82.4时间和信号灯的显示…………………………………………………………82.4.18051并行口扩展……………………………………………………92.4.2显示原理……………………………………………………………92.4.38255PA口输出信号接信号灯………………………………………92.4.48255输出信号与数码
3、管的连接……………………………………92.4.58255与8051的连接…………………………………………………102.5程序设计………………………………………………………………………10第一节系统主要硬件电路设计1.1单片机控制系统原理11开封大学《单片机原理及应用》期末课程设计——单片机控制交通灯图1-1单片机控制系统原理框图1.2系统工作原理(1)开关键盘输入交通灯初始时间,通过8051单片机P1输入到系统(2)由8051单片机的定时器每秒钟通过P0口向8255的数据口送信息,由8255的PA口显示红、绿、黄灯的燃亮情况;由8255的PC口显示每个灯的燃亮时间。(3)8051通过设置各
4、个信号等的燃亮时间、通过8031设置,绿、红时间分别为60秒、80秒循环由8051的P0口向8255的数据口输出。(4)通过8051单片机的P3.0位来控制系统是工作或设置初值,当.牌位0就对系统进行初始化,为1系统就开始工作。(5)红灯倒计时时间,当有车辆闯红灯时,启动蜂鸣器进行报警,3S后然后恢复正常。(6)增加每次绿灯时间车流量检测的功能,并且通过查询P2.0端口的电平是否为低,开关按下为低电平,双位数码管显示车流量,直到下一次绿灯时间重新记入。(7)绿灯时间倒计时完毕,重新循环。1.3单片机主要系统电路 如下图所示11开封大学《单片机原理及应用》期末课程设计——单片机控制交通灯1
5、1开封大学《单片机原理及应用》期末课程设计——单片机控制交通灯第2节系统的软件设计2.1每秒钟的设定延时方法可以有两种一中是利用MCS-51内部定时器才生溢出中断来确定1秒的时间,另一种是采用软延时的方法。2.2计数器硬件延时2.2.1计数器初值计算定时器工作时必须给计数器送计数器初值,这个值是送到TH和TL中的。他是以加法记数的,并能从全1到全0时自动产生溢出中断请求。因此,我们可以把计数器记满为零所需的计数值设定为C和计数初值设定为TC可得到如下计算通式:TC=M-C式中,M为计数器摸值,该值和计数器工作方式有关。在方式0时M为213;在方式1时M的值为216;在方式2和3为282.2
6、.2计算公式T=(M-TC)T计数或TC=M-T/T计数 T计数是单片机时钟周期TCLK的12倍;TC为定时初值如单片机的主脉冲频率为TCLK12MHZ ,经过12分频方式0 TMAX=213 *1微秒=8.192毫秒方式1 TMAX=216 *1微秒=65.536毫秒 显然1秒钟已经超过了计数器的最大定时间,所以我们只有采用定时器和软件相结合的办法才能解决这个问题.2.2.31秒的方法 我们采用在主程序中设定一个初值为20的软件计数器和使T0定时50毫秒.这样每当T0到50毫秒时CPU就响应它的溢出中断请求,进入他的中断服务子程序。在中断服务子程序中,CPU先使软件计数器减1
7、,然后判断它是否为零。为零表示1秒已到可以返回到输出时间显示程序。2.2.4相应程序代码(1)主程序 定时器需定时50毫秒,故T0工作于方式1。 初值: TC=M-T/T计数 =216 -50ms/1us=15536=3CBOHORG1000HSTART:MOVTMOD,#01H;令TO为定时器方式1MOVTH0,#3CH;装入定时器初值MOVTL0,#BOH ;MOVIE, #82H;开T0中断SEBT
此文档下载收益归作者所有