安徽科技学院数理与信息工程学院《单片机原理与应用设计》课程设计设计说明书题目: 道路交通信号灯控制系统专业: 电气工程及其自动化班级: 12级1班指导教师:2014 年12 月 9 日目录一、概述 (3)1、设计背景 (3)2、设计要求 (3)二、整体设计原理 (3)1、设计原理 (3)2、硬件电路分析 (4)三、硬件电路 (5)1、晶振电路 (5)2、硬件电路 (5)四、软件设计 (6)1、主程序设计 (6)2、程序代码分析 (7)3、元件清单 (9)五、测试 (10)1、仿真调试 (10)六、心得体会 (13)七、附录 (14)1、参考文献 (14)2、完整程序代码 (14)一、概述1、设计背景根据规定本学期13、14周为本专业课程设计,要求同班同学五人一组利用单片机相关知识和proteus仿真软件实现所选课题相关功能。
由于我们组在大二数、模电课程设计中做过交通灯相关课题,因此本次课程设计在组织好团队后,经讨论我们一致决定选择道路交通信号灯控制系统作为本组课程设计内容。
2、设计要求(1)设计目的随着单片机应用的日益广泛,在校学生加强对单片机动手实践能力的培养,已经是非常重要的一项锻炼。
课程设计就是为加强实践机会、培养学生动手能力的一个重要环节,将理论知识与实际联系起来的一个关键机会。
(2)设计任务①设计四组十字路口的红、绿、兰三色交通灯,并模拟交通灯的现场情形,控制交通灯的亮灭。
②设计四组 LED 显示器,分别倒计时显示十字路口每个方向的红灯或绿灯的剩余时间。
③可适当根据实际需要增加扩展功能。
④利用 PROTEUS 软件画出电路图,根据以上功能编写软件,并在硬件电路上成功运行或仿真。
二、整体设计原理1、设计原理实际交通灯的变化规律实际交通灯分为东南西北四个方向以及左转右转,本次课程设计我们涉及的是简易交通灯,不包含左转右转,只包括东西直行和南北直行,原理较为简单,下图是十字楼口的模拟图。
东西通行,南北红灯亮。
过一段时间后,转状态。
东西绿灯灭,黄灯亮。
再转状态;东西红灯亮,南北绿灯亮通行。
过一段时间后转状态;南北绿灯灭,黄灯亮。
一段时间后,又循环至初始状态。
(2)交通信号灯的状态下表即为交通灯的状态表,高电平有效,1 表示灯亮,0 表示灯灭。
总共包含初始化东西绿灯南北红灯,东西黄灯南北红灯,以及南北红绿东西红灯和南北黄灯东西红灯四种状态情况。
首先初始状态东西绿灯亮,然后依次是东西黄灯亮,南北绿灯亮,南北亮,然后照此循环。
交通灯信号状态表注:1 代表灯亮,0 代表灯灭(3)单片机接口分析:对于交通信号灯来说,应该有东西南北共四组灯,但由于同一道上的两组的信号灯的显示情况是相同的,所以只要用两组就行了,因此,采用单片机内部的 I/O 口上的p1 口中的 6 个引脚即可来控制 6 个信号灯。
2、硬件电路分析(1)P1 口:做为输出口,接发光二极管,其状态及对应的十六进制值如下图。
(2)发光二极管用来显示灯亮情况。
总共 12 个发光二极管,由于东西方向和南北方向的亮灯情况分别相同,故 12 个发光二极管只需要用到六个控制端就可以了,本系统中使用p1.0、p1.1、p1.2 控制东西方向;p1.3、p1.4、p1.5 控制南北方向。
发光二极管接口显示原理三、硬件电路1、晶振电路晶振是晶体振荡的简称,实为单片机提供额定频率的器件,如果没有晶振,单片机将不能工作。
2、硬件电路下图即为本次课程设计的硬件电路图,图中标明有东南西北四个方向,表示四个路口,每个路口有三个灯,分别为绿灯、黄灯、红灯。
每个路口还有两个数码显示管,用于显示还剩下的通行时间或者等待时间。
中间部门为控制系统80C51 单片机,其中包括晶振和复位电路。
四、软件设计1、主程序设计下图为本系统的程序流程图,初始化东西亮绿灯,南北亮红灯,系统自动判断是否已达预定时间,然后是东西亮黄灯,接着南北亮绿灯,东西亮红灯,最后南北亮黄灯,依次循环。
主程序流程图2、程序代码分析通过编写程序,实现对发光二极管的控制,来模拟交通信号灯的管理。
每延时一段时间,灯的显示情况都会按交通灯的显示规律进行状态转换。
通过延时时间送显,可以在原有的交通信号灯系统的基础上,增添其倒计时间的显示功能,实现其功能的扩展。
主程序分析:ORG 0000HMAIN:MOV TMOD,#01HMOV TL0,#0B0HMOV TH0,#3CHSETB EASETB ET0SETB TR0MOV P0,#00HMOV P2,#0FFHMOV P1,#0FFH这一段代码是对定时器进行中断方式的定义工作于工作方式一,对P0、P1、P2 口进行初始化。
但是这里不是定义一秒,而是定义了 62.8ms.下面有另外的程序将定时时间延长。
LOOP0:MOV P1,#2EH ;东西通南北停CLR P2.2JNB P3.4,LOOP5MOV R0,#25MOV R1,#30L1:MOV R2,#14H对定时器时间进行延长,延长到接近于 1s。
25 秒绿灯,30 秒红灯LOOP1:LCALL DISMOV TL0,#0B0HMOV TH0,#3CHCLR TF0DJNZ R2,LOOP1DEC R0DEC R1JNB P3.4,LOOP5CJNE R0,#00H,L1MOV P1,#2BHMOV R0,#05红绿灯分别对应的输出十六进制:2EH 东西绿南北红2BH 东西黄南北红35H 东西红南北绿1DH 东西红南北黄1BH 东南西北全黄LL2:LJMP MAINDIS:MOV DPTR,#TABMOV A,R0MOV B,#10DIV ABMOVC A,@A+DPTRSETB P2.1MOV P0,#0FEHCLR P2.1SETB P2.0MOV P0,ALCALL D1MSCLR P2.0SETB P2.1MOV P0,#0FDHMOV A,BMOVC A,@A+DPTRCLR P2.1SETB P2.0MOV P0,ALCALL D1MSMOV A,R1MOV B,#10DIV ABMOVC A,@A+DPTRCLR P2.0SETB P2.1MOV P0,#0FBHCLR P2.1SETB P2.0MOV P0,ALCALL D1MSCLR P2.0SETB P2.1MOV P0,#0F7HMOV A,BMOVC A,@A+DPTRCLR P2.1SETB P2.0MOV P0,ALCALL D1MSJB TF0,L5SJMP DIS这一段程序是控制数码管的显示,把二进制码转换成十进制,并用 DIV 命令分别得到数码管的高位和地位显示。
3、元件清单名称件数参数选择理由电阻8 10K 限流,以免烧坏数码管发光二极管12 3色便于仿真显示AT89C51 1 4K闪存低电压,高性能八位微处理器七段显示数码管8 常用数字显示,便与仿真开关 3 特殊情况使用排阻 2 50Ω74HC373 2 锁存器晶振时钟脉冲信号五、测试1、仿真调试下图中有东西南北每组三个共十二盏模拟交通灯,由于 proteus 中自带晶振和复位电路,所以图中没有显示,东南西北每个方位对应有一组数码显示管,用于显示剩下的通行时间或等待时间。
下图所示为 proteus 刚刚开始仿真的时候,执行程序东西绿灯亮 25 秒钟,南北红灯亮 30 秒钟。
东西绿灯亮,南北红灯亮初始化之后,系统自动判断是否已经到了 25 秒,到了之后则转为东西方向黄灯亮,南北方向红灯禁行,下图为东西方向黄灯南北向红灯倒计时 4 秒时的仿真截图。
东西黄灯亮南北红灯亮东西方向黄灯亮 5 秒之后,转为东西红灯亮南北绿灯亮的模式,下图所示为南北亮绿灯倒计时18 秒的仿真截图。
系统自动判断绿灯是否已经闪烁了25 秒,25 秒后,自动转为东西方向红灯亮,南北方向黄灯亮,下图为南北方向黄灯亮倒计时第5 秒时刻的仿真截图。
东西红灯亮,南北黄灯亮本系统设置有夜间模式,当夜间模式按下时,系统所有方向均为黄灯,直到开关断开时为止,下图所示为黄灯亮时的仿真截图全黄灯仿真图六、心得体会本次单片机课程设计由我们电气121班五名同学组成的团队共同完成,在本次任务开始前我们做了大致的分工。
有麻金领、黄迪编写程序,吴宇楷、李长民搭建电路图,邵舒平查阅相关资料。
但是当我们正式开始着手去做时,才发现事实比我们想象的要复杂得多。
开始在安装软件上就遇到了麻烦,系统的不兼容、对安装步骤的不熟悉等等问题一一出现。
因此我们仅在这一方面就花费了半天时间。
在之后将近两周的时间里我们发现,刚开始的软件问题只是困难的冰山一角。
解决这些问题不仅考验我们的团队合作能力,还需要我们各自有足够的耐心一一的找到问题,查阅资料最终得以解决。
刚开始,我们由于对keil软件的不熟悉,不知道如何将编译好的汇编语言生成HEX文件,从而导致电路图始终仿真不了,在查阅了资料并修改程序后我们信心满满的再次尝试,可依然没有结果。
虽说这是对我们积极性的一次打击,但我们没有放弃,始终在认真地寻找原因。
最终我们大家一致认为是电脑的问题,于是换了本组另一位成员的电脑,终于在大家期待的目光中发光二极管亮了,但是数码管显示的是乱码。
再仔细研究之后我们发现,在我们的电路图中,所采用的数码管必须是共阴的,而我们画图时采用的是共阳的数码管。
功夫不负有心人,在十四周周五下午,答辩前一个小时,我们在换了数码管后,电路图完美的仿真出来了。
承载着我们五个人辛勤汗水的LED灯一闪一闪的亮着,我们的努力终于没有白费。
这次单片机课程设计让我把许多以前不知道的东西都变成了自己懂的东西,在不断借鉴的过程中进行着自己的创新。
这次做课设,我们有上网查阅很多资料,也翻阅许多书本查找相关知识,让我明白,在以后的学习中,应更注重知识的应用,更注重实质的掌握。
同时本次课程设计,我们不仅加深了对单片机方面知识的理解,还让我们提高了应用能力和实践能力。
在这次课程设计过程中,我们学会了,proteus和keil软件的安装和使用,以及如何利用keil编写程序并生成HEX文件最终导入到单片机中使之运行这样一整个流程。
对于我们这种专业的学生来说是必须掌握的技能。
这对我们以后的工作学习都有重要的作用。
七、附录1、参考文献[1]楼然苗.单片机课程设计指导[M]. 北京:航空航天大学出版社,2007[2]张毅缸.单片机原理及应用[M]. 北京:高等教育出版社,20102、完整程序代码ORG 0000HMAIN:MOV TMOD,#01HMOV TL0,#0B0HMOV TH0,#3CHSETB EASETB ET0SETB TR0MOV P0,#00HMOV P2,#0FFHMOV P1,#0FFHLOOP0:MOV P1,#2EH ;东西通南北停CLR P2.2JNB P3.4,LOOP5MOV R0,#25MOV R1,#30L1:MOV R2,#14HLOOP1:LCALL DISMOV TL0,#0B0HMOV TH0,#3CHCLR TF0DJNZ R2,LOOP1DEC R0DEC R1JNB P3.4,LOOP5CJNE R0,#00H,L1MOV P1,#2BHMOV R0,#05L2:MOV R2,#14HLOOP2:LCALL DISMOV TL0,#0B0HMOV TH0,#3CHCLR TF0DJNZ R2,LOOP2DEC R0DEC R1JNB P3.4,LOOP5 CJNE R0,#00H,L2 MOV P1,#35H MOV P2,#0FFH CLR P2.5MOV R0,#30MOV R1,#25L3:MOV R2,#14H LOOP3:LCALL DIS MOV TL0,#0B0H MOV TH0,#3CH CLR TF0DJNZ R2,LOOP3 DEC R0DEC R1JNB P3.4,LOOP5 CJNE R1,#00H,L3 MOV P1,#1DH MOV P2,#0FFH MOV R1,#05L4:MOV R2,#14H LOOP4:LCALL DIS MOV TL0,#0B0H MOV TH0,#3CH CLR TF0DJNZ R2,LOOP4 DEC R0DEC R1JNB P3.4,LOOP5 CJNE R1,#00H,L4 AJMP LL1LL1:LJMP LOOP0 LOOP5:LCALL DIS MOV TL0,#0B0H MOV TH0,#3CH CLR TF0MOV P1,#1BH MOV R0,#00H MOV R1,#00H SETB P2.2SETB P2.4JB P3.4,LL2AJMP LOOP5LL2:LJMP MAIN DIS:MOV DPTR,#TAB MOV A,R0MOV B,#10DIV ABMOVC A,@A+DPTR SETB P2.1MOV P0,#0FEHCLR P2.1SETB P2.0MOV P0,ALCALL D1MSCLR P2.0SETB P2.1MOV P0,#0FDH MOV A,BMOVC A,@A+DPTR CLR P2.1SETB P2.0MOV P0,ALCALL D1MSMOV A,R1MOV B,#10DIV ABMOVC A,@A+DPTR CLR P2.0SETB P2.1MOV P0,#0FBHCLR P2.1SETB P2.0MOV P0,ALCALL D1MSCLR P2.0SETB P2.1MOV P0,#0F7HMOV A,BMOVC A,@A+DPTR CLR P2.1SETB P2.0MOV P0,ALCALL D1MSJB TF0,L5SJMP DISL5:RETD1MS:MOV R4,#02HDL:MOV R3,#0FFHDL1:DJNZ R3,DL1DJNZ R4,DLRETTAB:DB 3FH,06H,5BH,4FH,66H DB 6DH,7DH,07H,7FH,6FH END。