1、单片机原理与应用课程设计报告题 目: 简单交通灯控制系统 专 业: 计算机科学与技术 班 级: 09 计算机 1 班 学 号: 09070009 姓 名: 陈民厅 天津理工大学中环信息学院计算机工程系2011 年 12 月 29 日交通灯控制系统设计摘 要设计一个交通灯控制系统,该控制系统工作后,交通灯按照下列规律变化:初始态东南西北均为红灯,持续时间为 2s;然后转为状态 1(10s),为东西红、南北绿;状态 2(3s)东西红灯不变、南北绿灯灭、黄灯闪烁三次;状态 3(15s),为东西绿、南北红;状态 4(3s),为东西绿灯灭、黄灯闪烁三次、南北红灯不变;最后回到状态 1,依此循环。如遇到特
2、殊情况,可拨动应急开关,使各向均为红灯,特殊车辆不受红灯限制,待其顺利通过后拨动另一个开关,系统返回继续运行。同时用 LED 用倒计时方式显示各路口亮灯时间。关键词: 单片机,交通灯,应急开关,LED1 绪论1.1 设计背景红绿交通灯自动控制系统在城市十字(或丁字)路口有着广泛的应用。随着社会的进步,人们生活水平的提高,私家车数量会不断增加,对城市交通带来前所为有的压力。道路建设也将随之发展,错综复杂的道路将不段增多。为维持稳定的交通秩序,红绿灯自动控制系统将得到更为广泛的应用。现在实际应用的红绿灯系统中一般没有倒计时功能,使司机和行人不知道指示灯还有多久将会改变现有状态。本设计应用基本数字电
3、路知识,采用 LED 灯作红、绿、黄三交通灯,用七段数码管作同步倒计时显示。实现两方向通行时间不相等的控制并配有倒计时。1.2设计目的熟悉单片机控制系统,并了解系统设计的一般规律。掌握 8255 芯片的结构及编程方法。熟悉模拟交通灯控制的实现方法。1.3 设计任务及要求设计一个交通灯控制系统,该控制系统工作后,交通灯按照下列规律变化:初始态东南西北均为红灯,持续时间为 2s;然后转为状态 1(10s),为东西红、南北绿;状态 2(3s)东西红灯不变、南北绿灯灭、黄灯闪烁三次;状态 3(15s),为东西绿、南北红;状态 4(3s),为东西绿灯灭、黄灯闪烁三次、南北红灯不变;最后回到状态 1,依此
4、循环。如遇到特殊情况,可拨动应急开关,使各向均为红灯,特殊车辆不受红灯限制,待其顺利通过后拨动另一个开关,系统返回继续运行。同时用 LED 用倒计时方式显示各路口亮灯时间。2 设计使用的仪器和设备2.1 达爱思教仪本实验采用达爱思教仪型号是 Dais-PG206FD2.2 八段数码管数码管按段数分为七段数码管和八段数码管,八段数码管比七段数码管多一个发光二极管单元(多一个小数点显示) ;按能显示多少个“8” 可分为 1 位、2 位、4 位等等数码管, 2.3 8255 芯片8255 是 Intel 公司生产的可编程并行 I/O 接口芯片,有 3 个 8 位并行 I/O 口。具有 3 个通道 3
5、 种工作方式的可编程并行接口芯片(8255 引脚如图 1,8255 编程模式如图 2) 。其各口功能可由软件选择,使用灵活,通用性强。8255 可作为单片机与多种外设连接时的中间接口电路。8255 作为主机与外设的连接芯片,必须提供与主机相连的3 个总线接口,即数据线、地址线、控制线接口。同时必须具有与外设连接的接口A、B、C 口。由于 8255 可编程,所以必须具有逻辑控制部分,因而 8255 内部结构分为3 个部分:与 CPU 连接部分、与外设连接部 分、控制部分。图 1 8255 引脚图 2 8255 编程模式3 系统硬件设计方案3.1 系统硬件方案框图交通灯系统硬件方案框图如图(3)图
6、 3 交通灯系统硬件方案框图3.2 电路原理图电路原理图是借鉴外部中断实验(急救车与交通灯)修改的如图 4,增加 P2.1 连接 K1 和 P2.2 连接 K2。如遇到特殊情况,可拨动应急开关 K1,使各向均为红灯,特殊车辆不受红灯限制,待其顺利通过后拨动另一个开关 K2,系统返回继续运行。键盘控制模块8255 单片机交通灯控制系统八段管倒计时模块八段管信息演示模块接口电路 交通灯演示模块紧急中断模块图 4 交通灯与急救车3.3 相关知识及原理介绍8255 是 Intel 公司生产的可编程并行 I/O 接口芯片,有 3 个 8 位并行 I/O 口。具有 3 个通道 3 种工作方式的可编程并行接
7、口芯片(40 引脚) 。 其各口功能可由软件选择,使用灵活,通用性强。8255 可作为单片机与多种外设连接时的中间接口电路。8255 特性:(1)一个并行输入/输出的 LSI 芯片,多功能的 I/O 器件,可作为 CPU 总线与外围的接口.(2)具有 24 个可编程设置的 I/O 口,即 3 组 8 位的 I/O 口为 PA 口,PB 口和PC 口.它们又可分为两组 12 位的 I/O 口,A 组包括 A 口及 C 口(高 4 位,PC4PC7),B 组包括 B 口及 C 口(低 4 位,PC0PC3).A 组可设置为基本的 I/O 口,闪控(STROBE)的 I/O 闪控式,双向 I/O3
8、种模式;B 组只能设置为基本 I/O 或闪控式 I/O 两种模式,而这些操作模式完全由控制寄存器的控制字决定.交通灯控制系统,该控制系统工作后,交通灯按照下列规律变化:初始态东南西北均为红灯,持续时间为 2s;然后转为状态 1(10s),为东西红、南北绿;状态 2(3s)东西红灯不变、南北绿灯灭、黄灯闪烁三次;状态 3(15s),为东西绿、南北红;状态4(3s),为东西绿灯灭、黄灯闪烁三次、南北红灯不变;最后回到状态 1,依此循环。如遇到特殊情况,可拨动应急开关,使各向均为红灯,特殊车辆不受红灯限制,待其顺利通过后拨动另一个开关,系统返回继续运行。同时用 LED 用倒计时方式显示各路口亮灯时间
9、。4 系统软件设计方案4.1 工具介绍汇编语言是一种功能很强的程序设计语言,也是利用计算机所有硬件特性并能直接控制硬件的语言。汇编语言,作为一门语言,对应于高级语言的编译器,需要一个“汇编器”来把汇编语言原文件汇编成机器可执行的代码 。高级的汇编器如 MASM,TASM等等为我们写汇编程序提供了很多类似于高级语言的特征,比如结构化、抽象等。在这样的环境中编写的汇编程序,有很大一部分是面向汇编器的伪指令,已经类同于高级语言。现在的汇编环境已经如此高级,即使全部用汇编语言来编写 windows 的应用程序也是可行的,但这不是汇编语言的长处。汇编语言的长处在于编写高效且需要对机器硬件精确控制的程序。
10、大多数情况下 Linux 程序员不需要使用汇编语言,因为即便是硬件驱动这样的底层程序在 Linux 操作系统中也可以完全用 C 语言来实现,再加上 GCC 这一优秀的编译器目前已经能够对最终生成的代码进行很好的优化,的确有足够的理由让我们可以暂时将汇编语言抛在一边了。但实际情况是 Linux 程序员有时还是需要使用汇编,或者不得不使用汇编,理由很简单:精简、高效和 libc 无关性。假设要移植 Linux 到某一特定的嵌入式硬件环境下,首先必然面临如何减少系统大小、提高执行效率等问题,此时或许只有汇编语言能帮上忙了。汇编语言源程序的设计步骤:(1) 拟制设计任务书(2) 建立数学模型(3) 确
11、立算法(4) 绘制程序流程图(5) 编制汇编语言源程序(6) 上机调试单片机是一种集成在电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器 CPU 随机存储器 RAM、 只读存储器 ROM、多种 I/O 口和中断系统、定时器/ 计时器等功能(可能还包括显示驱动电路、脉宽调制 电路、模拟多路转换器、A/D 转换器 等电路)集成到一块硅片上构成的一个小而完善的计算机系统。单片机如图(5)图 5 单片机4.2 程序流程图交通灯控制系统流程框图如图 6,如遇到特殊情况外部中断子程序框图如图 7开始开外中断状态 3(15s),为东西绿、南北红状态 1(10s),为东西红、南北绿状态 2(
12、3s)东西红灯不变、南北绿灯灭、黄灯闪烁三次初始状态东西南北都是红灯(2s)状态 4(3s),为东西绿灯灭、黄灯闪烁三次、南北红灯不变外部中断入口保护现场东西,南北都亮红灯特殊车辆通过,拨动开关恢复现场中断返回图 6 主程序流程框图 图 7 外部中断子程序框图4.3 程序源代码及注释CS8255 EQU 0FFFFh ;8255 命令控制口OUTSEG EQU 0FFFCh ;字形控制口OUTBIT EQU 0FFFDh ;字位/键扫控制口SECOND EQU 30HNUM EQU 31HTIME EQU 32HTIME1 EQU 33HORG 0000H ;主程序的入口地址LJMP MAIN
13、 ;跳转到主程序的开始处ORG 0003H ;外部中断 0 的中断程序入口地址LJMP INTORG 000BH ;定时器 0 的中断程序入口地址LJMP T0_INT ;跳转到中断服务程序处MAIN : MOV SP,#50HMOV TCON,#01h ;下降沿, IT0MOV IE,#8FH ;CPU 开中断,允许 T0 中断,T1 中断和外部中断 1 中断MOV TMOD,#51H ;设置 T1 为计数方式,T0 为定时方式,且都工作于模式 1MOV DPTR ,#CS8255MOV A, #80H ;给 8255 赋初值,8255 工作于方式 0MOVX DPTR, AMOV R3,#
14、5LCALL DISPLCALL DELAY;-Na: SETB TR0 ;启动 T0 计时器Na0: MOV R3,#02h ;东西方向禁止,南北方向通行MOV P1,#0DBH ;置 8255A 口,东西南北方向红灯亮Na2:CJNE R3,#00H,Na2 ;比较 SECOND 中的值是否为 0,不为 0 转到当前指令处执行;-N00: MOV R3,#0ah ;东西方向禁止,南北方向通行 10sMOV P1,#0ddH ;置 8255A 口,东西方向红灯亮,南北方向绿灯亮N02:CJNE R3,#00H,N02 ;比较 SECOND 中的值是否为 0,不为 0 转到当前指令处执行;-黄
15、灯闪烁 3 秒程序-MOV R3,#3N1: MOV P1,#0DEH ;置 P1 口,东西,南北方向黄灯亮N11: MOV R4,#00HN12: CJNE R4,#7DH,$ ;黄灯持续亮 0.5 秒N13: MOV P1,#0DFH ; 置 P1 口,南北方向黄灯灭N14: MOV R4,#00HCJNE R4,#7DH,$ ;黄灯持续灭 0.5 秒CJNE R3,#00H,N1 ;闪烁时间达 3 秒则退出;-N2: MOV R7,#00HMOV R3,#0fh ;东西通行,南北禁止 15sMOV P1,#0EBH ; 置 P1 口,东西方向绿灯灭,南北方向红灯亮N22:CJNE R3,
16、#00H,N22;-黄灯闪烁 3 秒程序-MOV R3,#03HN3: MOV P1,#0F3H ;置 P1 口,东西,南北方向黄灯亮N31: MOV R4,#00HCJNE R4,#7DH,$ ;黄灯持续亮 0.5 秒N32: MOV P1,#0FBH ; 置 P1 口,南北方向黄灯灭N33: MOV R4,#00HCJNE R4,#7DH,$ ;黄灯持续灭 0.5 秒CJNE R3,#00H,N3 ;闪烁时间达 3 秒则退出;-N41: MOV R7,#00HMOV R3,#03h ;东西通行,南北禁止 3sMOV P1,#0bBH ; 置 P1 口,东西方向绿灯灭,南北方向红灯亮N42:
17、CJNE R3,#00H,N42SJMP N00;-1 秒延时子程序-T0_INT:MOV TL0,#9AH ;给定时器 T0 送定时 10ms 的初值MOV TH0,#0F1HINC R4INC R5CJNE R5,#0FAH,T01 ;判断延时是否够一秒,不够则调用显示子程序MOV R5,#00H ;R5 清零DEC R3 ;倒计时初值减一T01: ACALL DISP ;调用显示子程序RETI ;中断返回INT: PUSH PSWMOV TIME1,R3MOV NUM,P1MOV P1,#1BHI1:;CALL DELAY1JB P3.1,I1MOV R3,TIME1MOV P1,NUM
18、POP PSWRETI;-显示子程序-DISP:MOV B,#0AHMOV A,R3 ;SECOND 中值二转十显示转换DIV ABMOV R0,AMOV R2,#00000010b;Loop:MOV DPTR,#OUTBITCLR AMOVX DPTR,A ;关所有八段管MOV DPTR,# LEDMAPMOV A,R0MOVC A,A+DPTRMOV DPTR,#OUTSEGMOVX DPTR,AMOV DPTR,#OUTBITMOV A,R2MOVX DPTR,A ;显示一位八段管MOVR6,#01CALL DELAYMOV A,R2 ;显示下一位RR AMOV R2,AMOV DPTR
19、,# LEDMAPMOV A,BMOVC A,A+DPTRMOV DPTR,#OUTSEGMOVX DPTR,AMOV DPTR,#OUTBITMOV A,R2MOVX DPTR,A ;显示一位八段管MOVR6,#01CALL DELAYMOV DPTR,#OUTBITCLR AMOVX DPTR,A ;关所有八段管RET;-延时 4MS 子程序-DELAY: MOV R1,#0AHLP: MOV R7,#64HNOPLP1: DJNZ R7,LP1DJNZ R1,LPRETDELAY1:MOV TIME,#0FHLP4: MOV R1,#0FFHLP2: MOV R7,#0FFHNOPLP3
20、: DJNZ R7,LP3DJNZ R1,LP2DJNZ TIME,LP4RETLEDMAP: ;八段管显示码DB 0C0H,0F9H,0A4H,0B0H,099H,092H,082H,0F8HDB 080H,090H,088H,083H,0C6H,0A1H,086H,08EHEND5 硬件、软件调试步骤5.1安装注意事项首先观察原理图,根据电气要求进行合理的整体布局,最大限度的减少叉线和飞线,降低干扰。自己要形成一个大致的布局和接线方法,而且要尽量美观。步骤如下:(1) 用万用表检查万能板的内部结构,确定其内部的电气连接属性。(2) 安装前先检查元器件的质量,安装时注意、集成芯片的引脚和极性
21、。5.2调试(1) 不通电检查电路安装完毕后,不要急于 通电,应首 先认真检查 接线是否正 确, 包括多线、 少线、 错线等, 尤其是电源线不能接错或接反,以免通电后烧坏电路或元器件。(2) 直观检查连线检查完毕后,直观检查电源,元器件接线端之间有无短路,连线 处有无接触不良。(3)运行软件观察交通灯运行情况,出现问题对软件程序进行修改。5.3调试注意事项(1) 测试之前要熟悉各种仪器的使用方法,并仔细加以检查,避免由于仪器使用不当或出现故障而作出错误判断。(2) 测试仪器和被测电路应具有良好的共地,只有使仪器和电路之间建立一个公共地参考点测试的结果才是准确的。6 小结这次课程设计的主要任务是
22、根据课堂所学知识,运用 8255A 进行交通灯控制的设计。按照设计的要求,我查阅了相关的资料,先设计出了单元电路,在此基础上设计出了整个系统的电路图。通过此次课程设计,我对 8255A、8253 的工作方式有了深刻的理解和认识,更重要的是对微机原理这门课程有了进一步的认识,加深了理解,巩固了所学的的知识,在设计时要考虑到 8255A,通过查阅很多资料,拓展了知识面,在这一过程中,我也学到了很多东西。在设计时,根据要求选择合适的工作方式显得十分的重要。该次课程设计是利用课堂所学的知识来解决一个实际的问题,生动有趣,提到了我们运用知识的能力。通过课程设计,对于自己使用 Protel DXP 的技巧是一个很大的提高,如何让布局合理、如何让电路简单的设计是一种锻炼,同时也是一个娱乐的过程。总之,课程设计作为一种教学方式,巩固了我们课堂上所学的知识,提高了我们对知识学习的热情,锻炼了我们运用知识解决实际问题的能力,让我们收获了很多。7 参考资料1. 阎石.数字电技术基础.北京:高等教育出版社,2004 年2. 陈大钦.罗杰 .电子技术基础实验.北京:高等教育出版社,2008 年 3. 胡汉才 单片机原理及其接口技术北京:清华大学出版社,2010 年4. 渠丽岩,郝芸单片机原理与应用实验指导书天津:天津理工大学中环信息学院,2009 年