单片机交通灯课程设计.docx
《单片机交通灯课程设计.docx》由会员分享,可在线阅读,更多相关《单片机交通灯课程设计.docx(23页珍藏版)》请在冰豆网上搜索。
单片机交通灯课程设计
单片机原理及应用课程设计
专业:
设计题目:
十字路口交通灯控制
班级:
学生姓名:
学号:
指导教师:
分院院长:
许建平
教研室主任:
方健
电气工程学院
一、课程设计任务书
1.课程设计项目
十字路口交通灯控制
2.设计内容
1)以MCS-51系列单片机为核心器件组成交通灯控制系统,采用定时中断实现精确定时;
2)利用提供单元模块构成硬件系统。
3.设计要求
1)设计一个十字路口交通灯控制器。
用单片机控制LED灯模拟指示,用2位数码管显示倒计时剩余时间。
模拟XY方向的十字路口交通信号控制情况。
红、绿黄灯时间可通过键盘进行设定调整。
2)本项目为典型的LED显示和中断定时电路。
利用定时器T0产生每10ms一次的中断,每100次中断为1s。
对两个方向分别显示红、绿、黄灯,及相应的剩余时间即可。
值得注意的是需要意识到,X方向红灯时间=Y方向绿灯时间+黄灯缓冲时间这一常识。
3)用4个按键,结合红、黄、绿灯显示,设置红绿灯的倒计数的时间。
4)4个按键的功能分配可以自行设定,也可以按如下方法设定。
K1—功能键,每按下一次对应的LED灯亮,表示要设置该灯的倒计时时间。
同时,十位数码管闪烁。
K2—移位键,每按下一次向后移一位。
K3—加1键。
K4—减1键。
。
4、参考资料
[1]李广弟,朱月秀,王秀山编著.单片机基础.北京:
北京航空航天大学出版社,2001
[2]何立民编著.MCS-51系列单片机应用系统设计系统配置与接口技术.北京:
北京航空航天大学出版社,1999
[3]蔡美琴等编著.MCS-51单片机系统及应用.北京:
高等教育出版社.1992
5.设计进度(2011年6月13日至2011年6月24日)
时间
设计内容
第1-2天
查阅资料,方案比较、设计与论证,理论分析与计算
第3-5天
硬件电路调试
第6-8天
系统调试
第9-10天
书写报告、答辩
6.设计地点
新实验楼323微机实验室
二、评语及成绩
评分项目
评分标准
量化
分数
1.独立分析与解决问题的能力
很强
较强
一般
不具有
10
2.课程设计的答辩情况
有见解
回答准确
回答正确
基本正确
有错误
25
3.课程设计论文及插图的规范程度
规范
整洁
正确
杂乱
有错误
25
4.工具软件的使用
熟练使用
会使用
需要学习
10
5.辅导答疑
积极
认真
应付
消极
10
6.设计态度
积极
认真
应付
消极
10
7.出勤
全勤
缺勤次数
10
附加评语
量化总分
成绩:
指导教师:
单片机原理及
应用课程设计
班级:
姓名:
学号:
指导教师:
撰写日期:
目录
第一章课程设计内容与要求分析1
1.1课程设计内容1
1.2课程设计要求分析1
1.2.1电源提供方案1
1.2.2交通灯显示时序的理论分析与计算1
1.2.3系统单元电路组成2
第二章控制系统程序设计6
2.1时间的设定:
6
2.2数码管驱动代码表6
2.3中断子程序7
第三章调试方法及步骤8
第四章总结9
附录11
第一章课程设计内容与要求分析
1.1课程设计内容
本题目以89C51单片机为核心器件组成交通灯控制系统,采用定时中断实现精确定时;利用提供的单元模块构成硬件系统。
它由单片机系统、LED显示、交通灯演示系统组成。
系统包括人行道、左转、右转、以及基本的交通灯的功能。
1.2课程设计要求分析
要求在一般工作方式下,十字路口为A、B道(A、B道交叉组成十字路口),每道设置红、绿、黄三盏灯,在灯的控制下各道轮流放行。
通行的流程是:
B道红灯亮40秒,同时A道绿灯亮30秒,闪烁5秒,A道黄灯亮5秒;然后切换A道红灯亮40秒,同时B道绿灯亮30秒,闪烁5秒;B道黄灯亮5秒。
如此循环。
在A、B道红、绿、黄灯依次点亮时,A、B道对应的两位数码管分别倒计时显示本道红、绿、黄灯点亮的时间。
1.2.1电源提供方案
为使模块稳定工作,须有可靠电源。
我们考虑了两种电源方案
方案一:
采用独立的稳压电源。
此方案的优点是稳定可靠,且有各种成熟电路可供选用;缺点是各模块都采用独立电源,会使系统复杂,且可能影响电路电平。
方案二:
采用单片机控制模块提供电源。
改方案的优点是系统简明扼要,节约成本;缺点是输出功率不高。
综上所述,我们选择第二种方案。
1.2.2交通灯显示时序的理论分析与计算
本设计为典型的LED显示和中断定时电路。
利用定时器T0产生每10ms一次的中断,每100次中断为1s。
对两个方向分别显示红、绿、黄灯,及相应的剩余时间即可。
值得注意的是需要意识到:
X方向红灯时间=Y方向绿灯时间+黄灯缓冲时间。
1.2.3系统单元电路组成
总体模型
显示单元:
采用共阳极LED的动态显示方式,用P0.0~P0.7做段选,P1.0~P1.3作位选。
如图1-1所示。
图1-1
图1-2
图1-2位LED指示灯,Y方向的右转:
红—P2.3黄—P2.4绿—P2.5
Y方向的直行:
红—P2.0黄—P2.1绿—P2.2
X方向的右转:
红—P3.3黄—P3.4绿—P3.5
X方向的直行:
红—P3.0黄—P3.1绿—P3.2
89C51的管脚图如图1-3所示
图1-3
引脚说明:
①电源引脚
Vcc(40脚):
典型值+5V。
Vss(20脚):
接低电平。
②外部晶振
X1、X2分别与晶体两端相连接。
当采用外部时钟信号时,X2接振荡信号,X1接地
。
③输入输出口引脚:
P0口:
I/O双向口。
作输入口时,应先软件置“1”。
P1口:
I/O双向口。
作输入口时,应先软件置“1”。
P2口:
I/O双向口。
作输入口时,应先软件置“1”。
P3口:
I/O双向口。
作输入口时,应先软件置“1”。
④控制引脚:
RST/Vpd、ALE/-PROG、-PSEN、-EA/Vpp组成了MSC-51的控制总线。
RST/Vpd(9脚):
复位信号输入端(高电平有效)。
第二功能:
加+5V备用电源,可以实现掉电保护RAM信息不丢失。
ALE/-PROG(30脚):
地址锁存信号输出端。
第二功能:
编程脉冲输入。
-PSEN(29脚):
外部程序存储器读选通信号。
-EA/Vpp(31脚):
外部程序存储器使能端。
第二功能:
编程电压输入端(+21V)。
交通灯系统电路实物图如下:
图1-4
第二章控制系统程序设计
2.1时间的设定:
采用软延时的方法。
89C51单片机的工作频率为12MHZ,机器周期是时钟周期的12倍,所以一个机器周期的时间为12*(1/12M)=1us。
我们可以知道具体每条指令的周期数,这样我们就可以通过指令的执行条数来确定时间。
T10MS:
MOVR2,#2;10MS延时
SS2:
MOVR3,#200
SS1:
NOP
NOP
NOP
DJNZR3,SS1
DJNZR2,SS2
RET
2.2数码管驱动代码表
显示数值
(dop)gfedcba
驱动代码(16进制)
0
00111111
0A0H
1
00000110
0F9H
2
01011011
64H
3
01001111
70H
4
01100110
39H
5
01101100
32H
6
01111100
22H
7
00000111
0F8H
8
01111111
20H
9
01111111
30H
驱动代码表如图所示2-1
2.3中断子程序
T00K:
PUSHACC;T00KT0中断子程序
PUSH00H
PUSHPSW
MOVTH0,#0ECH;12MHZ时4MS
MOVTL0,#78H
DJNZ14H,Z1
MOV14H,#200
JB00H,KSAN;00H按键标志
SETB04H;1秒钟到标志
SJMPZ1
第三章调试方法及步骤
1.用keil3先调试设计好的程序,方法是打开keil3后新建项目,加入模块文件.asm保存到文件夹下,名字自定即可,然后打开.asm模块文件,再编译检查是否正确通过。
2.若出现错误,就要修改错误,(比如指令错误,或者是符号错误等)编译全部通过后再接外围硬件电路,用STC下载器调试,看是否与设计思想一致。
3.显示结果正确后结束仿真,先停止运行程序,再关掉最小系统开关,最后断电。
第四章总结
在本次实训作品交通灯控制电路的设计和制作中,我对电子设计方面有了很大的提高,同时也更加的了解十字路口交通灯的工作原理和实际应用过程。
也对前一阶段的单片机课程学习和keil,STC软件的学习有了进一步的巩固和提高。
对一些单片机的应用,延迟电路的设计应用和数码管的电路程序的应用有了更多的理解。
在设计的过程,电路焊接,最后到作品的调试,其中在整个过程中,遇到了很大的挑战和困难,不过最后在同学们的帮助下都得以一一解决。
从开始数码管的选择错误到最后的电路调试,从开始的程序编写,到最后的软件测试,大家互相帮助,共同进步。
同时对相关设计软件应用也有了进一步的了解和熟悉,也对电子设计的整体流程有了更多的理解。
经过这次实训课程设计,我学到了很多书本上没有的,比较实际、实用的东西,学会了怎样将理论知识运用到实际设计当中,对实验设备和设计软件的使用和分析问题解决问题的能力也有了很大的提高。
同时也明白了电路焊接和作品调试时,需要更多的耐心。
通过这次实训课程设计,不仅可以在专业上可以学到更多的知识,同时也对平时的学习和工作中产生了影响,那就是认认真真的去完成每一件事。
参考文献
[1]李广弟,朱月秀,王秀山编著.单片机基础.北京:
北京航空航天大学出版社,2001
[2]何立民编著.MCS-51系列单片机应用系统设计系统配置与接口技术.北京:
北京航空航天大学出版社,1999
[3]蔡美琴等编著.MCS-51单片机系统及应用.北京:
高等教育出版社.1992
附录
程序如下:
;交通灯控制程序
;显示缓冲单元:
30H,31H,32H,33H
;P0.0,P0.1,P0.2:
为X轴绿灯、黄灯、红灯
;P0.4,P0.5,P0.6:
为Y轴绿灯、黄灯、红灯
;41H,42H:
为XY轴定时计数显示值
;28H:
XZ绿、黄灯定时
;29H:
;2AH:
XL绿、黄灯定时
;2BH:
;2CH:
YZ绿、黄灯定时
;2DH:
;2EH:
YL绿、黄灯定时
;2FH:
;Y红=XZ绿+XZ黄+XL绿+XL黄
;XL红=XZ绿+XZ黄
;XZ红=XL绿+XL黄
;X红=YZ绿+YZ黄+YL绿+YL黄
;YL红=YZ绿+YZ黄
;YZ红=YL绿+YL黄
HOLVEQU0DEH;11011110
HOHUEQU0EEH;11101110
LVHOEQU0F3H;11110011
HUHOEQU0F5H;11110101
HOHOEQU0F6H;11110110
ORG0000H
AJMPMAIN
ORG000BH
AJMPT00K
ORG0030H
MAIN:
MOVSP,#60H
STRT:
MOVP1,#0FFH
MOVP2,#0FFH
MOVP3,#0FFH
MOVP0,#0FFH
MOVTMOD,#01H
MOVTH0,#0ECH;12MHZ5MS的初值5000=1388H
MOVTL0,#78H
MOV14H,#100;中断次数100*5=500MS
SETBTR0
SETBET0
SETBEA
MOV30H,#8;显示缓冲单元
MOV31H,#8
MOV32H,#8
MOV33H,#8
;初值设定为压缩BCD码
MOV28H,#10;XZL,Y初值
MOV29H,#05;XZH
MOV2AH,#10;XLL
MOV2BH,#05;XLH
MOV2CH,#10;YZL
MOV2DH,#05;YZH
MOV2EH,#10;YLL
MOV2FH,#05;YLH
MOV10H,#0FEH;记录显示位置
MOV11H,#30H;记录显示单元
MOV12H,#0;功能键按下计数器
MOV13H,#4;13H按键延时去抖
;20H,21H留作标志
CLR00H;按键标志
CLR01H;500MS*2
CLR02H;按键交替闪烁标志
CLR03H;温度偏移量设定时的负号标志
CLR04H;1秒时间到标志
CLR05H;亮灯转换标志
;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
HHH:
NOP;开始
MOVA,28H
ADDA,29H
ADDA,2AH
ADDA,2BH
MOV42H,A;Y显示单元
MOV41H,28H;X显示单元
MOV43H,28H;43H亮灯时间记录
MOVA,42H
MOVR1,#33H
ACALLBCDD;二十转换送显示缓冲区
MOVA,41H
MOVR1,#31H
ACALLBCDD
MOVP3,#HOLV;XL红XZ绿
MOVP2,#HOHO;YZ红YL红
CLR05H;状态转换标志清零
HX0:
JNB05H,HX0;时间没到继续查键盘
MOV41H,29H
MOV43H,29H
MOVA,41H
MOVR1,#31H
ACALLBCDD
MOVP3,#HOHU;XL红XZ黄
MOVP2,#HOHO;YL红YZ红
CLR05H
HX2:
JNB05H,HX2;时间没到继续查键盘
MOV41H,2AH
MOV43H,2AH
MOVA,41H
MOVR1,#31H
ACALLBCDD
MOVP3,#LVHO;XL绿XZ红
MOVP2,#HOHO;YL红YZ红
CLR05H
HX4:
JNB05H,HX4
MOV41H,2BH
MOV43H,2BH
MOVA,41H
MOVR1,#31H
ACALLBCDD
MOVP3,#HUHO;XL黄XZ红
MOVP2,#HOHO;YL红YZ红
CLR05H
HX6:
JNB05H,HX6
;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
;YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY
MOVA,2CH
ADDA,2DH
ADDA,2EH
ADDA,2FH
MOV41H,A;Y显示单元
MOV42H,2CH;X显示单元
MOV43H,2CH;43H亮灯时间记录
MOVA,42H
MOVR1,#33H
ACALLBCDD;二十转换送显示缓冲区
MOVA,41H
MOVR1,#31H
ACALLBCDD
MOVP2,#HOLV;Y
MOVP3,#HOHO;X
CLR05H;状态转换标志清零
HY0:
JNB05H,HY0;时间没到继续查键盘
MOV42H,2DH
MOV43H,2DH
MOVA,42H
MOVR1,#33H
ACALLBCDD
MOVP2,#HOHU;Y
MOVP3,#HOHO;X
CLR05H
HY2:
JNB05H,HY2;时间没到继续查键盘
MOV42H,2EH
MOV43H,2EH
MOVA,42H
MOVR1,#33H
ACALLBCDD
MOVP2,#LVHO;Y
MOVP3,#HOHO;X
CLR05H
HY4:
JNB05H,HY4
MOV42H,2FH
MOV43H,2FH
MOVA,42H
MOVR1,#33H
ACALLBCDD
MOVP2,#HUHO;Y
MOVP3,#HOHO;X
CLR05H
HY6:
JNB05H,HY6
AJMPHHH;重新开始
;YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY
BCDD:
NOP;把A分解送显示缓冲区
MOVB,#10
DIVAB
MOV@R1,A
DECR1
MOVA,B
MOV@R1,A
RET
HBCD:
MOVA,@R0;回存设定值
MOVR2,A
INCR0
MOVA,@R0
MOVB,#10
MULAB
ADDA,R2
MOV@R1,A
RET
;TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT
T00K:
PUSHACC;T00KT0中断子程序
PUSH00H
PUSHPSW
MOVTH0,#0ECH;12MHZ时4MS
MOVTL0,#78H
DJNZ14H,Z1
MOV14H,#100
JB00H,KSAN;00H按键标志
CPL01H
JB01H,Z1
SETB04H;1秒钟到标志
SJMPZ1
KSAN:
CPL02H;02H交替闪烁标志
JNB02H,SAN1
MOVR0,35H
MOV@R0,#16
SJMPSAN2
SAN1:
MOVR0,35H
MOV@R0,34H
SAN2:
NOP
Z1:
NOP
ORLP1,#0FFH;灭
MOVA,11H
MOVR0,A
MOVA,@R0
MOVDPTR,#DDB
MOVCA,@A+DPTR;送段吗
MOVP0,A
MOVA,10H
ANLP1,A
RLA
MOV10H,A
INC11H
JBACC.4,TK1
MOV10H,#0FEH
MOV11H,#30H
TK1:
DEC13H;健扫描延时
JNB04H,T0K1;1S时间没到,直接返回
CLR04H
DEC43H
DEC41H
DEC42H
MOVA,43H
JNZT02
SETB05H
T02:
MOVA,41H
MOVR1,#31H
ACALLBCDD
MOVA,42H
MOVR1,#33H
ACALLBCDD
T0K1:
POPPSW
POP00H
POPACC
RETI
DDB:
DB0C0H,0F9H,0A4H,0B0H,99H;段码表
DB92H,82H,0F8H,80H,90H;0--9
DB88H,83H,0C6H,0A1H,86H,8EH,0FFH;E,-,n,灭=16
;TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT
T10MS:
MOVR2,#2;10MS延时
SS2:
MOVR3,#200
SS1:
NOP
NOP
NOP
DJNZR3,SS1
DJNZR2,SS2
RET