交通灯课程设计.docx
- 文档编号:26411800
- 上传时间:2023-06-19
- 格式:DOCX
- 页数:18
- 大小:166.04KB
交通灯课程设计.docx
《交通灯课程设计.docx》由会员分享,可在线阅读,更多相关《交通灯课程设计.docx(18页珍藏版)》请在冰豆网上搜索。
交通灯课程设计
目录
选择芯片器件、模块化编程等多项知识。
(2)用单片机模拟实现具体应用,使个人设计能够真正使用。
(3)把理论知识与实践相结合,充分发挥个人能力,并在实践中锻炼。
(4)提高利用已学知识分析和解决问题的能力。
(5)提高实践动手能力。
1.3设计任务和内容
1.3.1设计任务
结合教材及参考资料,用AT89C51单片机模拟实现十字路口的交通灯亮灭、倒计时显示等功能。
1.3.2设计内容
(1)填写设计任务书。
(2)进行总体设计,画出原理图。
(3)编写并调试程序。
(4)用Proteus软件进行仿真。
第二章总体设计及核心器件简介
2.1总体设计
整个设计以AT89C51单片机为核心,LED数码管显示,晶振电路,复位电路组成。
硬件模块入图2-1。
图2-1硬件模块
2.2AT89C51
1.AT89C51单片机简介
AT89C51是美国ATMEL公司推出的系列单片机,将多种功能的8位CPU与FPEROM(快闪可编程/擦除只读存储器)结合在一个芯片上,是一种低功耗、高性能的CMOS控制器,为很多嵌入式控制应用提供了非常灵活而又价格适宜的方案,其性能价格比远高于同类芯片。
它与MCS-51指令系统兼容,片内FPEROM允许对程序存储器在线重复编程,也可用常规的EPROM编程器编程,可循环写入/擦除1000次。
89C51内含4KB的FPEROM,一般的EEPROM的字节擦除时间和写入时间基本上均为10ms,对于任一个实时控制系统来说,这样长的时间是不可能在线修改程序的。
图2-289C51内部结构图
与EEPROM相比较,FPEROM大大缩短了存储内容擦除和写入的时间,为在线改写程序提供了极大的方便,而且价格也比带EPROM87C系列单片机便宜,这更显示出了89C系列的优越性。
它还有128*8Bit的片内RAM;32根I/O线;2个16位定时/计数器;5个中断源;一个全双工的异步串行口;间歇和掉电工作模式;三级程序存储器加密;全静态工作,晶振工作范围:
0Hz—24MHz。
2.管脚功能
AT89C51单片机为40引脚芯片如图2-3所示。
I/O口线:
P0、P1、P2、P3共四个八位P0口是三态双向口,通称数据总线口,因为只有该口能直接用于对外部存储器的读ˆ写操作。
P0口也用以输出外部存储器的低8位地址。
由于是分时输出,故应在外部加锁存器将此地址数据锁存,地址锁存信号用ALE。
P1口是专门供用户使用的I/O口,是准双向口。
P2口是从系统扩展时作高8位地址线用。
不扩展外部存储器时,P口也可P2口也是准双向口。
P3口是双功能口,该口的每一位均可独立地定义为第一I/O功能或第二I/O功能。
作为第一功能使用时操作同P1口。
P3口的第二功能如表2-1。
图2-389C51引脚图
控制口线:
PSEN(片外取控制)、ALE(地址锁存控制)、EA(片外储器选择)、RE2SET(复位控制);
电源及时钟:
CCC、VSS;XTAL1,XTAL2
表2-1引脚功能表
2.374LS164
74LS164引脚定义如图2-5所示,其真值表如表2-2所示,其功能是将外部输入的串行数据转化为8位的并行数据输出具有锁寸功能。
A、B端为串行数据输入端,QA~QH为数据输出端,CLK为外部时钟输入端,CLR为清零端。
图2-574LS164引脚图
表2-274LS164真值表
输入
输出
CLEAR
CLOCK
AB
QAQB……QH
L
X
XX
LLL
H
L
XX
QA0QB0QH0
H
↑
HH
HQAnQGn
H
↑
LX
LQAnQGn
H
↑
XL
LQAnQGn
第三章单元电路模块设计
3.1复位电路
3-1复位电路
3.2晶振电路
3-2 晶振模块原理图
选取原则:
传统做法,但能够实现所需,即最简单也最是实用。
电容选取22uF,晶振为11.0592Hz。
3.3LED数码管显示电路
在单片机应用系统中,数码管显示常用两种方法:
静态显示和动态扫描显示。
所谓静态显示,就是每一个显示器都要占用单独的具有锁存功能的I/O接口用于笔划段字形代码。
这样单片机只要把要显示的字形代码发送到接口电路,就不用管它了,直到要显示新的数据时,再发送新的字形码,因此,使用这种方法单片机中CPU的开销小,可以提供单独锁存的I/O接口电路很多。
所以本设计采用串并转换电路74LS164的静态显示电路。
其电路图如图3-4所示。
图3-4数码管显示静态驱动电路
3.4总体设计原理图及功能介绍
功能介绍:
LED数码管则用来对各种状态进行倒计时的显示。
设计中采用74LS164静态驱动LED数码管,利用单片机的RXD作为数据的输出端给164送数。
利用164的移位进行多位的显示。
利用延时程序控制每秒时间,从而控制RXD送数的时间间隔。
第四章软件编程设计
4.1设计思想
交通灯根据其显示情况可以分为四个状态,可以通过定时来控制每个状态的时间;通过定时也可以向LED数码管中每隔1秒送一个数,显示该状态剩余的时间。
4.2程序框图
图4-1主程序框图
4.3源程序
SECOND1EQU30H;东西路口计时寄存器
SECOND2EQU31H;南北路口计时寄存器
DBUFEQU40H;显示码缓冲区1
TEMPEQU44H;显示码缓冲区2
LED_G1BITP2.1;东西路口绿灯
LED_Y1BITP2.2;东西路口黄灯
LED_R1BITP2.3;东西路口红灯
LED_G2BITP2.4;南北路口绿灯
LED_Y2BITP2.5;南北路口黄灯
LED_R2BITP2.6;南北路口红灯
ORG0000H
LJMPSTART
ORG0100H
START:
MOVTMOD,#01H;置T0为工作方式1
MOVTH0,#3CH;置T0定时初值50ms
MOVTL0,#0B0H
CLRTF0
SETBTR0;启动T0
CLRA
MOVP1,A;关闭不相关的LED
LOOP:
MOVR2,#20;置1S计数初值,50ms*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;东西路口显示时间减1s
DECSECOND2;南北路口显示时间减1s
LCALLDISPLAY
DJNZR3,WAIT1;状态1维持20s
MOVR2,#5;置50MS计时初值5*4=20
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;置50MS计数初值
DECSECOND1;东西路口显示时间减1S
DECSECOND2;南北路口显示时间减1S
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;东西路口显示时间减1S
DECSECOND2;南北路口显示时间减1S
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;东西路口显示时间减1S
DECSECOND2;南北路口显示时间减1S
LCALLDISPLAY
DJNZR3,WAIT4;状态4维持20S
MOVR2,#5;置50MS计数初值
MOVR4,#4;红灯闪20S
MOVR3,#3;绿灯闪3S
MOVSECOND1,#5;东西路口计时显示初值5S
MOVSECOND2,#5;南北路口计时显示初值5S
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;东西路口显示时间减1S
DECSECOND2;南北路口显示时间减1S
LCALLDISPLAY
DJNZR3,WAIT5;状态5维持3S
MOVR2,#20;置50MS计数初值
MOVR3,#2;红灯闪2S
MOVSECOND1,#2;东西路口计时显示初值2S
MOVSECOND2,#2;南北路口计时显示初值2S
LCALLDISPLAY
WAIT6:
LCALLSTATE6;调用状态6
JNBTF0,WAIT6;查询100MS到否
CLRTF0
MOVTH0,#3CH;恢复T0定时初值100MS
MOVTL0,#0B0H
DJNZR2,WAIT6;判断1S到否未到继续状态6
MOVR2,#20H;置100MS计数初值
DECSECOND1;东西路口显示时间减1S
DECSECOND2;南北路口显示时间减1S
LCALLDISPLAY
DJNZR3,WAIT6;状态6维持2S
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_Y1
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,#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,0,40H;s,d,e,f,,-
END
第五章心得体会
心得体会
作为一名自动化专业的学生,我觉得做单片机课程设计是十分有意义的,而且是十分必要的。
在已度过的大学时间里,我们大多数接触的是专业课。
我们在课堂上掌握的仅仅是专业课的理论知识,如何去锻炼我们的实践能力?
如何把我们所学的专业基础课理论知识运用到实践中去呢?
我想做类似的课程设计就为我们提供了良好的实践平台。
要做好一个课程设计,就必须做到:
在设计程序之前,对所用单片机的内部结构有一个系统的了解,知道该单片机内有哪些资源;要有一个清晰的思路和一个完整的的软件流程图;在设计程序时,不能妄想一次就将整个程序设计好,反复修改、不断改进是程序设计的必经之路;要养成注释程序的好习惯,一个程序的完美与否不仅仅是实现功能,而应该让人一看就能明白你的思路,这样也为资料的保存和交流提供了方便;在设计课程过程中遇到问题是很正常德,但我们应该将每次遇到的问题记录下来,并分析清楚,以免下次再碰到同样的问题。
课程设计结束了,但是从中学到的知识会让我受益终身。
发现、提出、分析、解决问题和实践能力的提高都会受益于我在以后的学习、工作和生活中。
设计过程,好比是我们的成长的历程,常有一些不如意,难免会遇到各种各样的问题。
在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固。
我们通过查阅大量有关资料,并在小组中互相讨论,交流经验和自学,使自己学到了不少知识,也经历了不少艰辛,但收获同样巨大。
通过这次课程设计我也发现了自身存在的不足之处,虽然感觉理论上已经掌握,但在运用到实践的过程中仍有意想不到的困惑,经过一番努力才得以解决。
这也激发了我今后努力学习的兴趣,我想这将对我以后的学习产生积极的影响。
通过这次设计,我懂得了学习的重要性,了解到理论知识与实践相结合的重要意义,学会了坚持、耐心和努力,这将为自己今后的学习和工作做出了最好的榜样。
我觉得作为一名自动化专业的学生,单片机的课程设计是很有意义的。
更重要的是如何把自己平时所学的东西应用到实际中。
虽然自己对于这门课懂的并不多,很多基础的东西都还没有很好的掌握,觉得很难,也没有很有效的办法通过自身去理解,但是靠着这一个多礼拜的“学习”,在小组同学的协助下,渐渐对这门课逐渐产生了些许的兴趣,自己开始主动学习并逐步从基础慢慢开始弄懂它。
我认为这个收获应该说是相当大的。
觉得课程设计反映的是一个从理论到实际应用的过程,但是更远一点可以联系到以后毕业之后从学校转到踏上社会的一个过程。
小组人员的配合﹑相处,以及自身的动脑和努力,都是以后工作中需要的。
参考文献
[1]李朝青.单片机原理及接口技术(第3版).北京:
北京航空航天大学出版社,2006
[2]何立民.单片机应用技术大全.北京:
北京航空航天大学出版社,1994
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 交通灯 课程设计