单片机简单交通灯课程设计方案
xxxxxxxxxx 20xx年x月x日
摘 要
1 引言
世界上最先使用交通信号灯的是英国伦敦。1868年12月10日,在伦敦布里奇大街和警察厅拐角处一根7M高的钢柱上,装上了一套交通信号灯,这套装置是由铁路信号工程师奈特发明的。它有红绿两种颜色,红色示意“停止”,绿色示意“当心”。由于这种信号灯燃烧煤气,因而很不安全,在它安装使用后的第23天就发生了爆炸,负责转灯的警察也因此丧生。 1879年爱迪生发明了白炽灯,从此,电气照明迅速进入到各个领域。第一个电动红绿交通信号灯于1914年8月5日在美国的俄亥俄州投入使用。灯柱上还安装了一个电铃,当红绿灯转换颜色时会自动鸣响。 现代的红、黄、绿三色交通信号灯于1918年出现在美国纽约,它安装在交通岗亭上,用人工控制。20世纪20年代后,自动变换颜色的交通信号灯开始在全世界的大小市镇安家落户。 现在,世界各国一般都采用红、黄、绿三种颜色作为交通信号。信号灯的出现,使交通得以有效管制,对于疏导交通流量、提高道路通行能力,减少交通事故有明显效果。
目 录
第1章 交通管理的方案论证 ······························································· 1 第2章 课程设计的题目及要求 ···························································· 1
2.1设计目的 ·············································································· 1 2.2设计任务及要求 ····································································· 1 第3章 控制系统的硬件设计 ······························································· 1
3.1系统设计总框图 ····································································· 1 3.2系统引脚图 ··········································································· 1 第4章 控制系统变的软件设计 ···························································· 2
4.1程序流程图 ··········································································· 3 4.2程序清单 ·············································································· 3 第5章 调试及性能分析 ····································································· 8 第6章 课程设计心得 ········································································ 9 参考文献 ························································································ 9
1.交通管理的方案论证
东西、南北两干道交于一个十字路口,各干道有一组红、黄、绿三色的指示灯,指挥车辆和行人安全通行。红灯亮禁止通行,绿灯亮允许通行。黄灯亮提示人们注意红、绿灯的状态即将切换,且黄灯燃亮时间为东西、南北两干道的公共停车时间。设东西道比南北道的车流量大,指示灯燃亮的方案
2. 课程设计的题目及要求 (1)设计目的
1.熟悉单片机控制系统,并了解系统设计的一般规律。 2.掌握8255芯片的结构及编程方法。 3.熟悉模拟交通灯控制的实现方法。 (2)设计任务及要求
设计一个交通灯控制系统,该控制系统工作后,交通灯按照下列规律变化:初始态东南西北均为红灯,持续时间为2s;然后转为状态1(10s),为东西红、南北绿;状态2(3s)东西红灯不变、南北绿灯灭、黄灯闪烁三次;状态3(15s),为东西绿、南北红;状态4(3s),为东西绿灯灭、黄灯闪烁三次、南北红灯不变;最后回到状态1,依此循环。如遇到特殊情况,可拨动应急开关,使各向均为红灯,特殊车辆不受红灯限制,待其顺利通过后将开关拨回原位,系统恢复原状态运行。 3.硬件设计 (1)系统设计总框图
图1 系统硬件框图
(2)系统引脚图
4.软件设计 (1)程序流程图
根据设计要求,程序框图如图3所示。软件可由汇编语言完成。软件设计可以分为以下几个功能模块:
1.主程序:初始化及键盘监控。
2.计时程序模块:为定时器的中断服务子程序,完成时间定时。
3.如遇到特殊情况,可拨动应急开关,使各向均为红灯,特殊车辆不受红灯限制,待其顺利通过后将开关拨回原位,系统恢复原状态运行。
图2 系统引脚图图
图3 程序流程图
(2)程序清单
ORG 0000H 。主程序的入口地址 LJMP MAIN 。跳转到主程序的开始处
ORG 0003H 。外部中断0的中断程序入口地址 ORG 000BH 。定时器0的中断程序入口地址 LJMP T0_INT 。跳转到中断服务程序处
ORG 0013H 。外部中断1的中断程序入口地址 MAIN : MOV SP,#50H
MOV IE,#8EH 。CPU开中断,允许T0中断,T1中断和外部中断1中断 MOV TMOD,#51H 。设置T1为计数方式,T0为定时方式,且都工作于模式1 MOV TH1,#00H 。T1计数器清零 MOV TL1,#00H
SETB TR1 。启动T1计时器 SETB EX1 。允许INT1中断 SETB IT1 。选择边沿触发方式 MOV DPTR ,#0003H
MOV A, #80H 。给8255赋初值,8255工作于方式0 MOVX @DPTR, A
AGAIN: JB P3.1,N0 。判断是否要设定东西方向红绿灯时间的初值,若P3.1为1 则跳转 MOV A,P1
JB P1.7,RED 。判断P1.7是否为1,若为1则设定红灯时间,否则设定绿灯时间 MOV R0,#00H 。R0清零
MOV R0,A 。存入东西方向绿灯初始时间 MOV R3,A LCALL DISP1 LCALL DELAY AJMP AGAIN RED: MOV A,P1
ANL A,#7FH 。P1.7置0 MOV R7,#00H 。R7清零
MOV R7,A 。存入东西方向红灯初始时间 MOV R3,A LCALL DISP1 LCALL DELAY AJMP AGAIN
。------------------------------------------- N0: SETB TR0 。启动T0计时器 MOV 76H,R7 。红灯时间存入76H
N00: MOV A,76H 。东西方向禁止,南北方向通行 MOV R3,A
MOV DPTR,#0000H 。置8255A口,东西方向红灯亮,南北方向绿灯亮 MOV A,#0DDH MOVX @DPTR, A N01: JB P2.0,B0 N02: SETB P3.0
CJNE R3,#00H,N01 。比较R3中的值是否为0,不为0转到当前指令处执行 。------黄灯闪烁5秒程序------ N1: SETB P3.0 MOV R3,#05H
MOV DPTR,#0000H 。置8255A口,东西,南北方向黄灯亮 MOV A,#0D4H MOVX @DPTR,A N11: MOV R4,#00H
N12: CJNE R4,#7DH,$ 。黄灯持续亮0.5秒
N13: MOV DPTR,#0000H 。 置8255A口,南北方向黄灯灭
MOV A,#0DDH MOVX @DPTR,A N14: MOV R4,#00H
CJNE R4,#7DH,$ 。黄灯持续灭0.5秒 CJNE R3,#00H,N1 。闪烁时间达5秒则退出 。------------------------------------------------------------ N2: MOV R7,#00H
MOV A,R0 。东西通行,南北禁止 MOV R3,A
MOV DPTR,#0000H 。 置8255A口,东西方向绿灯亮,南北方向红灯亮 MOV A,#0EBH MOVX @DPTR,A N21: JB P2.0,T03
N22: CJNE R3,#00H,N21 。------黄灯闪烁5秒程序------ N3: MOV R3,#05H
MOV DPTR,#0000H 。置8255A口,东西,南北方向黄灯亮 MOV A,#0E2H MOVX @DPTR,A N31: MOV R4,#00H
CJNE R4,#7DH,$ 。黄灯持续亮0.5秒
N32: MOV DPTR,#0000H 。 置8255A口,南北方向黄灯灭 MOV A,#0EBH MOVX @DPTR,A N33: MOV R4,#00H
CJNE R4,#7DH,$ 。黄灯持续灭0.5秒 CJNE R3,#00H,N3 。闪烁时间达5秒则退出 SJMP N00
。------闯红灯报警程序------
B0: MOV R2,#03H 。报警持续时间3秒 B01: MOV A,R3
JZ N1 。若倒计时完毕,不再报警 CLR P3.0 。报警
CJNE R2,#00H,B01 。判断3秒是否结束
SJMP N02
。------1秒延时子程序------- N7: RETI
T0_INT:MOV TL0,#9AH 。给定时器T0送定时10ms的初值 MOV TH0,#0F1H INC R4 INC R5
CJNE R5,#0FAH,T01 。判断延时是否够一秒,不够则调用显示子程序 MOV R5,#00H 。R5清零 DEC R3 。倒计时初值减一 DEC R2 。报警初值减一 T01: ACALL DISP 。调用显示子程序 RETI 。中断返回 。------显示子程序------ DISP: JNB P2.4,T02 DISP1: MOV B,#0AH
MOV A,R3 。R3中值二转十显示转换 DIV AB MOV 79H,A MOV 7AH,B
DIS: MOV A,79H 。显示十位 MOV DPTR,#TAB MOVC A,@A+DPTR MOV DPTR,#0002H MOVX @DPTR,A MOV DPTR,#0001H MOV A,#0F7H MOVX @DPTR,A LCALL DELAY
DS2: MOV A,7AH 。显示个位 MOV DPTR,#TAB MOVC A,@A+DPTR MOV DPTR,#0002H MOVX @DPTR,A MOV DPTR,#0001H
MOV A,#0FBH MOVX @DPTR,A RET
。------东西方向车流量检测程序------ T03: MOV A,R3
SUBB A,#00H 。若绿灯倒计时完毕,不再检测车流量 JZ N3 JB P2.0,T03 INC R7 CJNE R7,#64H,E1
MOV R7,#00H 。中断到100次则清零 E1: SJMP N22
。------东西方向车流量显示程序------ T02: MOV B,#0AH
MOV A,R7 。R7中值二转十显示转换 DIV AB MOV 79H,A MOV 7AH,B
DIS3: MOV A,79H 。显示十位 MOV DPTR,#TAB MOVC A,@A+DPTR MOV DPTR,#0002H MOVX @DPTR,A MOV DPTR,#0001H MOV A,#0F7H MOVX @DPTR,A LCALL DELAY
DS4: MOV A,7AH 。显示个位 MOV DPTR,#TAB MOVC A,@A+DPTR MOV DPTR,#0002H MOVX @DPTR,A MOV DPTR,#0001H MOV A,#0FBH MOVX @DPTR,A
LJMP N7
。------延时4MS子程序---------- DELAY: MOV R1,#0AH LOOP: MOV R6,#64H NOP
LOOP1: DJNZ R6,LOOP1 DJNZ R1,LOOP RET 。------字符表------
TAB: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH END
5.调试及性能分析 (1)软件调试
软件调试主要是利用proteus仿真软件完成电路的搭建,运行以发现设计中的错误及时改正。。 (2)硬件调试
硬件调试主要是检测硬件电路是否有短路、断路、虚焊等。具体步骤及测试结果如下: (1)检查电源与地线是否全部连接上,用万用表对照电路原理图测试各导线是否完全连接,对未
连接的进行修复。
(2)参照原理图,检查各个器件之间的连接是否连接正确,是否存在虚焊,经测试,各连接不存
在问题。
(3)以上两项检查并修复完后,给该硬件电路上电,电源指示灯点亮。
6.课程设计心得
这次单片机课程设计历时一个学期的时间,在这次设计过程里我们体验了从设计、画板、编程、焊板到调试的整个过程。
对于交通灯这个题目,由于以前学单片机这个课程时,做过类似相关的实验,觉得这个比较简单而且做出的东西也比较直观,在确定题目之后,查阅了大量的资料,初步完成了电路设计方案。
通过这次课设,对以前学过的知识进行了巩固,加深了理解,提高了应用的能力,而且提高了我们的发现、分析、解决问题的能力。经历了从最初的设计到最后做出产品的开发过程,提高了对专业的认识及兴趣,对于我们工科来说,对以后就业有及其重大的影响。
由于本设计设计到的知识面比较广,就爱上本人在相关领域知识的缺乏,所以本设计的性能指标还是有待改善的,然而,模拟仿真证明了本设计的基本设计思想和设计方法以及基本功能是现实可行的。 参考文献
1刘守义等.单片机技术基础[M].西安电子科技大学出版社,2007.
2李平等.单片机入门与开发[M].机械工业出版社,2008
因篇幅问题不能全部显示,请点此查看更多更全内容