单片机交通灯设计
洛阳理工学院
电气工程与其自动化系
专业:自动化
班 级:自动化八班
姓 名:01白彦芳
02何一婷11靳亚磊
指导老师:姚惠林
目录
1 设计任务和性能指标......................................... 3
1.1设计任务...................................................... 4
1.2性能指标...................................................... 4
2 设计方案.................................................. 4
2.1任务分析...................................................... 4
2.2方案设计...................................................... 4
2.2.1硬件方案.................................................... 4
2.2.2软件方案.................................................... 4
3 系统硬件设计.............................................. 6
3.1单片机的最小系统.............................................. 6
3.2电源电路...................................................... 6
3.3数码管显示时间电路............................................ 6
3.4系统原理图.................................................... 7
3.5系统元件...................................................... 8
4 系统软件设计.............................................. 8
4.1 主程序设计.................................................... 9
4.2系统程序...................................................... 9
5 调试及性能分析............................................ 9
5.1调试分析...................................................... 9
5.1.1软件调试.................................................. 9
5.1.2硬件调试.................................................. 9
5.1.3系统功能调试.............................................. 9
6心得体会.................................................. 9
附录一..................................................... 10
参考文献................................................... 18
摘要
交通在人们的日常生活中占有重要的地位,随着人们社会活动的日益频繁,这点更是体现的淋漓尽致。交通信号灯的出现,使交通得以有效管制,对于疏导交通流量、提高道路通行能力,减少交通事故有明显效果。近年来随着科技的飞速发展,单片机的应用正在不断深入,同时带动传统控制检测技术日益更新。在实时检测和自动控制的单片机应用系统中,单片机往往作为一个核心部件来使用,仅单片机方面知识是不够的,还应根据具体硬件结构软硬件结合,加以完善。
本系统采用单片机80C51为中心器件来设计交通灯控制器,系统实用性强、操作简单、扩展性强。本设计就是采用单片机模拟十字路口交通灯的各种状态显示以及倒计时时间。
本设计系统由单片机I/O口扩展系统、交通灯状态显示系统、LED数码显示系统、复位电路等几大部分组成。系统除基本的交通灯功能外,还具有倒计时等功能,较好的模拟实现了十字路口可能出现的状况。
软件上采用C52编程,主要编写了主程序,LED数码管显示程序,中断程序延时程序等。经过整机调试,实现了对十字路口交通灯的模拟。
关键字:电子线路 ;80C51;LED;交通灯。
1 设计任务和性能指标
1.1设计任务
模拟图
利用单片机完成交通信号灯控制器的设计,该交通信号灯控制器由一条主干道和一条支干道汇合成十字路口,在每个入口处设置红、绿、黄三色信号灯,红灯亮禁止通行,绿灯亮允许通行,黄灯亮则给行驶中的车辆有时间停在禁行线外。用红、绿、黄发光二极管作信号灯。如图上图所示。
2.2.1硬件方
案根据设计的要求可知,系统的硬件原理框图如下图所示
系统硬件框图
单片机可选用80C51,它与8051系列单片机全兼容,但其内部带有8KB的FLASH ROM,设计时无需外接程序存储器,为设计和调试带来极大的方便。南北向和东西向各采用2个数码管计时,同时需要对该方向的指示灯的点亮时间进行倒计时。按键可以根据系统的需要进行复位。用三极管驱动数码管显示,三极管控制共阳位选端,控制数码管的显示。
2.2.2 软件方案
首先南北方向红灯、东西方向绿灯亮,南北方向红灯15秒、东西方向绿灯10秒,相应的数码管显示对应的数字并读秒,同时南北方向红色的二极管和东西方向的绿色二极管接通点亮显示,当东西方向的绿灯时间到,则东西方向的绿灯转为黄灯,同时数码管显示黄灯的时间5秒,东西方向的黄色二极管接通点亮,此时南北方向的红灯不变。南北方向的红灯和东西方向的黄灯时间同时到,此时南北方向的红灯跳转为绿灯,时间同样为10秒,东西方向有黄灯跳转为红灯,时间为15秒。当南北方向的绿灯时间到,南北绿灯跳转为黄灯,东西方向的红灯不变,当南北方向的黄灯和东西方向的红灯时间到,南北方向的黄灯跳转为红灯,东西方向的红灯跳转为绿灯。进入开始的状态,循环执行。
根据设计要求,程序框图如图所示。软件可由汇编语言完成,也可由C语言完成。软件设计可以分为以下几个功能模块:
数码管显示模块
动态显示方式:动态显示方式是指一位一位地轮流点亮每位显示器(称为扫描),即每个数码管的位选被轮流选中,多个数码管公用一组段选,段选数据仅对位选选中的数码管有效。对于每一位显示器来说,每隔一段时间点亮一次。显示器的亮度既与导通电流有关,也与点亮时间和间隔时间的比例有关。通过调整电流和时间参数,可以既保证亮度,又保证显示。若显示器的位数不大于8位,则显示器的公共端只需一个8位I/O口进行动态扫描(称为扫描口),控制每位显示器所显示的字形也需一个8位口(称为段码输出)。
LED红绿灯显示模块
状态1, 东西绿灯亮,南北红灯亮
状态2, 东西黄灯亮,南北红灯亮
状态3, 东西红灯亮,南北绿灯亮
状态4, 东西红灯亮,南北黄灯亮
结构框图
单片机系统的复位电路及显示单元
系统原理图
3.5指示单元
去电子市场按原件清单购买所需原件,检测所购元件的性能是否达到所需标准,然后按照系统原理图接好硬件图,检查接线是否正确,是否有漏接,短接等。并用测试程序检查元器件是否能正常工作,以便修改,一切就绪后,就将写好的程序下载进单片机。以下是元器件清单列表。
5.1 调试分析
5.1.1软件调试
软件调试主要是利用protus仿真软件完成电路的搭建,运行以发现设计中的错误及时改正。
5.1.2硬件调试
硬件调试主要是检测硬件电路是否有短路、断路、虚焊等。具体步骤及测试结果如下:
(1)检查电源与地线是否全部连接上,用万用表对照电路原理图测试各导线是否完全连接,对未连接的进行修复。(2)参照原理图,检查各个器件之间的连接是否连接正确,是否存在虚焊,经测试,各连接不存在问题。(3)以上两项检查并修复完后,给该硬件电路上电,电源指示灯点亮。
5.1.3系统功能调试
通过通电调试系统的功能,观察系统是否正常运行,是否达到设计指标,通过修改软件完成系统的系能指标,也可以通过仿真软件进行仿真运行,调试并修改系统,以便达到最佳水准。让系统最大限度的发挥其功效。
6 心得体会
这次单片机课程设计历时三个星期的时间,在这次设计过程里我们体验了从总体方案设计、画原理图、设计程序、焊电路板到调试完善的整个过程。
我学会了用更多的工具去查阅资料,获取所需的知识,解决了很多我在之前的学习中没有弄懂的问题。了解了很多元件的作用和用法。熟悉了单片机的使用,熟悉了单片机的各个管脚的功能。这可以说是给我上了深刻的复习课,在我即将忘记单片机知识的时候,又让我加深了我对它的认识,而且了解了更多以前没有注意的问题。
通过这次课程设计,使我得到了一次用专业知识、专业技能分析和解决问题全面系统的锻炼。使我在单片机的基本原理、单片机应用系统开发过程,以及在常用编程设计思路技巧(特别是汇编语言)的掌握方面都能向前迈了一大步。本次课程设计的过程是艰辛的,不过收获却是很大的。
在设计过程中,会出现了一些问题,但都是常见的小问题,如:代码中双引号的使用并不是在英语书写状态下,输入字母出错等,在调试时出现异常,不过这些都是经常性错误,经过调试修改都一一解决,程序顺利完成,并实现了其功能。
综合课程设计让我把以前学习到的知识得到巩固和进一步的提高认识,对已有知识有了更进一步的理解和认识。在此,由于自身能力有限,在课程设计中碰到了很多的问题,我通过查阅相关书籍、资料以及和周围同学交流。
由于使用的是单片机作为核心的控制元件,使得电路的可靠性比较高,功能也比较强大,而且可以随时的更新系统,进行不同状态的组合。但是在我们设计和调试的过程中,也发现了一些问题,譬如红灯和绿灯的切换还不够迅速,红绿灯规则不完善效率还不是很高等等,这需要在实践中进一步完善。当然,通过这次课程设计,我也发现了自身的很多不足之处,在以后的学习中,我会不断的完善自我。
通过这次课程设计,对以前学过的知识进行了巩固,加深了理解,提高了应用的能力,而且提高了我们的发现、分析、解决问题的能力。经历了从最初的设计到最后做出产品的开发过程,提高了对专业的认识及兴趣,对于我们工科来说,对以后就业有及其重大的影响。
附录一
SECOND1 EQU 30H ;东西路口计时寄存器
SECOND2 EQU 31H ;南北路口计时寄存器
DBUF EQU 40H ;显示码缓冲区1
TEMP EQU 44H ;显示码缓冲区2
LED_G1 BIT P2.1 ;东西路口绿灯
LED_Y1 BIT P2.2 ;东西路口黄灯
LED_R1 BIT P2.3 ;东西路口红灯
LED_G2 BIT P2.4 ;南北路口绿灯
LED_Y2 BIT P2.5 ;南北路口黄灯
LED_R2 BIT P2.6 ;南北路口红灯
ORG 0000H
LJMP START
ORG 0100H
START: MOV TMOD,#01H ;置T0为工作方式1
MOV TH0,#3CH ;置T0定时初值50ms
MOV TL0,#0B0H
CLR TF0
SETB TR0 ;启动T0
CLR A
MOV P1,A ;关闭不相关的LED
;***************************************************
LOOP: MOV R2,#20 ;置1s计数初值,50ms*20=1s
MOV R3,#20 ;红灯亮20s
MOV SECOND1,#25 ;东西路口计时显示初值25s
MOV SECOND2,#25 ;南北路口计时显示初值25s
LCALL DISPLAY
LCALL STATE1 ;调用状态1
WAIT1: JNB TF0,WAIT1 ;查询50ms到否
CLR TF0
MOV TH0,#3CH ;恢复T0定时初值50ms
MOV TL0,#0B0H
DJNZ R2,WAIT1 ;判断1s到否?未到继续状态1
MOV R2,#20 ;置50ms计数初值
DEC SECOND1 ;东西路口显示时间减1s
DEC SECOND2 ;南北路口显示时间减1s
LCALL DISPLAY
DJNZ R3,WAIT1 ;状态1维持20s
;*******************************************
MOV R2,#5 ;置50ms计数初值 5*4=20
MOV R3,#3 ;绿灯闪3s
MOV R4,#4 ;闪烁间隔200ms
MOV SECOND1,#5 ;东西路口计时显示初值5s
MOV SECOND2,#5 ;南北路口计时显示初值5s
LCALL DISPLAY
WAIT2: LCALL STATE2 ;调用状态2
JNB TF0,WAIT2 ;查询50ms到否
CLR TF0
MOV TH0,#3CH ;恢复T0定时初值50ms
MOV TL0,#0B0H
DJNZ R4,WAIT2 ;判断200ms到否?未到继续状态2
CPL LED_G1 ;东西绿灯闪
MOV R4,#4 ;闪烁间隔200ms
DJNZ R2,WAIT2 ;判1s到否?未到继续状态2
MOV R2,#5 ;置50ms计数初值
DEC SECOND1 ;东西路口显示时间减1s
DEC SECOND2 ;南北路口显示时间减1s
LCALL DISPLAY
DJNZ R3,WAIT2 ;状态2维持3s
;****************************************
MOV R2,#20 ;置50ms计数初值
MOV R3,#2 ;黄灯闪2s
MOV SECOND1,#2 ;东西路口计时显示初值2s
MOV SECOND2,#2 ;南北路口计时显示初值2s
LCALL DISPLAY
WAIT3: LCALL STATE3 ;调用状态3
JNB TF0,WAIT3 ;查询100ms到否
CLR TF0
MOV TH0,#3CH ;恢复T0定时初值100ms
MOV TL0,#0B0H
DJNZ R2,WAIT3 ;判断1s到否?未到继续状态3
MOV R2,#20 ;置100ms计数初值
DEC SECOND1 ;东西路口显示时间减1s
DEC SECOND2 ;南北路口显示时间减1s
LCALL DISPLAY
DJNZ R3,WAIT3 ;状态3维持2s
;*******************************************
MOV R2,#20 ;置50ms计数初值
MOV R3,#20 ;红灯闪20s
MOV SECOND1,#25 ;东西路口计时显示初值25s
MOV SECOND2,#25 ;南北路口计时显示初值25s
LCALL DISPLAY
WAIT4: LCALL STATE4 ;调用状态4
JNB TF0,WAIT4 ;查询100ms到否
CLR TF0
MOV TH0,#3CH ;恢复T0定时初值100ms
MOV TL0,#0B0H
DJNZ R2,WAIT4 ;判断1s到否?未到继续状态4
MOV R2,#20 ;置100ms计数初值
DEC SECOND1 ;东西路口显示时间减1s
DEC SECOND2 ;南北路口显示时间减1s
LCALL DISPLAY
DJNZ R3,WAIT4 ;状态4维持20s
;*******************************************
MOV R2,#5 ;置50ms计数初值
MOV R4,#4 ;红灯闪20ms
MOV R3,#3 ;绿灯闪3s
MOV SECOND1,#5 ;东西路口计时显示初值5s
MOV SECOND2,#5 ;南北路口计时显示初值5s
LCALL DISPLAY
WAIT5: LCALL STATE5 ;调用状态5
JNB TF0,WAIT5 ;查询100ms到否
CLR TF0
MOV TH0,#3CH ;恢复T0定时初值100ms
MOV TL0,#0B0H
DJNZ R4,WAIT5 ;判断200ms到否?未到继续状态5
CPL LED_G2 ;南北绿灯闪
MOV R4,#4 ;闪烁200ms
DJNZ R2,WAIT5 ;判断1s到否?未到继续状态5
MOV R2,#5 ;置100ms计数初值
DEC SECOND1 ;东西路口显示时间减1s
DEC SECOND2 ;南北路口显示时间减1s
LCALL DISPLAY
DJNZ R3,WAIT5 ;状态5维持3s
;****************************************
MOV R2,#20 ;置50ms计数初值
MOV R3,#2 ;红灯闪2s
MOV SECOND1,#2 ;东西路口计时显示初值2s
MOV SECOND2,#2 ;南北路口计时显示初值2s
LCALL DISPLAY
WAIT6: LCALL STATE6 ;调用状态6
JNB TF0,WAIT6 ;查询100ms到否
CLR TF0
MOV TH0,#3CH ;恢复T0定时初值100ms
MOV TL0,#0B0H
DJNZ R2,WAIT6 ;判断1s到否?未到继续状态6
MOV R2,#20 ;置100ms计数初值
DEC SECOND1 ;东西路口显示时间减1s
DEC SECOND2 ;南北路口显示时间减1s
LCALL DISPLAY
DJNZ R3,WAIT6 ;状态6维持2s
LJMP LOOP ;大循环
;**********************************************
STATE1: ;状态1
SETB LED_G1 ;东西路口绿灯亮
CLR LED_Y1
CLR LED_R1
CLR LED_G2
CLR LED_Y2
SETB LED_R2 ;南北路口红灯亮
RET
STATE2: ;状态2
CLR LED_Y1
CLR LED_R1
CLR LED_G2
CLR LED_Y2
SETB LED_R2 ;南北路口红灯亮
RET
STATE3: ;状态3
CLR LED_G1
CLR LED_R1
CLR LED_G2
CLR LED_Y2
SETB LED_R2 ;南北路口红灯亮
SETB LED_Y1 ;东西路口绿灯亮
RET
STATE4: ;状态4
CLR LED_G1
CLR LED_Y1
SETB LED_R1 ;东西路口红灯亮
SETB LED_G2 ;南北路口绿灯亮
CLR LED_Y2
CLR LED_R2
RET
STATE5: ;状态5
CLR LED_G1
CLR LED_Y1
SETB LED_R1 ;东西路口红灯亮
CLR LED_Y2
CLR LED_R2
RET
STATE6: ;状态6
CLR LED_G1
CLR LED_Y1
SETB LED_R1 ;东西路口红灯亮
CLR LED_G2
CLR LED_R2
SETB LED_Y2 ;南北路口红灯亮
RET
DISPLAY: ;数码显示
MOV A,SECOND1 ;东西路口计时寄存器
MOV B,#10 ;16进制数拆成两个10进制数
DIV AB
MOV DBUF+3,A
MOV A,B
MOV DBUF+2,A
MOV A,SECOND2 ;南北路口计时寄存器
MOV B,#10 ;16进制数拆成两个10进制数
DIV AB
MOV DBUF+1,A
MOV A,B
MOV DBUF,A
MOV R0,#DBUF
MOV R1,#TEMP
MOV R7,#4
DP10: MOV DPTR,#LEDMAP
MOV A,@R0
MOVC A,@A+DPTR
MOV @R1,A
INC R0
INC R1
DJNZ R7,DP10
MOV R0,#TEMP
MOV R1,#4
DP12: MOV R7,#8
MOV A,@R0
DP13: RLC A
MOV P3.0,C
CLR P3.1
SETB P3.1
DJNZ R7,DP13
INC R0
DJNZ R1,DP12
RET
LEDMAP:
DB 3FH,06H,5BH,4FH,66H,6DH ;0,1,2,3,4,5
DB 7DH,07H,7FH,6FH,77H,7CH ;6,7,8,9,A,B
DB 58H,5EH,7BH,71H,0,40H ;C,D,E,F, ,-
END
[1] 徐维祥.单片微型机原理及应用 大连理工大学出版社,2006.12
[2] 胡汉才.单片机原理与接口技术[M].北京: 清华大学大学出版社,2004.1-505.
[3] 闫胜利.Altium Designer 6.X中文版使用教程 电子工业出版社 2007.6
[4] 朝青.单片机原理及接口技术(第3版).20##年10月
[5] 张迎新.单片微型计算机原理、应用及接口技术(修订版)北京:国防工业出版社,2004.1.
[6] 房小翠.单片微型计算机与机电接口技术.北京:国防工业出版社,2002.3
摘要31引言42总体设计方案521设计思路5211设计目的5212设计任务和内容6213方案比较设计与论证6214芯片简介922设…
摘要自从1858年英国人发明了原始的机械扳手交通灯之后随后的一百多年里交通灯改变了交通路况也在人们日常生活中占据了重要地位随着人们…
单片机应用综合实验报告题目:平面交叉口多时段多相位交通信号灯控制器设计学院:电子与控制工程学院专业:自动化(交通信息与控制)班级:…
测控技术与仪器专业课程设计报告姓名:学号:专业班级:20##级测控技术与仪器题目:基于单片机原理的交通信号灯设计攀枝花学院电气信息…
单片机原理及系统课程设计专业zzzzzzzzzzzzzzzz班级zzzzzzzzzzzzzz姓名zzzzzzzzzzzz学号zzz…
西安航空职业技术学院课程设计实训报告课程名称所属学院指导教师学生姓名学号专业1西安航空职业技术学院课程设计实训任务书课程名称任务与…
学号班级姓名指导老师单片机核心板实验要求一流水灯实验1实验目的1简单IO引脚的输出2掌握软件延时编程方法3简单按键输入捕获判断2完…
摘要31引言42总体设计方案521设计思路5211设计目的5212设计任务和内容6213方案比较设计与论证6214芯片简介922设…
摘要自从1858年英国人发明了原始的机械扳手交通灯之后随后的一百多年里交通灯改变了交通路况也在人们日常生活中占据了重要地位随着人们…
摘要31引言42总体设计方案521设计思路5211设计目的5212设计任务和内容6213方案比较设计与论证6214芯片简介922设…
单片机系统课程设计报告专业学生姓名闫乐于绿淼学号20xx02332320xx023328指导教师赵凤强付立军完成日期20xx年7月…