交通灯控制系统单片机设计.docx
- 文档编号:10794446
- 上传时间:2023-05-27
- 格式:DOCX
- 页数:16
- 大小:356.26KB
交通灯控制系统单片机设计.docx
《交通灯控制系统单片机设计.docx》由会员分享,可在线阅读,更多相关《交通灯控制系统单片机设计.docx(16页珍藏版)》请在冰点文库上搜索。
交通灯控制系统单片机设计
学号XX
单片机原理及应用
设计说明书
交通灯控制系统单片机设计
起止日期:
2012年12月24日至2012年12月28日
学生姓名
XX
班级
XX
成绩
指导教师(签字)
计算机与信息工程学院
2012年12月21日
目录
1.智能交通灯系统的工作原理1
2.基础设计要求1
2.1系统规划1
2.2方案论证和比较2
3智能交通灯方案的实现2
3.1系统总框图3
3.2智能交通灯系统的组成3
3.3模块功能3
3.3.1车检测电路3
3.3.2信号灯电路4
3.3.3时间显示电路5
3.4总设计图6
3.5仿真6
4控制器的软件设计7
4.1每秒钟的设定7
4.21秒的方法8
4.3软件延时8
4.4流程图如图4-1所示9
4.5程序源代码9
5.结束语11
参考文献11
1.智能交通灯系统的工作原理
大家都明白,绿灯的放行时间与车辆通过数量不成正比。
比如说20秒内每车道可以通过20辆车,40秒内每车道却可以通过45辆车。
因为这有一个起步的问题,还有一个黄灯等待问题。
也就是说,绿灯放行时间越长,单位时间通过车辆的数量就越多。
我们来计算一下,每车道通行20秒内可以通过20辆车,一个红绿灯循环是40秒(单交叉路口),加上每次状态转换的黄灯5秒(一个循环要两次转换),即一个红绿黄灯循环要50秒,即50秒内通行的车辆为40辆。
通过一辆车的平均时间是1.25秒。
如果每次车辆通行的时间改为40秒,40秒内每车道可以通过45辆,一个红绿灯循环是80秒(单交叉路口),加上每次状态转换的黄灯5秒(一个循环要两次转换),即一个红绿黄灯循环要90秒,即90秒内通行的车辆为90辆。
通过一辆车的平均时间只需1秒。
显然在车辆拥挤的情况下绿灯的通行时间越长,单位时间内通行的车辆越多,可以有效缓解车辆拥堵问题。
当然绿灯时间也不可能无限长,要考虑到让另一路口的等待时间不能过长。
人们总是希望在交通灯前等候的时间越短越好。
所以笔者设定了绿灯通行时间的上限为40秒。
在非拥挤时段绿灯的通行时间的下限为20秒,当交叉路口双方车辆较少时通行时间设为20秒,这样可以大大缩短车辆在红灯面前的等待时间。
当交叉路口双方车辆较多时通行时间设为40秒。
2.基础设计要求
1)设计一个十字路口的交通灯控制电路,要求南北方向和东西方向两个交叉路口的车辆交替运行,两个方向能根据车流量大小自动调节通行时间,车流量大,通行时间长,车流量小,通行时间短。
2)每次绿灯变红灯时,要求黄灯先亮5S,才能变换运行车辆。
3)东西方向、南北方向车道除了有红、黄、绿灯指示外,每一种灯亮的时间都用数码管显示器进行显示(采用倒计时的方法)。
4)同步设置人行横道红、绿灯指示。
2.1系统规划
我们将系统设计成可分离单独工作的主控制机与客户端的形式,但是和传统的C/S模式不一样的是,每个终端机可以脱离主控制机而独立工作。
即使主控制机停止工作,或者由于某种原因不能正常工作,各终端机也可以照常稳定的工作。
各个终端机负责管理路口的多个信号灯。
为了方便我们称主控制机为主系统,各个终端机称为子系统。
控制系统的总框图如图2-1所示。
2-1控制系统图
2.2方案论证和比较
针对道路交通拥挤,交叉路口经常出现拥堵的情况。
利用单片机控制技术,提出了软件和硬件设计方案及改进措施:
根据各道路路口车流量的大小自动调节通行时间。
由于AT89S51单片机自单带有2计数器,6个中断源,能满足系统的设计要求。
用单片机设计不但设计简单,而且成本低,用其设计的交通灯也满足了要求,所以本文采用单片机设计交通灯。
系统构图如图2-2所示。
图2-2系统结构框图
3智能交通灯方案的实现
根据设计任务和要求,可画出该控制器的原理框图,为确保十字路口的交通安全,往往都采用交通灯自动控制系统来控制交通信号。
其中红灯(R)亮,表示禁止通行;黄灯(Y)亮表示暂停;绿灯(G)亮表示允许通行。
3.1系统总框图
系统总框图如图3-1所示。
图3-1系统总框图
3.2智能交通灯系统的组成
交通灯系统由四部分组成:
车检测电路,信号灯电路,时间显示电路,紧急转换开关。
3.3模块功能
3.3.1车检测电路
用来判断各方向车辆状况,比如:
20秒内可以通过的车辆为20辆,当20秒内南往北方向车辆通过车辆达不到20辆时,判断该方向为少车,当20秒内北往南方向车辆通过车辆也达不到20辆时,判断该方向也为少车,下一次通行仍为20秒,当20秒时间内南往北或北往南任意一个方向通过的车辆达20辆时证明该状态车辆较多,下一次该方向绿灯放行时间改为40秒,当40秒内通过的车辆数达45辆时车辆判断为拥挤,下一次绿灯放行时间改仍为40秒,当40秒车辆上通过车辆达不到45辆时,判断为少车,下次绿灯放行时间改为20秒,依此类推。
绿灯下限时间为20秒,上限值为40秒,初始时间为20秒。
这样检测,某次可能不准确,但下次肯定能弥补回来,累积计算是很准确的,这就是人们常说的“模糊控制”。
由于南往北,北往南时间显示相同,所以只要一个方向多车,下次时间就要加长东往西,西往东也一样,显示时间选择如表3-2所示。
表3-2显示时间选择
3.3.2信号灯电路
信号灯用来显示车辆通行状况,下面以一个十字路口为例,说明一个交通灯的四种状态见图3-3所示。
每个路口的信号的的转换顺序为:
绿——>黄——>红绿灯表示允许通行,黄灯表示禁止通行,但已经驶过安全线的车辆可以继续通行,是绿灯过渡到红灯提示灯。
红灯表示禁止通行。
绿灯的最短时间为20秒,最长时间为40秒,红红最短时间为25秒,最长时间为45秒,黄灯时间为5秒。
图3-3交通信号灯运行状态
3.3.3时间显示电路
在交通信号灯的正上方安装一个可以显示绿灯通行时间,红灯等待时间的显示电路,采用数码管显示电路是一种很好的方法。
由于东往西方向和西往东方向显示的时间相同,南往北方向和北往南方向显示的时间也相同,所以只需要考虑四位数码管显示电路,其中东西方向两位,南北方向两位,两位数码管可以时间的时间为0-99秒完全可以满足系统的要求,数码管连接方法如图3-4所示。
3-4数码管连接
3.4总设计图
总设计图如图3-5所示。
3-5总设计图
3.5仿真
仿真如图3-6所示。
3-6仿真图
4控制器的软件设计
4.1每秒钟的设定
延时方法可以有两种一中是利用MCS-51内部定时器产生溢出中断来确定1秒的时间,另一种是采用软件延时的方法。
计数器硬件延时
(a)计数器初值计算
定时器工作时必须给计数器送计数器初值,这个值是送到TH和TL中的。
他是以加法记数的,并能从全1到全0时自动产生溢出中断请求。
因此,我们可以把计数器记满为零所需的计数值设定为C和计数初值设定为TC可得到如下计算通式:
TC=M-C。
式中,M为计数器模值,该值和计数器工作方式有关。
在方式0时M为213;在方式1时M的值为216;在方式2和3为28。
(b)计算公式:
T=(M-TC)T计数或TC=M-C/T计数。
T计数是单片机时钟周期TCLK的12倍;TC为定时初值。
如单片机的主脉冲频率为TCLK12MHZ ,经过12分频。
方式0为:
TMAX=213 *1微秒=8.912毫秒;方式1为:
TMAX=216 *1微秒=65.536毫秒。
显然1秒钟已经超过了计数器的最大定时间,所以我们只有采用定时器和软件相结合的办法才能解决这个问题。
4.21秒的方法
我们采用在主程序中设定一个初值为20的软件计数器和使T0定时50毫秒.这样每当T0到50毫秒时CPU就响应它的溢出中断请求,进入他的中断服务子程序。
在中断服务子程序中,CPU先使软件计数器减1,然后判断它是否为零。
为零表示1秒已到可以返回到输出时间显示程序。
相应程序代码如下:
(1)主程序如下:
定时器需定时50毫秒,故T0工作于方式1。
初值:
TC=M-T/T计数 =216 -50ms/1us=15536=3CBOH
ORG1000H
START:
MOVTMOD,#01H;令T0为定时器方式1
MOVTH0,#3CH;装入定时器初值
MOVTL0,#BOH ;
MOVIE, #82H;开T0中断
SEBT TRO ;启动T0计数器
MOV RO, #14H ;软件计数器赋初值
LOOP:
SJMP$ ;等待中断
(2)中断服务子程序如下:
ORG00BH
AJMP BRT0
ORG 00BH
BRT0:
DJNZR0,NEXT
AJMPTIME;跳转到时间及信号灯显示子程序
DJNZ:
MOVR0,#14H ;恢复R0值
MOVTH0,#3CH;重装入定时器初值
MOVTL0,#BOH ;
MOVIE, #82H
RET1
END
4.3软件延时
MCS-51的工作频率为2-12MHZ,我们选用的8031单片机的工作频率为6MHZ。
机器周期与主频有关,机器周期是主频的12倍,所以一个机器周期的时间为12*(1/6M)=2us。
我们可以知道具体每条指令的周期数,这样我们就可以通过指令的执行条数来确定1秒的时间。
具体的延时程序分析如下:
DELAY:
MOVR4,#08H延时1秒子程序
DE2:
LCALLDELAY1
DJNZR4,DE2
RET
DELAY1:
MOVR6,#0;延时125ms子程序
MOVR5,#0
DE1:
DJNZR5,$
DJNZR6,DE1
RET
MOVRN,#DATA;字节数数为2,机器周期数为1
所以此指令的执行时间为2ms,而DELAY1为一个双重循坏循环次数为256*256=65536所以延时时间=65536*2=131072us约为125us。
DELAYR4设置的初值为8主延时程序循环8次,所以125us*8=1秒。
由于单片机的运行速度很快其他的指令执行时间可以忽略不计。
4.4流程图如图4-1所示
图4-1交通灯的软件设计流程图
4.5程序源代码
ORG0000H
A_BITEQU20H;用于存放南北十位数
B_BITEQU21H;用于存放南北十位数
C_BITEQU22H;用于存放东西十位数
D_BITEQU23H;用于存放东西位数
TEMP1EQU24H;用于存放第一二南北状态要显示的时间
TEMP2EQU25H;用于存放第一二东西状态要显示的时间
TEMP3EQU26H;用于存放第三第四南北状态要显示的时间
TEMP4EQU27H;用于存放第三第四南北状态要显示的时间
LJMPMAIN
ORG0003H;外部中断0入口
LJMPINT0;跳转到外部0中断
ORG0013H;外部中断1入口
LJMPINT1;跳转到外部1中断
INT0:
MOVA,P1;外部0中断
PUSHACC
MOVA,P2;中断保护
PUSHACC
MOVP1,#0FFH;清除先前状态
MOVP2,#0FFH
CLRP1.0
CLRP1.4;南北通行,东西禁止通行
CLRP1.6
CLRP2.3
JNBP3.2,$;判断是否还在中断状态
POPACC
MOVP2,A;返回中断前状态
POPACC
MOVP1,ACC
RETI;中断返回
INT1:
MOVA,P1;外部1中断
PUSHACC;中断保护
MOVA,P2
PUSHACC
MOVP1,#0FFH;清除先前状态
MOVP2,#0FFH
CLRP1.2
CLRP2.1
CLRP1.3;东西通行,南北禁止通行
CLRP1.5
JNBP3.3,$;判断是否还在中断状态
POPACC
MOVP2,A;返回中断前状态
POPACC
MOVP1,A
RETI;中断返回
…….
……
5.结束语
通过这次毕业设计,加深了对单片机功能理解,也使我深深体会到学习模拟电子技术知识和单片机技术的重要性和艰难性.同时还提高了我的动手能力.能把我所学到的书本知识应用到实践中去,同时也让我们学到了无论做什么事情,都要先有一个总体的思路,所做的每一步都要有目的有意义
这次课程设计是一次对书本知识综合运用的机会,在这一星期里,通过对本课程专题的研究与学习,让我明白理论到实践之间的差距,以及自己在平时的学习中懒于动手的缺点。
也从中深切体会到自己知识的零散性和不完备,同时也看到了自己的动手实践经验的过度缺乏和学以致用的差距,将理论联系和实际联系起来解决实际的能力还急需提高。
参考文献
[1]张迎新,等.单片机初级教程[M].北京:
北京航空航天大学出版社,2000。
[2]王幸之,等.AT89系列单片机原理与接口技术[M].北京:
北京航空航天大学出版社,2004。
[3]何立民.单片机高级教程[M].北京:
北京航空航天大学出版社,2000。
[4]AtmelCorporation.MicrocontrollerDataBook.2004。
[5]李维偍,郭强.液晶显示应用技术[M].北京:
电子工业出版社,2000。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 交通灯 控制系统 单片机 设计
![提示](https://static.bingdoc.com/images/bang_tan.gif)