单片机课程方案设计书模拟交通信号灯.docx
- 文档编号:5628265
- 上传时间:2022-12-29
- 格式:DOCX
- 页数:16
- 大小:282.29KB
单片机课程方案设计书模拟交通信号灯.docx
《单片机课程方案设计书模拟交通信号灯.docx》由会员分享,可在线阅读,更多相关《单片机课程方案设计书模拟交通信号灯.docx(16页珍藏版)》请在冰豆网上搜索。
单片机课程方案设计书模拟交通信号灯
课题:
模拟交通信号灯
专业:
测控技术与仪器
班级:
机091-7
姓名:
张萌萌
学号:
200977506238
同组人:
顿文强、袁跃、王莫涵、林垚
指导老师:
王卫忠
第一章课程设计任务书…………………………………………3
1.1摘要……………………………………………………………3
1.2设计目的和意义……………………………………………4
1.3任务要求……………………………………………………4
第二章系统工作原理………………………………………………5
2.1LED显示原理………………………………………………5
2.2红黄绿灯的控制……………………………………………5
第三章程序框图……………………………………………………7
3.1主程序框图……………………………………………………7
3.2中断服务程序流程图下图所示………………………………8
第四章Proteus软件仿真…………………………………………9
第五章设计总结……………………………………………………12
第六章参考文献……………………………………………………13
第七章附页程序清单………………………………………………14
第一章课程设计任务书
课程设计内容:
模拟交通灯
1.1摘要
交通在人们的日常生活中占有重要的地位,随着人们社会活动的日益频繁,这点更是体现的淋漓尽致。
交通信号灯的出现,使交通得以有效管制,对于疏导交通流量、提高道路通行能力,减少交通事故有明显效果。
本系统采用单片机8051为中心器件来设计交通灯控制器,系统实用性强、操作简单、扩展性强。
本设计就是采用单片机模拟十字路口交通灯的各种状态显示以及倒计时时间。
本设计系统由单片机I/O口扩展系统、交通灯状态显示系统、LED数码显示系统、紧急情况中断系统、复位电路等几大部分组成。
系统除基本的交通灯功能外,还具有倒计时、紧急情况处理等功能,较好的模拟实现了十字路口可能出现的状况。
软件上采用C51编程,主要编写了主程序,LED数码管显示程序,中断程序延时程序等。
经过整机调试,实现了对十字路口交通灯的模拟。
1.2设计目的和意义
加强对单片机和C51语言的认识,充分掌握和理解设计各部分的工作原理、设计过程、选择芯片器件、模块化编程等多项知识。
1、用单片机模拟实现具体应用使个人设计系统能够真正使用。
2、把理论知识与实践知识相结合,充分发挥个人能力,并在实践中得到锻炼。
3、提高利用已学的知识分析和解决问题的能力。
4、提高动手实践能力。
1.3任务要求:
1、主干道绿灯60秒,支干道绿灯30秒,黄灯都是三秒;
2、要求用延时来实现定时时间;
3、要求显示器同步显示主干道时间的倒计时;
4、如果有按键按下,表示有紧急车辆通过(救火车等),此时十字路都亮红灯,蜂鸣器响(十五秒钟后恢复正常)。
第二章系统工作原理
2.1、数字LED的显示原理:
通过给51单片机P0口送入初始值,并用P0口来控制短选位,P1口来控制位显来实现动态显示,来显示各灯的显示时间。
2.2红黄绿灯的控制
1、黄红绿灯的亮灭
8051单片机的P2口的六个端口接主干道和支干道的红、绿、黄灯,显示燃亮情况,通过两个八段显示器显示每个灯的燃亮时间,使灯和显示器时间同步。
2、由软件编程来实现灯的燃亮时间,设置使主干道和支干道绿灯别为60秒、30秒循环。
3、通过延时程序来实现时间的延时。
4、带有紧急按钮,使按钮按下时会有出现中断,使其去执行中断程序,主干道与支干道都为红灯。
总设计图如下:
第三章程序框图
中断服务程序流程图下图所示:
第四章Proteus软件系统仿真
硬件系统的接线如图所示,如下图,主干道的红,黄,绿交通灯分别通过P2口的六个端口连在一起,同理,支道上的也互联。
受89C51的P2.0-P2.5控制.紧急车请求通过时由按钮控制,通过中断来实现。
根据功能要求分别仿真各种情况下的亮灯情况,具体如下:
如下图仿真图所示,正常情况下主干道方向亮绿灯,主干道放行。
支干道方向亮红灯,支干道禁行:
如下所示主干道方向亮黄灯3秒,支干道方向亮红灯:
如下图仿真图所示,有紧急车通过时按下按键K0时,主、支干道均亮红灯特殊指示灯亮:
第五章设计总结
经过一学期的对《单片机原理及应用》的学习,在本学期末我们进行了为期两周的单片机课程设计,经过了小组的讨论我们选定了“模拟交通信号灯”的课题。
在这次设计中遇到了很多实际性的问题,在实际设计中才发现,书本上理论性的东西与在实际运用中的还是有一定的出入的,所以有些问题不但要深入地理解,而且要不断地更正以前的错误思维。
一切问题必须要靠自己一点一滴的解决,而在解决的过程当中你会发现自己在飞速的提升。
在整个设计过程中大部分时间是用在程序上面的。
很多子程序是可以借鉴书本上的,但怎样衔接各个子程序才是关键的问题所在,这需要对系统的结构很熟悉。
因此可以说系统的设计是软件和硬件的结合,二者是密不可分的。
通过这次课程设计我也发现了自身存在的不足之处,虽然感觉理论上已经掌握,但在运用到实践的过程中仍有意想不到的困惑,经过一番努力才得以解决。
要做好一个课程设计,就必须做到:
在设计程序之前,对所用单片机的内部结构有一个系统的了解,知道该单片机内有哪些资源;要有一个清晰的思路和一个完整的的软件流程图;在设计程序时,不能妄想一次就将整个程序设计好,反复修改、不断改进是程序设计的必经之路.
其次,这次课程设计让我充分认识到团队合作的重要性,只有分工协作才能保证整个工程的有条不絮。
另外在课程设计的过程中,当我们碰到不明白的问题时,指导老师总是耐心的讲解,给我们的设计以极大的帮助,使我们获益匪浅。
最后,非常感谢王老师在设计过程中对我们的指导!
第六章参考文献
[1]汪贵平,李登峰,雷旭新编单片机原理与应用机械工业出版社
[2]胡汉才单片机原理及其接口技术(第二版)清华大学出版社2004
[3]戴佳.单片机C51语言应用程序设计.电子工业出版社,2006.7:
168-169
[4]朱民雄.计算机语言技术.北京航空航天大学出版社,2002.1:
103-105
[5]李鸿.单片机原理及应用.湖南大学出版社.2004:
8:
72-73
[6]刘建清.单片机技术.国防工业出版社,2006.8:
104-105
[7]杨宁,胡学军.单片机与控制技术.北京航空航天大学出版社,2005-03:
306-32
第七章附页程序清单
ORG0000H
AJMPMAIN
ORG00013H
LJMPINT9。
跳到跳到特种车辆自动服务程序
............数字显示代码...........
TAB:
DB3FH,6H,5BH,4FH,66H,6DH,7DH,7H,7FH,6FH
/*主程序*/
ORG0300H
MAIN:
MOV25H,#60。
南北通行时间初始值,存到25H单元
MOV26H,#30。
东西通行时间初始值,存到26H单元
SETBIT0。
外部中断一边沿触发
MOVIE,#8FH。
开中断
.......南北绿灯东西红灯............
NBLD:
MOVR1,25H。
为南北方向显示时间做准备
NBLD1:
MOV20H,R1。
南北通行时间60秒(25h)=60,(NBLD即东西绿灯)
MOVP2,#1EH。
点亮南北绿灯东西红灯
MOVA,R1。
ADDA,#3。
MOV21H,A。
为东西方向显示时间做准备
LCALLDISP1。
显示通行所剩时间,其中有0.5秒延时
LCALLDISP1。
再次显示以便数码管不闪,且再延时0.5秒以便凑够一秒
DJNZR1,NBLD1。
判断60秒是否已完,若未完则从新显示、延时
............南北黄灯闪东西红灯.............
ShanHD:
MOVR2,#3。
黄灯闪亮3秒
HD:
MOVP2,#1DH。
点亮黄灯
MOV22H,R2。
为显示时间做准备
LCALLDISP2。
黄灯闪亮剩时显示,其中延时0.5秒
MOVP2,#1FH。
熄灭黄灯
LCALLDISP2。
显时,且再延时0.5秒以便凑够1秒
DJNZR2,HD。
判断3秒是否已完,若未完则从新闪灭、延时和显示
......南北红灯东西绿灯.............
DXLD:
MOVR3,26H。
东西通行30秒(26H)=30,(DXLD即东西绿灯)
DXLD1:
MOVP2,#33H。
点亮南北红灯东西绿灯
MOV24H,R3。
为东西方向显示时间做准备
MOVA,R3。
ADDA,#3。
MOV23H,A。
为南北方向显示时间做准备
LCALLDISP3。
时间显示,其中有0.5秒延时
LCALLDISP3。
凑够1秒时间
DJNZR3,DXLD1。
判断30秒是否已完
.......南北红灯东西黄灯闪..................
ShanHD1:
MOVR2,#3。
转入黄灯闪亮3秒
HD1:
MOV22H,R2。
为显示做准备
MOVP2,#2BH。
点亮南北红灯东西黄灯
LCALLDISP2。
显示时间,并延时0.5秒
MOVP2,#3BH。
点亮南北红灯关闭东西黄灯
LCALLDISP2。
显时,且再延时0.5秒以便凑够1秒
DJNZR2,HD1。
判断3秒是否到,若未到继续闪灭东西黄灯
AJMPNBLD。
主程序到此完
......延时程序...................
DELAY3:
MOVR6,#1。
5ms延时,(5ms=50*50*2us)
DE61:
MOVR0,#1
DE71:
DJNZR0,DE71
DJNZR6,DE61
RET
DELAY:
ACALLDELAY1。
10ms延时
ACALLDELAY1
RET
DELAY1:
MOVR6,#50。
5ms延时,(5ms=50*50*2us)
DE6:
MOVR0,#50
DE7:
DJNZR0,DE7
DJNZR6,DE6
RET
.....南北通行的时间显示子程序..........
DISP1:
MOVP0,#0。
熄灭数码管
MOVR7,#25。
以下调用四次5毫秒延时程序,故25*4*5毫秒=0.5秒
RP1:
MOVA,20H。
南北方向要显示时间移到寄存器A
MOVDPTR,#TAB。
要显示的数字代码表首地址
MOVB,#10
DIVAB。
要显示的时间与10相除,求出十位和个位
MOVCA,@A+DPTR。
找到十位的显示代码
MOVP1,#00001110B。
选择南北数码管十位片
MOVP0,A。
送出十位显示代码
LCALLDELAY1。
延时5ms以点亮数码管
MOVA,B。
把个位数移到寄存器A
MOVCA,@A+DPTR。
找到个位数显示代码
MOVP1,#00001101B。
选择南北数码管个位片
MOVP0,A。
送出个位数显示代码
LCALLDELAY1。
延时5ms以点亮数码管
MOVA,21H。
东西方向要显时间移到寄存器A
MOVDPTR,#TAB。
要显示的数字代码表首地址
MOVB,#10
DIVAB。
要显示的时间与10相除,求出十位和个位
MOVCA,@A+DPTR。
找到十位的显示代码
MOVP1,#00001011B。
选择东西数码管的十位片
MOVP0,A。
送出十位显示代码
LCALLDELAY1。
延时5ms以点亮数码管
MOVA,B。
把个位数移到寄存器A
MOVCA,@A+DPTR。
找到个位的显示代码
MOVP1,#00000111B。
选择东西数码管的个位片
MOVP0,A。
送出个位显示码
LCALLDELAY1
DJNZR7,RP1。
是否已循环25次
RET
.............黄灯的时间显示子程序................
DISP2:
MOVP0,#0。
熄灭数码管
MOVR7,#25。
以下调用两次0.01秒延时程序,
RP2:
MOVA,22H。
要显示的时间移到寄存器A
MOVDPTR,#TAB。
要显示的数字代码表首地址
MOVB,#10
DIVAB。
要显示的时间与10相除,求出十位和个位
MOVCA,@A+DPTR。
找到十位的显示代码
MOVP1,#00001010B。
选择南北数码管十位片和东西数码管十位片
MOVP0,A。
送出十位显示代码
LCALLDELAY。
延时10ms以点亮数码管
MOVP1,#00000101B。
选择东西南北数码管个位片
MOVA,B。
把个位数移到寄存器A
MOVCA,@A+DPTR。
找到个位数显示代码
MOVP0,A。
送出个位数显示代码
LCALLDELAY。
延时10ms一点亮数码管
DJNZR7,RP2
RET
..........东西通行的时间显示子程序.........
DISP3:
MOVP0,#0。
熄灭数码管
MOVR7,#25。
以下调用4次调用延时程序,
RP3:
MOVA,23H。
要南北方向显示的时间移到寄存器A
MOVDPTR,#TAB。
要显示的数字代码表首地址
MOVB,#10
DIVAB。
要显示的时间与10相除,求出十位和个位
MOVCA,@A+DPTR。
找到十位的显示代码
MOVP1,#00001110B。
选择南北数码管十位片
MOVP0,A。
送出十位显示代码
LCALLDELAY1。
延时5ms以点亮数码管
MOVA,B。
把个位数移到寄存器A
MOVCA,@A+DPTR。
找到个位数显示代码
MOVP1,#00001101B。
选择南北道数码管个位片
MOVP0,A。
送出个位数显示代码
LCALLDELAY1。
延时5ms一点亮数码管
MOVA,24H。
要东西方向显示的时间移到寄存器A
MOVB,#10
DIVAB。
要显示的时间与10相除,求出十位和个位
MOVCA,@A+DPTR。
找到十位的显示代码
MOVP1,#00001011B。
MOVP0,A。
送出十位显示代码
LCALLDELAY1。
延时5ms以点亮数码管
MOVA,B
MOVCA,@A+DPTR
MOVP1,#00000111B。
选择东西数码管个位片
MOVP0,A。
送出个位显示代码
LCALLDELAY1
DJNZR7,RP3
RET
............特殊车辆通过的时间显示子程序..........DISP4:
MOVP0,#0。
熄灭数码管
MOVR7,#50。
以下调用两次0.01秒延时程序,
RP4:
CLRP3.0
MOVA,27H。
要显示的时间移到寄存器A
MOVDPTR,#TAB。
要显示的数字代码表首地址
MOVB,#10
DIVAB。
要显示的时间与10相除,求出十位和个位
MOVCA,@A+DPTR。
找到十位的显示代码
MOVP1,#00001010B。
选择南北、东西数码管十位片
MOVP0,A。
送出十位显示代码
LCALLDELAY。
延时10ms以点亮数码管
MOVA,B。
把个位数移到寄存器A
MOVCA,@A+DPTR。
找到个位数显示代码
MOVP1,#00000101B。
选择南北、东西数码管的个位片
MOVP0,A。
送出个位数显示代码
LCALLDELAY。
延时10ms一点亮数码管
DJNZR7,RP4
RET
..........特殊车辆通过,中断服务程序................INT9:
PUSHP0
PUSHACC
CLRP3.0
MOVP2,#1BH。
点亮东西南北红灯
MOVR4,#15。
特殊车辆通过时间15秒
QHD:
MOV27H,R4。
为显示做准备
LCALLDISP4。
显示时间
MOVR5,#5
BEEP:
CLRP3.1
LCALLDELAY3
SETBP3.1
DJNZR5,BEEP
LCALLDELAY3
DJNZR4,QHD
SETBP3.0
POPACC
POPP0
RETI
END
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 课程 方案设计 模拟 交通 信号灯