基于单片机的带时间显示的交通灯设计.docx
- 文档编号:18203880
- 上传时间:2023-04-24
- 格式:DOCX
- 页数:23
- 大小:218.54KB
基于单片机的带时间显示的交通灯设计.docx
《基于单片机的带时间显示的交通灯设计.docx》由会员分享,可在线阅读,更多相关《基于单片机的带时间显示的交通灯设计.docx(23页珍藏版)》请在冰豆网上搜索。
基于单片机的带时间显示的交通灯设计
摘要
本设计是一个以微电子技术,计算机和通信技术为先导的,而计算机技术怎样与实际应用更有效的结合并有效的发挥其作用是科学界最热门的话题,也是当今计算机应用中空前活跃的领域。
十字路口车辆穿梭,行人熙攘,车行车道,人行人道,有条不紊。
那么靠什么来实现这井然秩序呢?
靠的就是交通信号灯的自动指挥系统。
本系统由单片机系统、按键、四位数码管显示、交通灯演示系统组成。
设计一个用于东西、南北走向的交通管理。
系统除基本交通灯功能外,还具有倒计时、时间设置、紧急情况处理、分时段调整信号灯的点亮时间以及根据具体情况手动控制等功能。
本系统结构简单,操作方便;可实现自动控制,具有一定的智能性;对优化城市交通具有一定的意义。
本设计将各任务进行细分包装,使各任务保持相对独立;能有效改善程序结构,便于模块化处理,使程序的可读性、可维护性和可移植性都得到进一步的提高。
近年来随着科技的飞速发展,单片机的应用正在不断深入,同时带动传统控制检测技术日益更新。
在实时检测和自动控制的单片机应用系统中,单片机往往作为一个核心部件来使用,仅单片机方面知识是不够的,还应根据具体硬件结构软硬件结合,加以完善。
本文主要从单片机的应用上来实现十字路口交通灯智能化的管理,用以控制过往车辆的正常运作。
关键词:
交通灯,单片机,AT89C52
目录
第1章绪论……………………………………………………..………..…1
1.1交通灯设计意义与背景……………………….…………..…….1
1.1.1背景……………………………….…………..………..…1
1.1.2交通灯现状……………………………………….……...….1
第2章系统总体设计……………………...…………………...…….2
2.1方案的选择………………………………….…..………………..2
2.2系统总体设计…………………………………...………………..2
第3章硬件设计………………………………….….………………..4
3.1硬件选型……………………………………….…..……………..4
3.2硬件电路设计………………………………….…………………..4
3.2.1时钟电路模块…………………………….…..……………..4
3.2.2数码管显示模块……………………………...……….……5
3.2.3交通灯灯模块…………………………………...……………6
3.2.4复位电路模块…………………………………………..……7
3.2.5键盘按键模块……………………………………...…………7
第4章软件设计…………………………….…………………………9
4.1软件编程.…………………………….…………………………9
4.1.1数码管的扫描部分…………………………………………..9
4.1.2LED灯的控制部分………………………………………….10
4.1.3手动控制模块………………………...……………………..11
4.1.4模拟实验程序………………………………….……………12
4.1.5主程序………………………………………………………12
4.1.6中断子程序………………………………………………..…13
4.1.7定时器模块………………………………………………...…13
4.1.8显示子程序………………………………………………...…14
4.2系统流程图……………………………………………………...…16
第1章绪论
1.1交通灯设计的背景与意义
1.1.1背景
为确保十字路口的车辆顺畅通行,几乎每个国家都在交通流量相对较大的十字道口设置交通信号灯,用来管理各个方向的车辆的通行。
众所周知,红绿灯是交通法规的无声命令,是司机和行人的行为准则。
1.1.2交通灯现状
目前,国内的大多数城市正在使用的是自动的红绿交通灯,它具有固定的红灯、绿灯转换间隔,并自动切换。
它们一般由通行与禁止时间控制显示、红黄绿三色信号灯和方向指示灯三部分组成。
在交通灯的通行与禁止时间控制显示中,通常要么东西、南北两方向各50秒;要么根据交通规律,东西方向60秒,南北方向40秒,时间控制都是固定的。
交通灯的时间控制显示,以固定时间值预先固化在单片机中,每次只是以一定周期交替变化。
但是,实际上不同时刻的车辆流通状况是十分复杂的,是高度非线性的,随机的,还经常受人为因素的影响。
采用定时控制经常造成道路有效应用时间的浪费,出现绿灯方向车辆较少,红灯方向车辆积压。
它不顾当前道路上交通车辆数目的实际变化情况,其最大的缺陷就在于当路况发生变化时,不能满足司机与路人的实际需要,轻者造成时间上的浪费,重者直接导致交通堵塞,导致城市交通效率的下降。
目前,有一种使用模糊控制技术控制交通灯的方法。
能够根据十字路口两个方向上车辆动态状况,自动判断红绿灯时间间隔,以保证最大车流量,减少道口的交通堵塞。
但是却不像定时控制,能用数字显示器显示当前灯色剩余时间,以便于驾驶员随时掌握自己的驾驶动作,及时停车或启动。
第2章系统总体设计
2.1方案的选择
2.1.1设计方案
本次的课程设计任务是设计一个基于单片机的带时间显示功能的交通灯,就是模拟一个十字路口的交通灯的控制情况。
这里既要设计出红灯、绿灯、黄灯亮暗的变化情况,又要设计出在其变化期间的数码管计时情况。
为确保在程序出错时的交通的正常通行,必须保证交通灯在出现故障等的情况下能够实现手动控制,以保障交通的正常进行。
2.2系统总体设计
2.2.1系统总体设计
首先了解实际交通灯的变化情况和规律。
假设一个十字路口为东南西北走向。
初始状态为东西南北都不亮。
然后转为状态1:
东西红灯通车,南北绿灯亮。
过一段时间后,转换位状态2:
东西红灯灭,黄灯亮,南北绿灯灭,黄灯亮。
再转换为状态3:
南北红灯亮,东西绿灯亮,可以通车。
过一段时间后再转换到状态1。
正常情况下一直循环状态1,状态2和状态3。
对于交通信号灯来说,应该有东西南北共四组灯,但由于同一道上的两组的信号灯的显示情况是相同的,所以只要用两组就行了,因此,采用单片机内部的I/O口上的P1口中的6个引脚即可来控制6个信号灯。
通过编写程序,实现对发光二极管的控制,来模拟交通信号灯的管理。
每延时一段时间,灯的显示情况都会按交通灯的显示规律进行状态转换。
通过中断子程序的,可以在原有的交通信号灯控制系统设计的基础上,增添上手动控制功能,既可以实现出现故障时的手动控制,又可以实现更加人性化的功能,比如可实现人行横道灯的人为控制。
系统总框图如图2-1所示。
图2-1系统总框图
第3章硬件设计
3.1硬件选型
3.1.1硬件选型
电路设计中,电源的设计可谓讲究很多,可以说设计好了一个电路的电源部分,整个电路的80%已经完成了,鉴于本次课程设计的特殊性,我们只是模拟出交通灯的运行情况,这里我们只要选择电脑用的USB电源即可,USB电源标准为:
+5V,500mA。
我们的单片机需要+5V电源电压供电,约50mA的电流。
其次要说明的是,一个硬件电路的好坏标准就我个人理解应该是从电路的稳定性,电路的功耗,电路版的面积大小,元器件的价格这四方面来衡量。
3.2硬件电路设计
3.2.1时钟电路模块
时钟电路部分,采用外部方式时钟电路,晶振频率选择为11.0592MHz,另外需要两个30pF的陶瓷电容,电路结构如图3-1。
图3-1时钟电路结构
3.2.2数码管显示模块
在数码管的选择上面,本电路选择的是共阴极数码管。
经过查阅相关技术、资料,我所选择的数码管的具体型号是JM-S10022G-H,它的平均工作电流是4-5mA,我所选择的单片机完全可以驱动它。
但为确保单片机可以更加正常的控制数码管显示,也为了增大数码管的亮度,我这里在单片机的每个端口P0、P1、P2、P3上都加上了上拉电阻,并根据要求编写了共阴极数码管的子码表:
0FDH,060H,0DBH,0F3H,067H,0B7H,0BFH,0E0H,0FFH,0F7H。
选择了四个数码管分别作为东西方向和南北方向的倒计时显示,硬件电路如图3-2所示。
如图3-2硬件电路
3.2.3交通灯灯模块
LED的选择上面,数量上我们需要红、黄、绿三种不同颜色的灯光各四个。
。
在本次的课程设计中,我假设十字路口的车辆通行方向谁双向的。
即一个车道有两个方向的车辆通行,如果实际的车道为一个方向通行的单车道的话,可以拆掉一条车道上的不需要的三盏交通灯,以满足实际交通情况。
这时的电路依然会正常工作,而不会受到任何的干扰为了更加形象的描述出十字路口的交通灯分布情况,我分别在东西方向和南北方向分布上六个交通灯,硬件电路图如图3-2所示。
图3-3交通灯模块电路图
3.2.4复位电路模块
复位电路部分采用低电平复位电路,通过低电平脉冲的触发来实现单片机的复位。
平时有一个高电位通过一个电阻将单片机的复位引脚拉高,防止外界干扰造成复位引脚被误触发。
具体点电路如图3-4所示。
图3-4复位模块电路图
3.2.5键盘按键模块
按键部分采用的是按钮触发方式,通过软件编程,简单实现了防按键抖动的效果,经仿真测试和实物调试,按键部分可以满足程序设计的要求。
具体的电路硬件结构如图3-5所示。
图3-5键盘按键模块电路图
第4章软件设计
4.1软件编程
4.1.1数码管扫描模块
程序如下:
RET0:
MOVA,NUMTIM;数码管的动态扫描
LCALLBIN_BCD;A存储十位,B存储个位
MOVSHIWEI,A
MOVGEWEI,B
INCSCANLED
MOVA,SCANLED;
MOVB,#4;
DIVAB
MOVA,B;
RLA
MOVDPTR,#TAB_SCAN0
JMP@A+DPTR;
TAB_SCAN0:
AJMPSCAN_L1
AJMPSCAN_L2
SCAN_L1:
MOVP2,#11111011B;熄灭数码管
MOVA,SHIWEI;A=0X01
JMPEND_SCAN
SCAN_L2:
MOVP2,#11111100B;P2=FD,点亮位码
MOVA,GEWEI;A=0X01
JMPEND_SCAN
END_SCAN:
MOVDPTR,#TABLE;
MOVCA,@A+DPTR;;取共阴字码表值
MOVP0,A;;数码管依次显示0、1、2......
MOVA,LED;
MOVP1,A;;熄灭LED灯
POPPSW
POPACC
RETI;
TABLE:
DB0FDH,060H,0DBH,0F3H,067H,0B7H,0BFH,0E0H,0FFH,0F7H;
代码分析:
程序初始化完成后。
正常情况下,在中断0没有发生的时候。
首先进入的中断就是定时计数器0中断。
程序根据初始化的初值分别将数码管要显示的段码的十位和各位放入寄存器A和B中。
接下来使数码管的位码有效,再通过查表程序,查得数码管要显示的数值,并把数值显示在数码管上。
4.1.2LED灯的控制模块
程序如下:
RED_LIGHT:
MOVLED,#11111100B;;红灯缓冲区赋值
MOVNUMTIM,RED;;NUMTIM=10
DECRED;
MOVA,RED;;A=0X09、0x08......
CJNEA,#0FFH,RET0
MOVRED,#10;红灯定时10s
MOVA,SCANMODE
ADDA,#01H
MOVSCANMODE,A
JMPRET0
YEL_LIGHT:
MOVLED,#11110011B
MOVNUMTIM,YELLOW
DECYELLOW
MOVA,YELLOW
CJNEA,#0FFH,RET0
MOVYELLOW,#3;黄灯定时3s
MOVA,SCANMODE
ADDA,#01H
MOVSCANMODE,A
JMPRET0
GRE_LIGHT:
MOVLED,#11001111B
MOVNUMTIM,GREEN
DECGREEN
MOVA,GREEN
CJNEA,#0FFH,RET1
MOVGREEN,#10;绿灯定时3s
MOVA,SCANMODE
ADDA,#01H
MOVSCANMODE,A
RET1:
JMPRET0
BIN_BCD:
MOVB,#10;个位、十位分离
DIVAB
RET
DELAY:
MOVR5,#02;延时子程序
D1:
MOVR6,#200
D2:
MOVR7,#200
DJNZR7,$
DJNZR6,D2
DJNZR5,D1
RET;
代码分析:
程序进入LED显示部分以后,先是点亮相应的LED灯,然后调用数码管扫描程序,然后根据预先设定的倒计时初值进行动态扫描,直到倒计时结束,此段LED灯熄灭。
跳到下一个状态重复上述步骤。
4.1.3手动控制模块
程序如下:
INTT0:
PUSHACC
PUSHPSW
SETBP2.1;熄灭数码管
SETBP2.2
MOVP1,#0FFH;熄灭灯
LP:
JNBP2.4,L1;红灯
JNBP2.5,L2;东西方向交通灯控制黄灯
JNBP2.6,L3;绿灯
JMPLP
L1:
LCALLDELAY
JBP2.4,LP
MOVP1,#0FCH
AJMPLP
L2:
LCALLDELAY
JBP2.5,LP
MOVP1,#0F3H
AJMPLP
L3:
LCALLDELAY
JBP2.6,LP
MOVP1,#0CFH
AJMPLP
POPPSW
POPACC
JMPINTT0;
代码分析:
当外部中断0发生时,程序进入此段中断子程序。
进入此段中断子程序后程序会将数码管的位码全部置“1”,熄灭所有数码管,然后进入循环检测部分。
不停的检测P2.5、P2.5、P2.6这三个位的状态是否为“0”,如果是,则跳转到相应位置,先消除按键抖动,然后点亮对应的数码管,实现交通灯的手动控制。
4.1.4模拟实验程序
GEWEIEQU21H;个位数据
SHIWEIEQU23H;十位数据
SCANLEDEQU25H
SCANMODEEQU26H
REDEQU28H;定义灯的缓冲区
GREENEQU29H
YELLOWEQU32H
NUMTIMEQU33H
LEDEQU34H
ORG000H
JMPSTART
ORG0003H;外中断0入口地址
JMPINTT0
ORG0BH;定时器0中断入口
JMPTIMER0
4.1.5主程序:
ORG100H
START:
MOVSP,#50H
MOVR0,#20H;
MOVR5,#20
CLR0:
MOV@R0,#00H;R0=34H时结束循环,起延时
INCR0
DJNZR5,CLR0;
MOVTMOD,#01H;设置定时器工作方式
MOVTH0,#HIGH(65536-5000);定时器0赋初值
MOVTL0,#LOW(65536-5000)
SETBTR0;开启定时器0(计时0.5S)
SETBIT0;下降沿触发
SETBPX0;设置优先级
MOVIE,#10000011B
MOVP0,#0FFH;
MOVP1,#0FFH
MOVP2,#00H
MOVP3,#0FFH
MOVR3,#10
MOVR2,#3;端口初始化
MOVR1,#10
MOVR7,#200
MOVRED,#10;红灯定时10s
MOVYELLOW,#3;黄灯定时3s
MOVGREEN,#10;绿灯定时10秒
MOVNUMTIM,#10
MOVLED,#0FFH;
AJMP$
4.1.6中断子程序
INTT0:
PUSHACC
PUSHPSW
SETBP2.1;熄灭数码管
SETBP2.2
MOVP1,#0FFH;熄灭灯
LP:
JNBP2.4,L1;红灯
JNBP2.5,L2;东西方向交通灯控制黄灯
JNBP2.6,L3;绿灯
JMPLP
L1:
LCALLDELAY
JBP2.4,LP
MOVP1,#0FCH
AJMPLP
L2:
LCALLDELAY
JBP2.5,LP
MOVP1,#0F3H
AJMPLP
L3:
LCALLDELAY
JBP2.6,LP
MOVP1,#0CFH
AJMPLP
POPPSW
POPACC
JMPINTT0
4.1.7定时器模块:
负责交通灯的计时和数码管动态扫描
程序如下:
TIMER0:
PUSHACC
PUSHPSW
MOVTH0,#HIGH(65536-5000);定时器0重装初值
MOVTL0,#LOW(65536-5000)
DJNZR7,RET0;R7非0,跳到RET0(数码管扫描)
MOVR7,#200;重新赋值
MOVA,SCANMODE;调用扫描
MOVB,#4;
DIVAB;A、B清零,延时
MOVA,B;
RLA
MOVDPTR,#TAB_SCAN
JMP@A+DPTR;跳到TAB_SCAN处
TAB_SCAN:
AJMPRED_LIGHT
AJMPYEL_LIGHT
AJMPGRE_LIGHT
AJMPYEL_LIGHT
RET0:
MOVA,NUMTIM;数码管的动态扫描
LCALLBIN_BCD;A存储十位,B存储个位
MOVSHIWEI,A
MOVGEWEI,B
INCSCANLED
MOVA,SCANLED;
MOVB,#4;
DIVAB
MOVA,B;
RLA
MOVDPTR,#TAB_SCAN0
JMP@A+DPTR;
TAB_SCAN0:
AJMPSCAN_L1
AJMPSCAN_L2
SCAN_L1:
MOVP2,#11111011B;熄灭数码管
MOVA,SHIWEI;A=0X01
JMPEND_SCAN
SCAN_L2:
MOVP2,#11111100B;P2=FD,点亮位码
MOVA,GEWEI;A=0X01
JMPEND_SCAN
END_SCAN:
MOVDPTR,#TABLE;
MOVCA,@A+DPTR;;取共阴字码表值
MOVP0,A;;数码管依次显示0、1、2......
MOVA,LED;
MOVP1,A;;熄灭LED灯
POPPSW
POPACC
RETI;
4.1.8显示子程序
RED_LIGHT:
MOVLED,#11111100B;;红灯缓冲区赋值
MOVNUMTIM,RED;;NUMTIM=10
DECRED;
MOVA,RED;;A=0X09、0x08......
CJNEA,#0FFH,RET0
MOVRED,#10
MOVA,SCANMODE
ADDA,#01H
MOVSCANMODE,A
JMPRET0
YEL_LIGHT:
MOVLED,#11110011B
MOVNUMTIM,YELLOW
DECYELLOW
MOVA,YELLOW
CJNEA,#0FFH,RET0
MOVYELLOW,#3
MOVA,SCANMODE
ADDA,#01H
MOVSCANMODE,A
JMPRET0
GRE_LIGHT:
MOVLED,#11001111B
MOVNUMTIM,GREEN
DECGREEN
MOVA,GREEN
CJNEA,#0FFH,RET1
MOVGREEN,#10
MOVA,SCANMODE
ADDA,#01H
MOVSCANMODE,A
RET1:
JMPRET0
BIN_BCD:
MOVB,#10;个位、十位分离
DIVAB
RET
DELAY:
MOVR5,#02;延时子程序
D1:
MOVR6,#200
D2:
MOVR7,#200
DJNZR7,$
DJNZR6,D2
DJNZR5,D1
RET
TABLE:
DB0FDH,060H,0DBH,0F3H,067H,0B7H,0BFH,0E0H,0FFH,0F7H
;共阴字码表
4.2系统流程(流程图)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 单片机 时间 显示 交通灯 设计