(
》
)
单片机课程设计报告
交通灯控制系统设计
摘 要
本设计是针对交通灯系统的设计,由单片机AT89C51(实物用AT89S52)、键盘、LED显示、交通灯演示系统组成。单片机是把微型计算机的各功能部件集成在一块芯片中,构成的一个完整的微型计算机。AT89C51单片机是MC-51中的子系列,是一组高性能兼容型单片机,AT89C51是一个低功耗高性能的CMOS 8位单片机,40个引脚,片内含4KB Flash ROM和128B RAM,它是一个全双工的串行通行口,既可以用常规编程,又可以在线编程。
本设计中的数码管的选通采用的方法是动态显示,对每一位数码分时轮流通电显示,复位电路采用上电+按钮电平复位,时钟电路采用内部时钟产生方式。对特殊情况的处理采用中断处理方式,在中断处理程序中采用对管脚的状态查询扫描,已采取相应情况的处理。
对设计方案进行电路硬件设计,并将已编程的程序载入调试,可以得到理想的实验效果。 系统包括人行道、左转、右转、以及基本的交通灯的功能.具体功能是假如 A 道和B道上均有车辆要求通过时,A、B道轮流放行。A道放行 25秒,B道放行20秒。 一道有车而另一道无车,交通灯控制系统能立即让有车道放行。有紧急车辆要求通过时,系统要能禁止普通车辆通行,A、B道均为红灯,紧急车由K2 开关模拟。绿灯转换为红灯时黄灯亮 1秒钟。系统除基本交通灯功能外,还具有倒计时、时间设置、紧急情况处理、分时段调整信号灯的点亮时间以及根据具体情况手动控制等功能。
#
]
!
目 录
1 引言 ................................................................... - 1 -
交通灯的重要作用 ................................................... - 1 - 该交通灯系统的特点 ................................................. - 1 -
2系统总体方案及硬件设计 .................................................. - 2 -
》
原理框图 ........................................................... - 2 - 设计功能 ........................................................... - 2 -
交通灯控制系统各部分硬件组成 ....................................... - 2 -
复位部分 ........................................................ - 2 -
时钟电路部分 .................................................... - 3 - 路口指示灯部分 .................................................. - 3 - 显示部分 ........................................................ - 3 - 元器件清单 ......................................................... - 4 -
3 软件设计 ................................................................ - 5 -
【
交通灯控制系统软件流程图及程序分析 ................................. - 5 -
主程序流程图及程序模设计 ........................................ - 5 - INT0中断服务程序流程图及程序模设计 ............................. - 6 - 路口指示灯部分 ..................................................... - 7 - 显示部分 ........................................................... - 7 -
4. Proteus软件仿真 ....................................................... - 8 - 5 课程设计体会 ........................................................... - 9 - 参考文献 ................................................................. - 10 -
[
附1:源程序代码…………………………………………………………………………… -13 - 附2:系统原理图.............................................................. 20
1 概述
本设计是根据单片使机原理就交通灯的系统作出的,由于车辆的增多,所以交通灯在现代道路交通中起着越来越重要的作用。为了解决这些问题,我们更应该提高交通控制和管理水平,合理使用现有交通设施,充分发挥其能力,提高交通效率,促进和谐交通的建立。 1.1 交通灯的重要作用
交通灯在城市交通中起着重要的作用,它与人们日常生活密切相关,是人们出行的安全保障。如今随着人们生活水平的提高,对交通管制也提出了更高的要求,因此提供一个可靠、安全、便捷的多功能交通灯控制系统有着现实的必要性。该设计在熟练掌握单片机原理及其应用技术的使用方法基础上,综合应用单片机原理、微机原理、微机接口技术、proteus软件等课程方面的知识,设计一个采用AT89C51单片机控制的交通灯控制电路。能方便的对交通灯进行控制,使交通更和谐。 1.2 该交通灯系统的特点
本系统结构简单,操作方便;可实现自动控制,具有一定的智能性;对优化城市交通具有一定的意义。本设计将各任务进行细分包装,使各任务保持相对独立;能有效改善程序结构,便于模块化处理,使程序的可读性、可维护性和可移植性都得到进一步的提高。
系统总体方案及硬件设计
2.1 原理框图
根据设计功能及要求,我们可得系统的原理框图如图(1)所示。
复位电路 数据信号 交通灯 振荡电路 单片机 段码 LED 调时、紧急情况处理 片选 数码管 图(1)系统原理框图
2.2 设计功能
1.完成交通灯的基本功能,结合实际情况,控制红、黄、绿交通灯的亮和灭.其工作流程是:绿、黄、红分时间段开通,循环往复,计时电路以秒为单位作倒计时,计数为0时进行切换,计时时间可由LED数码管显示(需符合交通规则);
2.红、黄、绿交通灯的亮和灭的时间可调节;
3.若有交通异常情况,可以通过按键处理目前的紧急状态; 4.采用LED数码管显示红或绿交通信号灯亮的剩余时间; 5.通过按键设定红和绿交通信号灯亮一次的总时间; 6.控制东西方向和南北方向的红、黄、绿交通灯的亮和灭; 7.夜间控制功能,按键进入夜间模式,黄灯闪亮;
8.控制系统的原理图和接线图采用PROTEL,PROTEUS等专用绘图软件绘制。 2.3 交通灯控制系统各部分硬件组成 2.3.1
复位部分
复位电路采用上电+按钮电平复位是上电复位与按钮复位的组合,当振荡频率是6MHz时,电容C取22uf, R取1K,Rs取200左右。上电瞬间复位端(RST/Vpd)的电位与Vcc相同,随着充电电路电流的减少,RST/Vpd的电位下降,最后为0V,当按钮按下后,电源Vcc通过电阻R,施加在单片机复位端RST/Vpd上实现复位,电路连接图如图(2):
复位电路(2)
2.3.2 时钟电路部分
本系统采用内部时钟产生方式:在和两端跨接陶瓷谐振器,与内部反相器构成稳定的自激振荡器采。晶振采用12MHz的振荡频率和两个30Pf瓷片电容C1、C2,两个电阻对频率有微调作用。其电路如图(3)
时钟电路(3)
2.3.3
路口指示灯部分
采用红黄绿三种颜色的发光二极管共12个分为4组代表路口的交通灯(电路图中用两组示意).其中每两组控制一个路口,具体时序如表1: 表1:
方向 灯色 东西 5 1 3 南北 4 1 4 红灯 黄灯 绿灯 2.3.4
显示部分
采用四位一体共阴数码管,分别显示南北和东西灯的剩余时间.片选部分和数码段显示部分,分别接单片机管脚的P2口和P0口,具体的共阴数码管管脚分布位置见图(4).
时间显示图(4)显示部分 2.4 元器件清单 如表2: 器件名称 单片机 晶振 LED数码管 电解电容 瓷片电容 排阻 电阻 发光二极管 开关
型号大小 AT89S52 12MHz 四联共阴 22uF 30pF 470Ω 470Ω 红 黄 绿 按键式 数量 1 1 1 1 2 1 1 4 4 4 4
3 软件设计
开始 初始化AT89C52 东西方向红灯亮,南北方向绿灯亮,延时 南北方向剩余时间1S 东西方向红灯亮,南北方向黄灯闪亮,延时 南北方向剩余时间0S 东西方向绿灯亮,南北方向红灯亮,延时 东西方向剩余时间1S 东西方向黄灯闪亮,南北方向红灯亮,延时 东西方向剩余时间0S 图(5)主程序流程图 3.1 交通灯控制系统软件流程图及程序分析 3.1.1
主程序流程图及程序模设计
该交通信号灯控制系统的四中工作状态如图(5)所示(南北方向的交通灯为例): (1)东西方向车道红灯亮,南北方向车道绿灯亮。表示东西方向车道上的车辆禁止通行,南北方向车道允许通行。绿灯亮足规定的时间隔时,控制器发出状态信号,转到下一工作状态。
(2)东西方向车道红灯亮,南北方向车道黄灯闪亮。表示南北方向车道上未过停车线的车辆停止通行,已过停车线的车辆继续通行,东西方向车道禁止通行。黄灯闪亮足规定时间间隔时,控制器发出状态转换信号,转到下一工作状态。
(3)东西方向车道绿灯亮,南北方向车道红灯亮。表示东西方向车道允许通行,南北方向车道上的车辆禁止通行,绿灯亮足规定的时间间隔时,控制器发出状态转换信号,转到下一工作状态。
(4)东西方向车道黄灯闪亮,南北方向车道红灯亮。表示南北方向车道禁止通行,东西方向车道上位过限停车线的车辆停止通行,已过停车线的车辆继续通行。黄灯闪亮足规定的时间间隔时,控制器发出状态转换信号,系统又转换到第(1)种工作状态。
3.1.2 INT0中断服务程序流程图及程序模设计
INT0与K2连接,另一端与地连接。按下K2,东西南北四个方向全红,也就是说,东西南北四个通道都不能通车,这是紧急情况,但救护车等特殊车辆可以通过。K0与AT89C52的25管脚相连。K1与相接,K3与相接,K2与相接。在按下K2的前提下,按 按下K0,如果3秒中之内没有按键,则交通灯恢复正常。
开始 初始化T0 =0 东西南北方向灯全红 =0 =0 东西方向加1S =0 南北方向减1S 中断返回 图(6)中断服务流程图
50ms中断计算方法(适用于12MHz晶振): T0的计数初值:X0=M-计数值
=M-Tc/TP =M-(Tc×fosc)/12 =65536-(50ms×1SMHz/12) =15536 ≈15535 =3CB0H
其中单元存放3s钟控制标志位,单元存放1s控制标志位;单元存放秒控制标志位 60H和61H单元分别存放产生1s和3s的中断次数,当它们单元中的值为零时,分别表示1s和3s到,对单元和4F.0H单元进行置1,62H单元用于产生秒
由于采用工作模式1,所以每次中断后,一定在中断程序中重装记数初值. 3.2 路口指示灯部分
用P1端口作为输出端口,用到端口分别控制东西和南北两组灯的状态低电平点亮,具体端口功能如下:
控制东西红灯的亮灭 控制东西绿灯的亮灭 控制东西黄灯的亮灭 控制南北红灯的亮灭 控制南北绿灯的亮灭 控制南北黄灯的亮灭
具体的程序我们以点亮东西红灯东南北绿灯为例: MOV P1, #0EEH 其余部分根据硬件不同而修改#0EEH的值. 3.3 显示部分
四位一体共阴数码管的片选部分由到提供,码段部分由到控制.
其中控制东西剩余时间的十位数的显示,控制东西剩余时间的个位数的显示,控制南北剩余时间的十位数的显示,控制南北剩余时间的个位数的显示.低电平选中.
到控制分别控制点亮数码段的A段到H段,通过查共阴极数码段码表,将它们的数值送到P0口,与到口结合,可以显示不同方向不同位数的各个数值.
例如,显示东西剩余时间的十位程序如下: MOV P2,#0FEH 选择十位程序 MOV P0,A 向P0口送段码的程序
2 4. Proteus软件仿真 根据设计需要和上述框图,我们可得到交通灯控制系统各过程仿真图如下图所示
图(7)紧急情况时
图(8)东西方向变黄灯,南北方向禁行
图(9) 南北方向通车,东西方向禁行
图(10)南北方向禁行,东西方向通车
5 课程设计体会
该交通灯系统是以单片机89C52芯片为核心部件,实现了能根据实际车流量通过89C51芯片设置及控制红、绿灯燃亮时间来进行交通控制。
本次课程设计使我对单片机的工作原理有了更深刻的认识,例如对复位电路、晶振电路的理解。我深刻的理解到单片机的价值在于灵活运用它的IO端口以及其千变万化的程序。本设计中我们用IO端口驱动数码管以及引接外部开关。掌握了许多在以前学习中混淆不清的知识点。仿真实验,不仅锻炼了自己的动手能力,而且真正作到了理论联系实际的重要性,体会到了其中失败与成功的滋味,收益匪浅。同时在焊接单片机电路板时使我在制作上更加的熟练,经过不断的试验二极管终于我的灯亮了,当我看到我亲手制作的板子亮时,我的心中非常激动。
同时,我也认识到自己的知识不足,例如,有时不能正确认识、合理使用中断程序,这将是我以后努力提高的方面。 参考文献
[1].《单片机原理与应用技术》 余发山主编 中国矿大出版社 2007 [2].《微型计算机控制技术》 赖寿宏主编 机械工业出版社 2002 [3].《单片机原理及应用》 丁元杰主编 机械工业出版社 2001 [4].《单片机中级教程》 张迎春主编 北京航空航天出版社 2004 [5].《基于单片机的交通信号控制系统》欧伟民 湖南大学学报(自然科学版) 2002,(S2
附1:源程序代码 ORG 0000H
LJMP START ORG 0003H LJMP INT0 ORG 000BH LJMP T0 ORG 001BH LJMP T1 ORG 0100H START: MOV SP, #30H
MOV 40H, #30 ; MOV 41H, #20 ; MOV 42H, #25 ; MOV 43H, #25 ;
MOV TMOD, #11H ; MOV TH0, #3CH MOV TL0, #0B0H MOV TH1, #3CH MOV TL1, #0B0H MOV 60H, #20 MOV 61H, #60 MOV 62H, #10 MOV 63H,#2 CLR 4EH CLR 4FH CLR 4DH SETB EA SETB EX0 SETB ET0 SETB ET1 SETB PT1 SETB TR0
DISPLAY1:MOV P1, #0EEH ; MOV R3, 40H MOV R4, 43H LOOP1: MOV A, R3 MOV B, #0AH DIV AB
MOV DPTR,#TAB MOVC A,@A+DPTR
东西红灯时间 东西绿灯时间 南北红灯时间 南北绿灯时间 定时器初始化 显示东西红灯与南北绿灯时间
MOV P2,#0FEH MOV P0,A
LCALL DELAY;东西道显示时间的十位 MOV A, B
MOVC A,@A+DPTR MOV P2,#0FDH MOV P0,A
LCALL DELAY;东西道显示时间的个位
MOV A, R4 MOV B, #0AH DIV AB
MOV DPTR,#TAB MOVC A,@A+DPTR MOV P2,#0FBH MOV P0,A
LCALL DELAY;南北显示时间的十位 MOV A, B
MOVC A,@A+DPTR MOV P2,#0F7H MOV P0,A
LCALL DELAY;南北显示时间的个位 JNB 4FH,LOOP1 CLR 4FH DEC R3 DEC R4
CJNE R4,#0FFH,LOOP1
kkk1: MOV P1, #0DEH;南北绿灯灭黄灯亮
LOOP2: MOV A, R3 MOV B, #0AH DIV AB
MOV DPTR,#TAB MOVC A,@A+DPTR MOV P2,#0FEH MOV P0,A LCALL DELAY MOV P2, #0FBH MOV P0, A LCALL DELAY MOV A, B
MOVC A,@A+DPTR MOV P2,#0FDH MOV P0,A
LCALL DELAY MOV P2, #0F7H MOV P0, A LCALL DELAY JNB 4DH,LOOP2
CLR 4DH
DJNZ 63H,Kkk2 MOV 63H,#2 DEC R3
CJNE R3,#0FFH,Kkk2 LJMP A1
Kkk2:MOV P1,#0FEH;南北绿灯灭黄灯也灭。kkk1 、Kkk2控制黄灯闪亮 A2:MOV A, R3 MOV B, #0AH DIV AB
MOV DPTR,#TAB MOVC A,@A+DPTR MOV P2,#0FEH MOV P0,A LCALL DELAY MOV P2, #0FBH MOV P0, A LCALL DELAY MOV A, B
MOVC A,@A+DPTR MOV P2,#0FDH MOV P0,A LCALL DELAY MOV P2, #0F7H MOV P0, A LCALL DELAY JNB 4DH,A2 CLR 4DH
DJNZ 63H,kkk1 MOV 63H,#2 DEC R3
CJNE R3,#0FFH,Kkk1
A1:MOV P1, #0F5H ;东西红灯时间到,南北绿灯亮,南北红灯亮 DISPLAY2:MOV R3, 41H ;显示东西绿灯,南北红灯时间
MOV R4, 42H LOOP3: MOV A, R3 MOV B, #0AH DIV AB
MOV DPTR,#TAB MOVC A,@A+DPTR MOV P2,#0FEH MOV P0,A LCALL DELAY MOV A, B
MOVC A,@A+DPTR MOV P2,#0FDH MOV P0,A LCALL DELAY
MOV A, R4 MOV B, #0AH DIV AB
MOV DPTR,#TAB MOVC A,@A+DPTR MOV P2,#0FBH MOV P0,A LCALL DELAY MOV A, B
MOVC A,@A+DPTR MOV P2,#0F7H MOV P0,A LCALL DELAY JNB 4FH,LOOP3 CLR 4FH DEC R3 DEC R4
CJNE R3,#0FFH,LOOP3 KKK5:MOV P1, #0F3H
LOOP4: MOV A, R4 ;显示南北红灯,东西黄灯时间 MOV B, #0AH DIV AB
MOV DPTR,#TAB MOVC A,@A+DPTR MOV P2,#0FEH MOV P0,A LCALL DELAY MOV P2, #0FBH MOV P0, A
LCALL DELAY MOV A, B
MOVC A,@A+DPTR MOV P2,#0FDH MOV P0,A LCALL DELAY MOV P2, #0F7H MOV P0, A LCALL DELAY JNB 4DH,LOOP4 CLR 4DH DJNZ 63H,KKK5
MOV 63H,#2 DEC R4
CJNE R4,#0FFH,A7 LJMP DISPLAY1
A7:MOV P1, #0F7H;显示南北红灯,东西黄灯灭,KKK5 、A7控制黄灯闪亮 A8: MOV A, R4
MOV B, #0AH DIV AB
MOV DPTR,#TAB MOVC A,@A+DPTR MOV P2,#0FEH MOV P0,A LCALL DELAY MOV P2, #0FBH MOV P0, A LCALL DELAY MOV A, B
MOVC A,@A+DPTR MOV P2,#0FDH
MOV P0,A LCALL DELAY MOV P2, #0F7H MOV P0, A LCALL DELAY JNB 4DH,A8 CLR 4DH
DJNZ 63H,KKK5 MOV 63H,#2 DEC R4
CJNE R4,#0FFH,KKK5 LJMP DISPLAY1
;;;;;;;;;;;;定时器中断;;;;;;;;;;;; T0: PUSH ACC PUSH B PUSH PSW
MOV TH0,#3CH MOV TL0,#0B0H DJNZ 62H,OVER100 MOV 62H,#10 SETB 4DH
OVER100:DJNZ 60H,OVER MOV 60H,#20 SETB 4FH OVER: POP PSW POP B POP ACC RETI T1: PUSH ACC PUSH B PUSH PSW
MOV TH1,#3CH MOV TL1,#0B0H DJNZ 61H,OVER1 MOV 61H,#60 SETB 4EH OVER1: POP PSW POP B POP ACC RETI
;;;;;;;;;;;;;INTO中断修改;;;;;;;;;;
INT0:PUSH ACC PUSH B PUSH PSW MOV A,P1 PUSH ACC
MOV P1,#0F6H;东西南北道红灯皆亮 CLR EX0 CLR TR0
LCALL DELAY ;按键消抖 JB , OK
LJMP DISPLAY3 OK:LJMP OVER2
DISPLAY3:MOV R5, 40H;东西红灯南北绿灯最大时间值的数码管显示 MOV R6, 43H MOV A, R5 MOV B, #0AH DIV AB
MOV DPTR,#TAB MOVC A,@A+DPTR MOV P2,#0FEH MOV P0,A LCALL DELAY MOV A, B
MOVC A,@A+DPTR MOV P2,#0FDH MOV P0,A LCALL DELAY
MOV A, R6 MOV B, #0AH DIV AB
MOV DPTR,#TAB MOVC A,@A+DPTR MOV P2,#0FBH MOV P0,A LCALL DELAY MOV A, B
MOVC A,@A+DPTR MOV P2,#0F7H MOV P0,A LCALL DELAY
MOV A,P2
ANL A,#70H;在没按下K0的情况下,根据K1、K3按下的情况对各道的红绿灯亮的时间进行调节
CJNE A,#70H,DES3 LJMP DISPLAY3 DES3:LCALL DELAY
CJNE A,#70H,DES4 DES4:JNB ,DES7 JNB ,ADD1 JNB ,DEC1
DES7:JNB ,DES7 LJMP DISPLAY5 ADD1:JNB ,ADD1 INC 40H INC 43H
LJMP DISPLAY3 DEC1:JNB ,DEC1 DEC 40H DEC 43H
LJMP DISPLAY3
DISPLAY5:SETB TR1
DISPLAY4:MOV R5, 41H;东西绿灯南北红灯最大时间值的数码管显示 MOV R6, 42H MOV A, R5 MOV B, #0AH DIV AB
MOV DPTR,#TAB MOVC A,@A+DPTR MOV P2,#0FEH MOV P0,A LCALL DELAY MOV A, B
MOVC A,@A+DPTR MOV P2,#0FDH MOV P0,A LCALL DELAY
MOV A, R6 MOV B, #0AH DIV AB
MOV DPTR,#TAB MOVC A,@A+DPTR MOV P2,#0FBH MOV P0,A LCALL DELAY MOV A, B
MOVC A,@A+DPTR MOV P2,#0F7H MOV P0,A LCALL DELAY
MOV A,P2 ANL A,#70H
CJNE A,#70H,DES5 JNB 4EH,DISPLAY4 LJMP OVER2 DES5: LCALL DELAY
CJNE A,#70H,DES6
DES6: JNB ,DIS3; 根据K1、K3按下的情况对各道的红绿灯亮的时间进行调节 JNB ,ADD2 JNB ,DEC2 LJMP DISPLAY4
DIS3:JNB ,DIS3 CLR TR1
MOV TH1,#3CH MOV TL1,#0B0H MOV 61H,#60 LJMP DISPLAY3 ADD2:JNB ,ADD2 MOV TH1,#3CH MOV TL1,#0B0H MOV 61H,#60 INC 41H INC 42H
LJMP DISPLAY4 DEC2:JNB ,DEC2 MOV TH1,#3CH MOV TL1,#0B0H MOV 61H,#60 DEC 41H DEC 42H
LJMP DISPLAY4
OVER2:CLR 4EH CLR TR1
MOV TH1,#3CH MOV TL1,#0B0H SETB EX0 SETB TR0 POP ACC MOV P1,A POP PSW POP B POP ACC
RETI
TAB:DB 3FH 06H 5BH 4FH 66H 6DH 7DH 07H 7FH 6FH DELAY: MOV R1,#40;产生4毫秒延时子程序 D1: MOV R7,#50 DJNZ R7,$ DJNZ R1,D1 RET END
附2:系统原理图
>
因篇幅问题不能全部显示,请点此查看更多更全内容