交通灯.docx
- 文档编号:10378765
- 上传时间:2023-05-25
- 格式:DOCX
- 页数:25
- 大小:650.30KB
交通灯.docx
《交通灯.docx》由会员分享,可在线阅读,更多相关《交通灯.docx(25页珍藏版)》请在冰点文库上搜索。
交通灯
河南理工大学
单片机课程设计报告
交通灯模拟系统设计
姓名:
韩登吉李欧
学号:
310608020205/13
专业班级:
自动化06-2
指导老师:
王莉
所在学院:
电气工程与自动化学院
2009年06月15日
摘要
近年来随着科技的飞速发展,单片机的应用正在不断地走向深入,同时带动传统控制检测日新月异更新。
在实时检测和自动控制的单片机应用系统中,单片机往往是作为一个核心部件来使用,仅单片机方面知识是不够的,还应根据具体硬件结构,以及针对具体应用对象特点的软件结合,加以完善。
本设计是交通灯用于十字路口的设计,是单片机控制的简易系统,结构很简单,我采用的是AT89C52作为芯片,采用一些相应的简单外围电路都是书本上的,比如外围的时钟晶振电路,复位电路等等,在硬件电路的设计方面,主题思想是用一片单片机加上输出的LED显示器和TRAFFICLIGHTS作为输出结果,通过按键来控制交通灯的输出,采用一个中断作为特殊车辆的控制位,采用P1口作为输入控制口即A道和B道的控制口,其为双向IO口同时作为交通灯的输出口,采用P0口作为LED的输出口,但P0口做输出口时需要接上拉电阻,其显示的是红绿黄灯的切换时间,在软件程序的设计方面,本设计采用了C语言作为编辑语言,其结构简单,语言方便,实现起来比较容易,作为特殊车辆,采用的是外部中断0即INT0作为它的控制口,我的程序大体的分为四部分,主程序和两个子程序即显示程序和延时程序,和一个宏定义。
对于定时器,我采用了定时器0,主程序是一些程序的初始化比较简单,主要是开中断,开定时器和方式选择等等,遇到中断,和有按键按下就调用显示程序,程序的开始是宏定义,定义管脚的作用和名称,然后是延时程序中断程序和显示程序,在显示程序中字形码对应的是LED的输出(其为共阴极显示),应该特别注意的是在理想电路设计中我没注意电阻和电容的选择,其不影响仿真输出,但在实际电路中电阻和电容如果选择不正确可能影响输出结果。
在仿真电路中使用总线形式用来节省空间。
关键词:
AT89S52、交通灯、控制器
目录
1、概述-3-
2、设计任务-4-
2.1设计的任务-4-
2.2设计要求-4-
3、系统总体方案及硬件设计-5-
总体设计方案:
-5-
电路设计方案:
-5-
3.1电源电路-7-
3.3红黄绿灯显示电路-8-
3.4按键控制电路-9-
4、软件系统设计-10-
4.1软件设计概述-10-
4.2主函数的设计-10-
5、实验仿真-15-
6、课程设计体会-16-
参考文献-17-
附1源程序代码-18-
附2系统原理图-23-
1、概述
交通灯控制系统的结构框图如下图1所示。
总体设计方案共有五个部分组成,分别是:
单片机89C52、发光二极管电路、LED数显电路、晶振及复位控制电路、控制与调时开关电路。
在进行伟福仿真器调试过程中,程序运行正确,五个部分就同时工作,从而实现了交通灯的基本功能及调时功能。
2、设计任务
2.1设计的任务
设计一个交通灯控制交通灯控制系统的设计
2.2设计要求
1.A道和B岛上均有车料要求通过时,AB道轮流放行。
A道放行五秒钟(调试时改为五秒钟),B道放行四分钟(调试时改为四秒钟)。
2.一道有车而另一道无车(实验室用开关K0和K1控制),交通灯控制系统能立即让有车道放行。
3.有紧急车辆要求通过时,系统能禁止普通车辆通行,AB均为红灯,紧急车辆由开关K2开关控制。
4.绿灯转换为红灯时黄灯亮1秒。
3、系统总体方案及硬件设计
总体设计方案:
1.分析交通管理
十字路口为南北走向与东西走向。
需用到4组灯,每组要有红黄绿各一盏。
初状态0为东西红灯,南北红灯。
然后状态1东西绿灯通车,同时南北红灯暂停。
延时一段时间之后,东西红灯、南北绿灯灭,同时黄灯闪几下。
再转状态3,南北绿灯通车,东西红灯。
过一段时间转状态4,南北绿灯、东西红灯灭,黄灯闪几秒。
最后循环到状态1。
(但由于实验箱上的端口有限,本实验只用了两组灯——东、南方向)
2.本实验同时用了数码管显示红灯的时间倒计时。
在红黄绿灯转换是用了黄灯闪烁来提示。
3.智能控制
为了实现智能控制,本实验增加了一个功能,即在任何时候有外部环境影响一定时间时(本程序设计成40秒)时东西方向自动切换成红灯,而南北方向则切换成绿灯,或者反之。
而这里的外部环境是如果南北方向绿灯,但没人通过‘1’,而此时东西为红灯但等待通过的人很多‘0’,如果这种状态保持一定时间(本程序设计成5秒)则两通行方向状态自动转换,由于实验设备有限本实验用两个开关来作为外不状态的控制。
4.资源的分配
东、南方向的绿黄红灯分别接单片机的p1.0~p1.6。
电路设计方案:
交通灯总体设计电路如书后附图所示,该图是利用protel99画图工具绘制出来的接线图。
系统上电之后,南北路处于禁止通行的状态,东西路处于允
许通行的状态。
南北路亮红灯时,东西路亮绿灯;南北路亮绿灯时,东西路亮红灯。
南北路亮红灯时,东西路亮绿灯;当绿灯时间减完之后,东西路换为黄灯,南北路仍为红灯。
这样东西路与南北路的时间同时减完。
减完之后,东西路换为红灯,南北路换为绿灯,再经过一个绿灯时间,南北路换为黄灯,东西路仍为红灯。
这时东西路与南北路时间相同,同时减完。
减完后,南北路为红灯,东西路为绿灯。
如此循环下去。
利用89c52单片机控制交通灯系统工作。
其中P0口接数据输出口,与外部数码管连接,P2口与数码管的COM口连接,用于选择数据输出的地址,这样就可以实现时间的动态显示,并且节省了端口数。
P1口作为红黄绿灯的控制口,通过上拉电阻将红黄绿灯的正极接高电平,负极接在P1口上,我们可以利用控制单片机的P1口的输出数据控制红黄绿灯的亮灭。
调时可以利用外部中断INT0申请中断。
当INT0为低电平时,单片机的PC指向INT0的中断入口地址,从而转向中断服务程序。
此时我们可以通过判断外部开关量的状态来对红黄绿灯的显示时间进行修改。
同时当INT0为低电平时,东西南北方向的都送红灯亮,实现紧急情况下禁止通行。
然后通过判断INT0的状态来决定中断是否返回,当INT0为低电平时,说明开关又一次按下,这是退出中断服务程序,继续执行主程序。
3.1电源电路
电源电路有传统的变压器电路和开关电源组成。
电源电路是最基本,最必须的电源部分安装,任何电路都离不开电源部分,单片机系统也不例外,而且我们应该高度重视电源部分,不能因为电源部分电路比较简单而有所忽略,其实有将近一半的故障或制作失败都和电源有关,电源部分做好才能保证电路的正常工作。
AT89C52实验开发板提供了一个6-9V伏400毫安的外接交流电源,通过整流滤波稳压电源输出的直流电压通过专门的电源插座把直流电压引入实验开发板,左边两个是5伏的电源滤波电容,一般大电容旁边并联一个小电容的目的是降低高频内阻,因为大的电解电容一般采用卷绕工艺制造,所以等效电感较大,小电容可以提供一个小内阻的高频通道,降低电源全频带内阻。
通过三端稳压芯片7805稳压成5伏直流电源提供给单片机系统使用,右边两个电容是5伏电源的滤波电容,电阻和绿色的LED组成5伏电源的工作指示电路,只要电源部分正常,绿色的LED1就会点亮,我们可以根据这个LED来判断整个电源部分是否工作正常。
这个在实际电路中常常见的
3.2晶振电路
MCS--52单片机单片机内部的振荡电路是一个到增益反相放大器,引线XTAL1和XTAL2分别为反向振荡放大器的输入及内部时钟工作电路的输入和来自反向振荡器的输出,该反向放大器可以配置为片内振荡器。
单片机内部虽然有震荡电路,但要形成成时钟,外部还需要附加电路。
石晶振荡和陶瓷振荡均可采用.有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度。
51单片机的时钟产生方式有两种,分别为:
内部时钟方式和外部始终方式。
利用其内部的震荡电路XTAL1和XTAL2引线上外接定时元件,内部震荡电路便产生自激震荡,用示波器可以观察到XTAL2输出的时钟信号。
在MCS-51单片机一般常用内部时钟方式,也就是在XTAL1和XTAL2之间连接晶体震荡器与电容构成稳定的自激震荡器。
3.3红黄绿灯显示电路
红黄绿灯显示电路如下图5所示。
二极管的正极通过上拉电阻接+5v的电源VCC,负极分别接89C52单片机的外部接口P1.0、P1.1、P1.2、P1.3、P1.4、P1.5口,我们可以通过控制单片机P1口的数据输出来控制二极管的亮灭。
例如为P1口送值为#0DEH,则南北红灯亮禁止通行,东西绿灯亮允许通行。
数码管只要是用于数字的显示。
数码管有共阴和共阳的区分,单片机都可以进行驱动,但是驱动的方法却不同。
两位数码管循环电路是由1K的电阻和数码管组成,电源+5V通过560的电阻直接给数码管的7个段位供电,P00-P07对应了两个接数码管的A,B,C,D,E,F,G和小数点位,P21-P24接显示个位数的数码管的3、8引角,当相应的端口变成低电平时,驱动相应的三极管会导通给数码管相应的位供电,这时只要P0口送出数字的显示代码,数码管就能正常显示需要的数字。
实验电路开始工作时,七段数码管开始从红灯和绿灯时间倒计时,计时起始信号由主控电路给出,定时结束信号也输入到主控芯片,由主控芯片启、闭三色信号灯或启动另一计时电路。
在这里正确的程序是核心,应该完成一个时序电路的工作。
其状态表
(1)为:
南北路
东西路
绿灯
红灯
黄灯
红灯
绿灯
黄灯
表1
3.4按键控制电路
按键控制电路是本设计的应急措施,当有紧急车辆通过时,按下相应的按键可以控制道路的交通状态
4、软件系统设计
4.1软件设计概述
该交通灯控制系统的软件系统主要是用C编的单片机程序,在程序中嵌套使用了汇编语言。
在程序中设一个计数器,当从0计至两个红灯时间时,为一个周期,对其清零,从新下一个周期。
从图上也可以看出,在一个周期内,有四个特殊时间点,这四个特殊时间点是需要换向的,当计数器里的数和四个特殊点相同时,说明至少有一路信号被减到0,需要重新对数据区送数,而且还要把红绿灯的状态换一下
在处理按键时,因为按键的一次动作不仅包含按下,还包含弹开,所以在处理按键,我不仅考虑按下,还考虑弹开,当可靠按下,一边调显示子程序,一边等待键松开,当可靠松开后,才退出子程序。
这样每按下一次键只会有一次动作,而且就是键被按下不松开,也不会也现数码管没有显示的现象
4.2主函数的设计
该软件的主程序采用外部0中断方式,其流程图如下图所示,主函数见附1。
在该主函数中,为了减小定时误差,采用汇编语言进行初始化外部0中断。
其初始化语句如下:
INTT0:
PUSHA
PUSHPSW
A1:
JNBP3.5,INTS
JNBP3.6,EW
JNBP3.7,NS
JNBP3.0,A2
LJMPA1
INTS:
MOVP1,#11011011B
MOV44H,#00H
MOV45H,#00H
LCALLDISP
JNBP3.5,INTS
LJMPA1
EW:
MOVP1,#01111011B
MOV44H,#00H
MOV45H,#00H
LCALLDISP
JNBP3.6,EW
LJMPA1
NS:
MOVP1,#11001111B
MOV44H,#00H
MOV45H,#00H
LCALLDISP
JNBP3.7,NS
LJMPA1
A2:
POPPSW
POPA
LJMPSTART
RETI
INTT1:
PUSHA
PUSHPSW
MOVP1,#11011011B
MOV40H,#00H
MOV42H,#00H
MOV44H,#00H
MOV45h,#00h
MOV63H,#00H
A3:
LCALLDISP
JNBP3.5,EWBLUE
JNBP3.6,YELLOWPLUS
JNBP3.7,NSBLUE
JNBP3.0,X1
LJMPA3
X1:
LJMPJEND
EWBLUE:
MOV44H,40H
MOV45H,40H
LCALLDISP
MOVA,40H
INCA
MOV40H,A
CJNEA,#30H,DDD
MOV40H,#0H
MOVA,40H
ADDA,42H
MOV43H,A
DDD:
MOV44H,40H
MOV45H,40H
LCALLDISP
JNBP3.0,X1
JNBP3.6,YELLOWPLUS
JNBP3.7,NSBLUE
JNBP3.5,DDD
LJMPA3
YELLOWPLUS:
MOV44H,42H
MOV45H,42H
LCALLDISP
MOVA,42H
INCA
MOV42H,A
MOVA,42H
CJNEA,#0AH,DDD1
MOV42H,#0H
DDD1:
MOV44H,42H
MOV45H,42H
LCALLDISP
JNBP3.0,X2
JNBP3.5,EWBLUE
JNBP3.6,DDD1
JNBP3.7,NSBLUE
LJMPA3
X2:
LJMPJEND
NSBLUE:
MOV44H,63H
MOV45H,63H
LCALLDISP
MOVA,63H
INCA
MOV63H,A
MOV61H,A
CJNEA,#30H,DDD2
MOV63H,#0H
MOV61H,#00H
DDD2:
MOV44H,61H
MOV45H,63H
LCALLDISP
JNBP3.0,JEND
JNBP3.6,YELLOWPLUS
JNBP3.7,DDD2
JNBP3.5,X3
LJMPA3
X3:
LJMPEWBLUE
JEND:
POPPSW
POPA
LJMPSTART
RETI
5、实验仿真
图1东西显示红灯,南北显示绿灯
图2南北显示红灯,东西显示绿灯
6、课程设计体会
通过这一周的单片机课程设计,我学到了许多知识,由于单片机学习并不是很好,只好选择用C语言做课程设计,初做程序,里面有好些错误,经过查阅质料和寻求同学的帮助一一解决了这些问题。
在设计过程中和完成之后,我认真总结,有以下体会:
1.此次课程设计是在上学期《单片机原理及技术》的基础上进行的,整个实验设计过程相对比较熟悉,是把以前学习的零碎的内容系统的学习。
2.本实验的难点在与显示部分、计时部分、外加功能部分。
其中显示用了串行口的知识,而计时则完全用定时器计时。
3.程序调试时,应该将各个功能的子程序、模块单独调试,提高调试的速度。
4.本实验要充分了解交通灯的实际运行规则,依照现实生活的应用进行设计。
5.在经过一周的设计过程中,通过大量的查阅资料,认真研究教材,并向指导老师请教很多问题,自己对单片机有了更为深刻的理解。
我认真研究原理,画出程序流程图,通过源程序,做出电路图,在仿真中发现很多问题,通过仔细研究,不但解决了问题,我也学到了在平时的学习中学不到的东西。
参考文献
[1]余发山.单片机原理及应用技术.中国矿业大学出版社.2003年12月第一版.
[2]谭浩强.C程序设计(第二版).清华大学出版社.1999年12月.
[3]彭小军.用单片机实现电子时钟.新余高等专科学报,2004
[4]黄正谨.综合电子设计与实践.东南大学出版社.2002-3
[5]高峰.单片机应用系统设计及实用技术,北京机械工业出版社,2004
附1源程序代码
ORG0000H
LJMPMAIN
ORG0003H
LJMPINT0
ORG000BH
LJMPTIME0
ORG0013H
LJMPINT1
ORG0040H
MAIN:
MOVSP,#70H
MOV40H,#20H;东西绿灯显示时间
MOV41H,#20H;南北绿灯显示时间
MOV42H,#06H;黄灯闪烁时间
START:
MOVA,41H
ADDA,42H
MOV43H,A;红灯时间
MOVTMOD,#01H;开始正常工作状态
MOVTH0,#3CH
MOVTL0,#0B0H;定时50ms
SETBEA;开始计时
SETBET0;开T0中断
SETBTR0;启动定时器T0
SETBEX0
SETBINT0
SETBINT1
SETBEX1
STATUS1:
MOVP1,#01111011B;东西绿灯,南北红灯
MOV44H,40H
MOV45H,43H
J11:
MOVR4,#14H
J0:
LCALLDISP
MOVA,R4
JNZJ0
DEC44H
DEC45H
MOVA,44H
JNZJ11
STATUS2:
;东西黄灯闪,南北红灯亮
MOVP1,#10111011B
MOVR3,42H
J22:
MOV44H,R3
MOVR4,#0AH
J20:
LCALLDISP
MOVA,R4
JNZJ20
MOVP1,#11111011B
MOVR4,#0AH
J21:
LCALLDISP
MOVA,R4
JNZJ21
MOVP1,#10111011B
LCALLDISP
DEC44H
DEC45H
DJNZR3,J22
STATUS3:
;东西红灯,南北绿灯
MOVP1,#11001111B
MOV44H,43H
MOV45H,41H
J31:
MOVR4,#14H
J30:
LCALLDISP
MOVA,R4
JNZJ30
DEC44H
DEC45H
MOVA,45H
JNZJ31
STATUS4:
;东西红灯亮,南北黄灯闪
MOVP1,#11010111B
MOV45H,42H
J42:
MOVR4,#0AH
J40:
LCALLDISP
MOVA,R4
JNZJ40
MOVP1,#11011111B
MOVR4,#0AH
J41:
LCALLDISP
MOVA,R4
JNZJ41
MOVP1,#11010111B
LCALLDISP
DEC44H
DJNZ45H,J42
JMPSTART
RET
DISP:
MOVA,44H;显示
MOVB,#0AH
DIVAB
MOV46H,A
MOV47H,B
MOVA,46H
MOVDPTR,#TAB
MOVCA,@A+DPTR
MOV46H,A
MOVA,47H
MOVDPTR,#TAB
MOVCA,@A+DPTR
MOV47H,A
MOVA,45H
MOVB,#0AH
DIVAB
MOV48H,A
MOV49H,B;46h,47h东西显示的十位、个位
MOVA,48H
MOVDPTR,#TAB
MOVCA,@A+DPTR
MOV48H,A
MOVA,49H
MOVDPTR,#TAB
MOVCA,@A+DPTR
MOV49H,A
MOVP0,46H
MOVP2,#11110111B
LCALLDELAY
MOVP2,#0FFH
MOVP0,47H
MOVP2,#11111011B
LCALLDELAY
MOVP2,#0FFH
MOVP0,48H
MOVP2,#11111101B
LCALLDELAY
MOVP2,#0FFH
MOVP0,49H
MOVP2,#11111110B
LCALLDELAY
MOVP2,#0FFH
RETI
DELAY:
MOVR7,#06H
HERE:
DJNZR7,HERE
RETI
TIME0:
PUSHA
PUSHPSW
DECR4
MOVTH0,#3CH
MOVTL0,#0B0H
SETBEA
SETBET0
SETBTR0
POPPSW
POPA
RETI
INT0:
PUSHA
PUSHPSW
MOVP1,#11011011B
MOV44H,#58H
MOV45H,#58H
INTS:
LCALLDISP
JNBP3.5,RED
JNBP3.6,YELLOW
JNBP3.7,JEND
LJMPINTS
RED:
MOV44H,41H
MOV45H,41H
LCALLDISP
MOVA,40H
INCA
MOV40H,A
MOV41H,A
CJNEA,#58H,DDD
MOV40H,#1H
MOV41H,#1H
DDD:
MOV44H,41H
MOV45H,41H
LCALLDISP
JNBP3.7,JEND
JNBP3.6,YELLOW
JNBP3.5,DDD
LJMPINTS
YELLOW:
MOV44H,42H
MOV45H,42H
LCALLDISP
MOVA,42H
INCA
MOV42H,A
MOVA,42H
CJNEA,#0AH,DDD1
MOV42H,#1H
DDD1:
MOV44H,42H
MOV45H,42H
LCALLDISP
JNBP3.7,JEND
JNBP3.5,INTS
JNBP3.6,DDD1
LJMPINTS
JEND:
POPPSW
POPA
LJMPSTART
RETI
INT1:
PUSHA
PUSHPSW
INT1S:
MOVP1,#11011011B
MOV44H,#0H
MOV45H,#0H
LCALLDISP
JBP3.7,INT1S
POPPSW
POPA
RETI
TAB:
DB3FH,06H,5BH,4FH,6
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 交通灯
![提示](https://static.bingdoc.com/images/bang_tan.gif)