单片机交通灯毕业课程设计报告含电路图源程序.docx
- 文档编号:8969329
- 上传时间:2023-05-16
- 格式:DOCX
- 页数:21
- 大小:67.74KB
单片机交通灯毕业课程设计报告含电路图源程序.docx
《单片机交通灯毕业课程设计报告含电路图源程序.docx》由会员分享,可在线阅读,更多相关《单片机交通灯毕业课程设计报告含电路图源程序.docx(21页珍藏版)》请在冰点文库上搜索。
单片机交通灯毕业课程设计报告含电路图源程序
(此文档为word格式,下载后您可任意编辑修改!
)
摘要1
1.引言2
2.总体设计方案2
2.1.设计思路2
2.1.1.设计目的2
2.1.2.设计任务和内容3
2.1.3.方案比较、设计与论证3
2.1.4.芯片简介5
2.2.设计方框图8
3.设计原理分析8
3.1.交通灯显示时序的理论分析与计算8
3.2.交通灯显示时间的理论分析与计算10
3.3.电路模块11
3.3.1.LED数码管显示模块11
3.3.2.LED红绿灯显示模块13
3.3.3.复位电路15
3.3.4.晶振电路16
4.结束语16
5.参考文献16
6.附录17
6.1.附录1:
程序清单17
6.2.附录2:
电路设计总图22
6.3附录3:
实物图23
1.总体设计方案
1.1.设计思路
1.1.1.设计目的
(1)加强对单片机和汇编语言的认识,充分掌握和理解设计各部分的工作原理、设计过程、选择芯片器件、模块化编程等多项知识。
(2)用单片机模拟实现具体应用,使个人设计能够真正使用。
(3)把理论知识与实践相结合,充分发挥个人能力,并在实践中锻炼。
(4)提高利用已学知识分析和解决问题的能力。
(5)提高实践动手能力。
1.1.2.设计任务和内容
1.1.2.1.设计任务
单片机采用用AT89S52芯片,使用发光二极管(红,黄,绿)代表各个路口的交通灯,用8段数码管对转换时间进行倒时(东西路口15秒,南北路口25秒,黄灯时间5秒)。
1.1.2.2.设计内容
(1)设计并绘制硬件电路图
(2)制作PCB并焊接好元器件
(3)编写程序并将调试好的程序固化到单片机中
1.1.3.方案比较、设计与论证
1.1.3.1.电源提供方案
为使模块稳定工作,须有可靠电源,采用单片机控制模块提供电源。
此方案的优点是系统简明扼要,节约成本;缺点是输出功率不高。
综上所述,我们选择第二种方案。
1.1.3.2.复位方案
复位方式有两种:
按键复位与软件复位。
由考虑到程序的简洁,避免冗长,本设计采用按键复位,在芯片的复位端口外接复位电路,通过按键对单片机输入一个高电平脉冲,达到复位的目的。
1.1.3.3.输入方案
方案一:
采用89S52扩展IO口及键盘,显示等。
该方案的优点是:
使用灵活可编程,并且有RAM,及计数器。
若用该方案,可提供较多IO口,但操作起来稍显复杂。
方案二:
直接在IO口线上接上按键开关。
因为设计时精简和优化了电路,所以剩余的口资源还比较多,我们使用2个按键,分别是K1、K2。
由于该系统对于交通灯及数码管的控制,只用单片机本身的IO口就可实现,且本身的计数器及RAM已经够用,故选择方案二
1.1.3.4.显示界面方案
该系统要求完成倒计时、状态灯等功能。
基于上述原因,我们考虑了三种方案:
方案一:
完全采用数码管显示。
这种方案只显示有限的符号和数码字符,无法胜任题目要求。
方案二:
完全采用点阵式LED显示。
这种方案实现复杂,且须完成大量的软件工作;但功能强大,可方便的显示各种英文字符,汉字,图形等。
方案三:
采用数码管与点阵LED相结合的方法因为设计既要求倒计时数字输出,又要求有状态灯输出等,为方便观看并考虑到现实情况,用数码管与LED灯分别显示时间与提示信息。
这种方案既满足系统功能要求,又减少了系统实现的复杂度。
权衡利弊,第三种方案可互补一二方案的优缺,我们决定采用方案三以实现系统的显示功能。
设计方框图
整个设计以AT89S52单片机为核心,由数码管显示,LED数码管显示,复位电路组成。
硬件模块入图2-1。
1.1.3.5.交通管理的方案论证
东西、南北两干道交于一个十字路口,各干道有一组红、黄、绿三色的指示灯,指挥车辆和行人安全通行。
红灯亮禁止通行,绿灯亮允许通行。
黄灯亮提示人们注意红、绿灯的状态即将切换,且黄灯燃亮时间为东西、南北两干道的公共停车时间。
指示灯燃亮的方案如表2。
25S
5S
25S
5S
……
东西道
红灯亮
红灯亮
绿灯亮
黄灯亮
……
南北道
绿灯亮
黄灯亮
红灯亮
红灯亮
……
表2说明:
(1)当东西方向为红灯,此道车辆禁止通行,东西道行人可通过;南北道为绿灯,此道车辆通过,行人禁止通行。
时间为25秒。
(2)黄灯5秒,警示车辆和行人红、绿灯的状态即将切换。
(3)当东西方向为绿灯,此道车辆通行;南北方向为红灯,南北道车辆禁止通过,行人通行。
时间为25秒。
(4)这样如上表的时间和红、绿、黄出现的顺序依次出现这样行人和车辆就能安全畅通的通行。
1.1.4.芯片简介
1.AT89S52单片机简介
其引DIP封装的脚图如下:
主要性能
与MCS-51单片机产品兼容、8K字节在系统可编程Flash存储器、1000次擦写周期、全静态操作:
0Hz~33Hz、三级加密程序存储器、32个可编程IO口线、三个16位定时器计数器八个中断源、全双工UART串行通道、低功耗空闲和掉电模式、掉电后中断可唤醒、看门狗定时器、双数据指针、掉电标识符。
功能特性描述
At89s52是一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器。
使用Atmel公司高密度非易失性存储器技术制造,与工业80C51产品指令和引脚完全兼容。
片上Flash允许程序存储器在系统可编程,亦适于常规编程器。
在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得AT89S52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。
AT89S52具有以下标准功能:
8k字节Flash,256字节RAM,32位IO口线,看门狗定时器,2个数据指针,三个16位定时器计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。
另外,AT89S52可降至0Hz静态逻辑操作,支持2种软件可选择节电模式。
空闲模式下,CPU停止工作,允许RAM、定时器计数器、串口、中断继续工作。
掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。
8位微控制器8K字节在系统可编程FlashAT89S52
P0口:
P0口是一个8位漏极开路的双向IO口。
作为输出口,每位能驱动8个TTL逻
辑电平。
对P0端口写“1”时,引脚用作高阻抗输入。
当访问外部程序和数据存储器时,P0口也被作为低8位地址数据复用。
在这种模式下,
P0具有内部上拉电阻。
在flash编程时,P0口也用来接收指令字节;在程序校验时,输出指令字节。
程序校验
时,需要外部上拉电阻。
P1口:
P1口是一个具有内部上拉电阻的8位双向IO口,p1输出缓冲器能驱动4个
TTL逻辑电平。
对P1端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入
口使用。
作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。
此外,P1.0和P1.2分别作定时器计数器2的外部计数输入(P1.0T2)和时器计数器2
的触发输入(P1.1T2EX),具体如下表所示。
在flash编程和校验时,P1口接收低8位地址字节。
引脚号第二功能
P1.0T2(定时器计数器T2的外部计数输入),时钟输出
P1.1T2EX(定时器计数器T2的捕捉重载触发信号和方向控制)
P1.5MOSI(在系统编程用)
P1.6MISO(在系统编程用)
P1.7SCK(在系统编程用)
P2口:
P2口是一个具有内部上拉电阻的8位双向IO口,P2输出缓冲器能驱动4个
TTL逻辑电平。
对P2端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入
口使用。
作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。
在访问外部程序存储器或用16位地址读取外部数据存储器(例如执行MOVX@DPTR)
时,P2口送出高八位地址。
在这种应用中,P2口使用很强的内部上拉发送1。
在使用
8位地址(如MOVX@RI)访问外部数据存储器时,P2口输出P2锁存器的内容。
在flash编程和校验时,P2口也接收高8位地址字节和一些控制信号。
P3口:
P3口是一个具有内部上拉电阻的8位双向IO口,p2输出缓冲器能驱动4个
TTL逻辑电平。
对P3端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入
口使用。
作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。
P3口亦作为AT89S52特殊功能(第二功能)使用,如下表所示。
在flash编程和校验时,P3口也接收一些控制信号。
端口引脚第二功能
P3.0RXD(串行输入口)
P3.1TXD(串行输出口)
P3.2INTO(外中断0)
P3.3INT1(外中断1)
P3.4TO(定时计数器0)
P3.5T1(定时计数器1)
P3.6WR(外部数据存储器写选通)
P3.7RD(外部数据存储器读选通)
此外,P3口还接收一些用于FLASH闪存编程和程序校验的控制信号。
RST——复位输入。
当振荡器工作时,RST引脚出现两个机器周期以上高电平将是单片机复位。
ALEPROG——当访问外部程存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低8位字节。
一般情况下,ALE仍以时钟振荡频率的16输出固定的脉冲信号,因此它可对外输出时钟或用于定时目的。
要注意的是:
每当访问外部数据存储器时将跳过一个ALE脉冲。
对FLASH存储器编程期间,该引脚还用于输入编程脉冲(PROG)。
如有必要,可通过对特殊功能寄存器(SFR)区中的8EH单元的D0位置位,可禁止ALE操作。
该位置位后,只有一条MOVX和MOVC指令才能将ALE激活。
此外,该引脚会被微弱拉高,单片机执行外部程序时,应设置ALE禁止位无效。
PSEN——程序储存允许(PSEN)输出是外部程序存储器的读选通信号,当AT89C52由外部程序存储器取指令(或数据)时,每个机器周期两次PSEN有效,即输出两个脉冲,在此期间,当访问外部数据存储器,将跳过两次PSEN信号。
EAVPP——外部访问允许,欲使CPU仅访问外部程序存储器(地址为0000H-FFFFH),EA端必须保持低电平(接地)。
需注意的是:
如果加密位LB1被编程,复位时内部会锁存EA端状态。
如EA端为高电平(接Vcc端),CPU则执行内部程序存储器的指令。
FLASH存储器编程时,该引脚加上+12V的编程允许电源Vpp,当然这必须是该器件是使用12V编程电压Vpp。
1.2.设计方框图
2.设计原理分析
2.1.交通灯显示时序的理论分析与计算
对于一个交通路口来说,能在最短的时间内达到最大的车流量,就算是达到了最佳的性能,我们称在单位时间内多能达到的最大车流为车流量,用公式:
车流量=车流时间来表示。
先设定一些标号如图2-1所示。
说明:
此图为直方图,上边为北路口灯,右边为东路口灯,下边为南路口灯,左边为西路口灯。
图2-2所示为一种红绿灯规则的状态图,分别设定为S1、S2、S3、S4,交通灯以这四的状态为一个周期,循环执行(见图2-3)。
图2-1
请注意图2-1b和图2-1d,它们在一个时间段中四个方向都可以通车,这种状态能在一定的时间内达到较大的车流量,效率特别高。
依据上述的车辆行驶的状态图,可以列出各个路口灯的逻辑表,由于相向的灯的状态图是一样的,所以只需写出相邻路口的灯的逻辑表;根据图2-3可以看出,相邻路口的灯它们的状态在相位上相差180°。
因此最终只需写出一组S1、S2、S3、S4的逻辑状态表。
如表2-1所示。
表2-1
表中的“×”代表是红灯亮(也代表逻辑上的0),“√”是代表绿灯亮(也代表逻辑上的1),依上表,就可以向相应的端口送逻辑值。
2.2.交通灯显示时间的理论分析与计算
东西和南北方向的放行时间的长短是依据路口的各个方向平时的车流量来设定,并且S1、S2、S3、S4各个状态保持的时间之有严格的对应关系,其公式如下示。
T-S1+T-S2=T-S3
T-S2=T-S4
T-S1=T-S3
我们可以依据上述的标准来改变车辆的放行时间。
按照一般的规则,一个十字路口可分为主干道和次干道,主干道的放行时间大于次干道的放行时间,我们设定值时也应以此为参考
2.3.电路模块
2.3.1.LED数码管显示模块
(1)静态显示方式:
静态显示方式是指当显示器显示某一字符时,发光二极管的位选始终被选中。
在这种显示方式下,每一个LED数码管显示器都需要一个8位的输出口进行控制。
由于单片机本身提供的IO口有限,实际使用中,通常通过扩展IO口的形式解决输出口数量不足的问题。
(2)静态显示主要的优点是显示稳定,在发光二极管导通电流一定的情况下显示器的亮度大,系统运行过程中,在需要更新显示内容时,CPU才去执行显示更新子程序,这样既节约了CPU的时间,又提高了CPU的工作效率。
其不足之处是占用硬件资源较多,每个LED数码管需要独占8条输出线。
随着显示器位数的增加,需要的IO口线也将增加。
(3)
(2)动态显示方式:
动态显示方式是指一位一位地轮流点亮每位显示器(称为扫描),即每个数码管的位选被轮流选中,多个数码管公用一组段选,段选数据仅对位选选中的数码管有效。
对于每一位显示器来说,每隔一段时间点亮一次。
显示器的亮度既与导通电流有关,也与点亮时间和间隔时间的比例有关。
通过调整电流和时间参数,可以既保证亮度,又保证显示。
若显示器的位数不大于8位,则显示器的公共端只需一个8位IO口进行动态扫描(称为扫描口),控制每位显示器所显示的字形也需一个8位口(称为段码输出)。
数码管显示子程序:
DISP:
MOVA,R2
MOVB,#10
DIVAB
MOV60H,A
MOV61H,B
MOVA,R3
MOVB,#10
DIVAB
MOV62H,A
MOV63H,B
MOV40H,#04H
MOVR5,#0FEH
MOVR0,#60H
LLP:
MOV
MOVDPTR,#TABLE
MOVC+DPTR
MOVP0,A
MOVA,R5
MOVP2,A
LCALLDELAY1
MOVP2,#0FFH;令显示器熄灭,以免产生残影
RLA
MOVR5,A
INCR0
DJNZ40H,LLP
RET
DELAY1:
;延时子程序
MOVR4,#12
DL2:
MOVR7,#12
DJNZR7,$
DJNZR4,DL2
RET
TABLE:
DB3FH,24H,5dH,75H,66H
DB73H,7bH,25H,7fH,77H
END
2.3.2.LED红绿灯显示模块
本实验有四种状态:
状态1,东西绿灯亮,南北红灯亮,此时P1.0口—P1.7口的高低电平为#0BBH。
子程序:
ST1:
MOVP1,#0EBH;第一个状态,主干道亮绿灯、支干道亮红灯;
CJNER1,#0FFH,TZ1
MOVR1,#00H
DEC20H
DEC23H
TZ1:
MOVR2,20H
MOVR3,23H
LCALLDISP;调用显示子程序。
MOVA,20H
CJNEA,#00H,ST1
MOV20H,#25
状态2,东西黄灯亮,南北红灯亮,此时P1.0口—P1.7口的高低电平为#0BDH。
子程序:
ST2:
MOVP1,#0EDH;第二个状态,主干道亮黄灯、支干道亮红灯;
CJNER1,#0FFH,TZ2
MOVR1,#00H
DEC21H
DEC23H
TZ2:
MOVR2,21H
MOVR3,23H
LCALLDISP;调用显示子程序。
MOVA,21H
CJNEA,#00H,ST2
MOV21H,#05
状态3,东西红灯亮,南北绿灯亮,此时P1.0口—P1.7口的高低电平为#0DEH。
子程序:
ST3:
MOVP1,#0BEH;第三个状态,主干道亮红灯、支干道亮绿灯;
CJNER1,#0FFH,TZ3
MOVR1,#00H
DEC24H
DEC22H
TZ3:
MOVR2,24H
MOVR3,22H
LCALLDISP;调用显示子程序。
MOVA,22H
CJNEA,#00H,ST3
MOV22H,#15
状态4,东西红灯亮,南北黄灯亮,此时P1.0口—P1.7口的高低电平为#0EEH。
再采用显示子程序与延时子程序可使LED显示灯按照要求点亮。
子程序:
ST4:
MOVP1,#0DEH;第四个状态,主干道亮红灯、支干道亮黄灯;
CJNER1,#0FFH,TZ4
MOVR1,#00H
DEC24H
DEC21H
TZ4:
MOVR2,24H
MOVR3,21H
LCALLDISP;调用显示子程序。
MOVA,21H
CJNEA,#00H,ST4
MOV21H,#05
MOV24H,#20
LJMPST1
2.3.3.复位电路
复位方式有多种,本设计采用按键复位。
接线图如图程序3.1复位电路,
框图
在设定的定时时间内,89S52必须在RST引脚产生一个由高到低的电平变化,以清内部定时器.
2.3.4.晶振电路
晶振电路原理图如3-2:
3-2 晶振模块原理图
选取原则:
传统做法,但能够实现所需,即最简单也最是实用。
电容选取30pF,晶振为30MHz。
3.结束语
通过这次课程设计,使我得到了一次用专业知识、专业技能分析和解决问题全面系统的锻炼。
使我在单片机的基本原理、单片机应用系统开发过程,以及在常用编程设计思路技巧(特别是汇编语言)的掌握方面都能向前迈了一大步。
本次课程设计的过程是艰辛的,不过收获却是很大的。
在设计过程中,会出现了一些问题,但都是常见的小问题,如:
代码中双引号的使用并不是在英语书写状态下,输入字母出错等,在调试时出现异常,不过这些都是经常性错误,经过调试修改都一一解决,程序顺利完成,并实现了其功能。
综合课程设计让我把以前学习到的知识得到巩固和进一步的提高认识,对已有知识有了更进一步的理解和认识。
在此,由于自身能力有限,在课程设计中碰到了很多的问题,我通过查阅相关书籍、资料以及和周围同学交流。
由于使用的是单片机作为核心的控制元件,使得电路的可靠性比较高,功能也比较强大,而且可以随时的更新系统,进行不同状态的组合。
但是在我们设计和调试的过程中,也发现了一些问题,譬如红灯和绿灯的切换还不够迅速,红绿灯规则不效率还不是很高等等,这需要在实践中进一步完善。
当然,通过这次课程设计,我也发现了自身的很多不足之处,在以后的学习中,我会不断的完善自我。
附录
3.1.附录1:
程序清单
ORG0000H
LJMPMAIN
ORG0003H
LJMPINTT0
ORG0013H
LJMPINTT1
ORG001BH
LJMPTT1
ORG0100H
TT1:
MOVTH1,#0D8H;定时器1,定时10us
MOVTL1,#0F0H
DJNZR6,EXIT
MOVR6,#100;定时器定时100次
MOVR1,#0FFH
EXIT:
RETI
INTT0:
MOVP1,#0BEH;外部中断0,
JBP3.4,$
RETI
INTT1:
MOVP1,#0BBH;外部中断1,
JBP3.4,$
RETI
ORG1000H
MAIN:
MOVR6,#100;主程序;
MOVR1,#00H
MOVTMOD,#10H;初始化
MOVTH1,#0D8H
MOVTL1,#0F0H
MOVIE,#8DH
MOV20H,#25
MOV21H,#5
MOV22H,#15
MOV23H,#30
MOV24H,#20
SETBTR1
ST1:
MOVP1,#0EBH;第一个状态,主干道亮绿灯、支干道亮红灯;
CJNER1,#0FFH,TZ1
MOVR1,#00H
DEC20H
DEC23H
TZ1:
MOVR2,20H
MOVR3,23H
LCALLDISP;调用显示子程序。
MOVA,20H
CJNEA,#00H,ST1
MOV20H,#25
ST2:
MOVP1,#0EDH;第二个状态,主干道亮黄灯、支干道亮红灯;
CJNER1,#0FFH,TZ2
MOVR1,#00H
DEC21H
DEC23H
TZ2:
MOVR2,21H
MOVR3,23H
LCALLDISP;调用显示子程序。
MOVA,21H
CJNEA,#00H,ST2
MOV21H,#05
MOV23H,#30
ST3:
MOVP1,#0BEH;第三个状态,主干道亮红灯、支干道亮绿灯;
CJNER1,#0FFH,TZ3
MOVR1,#00H
DEC24H
DEC22H
TZ3:
MOVR2,24H
MOVR3,22H
LCALLDISP;调用显示子程序。
MOVA,22H
CJNEA,#00H,ST3
MOV22H,#15
ST4:
MOVP1,#0DEH;第四个状态,主干道亮红灯、支干道亮黄灯;
CJNER1,#0FFH,TZ4
MOVR1,#00H
DEC24H
DEC21H
TZ4:
MOVR2,24H
MOVR3,21H
LCALLDISP;调用显示子程序。
MOVA,21H
CJNEA,#00H,ST4
MOV21H,#05
MOV24H,#20
LJMPST1;跳转到第一个状态。
DISP:
MOVA,R2;显示子程序。
MOVB,#10
DIVAB
MOV60H,A
MOV61H,B
MOVA,R3
MOVB,#10
DIVAB
MOV62H,A
MOV63H,B
MOV40H,#04H
MOVR5,#0FEH
MOVR0,#60H
LLP:
MOV
MOVDPTR,#TABLE
MOVC+DPTR
MOVP0,A
MOVA,R5
MOVP2,A
LCALLDELAY1
MOVP2,#0FFH;注意,这里是程序修改的地方,令显示器熄灭,以免产生残影
RLA
MOVR5,A
INCR
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 交通灯 毕业 课程设计 报告 电路图 源程序