基于51单片机交通灯课设内含程序和实物图.docx
- 文档编号:26643334
- 上传时间:2023-06-21
- 格式:DOCX
- 页数:32
- 大小:451.02KB
基于51单片机交通灯课设内含程序和实物图.docx
《基于51单片机交通灯课设内含程序和实物图.docx》由会员分享,可在线阅读,更多相关《基于51单片机交通灯课设内含程序和实物图.docx(32页珍藏版)》请在冰豆网上搜索。
基于51单片机交通灯课设内含程序和实物图
单片机控制交通灯
摘要
随着经济发展,汽车数量急剧增加,城市道路日渐拥挤,交通拥塞已成为一个国际性的问题。
因此,设计可靠、安全、便捷的多功能交通灯控制系统有极大的现实必要性。
根据交通灯在实际控制中的特点,结合单片机的控制功能,提出了一种用单片机自动控制交通灯的简易方法。
设计中包括硬件电路的设计和程序设计两大步骤,对单片机学习中的几个重要内容都有涉足。
单片机的应用正在不断深入,单片机可以用来仿真各个系统。
在自动控制的单片机应用系统中,单片机往往作为一个核心部件来使用,仅单片机方面知识是不够的,还应根据具体硬件结构软硬件结合,加以完善。
十字路口车辆穿梭,行人熙攘,车行车道,人行人道,有条不紊。
那么靠什么来实现这井然秩序呢?
靠的就是交通信号灯的自动指挥系统。
交通信号灯控制方式很多。
本系统采用单片机STC89C52为中心器件来设计交通灯控制器,实现了通过P1口设置红、绿灯燃亮时间的功能;红绿灯循环点亮,倒计时剩5秒时黄灯闪烁警示(交通灯信号通过P1口输出,显示时间通过P0口输出至双位数码管)。
本系统设计周期短、可靠性高、实用性强、操作简单、维护方便、扩展功能强。
关键词:
单片机交通灯数码管看门狗
目录
第1章前言1
1.1课题任务及主要实现内容1
1.2原理分析1
1.2.1交通灯显示时序的理论分析1
1.2.2交通灯显示的理论分析2
第2章设计方案分析3
2.1单片机与外围接口部件3
2.2倒计时显示界面4
2.3交通灯4
第3章硬件系统设计4
3.1单片机的选择4
3.2STC89c52的看门狗设置8
3.3硬件电路实现9
3.2.1最小系统设计9
3.3.2显示设计11
3.2.3发光二极管模拟红绿灯13
3.2.4按键模块14
第4章软件电路设计15
4.1软件编译环境测试15
4.1.1C语言介绍15
4.1.2KeiluVision4介绍15
4.2软件总体设计15
第5章电路检测17
结论…………………………………………………………………………….20
参考文献21
附录:
22
原理图22
源程序:
22
第1章前言
单片机微型计算机是微型计算机的一个重要分支,也是颇具生命力的机种。
单片机微型计算机简称单片机,特别适用于控制领域,故称为微控制器。
通常,单片机由单块集成电路芯片构成,内部包含有计算机的基本功能部件:
中央处理器、存储器和I/O接口电路等。
因此,单片机只需要和适当的软件及外部设备相结合,便可成为一个单片机控制系统。
单片机经过1、2、3,三代的发展,目前单片机正朝着高性能和多品种方向发展,它们的CPU功能在增强,内部资源在增多,引脚的多功能化,以及低电压低功耗。
1.1课题任务及主要实现内容
本系统由单片机系统、数码管显示、交通灯显示系统组成。
系统除基本的交通功能外,还具有倒计时。
东西、南北两个干道交于一个十字路口,各干道有一组红、绿、黄三色的指示灯。
红灯亮禁止通行,绿灯亮允许通行。
黄灯亮提示人们注意红、绿灯的状态即将切换。
程序开始运行先南北段通行、东西段禁止60s,后东西段通行、南北段禁止60s,依此循环。
系统分三种工作模式:
正常模式、繁忙模式、特殊模式,并且通过三个按钮“正常”、“繁忙”、“特殊”可相互转化。
正常模式:
直行时间显示数码管显示60。
此时南北段直行通行(绿灯)、东西段禁止(红灯)60s,倒计时到3s时,黄灯亮,提醒人们注意了。
然后是东西段通行(绿灯),南北段禁行(红灯),一直循环下去。
繁忙模式:
南北段、东西段的通行时间改为30s,其它与正常模式类似。
特殊模式:
特殊模式红灯全亮,倒计时20s,到最后3秒黄灯闪3次后并转入正常模式。
1.2原理分析
1.2.1交通灯显示时序的理论分析
下图所示为一种红绿灯规则的状态图:
图1-1南北直行通行
图1-2东西直行通行
1.2.2交通灯显示的理论分析
倒计时显示的理论分析:
利用定时器中断,设TH0=TH1=(65536-50000)/256,即每0.05秒中断一次。
每到第20次中断即过了20*0.05秒=1秒时,产生一次参数传递,使时间的计数值减1,便实现了倒计时的功能。
第2章设计方案分析
本次课程设计实现的交通灯是带有额外的功能,预期实现的主要功能如下。
1.具有时间显示功能,就是数码管倒计时功能;
2.红绿灯具有两种状态,南北直行,东西直行;
3.具有模式转换功能,切换到不同状态,交通灯通行时间不一样;
2.1单片机与外围接口部件
根据课题任务的要求,该系统具有交通灯的显示功能,倒计时功能,改变时间设定功能,所以把系统分为几个模块,包括倒计时显示器、交通信号灯、控制模块。
系统硬件框图如下图2-1:
图2-1硬件框图
该系统主控芯片单片机采用MCS-8052,它内部具有128个8位用户数据存储单元和128个专用寄存器单元,两个16位的可编程定时/计数器,以实现定时或计数产生中断用于控制程序转向,可以满足该控制程序系统的设计要求。
2.2倒计时显示界面
本次课设较为简单,实现起来并不困难,所以选择led数码管就可以了,成本在可接受范围内。
2.3交通灯
发光二极管简称为LED,在此处设计中我们用他来模拟红绿黄交通灯,普通单色发光二极管具有体积小、工作电压低、工作电流小、发光均匀稳定、响应速度快、寿命长等优点,可用各种直流、交流、脉冲等电源驱动点亮。
它属于电流控制型半导体器件,使用时需串接合适的限流电阻。
第3章硬件系统设计
3.1单片机的选择
1.常用单片机的比较
目前在单片机系统中,应用较广泛的微处理器芯片主要为8XC5X系列单片机。
该系列单片机均采用标准MCS-51内核,硬件资源相互兼容,品类齐全,功能完善,性能稳定,体积小,价格低廉,货源充足,调试和编程方便,所以应用极为广泛。
若采用89C51芯片作为硬件核心,采用FlashROM,内部具有4KBROM存储空间,能于3V的超低电压工作,而且与MCS-51系列单片机完全兼容,但是运用于电路设计中时由于不具备ISP在线编程技术,当在对电路进行调试时,由于程序的错误修改或对程序的新增功能需要烧入程序时,对芯片的多次插拔会对芯片造成一定的损坏。
若采用STC89C52单片机则不同,STC89C52是一个低电压,高性能CMOS8位单片机,片内含有4KB的可反复擦写的Flash只读程序存储器和128bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-52指令系统,片内置通用8位中央处理器和Flash存储单元。
可以按照常规方法进行编程,也可以在线编程。
其将通用的微处理器和Flash存储器结合在一起,特别是可反复擦写的Flash存储器可有效的降低开发成本。
2.STC89C52简介
(1)STC89C52基本特性
STC89C52是一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器。
使用高密度非易失性存储器技术制造,与工业80C51产品指令和引脚完全兼容。
片上Flash允许程序存储器在系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。
(2)功能
STC89C52具有以下标准功能:
8K字节Flash,256字节RAM,32位I/O口线,看门狗定时器,2个数据指针,三个16位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。
另外,STC89C52可降至0Hz静态逻辑操作,支持2种软件可选择节点模式。
空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。
掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,指导下一个中断或硬件复位为止。
(3)引脚说明
图3-1STC89C52引脚图
引脚如图3-1所示:
VCC:
40号管脚供电电压。
GND:
20号管脚接地。
P0口:
P0口为一个8位漏级开路双向I/O口,每脚可吸收8个TTL门电流。
当P1口的管脚第一次写1时,被定义为高阻输入。
P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。
在FIASH编程时,P0口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。
P1口:
P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4个TTL门电流。
P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。
在FLASH编程和校验时,P1口作为第八位地址接收。
P2口:
P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。
并因此作为输入时,P2口的管脚被外部拉低,将输出电流。
这是由于内部上拉的缘故。
P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。
在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。
P2口在FLASH编程和校验时接收高八位地址信号和控制信号。
P3口:
P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。
当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。
作为输入,由于外部下拉为低电平,P3口将输出电流这是由于上拉的缘故。
P3口也可作为STC89C52的一些特殊功能口,如下表3-1所示:
表3-1P3口管脚特殊功能
P3口脚
备选功能
P3.0
RXD(串行输入口)
P3.1
TXD(串行输出口)
P3.2
/INT0(外部中断0)
P3.3
INT1(外部中断1)
P3.4
T0(记时器0外部输入)
P3.5
T1(记时器1外部输入)
P3.6
WR(外部数据存储器写选通)
P3.7
/RD(外部数据存储器读选通)
P3口同时为闪烁编程和编程校验接收一些控制信号。
RST:
复位输入。
当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。
ALE/PROG:
当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。
在FLASH编程期间,此引脚用于输入编程脉冲。
在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。
因此它可用作对外部输出的脉冲或用于定时目的。
然而要注意的是:
每当用作外部数据存储器时,将跳过一个ALE脉冲。
如想禁止ALE的输出可在SFR8EH地址上置0。
此时,ALE只有在执行MOVX,MOVC指令是ALE才起作用。
另外,该引脚被略微拉高。
如果微处理器在外部执行状态ALE禁止,置位无效。
/PSEN:
外部程序存储器的选通信号。
在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。
但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。
/EA/VPP:
当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。
注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。
在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。
XTAL1:
反向振荡放大器的输入及内部时钟工作电路的输入。
XTAL2:
来自反向振荡器的输出。
3.2STC89c52的看门狗设置
在单片机构成的系统中,由于单片机的工作有可能受到外界的干扰,造成程序跑飞,从而陷入死循环,程序的正常运行被打断,由单片机控制的系统便无法继续工作,这样会造成整个系统陷入瘫痪状态,发生不可预料的后果,所以出于对单片机程序的运行的状态进行实时的监控,便考虑一种的专用的监测芯片用于监测单片机程序运行状态的芯片,俗称“看门狗”(WatchDog)。
加入看门狗电路的目的是使单片机可以在无人的状态下实现连续的工作,其工作的过程如下:
看门狗的芯片和单片机的一个I/O口连接,每隔一定的时间单片机给芯片送个脉冲,是看门狗的定时器复位;如果超过时间不送脉冲,看门狗的芯片会使单片机复位,从头开始执行程序,这样便实现了监视单片机的目的。
通常,看门狗电路是通过将一个专门的看门狗芯片连接到单片机来实现的,不过这样会给电路设计带来复杂性,STC系列单片机内部自带了看门狗,通过对相应的特殊功能寄存器的设置就可以实现看门狗的功能的应用。
STC系列的单片机内部有一个专门的看门狗定时器,WatchDogTimer寄存器,气功能见如下的知识点:
知识点:
看门狗定时器寄存器(WDT_COUNTER)
STC系列的单片机看门狗定时器寄存器在特殊功能寄存器中的字节地址为E1H,不能位寻址,该寄存器用来管理STC单片机的看门狗控制部分,包括启/停看门狗,设置看门狗的溢出时间等。
单片机复位时该寄存器不一定全部清零,在STC下载程序界面上可以选择复位关看门狗或只有停电关看门狗的选择,根据需要可以做出自己的选择。
其各位的定义如表。
表3-2-1看门狗定时器寄存器(WDT_COUNTR)各位设置
位序号
D7
D6
D5
D4
D3
D2
D1
D0
位符号
—
—
EN-WDT
CLR-WDT
IDLE-WDT
PS2
PS1
PS0
EN-WDT-看门狗允许位,当设置为1时,启动看门狗。
CLR-WDT-看门狗清零位,当设置为1时,看门狗定时器将重新计数,硬件自动将此位清零。
IDLE-WDT-看门狗IDLE模式位,当设置为1时,看门狗定时器在单片机的“空闲模式”计数:
当该位清零时,看门狗定时器在单片机的“空闲模式”时不计数。
PS2、PS1、PS0-看门狗的溢出时间设置,不同的值,预分频不同。
表3-2-212MHZ晶振看门狗的定时时间预分频
PS2
PS1
PS0
预分频数
看门狗溢出时间
0
0
0
2
65.5ms
0
0
1
4
131.0ms
0
1
0
8
262.1ms
0
1
1
16
524.2s
1
0
0
32
1.0485s
1
0
1
64
2.0971s
1
1
0
128
4.1943s
1
1
1
256
8.3886s
看门狗的溢出时间与预分频数有直接的关系,公式如下:
看门狗的溢出时间=(Nx预分频数x32768)/晶振频率
式中,N表示STC单片机的时钟模式。
STC单片机有两种时钟模式,一种是单倍速,也就是12时钟模式,在此模式下,单片机与其他公司的单片机具有相同的机器周期,及12个震荡周期为一个机器周期:
另一种是双倍速,又称6时钟的模式,在该时钟模式下,STC单片机比其他公司的51单片机快一倍。
在下载程序软件界面可以有单倍速与双倍速的设置选择,可以自行下载测试程序运行的速度。
预分频数的值由PS2,PS1,和PS0的组合确定。
本程序中设计看门狗的寄存器为WDT=0xe1;溢出时间设为1.0485s,即对WDT赋值为0x34(启动定时器,定时器重新计数,空闲模式不计数),在程序开始时,对WDT=0x34,在中断中(过了1s)再对WDT=0x34操作,清空计数器。
3.3硬件电路实现
选用设备STC89c52单片机一片,共阴极的七段两位数码管两个,红、黄、交通灯各四个,绿发光二极管7个,按键三个、电容两个22pF,电阻十六个470Ω,晶体振荡器一个,连线若干。
3.2.1最小系统设计
单片机最小系统有一个单片机加上一个复位电路和振荡电路组成。
如图3-2所示。
1.复位电路
单片机复位电路原理是在单片机的复位引脚RST上外接电阻和电容,实现上电复位。
当复位电平持续两个机器周期以上时复位有效。
复位电平的持续时间必须大于单片机的两个机器周期。
具体数值可以由RC电路计算出时间常数。
复位电路由手动复位和上电复位两部分组成。
(1)上电复位电路要求接通电源后,通过外部电容充电来实现单片机自动复位操作。
上电瞬间RESET引脚获得高电平,随着电容的充电,RERST引脚的高电平将逐渐下降。
RERST引脚的高电平只要能保持足够的时间(2个机器周期),单片机就可以进行复位操作。
(2)手动复位:
手动复位就是在复位电容上并联一个开关,当开关按下时电容被放电、RST也被拉到高电平,而且由于电容的充电,会保持一段时间的高电平来使单片机复位。
单片机复位期间不产生ALE和PSEN信号,即ALE=1和PSEN=1。
这表明单片机复位期间不会有任何取指操作。
。
本设计的复位电路,如图3-2所示
图3-2最小系统
2.振荡电路
单片机系统里都有晶振,在单片机系统里晶振作用非常大,全称叫晶体振荡器,它结合单片机内部电路产生单片机所需的时钟频率,单片机晶振提供的时钟频率越高,那么单片机运行速度就越快,单片机的一切指令的执行都是建立在单片机晶振提供的时钟频率。
单片机晶振的作用是为系统提供基本的时钟信号。
单片机的时钟电路设计有两种方式,一种是内部时钟方式,一种是外部时钟方式。
在内部时钟方式下单片机内部的高增益、反相放大器通过XTAL1、XTAL2外接作为反馈元件的外部晶体管振荡器与电容组成的并联谐振回路构成一个稳定的自激振荡器,向内部时钟电路提供振荡时钟。
振荡器的频率主要取决于晶体的振荡频率。
MCS-51单片机的晶体振荡频率可以再1-12MHz范围内选择,电容C1、C2的选择范围是15-45pF,电容的大小会影响振荡器的稳定性和起振速度。
外部时钟方式是把外部已有的时钟信号引入到单片机内。
此方式常用于多片单片机同时工作,以便于各单片机的同步。
一般要求外部信号高电平的持续时间大于20μs,且为频率低于12MHz的方波。
本设计采用内部时钟方式,采用12MHz的晶振和两个22pF的电容。
如图3-2所示。
3.3.2显示设计
LED显示器由七个发光二极管组成,因此也称之为七段LED显示器,此外,显示器中还有一个圆点型发光二极管(在图中以dp表示),用于显示小数点。
通过七段发光二极管的不同组合,可以显示多种数字、字母或者其他符号。
LED显示器中的发光二极管共有两种连接方法。
如图3-3所示。
(1)共阳极接法
把发光二极管的阳极连在一起构成公共阳极。
使用时公共阳极接+5V。
这样阴极端输入低电平的段发光二极管就导通点亮,而输入高电平的则不点亮。
(2)共阴极接法
把发光二极管的阴极连在一起构成公共阴极。
使用时公共阴极接地,这样阳极端输入高电平的段发光二极管就导通点亮,而输入低电平的则不点亮。
图3-3LED引脚图及两种连接方法
此设计用共阴级的2位数码管,如图3-4所示:
图3-4二位数码管
经过万用表测定,此设计所用的数码管的引脚图,如下图3-5所示:
图3-5实物数码管引脚图
LED显示分为动态显示和静态显示
(1)静态显示,是指显示器显示某一字符时,相应段的发光二极管恒定地导通或截止。
这种显示方法每一位都需要有一个8位输出控口控制,占用硬件资源多,一般用于显示位数较少场合。
静态显示时,较小的驱动电流就可以得到较高的显示亮度,所以可由接口芯片直接驱动。
(2)动态显示,是一位一位地轮流点亮各位数码管。
对于多位LED显示器的接口电路来说,需要有两个输出口:
各位数码管的段控线相应并联在一起,由一个8位的I/O口控制,还学要一个输出口输出位控制信号,“位控”实际上就是对LED显示器的公共端进行控制,位控信号的数目与显示器个数相同。
这种电路的特点是节省I/O口线,硬件电路相对静态显示方式简单。
动态显示方式的硬件电路简单,动态显示采用多路复用技术的动态扫描显示方式,利用人眼的暂留效应和发光二极管发光时间的长短,发光的亮度等因素。
静态显示程序简单,且CPU占用率低,但每个LED数码管需要一个锁存器来锁存每一个显示位的代码,硬件开销大,仅适合显示位数较少的场合。
本设计采用两个二位一体共阴数码管,不管将几位数码管连在一起,数码管的显示原理都是一样的,用P0口来控制LED数码管的段控线和和利用P2口控制位控线,动态显示采用动态扫描的方法进行显示及循环点亮每一个数码管,虽然任何时刻都只有一位数码管被点亮,但由于人眼存在暂留效应,只要每位数码管间隔时间足够短,就可以给人以同时显示的感觉。
图3-6二位数码管
3.2.3发光二极管模拟红绿灯
它是半导体二极管的一种,可以把电能转化成光能,常简写为LED。
发光二极管与普通二极管一样是由一个PN结组成,也具有单向导电性。
当给发光二极管加上正向电压后,从P区注入到N区的空穴和由N区注入到P区的电子,在PN结附近数微米内分别与N区的电子和P区的空穴复合,产生自发辐射的荧光。
不同的半导体材料中电子和空穴所处的能量状态不同。
当电子和空穴复合时释放出的能量多少不同,释放出的能量越多,则发出的光的波长越短。
常用的是发红光、绿光或黄光的二极管。
发光二极管的反向击穿电压约5伏。
它的正向伏安特性曲线很陡,使用时必须串联限流电阻以控制通过管子的电流。
3.2.4按键模块
程序开始运行先南北段通行、东西段禁止60s,后东西段通行、南北段禁止60s,依此循环。
系统分三种工作模式:
正常模式、繁忙模式、特殊模式,并且通过三个按钮“正常”、“繁忙”、“特殊”可相互转化。
按键图如3-7所示:
图3-7按键模块
这里用到了二极管做开关,是为了防止有一按键被按下3根线同时低,
中断无效。
二极管在正向电压作用下电阻很小,处于导通状态,相当于一只接通的开关;在反向电压作用下,电阻很大,处于截止状态,如同一只断开的开关。
利用二极管的开关特性,可以组成各种逻辑电路。
第4章软件电路设计
4.1软件编译环境测试
4.1.1C语言介绍
C语言是一种通用的计算机程序设计语言,它既可以用来编写计算机的系统程序也可以用来编写一般的应用程序。
以前计算机的系统软件主要用汇编语言编写,单片机应用系统更是如此。
由于汇编语言程序的可读性和可移植性都较差,采用汇编语言编写单片机应用程序不但周期长,而且调试和排错也比较困难,为了提高单片机应用程序的开发效率,改善程序的可读性和可移植性,采用高级语言无疑是一种最好的选择。
C语言既具有一般高级语言的特点,又能直接对计算机的硬件进行操作,表达和运算能力也较强,许多以前只能采用汇编语言来解决的问题现在都可以用C语言来解决。
综上所述,C语言在功能上、结构性、可读性、可维护性上有明显的优势,故本课题采用C语言实现软件功能。
4.1.2KeiluVision4介绍
本课题采用KeiluVision4软件开发系统,KeiluVision4是美国KeilSoftware公司出品的51系列兼容单片机C语言软件开发系统。
KeiluVision4是一款可用于多种8051MCU的集成开发环境(IDE),该IDE同时也是PK51及其它开发套件的一个重要组件。
除增加了源代码、功能导航器、模板编辑以及改进的搜索功能外,uVision4还提供了一个配置向导功能,加速了启动代码和配置文件的生成。
此外其内置的仿真器可模拟目标MCU,包括指令集、片上外围设备及外部信号等。
uVision4提供逻辑分析器,可监控基于MCU的I/O引脚和外设状态变化下的程序变量。
4.2软件总体设计
主程序流程图如下图4-1所示,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 51 单片机 交通灯 内含 程序 实物