交通灯设计报告.docx
《交通灯设计报告.docx》由会员分享,可在线阅读,更多相关《交通灯设计报告.docx(17页珍藏版)》请在冰豆网上搜索。
交通灯设计报告
摘要:
本课程设计使用了51单片机编程实现交通灯的设计,模拟了真实交通灯的情况,近年来单片机的应用越来越广泛,要求我们对单片机的知识熟练掌握,作为核心部件,单片机起着举足轻重的作用,但是只有这些还是不够的,需要对硬件知识有所准备,合理使用硬件才能使性能达到最佳状态,交通灯作为现代城市标志,掌握其原理显得至关重要。
关键字:
单片机交通灯
一、概述
利用51单片机,设计一个交通信号灯模拟控制系统,利用数码管倒计时显示每个灯点亮的时间;红灯和绿灯显示时间在10-20秒之间;在红灯亮之前,黄灯亮3秒。
二、方案论证
设计一个简易交通灯,要求绿灯点亮持续时间10s,红灯15s,绿灯变换为红灯前,有3s黄灯点亮,然后循环运行,紧急情况下要求可以手动控制,使两路口交通灯都亮红灯。
方案一:
方案一原理框图如图一所示。
图1数码管显示原理框图
方案二:
方案二原理框图如图2所示。
图2单片机控制数码管LED显示框图
本设计采用方案二,因为此方案简单容易实现,性价比也比较高。
三、电路设计
1、直流稳压电源电路
电路原理图如图3所示。
图3稳压电源电路图
2、数据转换电路(数据串行转并行)
电路图如图4所示。
图4数据转换电路图
3、交通灯模拟电路
电路如图5所示。
图5交通灯模拟显示电路
4、单片机电路
单片机电路如图6所示。
图6单片机电路模块
5、软件设计部分
总流程说明:
程序开始进入状态1,东西绿灯亮,南北红灯亮,延时;然后进入状态2,东西黄灯亮3秒,南北红灯亮,延时;然后进入状态3,南北绿灯亮,东西红灯亮,延时;最后进入状态4,南北黄灯亮3秒,东西红灯继续亮3秒,延时;然后跳转回状态1,继续循环此过程。
在本控制系统中,设定绿灯显示时间为10秒,具体实现时在程序中设定一个初值为20的计时器T0定时50毫秒,每当T0定时到50毫秒,计数标志TF0将置1,通过用查询的方式使定时50毫秒循环20次,这时总共定时1秒,再利用查询方式循环10次,则总共定时10秒。
在状态1下定时器T0的流程图如图7所示。
图7状态1下定时器T0的流程图
四、性能测试
1、数码管测试
测试结果如图8所示。
图8数码管显示测试
2、交通灯模拟测试
正常交通灯可能出现的情况如图9所示。
图8交通灯可能出现的情况模拟仿真图
五、结论、性价比
程序设计时,首先对东西南北路口计时寄存器进行地址分配、对路口红绿灯分配引脚、设置显示缓冲区、设置定时器初始时间。
然后对各个状态进行编程,编程过程中注意各个状态计时初值和显示初值的设置以及各个状态LED灯编程和调试,接着实现对数码管显示的编程。
最后对系统进行总体调试。
本设计采用常用的51单片机,使用并且便宜,功能强大,性能稳定,能很好的实现功能。
六.体会及合理化建议
本次课程设计完成了一个基于51单片机的交通信号灯模拟控制系统的设计。
通过本次课程设计,学会了protuse仿真软件和keil编译环境的基本操作,对交通灯控制系统有了深入的认识,对51单片机的基本原理和应用有了更透彻的理解,对汇编语言的编程和排错有了较为系统的认识。
虽然在设计的过程中遇到各种各样的困难,但最终在老师和同学的帮助下完成了设计。
极大的培养了我们的科研精神,激发了我们的专业兴趣,积累了实践经验,为将来的继续学习和工作打下了基础。
希望在今后的学习过程中,能有更多的机会接触具有现实意义的项目,能接触更多的硬件,更好的提升自己的实践能力和综合能力。
参考文献
[1]肖洪兵.《跟我学用单片机》,[M].北京:
北京航空航天大学出版社,2002.8.
[2]何立民.《单片机高级教程》,[M].北京:
北京航空航天大学出版社,2001.6.
[3]查振亚、叶向阳.智能交通灯控制系统[J].华中理工大学学报,1997,25
(2):
63-65
[4]张毅刚.《MCS-51单片机原理及应用》,[M].哈尔滨:
哈尔滨工业大学出版社,2004.6.
[5]李广第.《单片机基础》,[M].北京:
北京航空航天大学出版社,1999.8.
[6]徐惠民.《单片微型计算机原理接口与应用》,[M].北京:
北京邮电大学出版社,1996.7.
附录I电路原理图
附录II元器件清单
序号
编号
名称
型号
数量
1
U2
单片机
AT89C51
1
2
U1
反相器
7405
6
3
U3、U4、U5、U6
移位寄存器
74LS164
4
4
U7
稳压芯片
7805
1
5
C1、C2、C3、C4、C5、C6
电容
CAP
6
6
DS1、DS2、DS3、DS4
数码管
SEG_7
4
7
D1~D12
LED
LED
12
8
Y1
晶振
12MHz
1
9
R1
电阻
10k
1
10
S1
按键
SWSPST
1
11
D13
直流电桥
BRIDGE
1
附录Ⅲ源程序
SECOND1EQU30H;东西路口计时寄存器
SECOND2EQU31H;南北路口计时寄存器
DBUFEQU40H;显示码缓冲区1
TEMPEQU44H;显示码缓冲区2
LED_G1BITP2.1;东西路口绿灯
LED_Y1BITP2.2;东西路口黄灯
LED_R1BITP2.3;东西路口红灯
LED_G2BITP2.4;南北路口绿灯
LED_Y2BITP2.5;南北路口黄灯
LED_R2BITP2.6;南北路口红灯
EMERGENCYBITP3^3
ORG0000H
LJMPSTART
ORG0013H
LJMPSTATE0
ORG0100H
START:
MOVTMOD,#01H;置T0为工作方式1
MOVTH0,#3CH;置T0定时初值50ms
MOVTL0,#0B0H
MOVIE,#84H
SETBIT1
CLRTF0
SETBTR0;启动T0
CLRA
MOVP1,A;关闭不相关的LED
;***************************************************
LOOP:
MOVR2,#20;置1s计数初值,50ms*20=1s
MOVR3,#10;红灯亮15s
MOVSECOND1,#10;东西路口计时显示初值15s
MOVSECOND2,#15;南北路口计时显示初值15s
LCALLDISPLAY
WAIT1:
LCALLSTATE1;调用状态1
JNBTF0,WAIT1;查询50ms到否
CLRTF0
MOVTH0,#3CH;恢复T0定时初值50ms
MOVTL0,#0B0H
DJNZR2,WAIT1;判断1s到否?
未到继续状态1
MOVR2,#20;置1s计数初值
DECSECOND1;东西路口显示时间减1s
DECSECOND2;南北路口显示时间减1s
LCALLDISPLAY
DJNZR3,WAIT1;状态1维持15s
;*****************************************************************
;*****************************************************************
MOVR2,#20;置50ms计数初值
MOVR3,#5;黄灯闪5s
MOVSECOND1,#5;东西路口计时显示初值2s
MOVSECOND2,#5;南北路口计时显示初值2s
LCALLDISPLAY
WAIT2:
LCALLSTATE2;调用状态3
JNBTF0,WAIT2;查询100ms到否
CLRTF0
MOVTH0,#3CH;恢复T0定时初值100ms
MOVTL0,#0B0H
DJNZR2,WAIT2;判断1s到否?
未到继续状态3
MOVR2,#20;置100ms计数初值
DECSECOND1;东西路口显示时间减1s
DECSECOND2;南北路口显示时间减1s
LCALLDISPLAY
DJNZR3,WAIT2;状态3维持2s
;*******************************************
MOVR2,#20;置50ms计数初值
MOVR3,#10;红灯闪20s
MOVSECOND1,#15;东西路口计时显示初值10s
MOVSECOND2,#10;南北路口计时显示初值10s
LCALLDISPLAY
WAIT3:
LCALLSTATE3;调用状态4
JNBTF0,WAIT3;查询100ms到否
CLRTF0
MOVTH0,#3CH;恢复T0定时初值100ms
MOVTL0,#0B0H
DJNZR2,WAIT3;判断1s到否?
未到继续状态4
MOVR2,#20;置100ms计数初值
DECSECOND1;东西路口显示时间减1s
DECSECOND2;南北路口显示时间减1s
LCALLDISPLAY
DJNZR3,WAIT3;状态4维持20s
;****************************************
MOVR2,#20;置50ms计数初值
MOVR3,#5;黄灯闪5s
MOVSECOND1,#5;东西路口计时显示初值2s
MOVSECOND2,#5;南北路口计时显示初值2s
LCALLDISPLAY
WAIT4:
LCALLSTATE4;调用状态3
JNBTF0,WAIT4;查询100ms到否
CLRTF0
MOVTH0,#3CH;恢复T0定时初值100ms
MOVTL0,#0B0H
DJNZR2,WAIT4;判断1s到否?
未到继续状态3
MOVR2,#20;置100ms计数初值
DECSECOND1;东西路口显示时间减1s
DECSECOND2;南北路口显示时间减1s
LCALLDISPLAY
DJNZR3,WAIT4;状态3维持2s
;*******************************************
;*******************************************
LJMPLOOP;大循环
;**********************************************
STATE0:
;状态2
CPLTR0
CLRLED_G1
CLRLED_Y1
SETBLED_R1
CLRLED_G2
CLRLED_Y2
SETBLED_R2;南北路口红灯亮
JNBEMERGENCY,$
CPLTR0
RETI
STATE1:
;状态1
SETBLED_G1
CLRLED_Y1
CLRLED_R1
CLRLED_G2
CLRLED_Y2
SETBLED_R2
RET
STATE2:
;状态3
CLRLED_G1
SETBLED_Y1
CLRLED_R1
CLRLED_G2
CLRLED_Y2
SETBLED_R2
RET
STATE3:
;状态4
CLRLED_G1
CLRLED_Y1
SETBLED_R1
SETBLED_G2
CLRLED_Y2
CLRLED_R2
RET
STATE4:
;状态3
CLRLED_G1
CLRLED_Y1
SETBLED_R1
CLRLED_G2
SETBLED_Y2
CLRLED_R2
RET
DISPLAY:
;数码显示
MOVA,SECOND1;东西路口计时寄存器
MOVB,#10;16进制数拆成两个10进制数
DIVAB
MOVDBUF+3,A
MOVA,B
MOVDBUF+2,A
MOVA,SECOND2;南北路口计时寄存器
MOVB,#10;16进制数拆成两个10进制数
DIVAB
MOVDBUF+1,A
MOVA,B
MOVDBUF,A
MOVR0,#DBUF
MOVR1,#TEMP
MOVR7,#4
DP10:
MOVDPTR,#LEDMAP
MOVA,@R0
MOVCA,@A+DPTR
MOV@R1,A
INCR0
INCR1
DJNZR7,DP10
MOVR0,#TEMP
MOVR1,#4
DP12:
MOVR7,#8
MOVA,@R0
DP13:
RLCA
MOVP3.0,C
CLRP3.1
SETBP3.1
DJNZR7,DP13
INCR0
DJNZR1,DP12
RET
LEDMAP:
DB3FH,06H,5BH,4FH,66H,6DH;0,1,2,3,4,5
DB7DH,07H,7FH,6FH,77H,7CH;6,7,8,9,A,B
DB58H,5EH,7BH,71H,0,40H;C,D,E,F,,-
END