单片机课设报告交通灯doc.docx
《单片机课设报告交通灯doc.docx》由会员分享,可在线阅读,更多相关《单片机课设报告交通灯doc.docx(25页珍藏版)》请在冰豆网上搜索。
![单片机课设报告交通灯doc.docx](https://file1.bdocx.com/fileroot1/2023-4/28/be4fd4e7-f6b4-4e01-ba50-9414e9da724d/be4fd4e7-f6b4-4e01-ba50-9414e9da724d1.gif)
单片机课设报告交通灯doc
专业:
电气自动化专业
学号:
姓名:
指导教师:
时间:
2010年5月30日—7月10日
摘要
在日常生活中,交通信号灯的使用,使交通得以有效管理,对于疏导交通流量、提高道路通行能力,减少交通事故有明显效果。
交通灯控制系统由89C51单片机、键盘、LED显示、交通灯延时组成。
系统除具有基本交通灯功能外,还具有时间设置、LED信息显示功能,使交通实现有效控制。
本系统采用单片机AT89C51为中心器件来设计交通灯控制器,系统实用性强、操作简单、扩展性强。
本设计就是采用单片机模拟十字路口交通灯的各种状态显示以及倒计时时间。
本设计系统由单片机I/O口扩展系统、交通灯状态显示系统、LED数码显示系统、紧急情况中断系统、复位电路等几大部分组成。
系统除基本的交通灯功能外,还具有倒计时、紧急情况处理等功能,较好的模拟实现了十字路口可能出现的状况。
软件上采用89C51编程,主要编写了主程序,LED数码管显示程序,中断程序延时程序等。
经过整机调试,实现了对十字路口交通灯的模拟。
近年来随着科技的飞速发展,单片机的应用正在不断深入,同时带动传统控制检测技术日益更新。
在实时检测和自动控制的单片机应用系统中,单片机往往作为一个核心部件来使用,仅单片机方面知识是不够的,还应根据具体硬件结构软硬件结合,加以完善。
关键字:
AT89C5174LS164LED交通灯程序
一.设计的目的和意义
训练正确的应用单片机,培养解决工业控制,工业检测等。
二.设计的任务及步骤
十字路口的交通指挥信号灯控制要求如下:
(1)信号灯受一个起动开关控制,当起动开关接通时,信号系统开始工作,且先南北红灯亮,东西绿灯亮。
当起动开关断开时,所有信号灯都熄灭。
(2)南北绿灯和东西绿灯不能同时亮,如果同时亮时,应关闭信号灯系统,并报警。
(3)南北红灯亮维持25S,在南北红灯亮的同时东西绿灯也亮,并维持20S。
到20S时,东西绿灯闪烁,闪烁3S后熄灭。
在东西绿灯熄灭时,东西红灯亮,并维持2S,到2S时东西黄灯熄灭,东西红灯亮。
同时南北红灯熄灭,南北绿灯亮。
(4)东西红灯亮维持30S,南北绿灯亮维持25S,然后闪烁3S,熄灭。
同时南北黄灯亮,维持2S后熄灭,这是南北红灯亮,东西绿灯亮。
(5)周而复始。
三.内容要求
设计论文内容要正确,概念要清楚,完成任务书所规定的内容;附原理图及程序流程图,以及程序清单;文字要通顺,书写要工整,设计图纸必须符合规范。
在日常生活中,交通信号灯的使用,使交通得以有效管理,对于疏导交通流量、提高道路通行能力,减少交通事故有明显效果。
如下图为十字路口的交通灯分布示意图。
交通灯控制系统由89C51单片机、键盘、LED显示、交通灯延时组成。
系统除具有基本交通灯功能外,还具有时间设置、LED信息显示功能,使交通实现有效控制。
关键词:
AT89C5174LS164LED交通灯程序。
四.总方案设计
4.1设计思路
利用单片机实现交通灯的控制,该任务分以下几个方面:
a实现红、绿、黄灯的循环控制。
要实现此功能需要表示三种不同颜色的LED灯分别接在P1个管脚,用软件实现。
b用数码管显示倒计时。
可以利用动态显示或静态显示,串行并出或者并行并出实现。
C实现急通车。
这需要人工实现,编程时利用到中断才能带到目的,只要有按钮按下,那么四个方向全部显示红灯,禁止以诶车辆通行。
当情况解除,让时间回到只能隔断处继续进行。
4.2总体设计框图
见图一:
4.3硬件设计
89C51单片机的概述
(1)MCS-51单片机内部结构:
图二为89C51单片机功能结构框图
89C51芯片内部集成了CPU、RAM、ROM定时/计数器和I/O口等各功能部件,并由内部总线把这些部件连接在一起。
80C51单片机内部包含以下一些功能部件:
a.一个8位CPU;
b.一个片内振荡器和时钟电路;
c.4KBROM(80C51有4KB掩膜ROM,87C51有4KBEPROM,80C31片内无ROM);
d.128KBRAM;
e.可寻址64KB的外ROM和外RAM控制电路;
f.两个16位定时/计数器;
g.21个特许功能寄存器;
h.4个8位并行I/O口,共32条可编程I/O端线;
i.一个可编程全双工串行口;
j.5个中断源,可设置成2个优先级。
图二(89C51单片机功能结构框图)
(2)MCS-51系统的引脚说明:
MCS-51系列单片机中的8031、8051及8751均采用40Pin封装的双列直接DIP结构,图二是它们的引脚配置,40个引脚中,正电源和底线两根,外置石英振荡器的时钟线两根,4组8位共32个I/O口,中断口线与P3口线复用。
图二(89C51引脚图)
89C51的复位方式可以自动复位,也可以是手动复位,见下图。
除此之外,RESET/Vpd还是一复用脚,Vcc掉电其间,此脚可以接上没用电源,以保证单片机内部RAM的数据不丢失。
在编程时,EA/Vpp脚还需加上21V的编程电压。
五.电路模块分析
5.1LED循环说明
东西、南北两干道交于一个十字路口,各干道有一组红、绿、黄三色的指示灯,指挥车辆和行人的安丘按通行。
红灯禁止通行,绿灯亮允许通行。
黄灯亮提示人们注意红、绿灯的状态即将切换,且黄灯燃亮时间为东西,南北两干道的公共停车时间。
25s
3s
2s
25s
3s
2s
东西通道
红灯亮
红灯亮
红灯亮
绿灯亮
绿灯闪
黄灯亮
南北通道
绿灯亮
绿灯闪
黄灯亮
红灯亮
红灯亮
红灯亮
上表说明东西路口哈珀能够灯亮,南北路口绿灯亮,同时开始25s倒计时。
25s倒计时结束后开始5s倒计时,南北铝扣绿灯闪烁,计时至最后2s时,南北路口黄灯亮。
完成一次这样的循环要30s。
30s结束,南北路口红灯亮,东西路口绿灯亮,并重新30s倒计时,依次循环。
电路图如图三所示。
图三(LED红绿灯显示)
5.2倒计时显示电路
(1)74LS164芯片
74LS164用于扩展并行输出口。
用89CS51串行口外接164串入-并出移位寄存器扩展8位并行口。
8位并行口的每位分别接到数码显示管的不同显示端。
74LS164芯片管脚排列如下图,管脚1、2相连共同接单片机管脚RXD,8管脚接单片机管脚TXD,9管脚接高电平,7管脚接地,14管脚接高电平,其他管脚依次接数码显示管管脚。
图四(74LS164)
(2)共阴极数码显示管
这里列出了共阴和共阳数码管的管脚平排列和内部结构。
数码管3、8管脚内部连在一起。
如果是共阳极则将其接到高电平。
如果是共阴极则将其接地。
为了数码显示管的安全这里用三个二极管与其串联来降压。
图五(数码显示管)
(3)倒计时显示电路如图六。
利用两个74LS164芯片并联后,其1、2管脚至单片机RXD管脚8管脚至单片机TXD管脚。
然后其他管脚依次接至数码管个管脚。
对于数码管其3、8管脚经过三个串联的二极管接地。
图六(倒计时电路)
5.4急通车电路
利用单片机中断达到目的。
利用一个手动按钮开关接至单片机外部中断0,同时在软件设计时将其设为最高优先级。
当有按键按下,四方全为红灯,同时将终端位置的PSW、ACC进栈保护。
当再按下按钮,将PSW、ACC出栈,回到原来的位置继续执行,电路图如下图。
图七(急通车电路)
六.软件设计
6.1程序流程图
如图八所示。
图八(流程图)
6.2LED红绿灯显示
如图三所示,当P1端口输出高电平,即P1各端口=1时,根据发光二极管的单向导电性可知,这是发光二极管熄灭;当P1个端口输出低电平,即P1各端口=0时,发光二极管亮。
我们可以使用SETB指令使P1各端口输出高电平,使用CLR指令时P各端口输出低电平。
至于循环需要软件控制,程序见附录。
6.3倒计时显示
此处采用LED静态显示方式,当显示器显示某个字符时,相应的段恒定的导通或截止,直到显示另个字符为止。
89C51的串行口RXD和TXD为一个全双工串行通信口,但工作在方式0下可作同步移位寄存器,其数据由RXD端串行输出或输入;而同步移位时钟由TXD端串行输出,在同步时钟的作用下,实现由串行到并行的数据通信。
在不需要使用串行通信的场合,利用串行口加外围芯片74LS164就可构成一个或多个并行输入\输出口,用于串——并转换或显示器LED驱动。
此利用后者。
6.4急通车控制
将一按钮接到单片机外部中断0端口。
另一端接地,通过在程序里设置外部中断0为最高优先级。
当检测到有按钮按下时,产生中断,停止刚才的程序,转向中断执行。
在此过程必须利用PUSH、POP指令保护现场,这样当情况解除可以回到原来的地方继续执行。
七.调试
我们拿着设计好的电路接线图和设计的程序去实验室调试,第一次就给了我们致命的打击,设计的功能仅仅实现了一个,只有红绿灯变化正常,倒计时也显示不出来,紧急停车也不能很好的返回。
八.总结
做了几周的课程设计,让人感受颇深,有关于单片机知识的,但更多是团队和合作。
我们小组一共6个人,人多,分工就显得很重要,在我们的集体的讨论之下,我得到了设计硬件电路和总体调试的任务,当时让我感到很有压力。
因为我们平时接触的都是纯粹理论的东西,做实验也是雾里看花,对硬件的认识是很缺乏的。
一回来我就去图书馆查阅的大量的单片机和数字芯片的资料,由于资料比较分散,所以整理有用的资料就显得很重要,有些东西实在是不懂我就把资料带回来请教同学,让我受益匪浅。
然后在硬件电路的设计中,由于要涉及软件设计的具体情况,又和组员共同讨论,最终确定了一个大家都可以接受的方案。
当时感觉这下任务该完成了,没有想到的是在实际的调试中更是遇到了太多的麻烦。
我们拿着设计好的电路接线图和设计的程序去实验室调试,第一次就给了我们致命的打击,设计的功能仅仅实现了一个,只有红绿灯变化正常,倒计时也显示不出来,紧急功能也不能很好的返回。
虽然我们没有完全成功,但是我们已经努力了,所以我们很高兴。
很感谢学校和老师给我们安排了这次课程设计,让我真正感受到的是合作的重要,许多时候都是组员的讨论,老师的指导中的一句半句启发了我,就出现的让人欣喜的结果;理论知识同样很重要,有些问题都是由于基础知识掌握不好才出现的。
课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程.随着科学技术发展的日新日异,单片机已经成为当今计算机应用中空前活跃的领域,在生活中可以说得是无处不在。
因此作为二十一世纪的大学来说掌握单片机的开发技术是十分重要的。
附录一
源程序代码
SECOND1EQU30H;东西路口计时寄存器
SECOND2EQU31H;南北路口计时寄存器
DBUFEQU40H;显示码缓冲1
TEMPEQU44H;显示码缓冲2
LED_G1BITP1.0;东西路口绿灯
LED_Y1BITP1.1;东西路口黄灯
LED_R1BITP1.2;东西路口红灯
LED_G2BITP1.5;南北路口绿灯
LED_Y2BITP1.6;南北路口黄灯
LED_R2BITP1.7;南北路口红灯
ORG0000H
LJMPSTART
ORG0003H
LJMPINTO0
ORG0100H
START:
MOVTMOD,#01H;置T0工作方式1
MOVTH0,#3CH
MOVTL0,#0BH
CLRTF0
SETBTR0;启动T0
SETBEX0
SETBPX0;设置外中断0高优先级
SETBEA
LOOP:
MOVR2,#20;置1s计数初值
MOVR3,#20;红灯亮20S
MOVSECOND1,#25;东西路口计时显示初值25s
MOVSECOND2,#25;南北路口计时显示初值25s
LCALLDISPLAY
LCALLSTATE1;调用状态1
WAIT1:
JNBTF0,WAIT1;查询50ms到否
CLRTF0
MOVTH0,#3CH;恢复T0定时初值50ms
MOVTL0,#0B0H
DJNZR2,WAIT1;判断1s到否?
未到继续状态1
MOVR2,#20;置50ms计数初值
DECSECOND1;东西路口显示时间减1
DECSECOND2;南北路口显示时间减1
LCALLDISPLAY
DJNZR3,WAIT1;状态1维持20s
MOVR2,#5;置50ms计数初值
MOVR3,#3;绿灯闪烁3s
MOVR4,#4;闪烁间隔200ms
MOVSECOND1,#5;东西路口计时显示初值5s
MOVSECOND2,#5;南北路口计时显示初值5s
LCALLDISPLAY
WAIT2:
LCALLSTATE2;调用状态2
JNBTF0,WAIT2;查询50ms到否
CLRTF0
MOVTH0,#3CH;恢复T0定时初值50ms
MOVTL0,#0B0H
DJNZR4,WAIT2;判断200ms到否?
未到继续状态2
CPLLED_G1;东西绿灯闪烁
MOVR4,#4;闪烁200ms
DJNZR2,WAIT2;判断1s到否?
未到继续状态2
MOVR2,#5;置50ma计数初值
DECSECOND1;东西路口显示时间减1
DECSECOND2;南北路口显示时间减1
LCALLDISPLAY
DJNZR3,WAIT2;状态2维持3s
MOVR2,#20;置50ms计数初值
MOVR3,#2;黄灯闪烁2s
MOVSECOND1,#2;东西路口计时显示初值2s
MOVSECOND2,#2;南北路口计时显示初值2s
LCALLDISPLAY
WAIT3:
LCALLSTATE3;调用状态3
JNBTF0,WAIT3;查询100ms到否
CLRTF0
MOVTH0,#3CH;恢复T0定时初值100ms
MOVTL0,#0B0H
DJNZR2,WAIT3;判断1s到否?
未到继续状态3
MOVR2,#20;置100ms计数初值
DECSECOND1;东西路口显示时间减1
DECSECOND2;南北路口显示时间减1
LCALLDISPLAY
DJNZR3,WAIT3;状态3维持2s
MOVR2,#20;置50ms计数初值
MOVR3,#20;红灯闪烁20s
MOVSECOND1,#25;东西路口计时显示初值25s
MOVSECOND2,#25;南北路口计时显示初值25s
LCALLDISPLAY
WAIT4:
LCALLSTATE4;调用状态4
JNBTF0,WAIT4;查询100ms到否
CLRTF0
MOVTH0,#3CH;恢复T0定时初值100ms
MOVTL0,#0B0H
DJNZR2,WAIT4;判断1s到否?
未到继续状态4
MOVR2,#20;置100ms计数初值
DECSECOND1;东西路口显示时间减1
DECSECOND2;南北路口显示时间减1
LCALLDISPLAY
DJNZR3,WAIT4;状态4维持2s
MOVR2,#5;置50ms计数初值
MOVR3,#4;红灯闪烁20s
MOVR3,#3;绿灯闪烁3s
MOVSECOND1,#25;东西路口计时显示初值5s
MOVSECOND2,#25;南北路口计时显示初值25s
LCALLDISPLAY
WAIT5:
LCALLSTATE5;调用状态5
JNBTF0,WAIT5;查询100ms到否
CLRTF0
MOVTH0,#3CH;恢复T0定时初值100ms
MOVTL0,#0B0H
DJNZR4,WAIT5;判断200ms到否?
未到继续状态5
CPLLED_G2;南北绿灯闪烁
MOVR4,#4;闪烁200ms
DJNZR2,WAIT5;判断1s到否?
未到继续状态5
MOVR2,#5;置100ms计数初值
DECSECOND1;东西路口显示时间减1
DECSECOND2;南北路口显示时间减1
LCALLDISPLAY
DJNZR3,WAIT5;状态5维持3s
MOVR2,#20;置50ms计数初值
MOVR3,#20;红灯闪烁2s
MOVSECOND1,#25;东西路口计时显示初值5s
MOVSECOND2,#25;南北路口计时显示初值5s
LCALLDISPLAY
WAIT6:
LCALLSTATE6;调用状态4
JNBTF0,WAIT6;查询100ms到否
CLRTF0
MOVTH0,#3CH;恢复T0定时初值100ms
MOVTL0,#0B0H
DJNZR2,WAIT6;判断1s到否?
未到继续状态6
MOVR2,#20;置100ms计数初值
DECSECOND1;东西路口显示时间减1
DECSECOND2;南北路口显示时间减1
LCALLDISPLAY
DJNZR3,WAIT6;状态6维持3s
LJMPLOOP
STATE1:
;状态1
SETBLED_G1;东西路口路灯亮
CLRLED_Y1
CLRLED_R1
CLRLED_G2
CLRLED_Y2
SETBLED_R2;南北路口红灯亮
RET
STATE2:
;状态2
CLRLED_Y1
CLRLED_R1
CLRLED_G2
CLRLED_Y2
SETBLED_R2;南北路口红灯亮
RET
STATE3:
;状态3
CLRLED_G1
CLRLED_R1
CLRLED_G2
CLRLED_Y2
SETBLED_R2;南北路口红灯亮
SETBLED_Y1;东西路口黄灯亮
RET
STATE4:
;状态4
CLRLED_G1
CLRLED_Y1
SETBLED_R1;东西路口红灯亮
SETBLED_G2;南北路口绿灯亮
CLRLED_Y2
CLRLED_R2
RET
STATE5:
;状态5
CLRLED_G1
CLRLED_R1
SETBLED_R1;东西路口红灯亮
CLRLED_Y2
CLRLED_R2
RET
STATE6:
;状态6
CLRLED_G1
CLRLED_Y1
SETBLED_R1;东西路口红灯亮
CLRLED_G2
CLRLED_R2
SETBLED_Y2;南北路口黄灯亮
RET
DISPLAY:
;数码显示
MOVA,SECOND1;东西路口计时寄存器
MOVB,#10
DIVAB
MOVDBUF+3,A
MOVA,B
MOVDBUF+2,A
MOVA,SECOND2;南北路口计时寄存器
MOVB,#10
DIVAB
MOVDBUF+1,A
MOVA,B
MOVDBUF,A
MOVR0,#DBUF
MOVR1,#TEMP
MOVR7,#4
DP10:
MOVDPTR,#TEMP
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
LENMAP:
DB3FH,06H,5BH,4FH,66H,6DH
DB7DH,07H,7FH,6FH
ORG0200H
INTO0:
PUSHPSW
PUSHACC
SETBLED_R1
SETBLED_R2
CLRLED_G1
CLRLED_Y1
CLRLED_G2
CLRLED_Y2
POPPSW
POPACC
RETI
END
附录二
九.参考文献
[1]叶挺秀.应用电子学.杭州:
浙江大学出版社,1994
[2]朱承高.电工及电子技术手册.北京:
高等教育出版社,1990
[3]周润景.PEOTEUS在MCS-51&ARM7系统中的应用百例.北京:
电子工业出版社,2006
[4]李朝青.单片机原理及接口技术(第三版).北京:
北京航空航天大学出版社,2005
实训成绩评定书
序号
评定项目
评定等级
A(优)
B(良)
C(中)
D(及格)
E(不及格)
1
考勤
2
软件基本操作能力
3
基本编程能力
4
软件调试能力
5
硬件连接能力
6
独立思考独立解决问题能力
7
软硬件联调结果
8
平时表现
9
实训报告
综合评定等级
`
指导教师:
柳铭
2010年7月10日