找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 23539|回复: 3
打印 上一主题 下一主题
收起左侧

基于51单片机控制的简易交通灯设计(论文)

[复制链接]
跳转到指定楼层
楼主
ID:291258 发表于 2018-3-16 13:51 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
洛阳理工学院项目设计说明书
题目:基于 51 单片机控制的简易交通灯设计
二级学院: 电气工程与自动化学院              
2018 年 03 月

摘要
近年来伴随科技的迅猛发展,单片机应用也在不断地深入,同时使得传统的控制 检测技术日新月异。单片机常常作为一个核心部件在实时检测与自动控制单片机的应 用系统里运用,应用单片机如果仅有单片机方面的知识是不够的,还需要根据具体的 硬件结构来实现软硬件的结合,并加以完善。

十字路口穿梭的车辆,熙攘的行人,车在行车道行驶,人在行人道步行,有条不 紊。这就是靠信号交通灯智能控制系统来实现良好的秩序,信号交通灯的控制方式是 非常多的。该系统是采用 MSC-51 系列的单片机 STC89C52 作为核心器件,实现了通过 信号灯对路面状况的智能控制。此外还设计有红外遥控模块,从一定程度上解决了交 通路口堵塞、车辆停车等待时间不合理、急车闯红灯等问题。并且在 PROTEUS 软件中 做了仿真调试,验证了方案的可行性。本系统具有结构简单、可靠性高、成本低、实 时性好、安装维护方便等优点,有广泛的应用前景。


目录
摘要 Abstract 目录 I
第 1 章 交通灯出现的相关背景 1
11 交通灯的历史 1
12 交通灯设计的意义 1
13 交通管理的方案设计 2
131 总体设计方案 2
132 控制模块方案 2
133 电源模块方案 2
14 论文章节安排 3
15 本章小结3
第 2 章 单片机控制的交通系统方案 4
21 单片机交通控制系统通行方案 4
22 STC89C52 单片机简介 5
23 PROTEUS 软件简介 8
24 本章小结8
第 3 章 硬件设计 9
31 系统硬件设计 9
32 单片机最小系统 9
321 时钟电路 10
322 复位电路 10
323 显示电路 11
33 红外遥控设计 11
331 单片机红外遥控发射器设计原理 13
332 单片机红外遥控接收器设计原理 13
34 交通灯电路图 14
341 交通灯电路图 14
342 电源电路设计 15
343 按键电路设计 15
35 本章小结16
第 4 章 软件设计 17
41 程序主体设计流程 17
42 按键设计 17
43 定时器的参数设计18
44 中断原理20
45 状态灯显示及判断 22
46 倒计时显示 23
47 本章小结23
第 5 章              仿真设计 24
51 PROTEUS 仿真 24
52 硬件实物演示图片及简单介绍 25

洛阳理工学院电气工程与自动化学院项目设计说明书

53 本章小结26
附录 27


第 1 章 交通灯出现的相关背景

11 交通灯的历史

在我们生活中,各个道口上红绿灯随处可见,是疏导交通车辆最常见和最有效的 手段。通过查找资料能够发现这一科技从十九世纪就开始出现了。
时间追溯到 1858 年,英国伦敦的各个重要街头就安装了红色和蓝色组成信号灯, 它是以燃煤气为光源的扳手式信号灯,一开始是用作指挥马车的行驶,这应该是世界 上最早记载的交通灯。到了 1868 年,英国有位机械方面的工程师叫纳伊特,他在伦敦 著名的议会大厦前面的广场上,安装了用红色和绿色玻璃提灯组成的旋转红绿灯,这 个是世上最初出现的煤气红绿灯。那时候红色玻璃灯意思是“停”,绿色的玻璃灯意 思是“警告”。不幸的是 1869 年初,由于煤气灯爆炸,使警察受伤,最后该交通灯被 取消。
后来在美国出现了靠电气启动的红绿灯,这种红绿灯由红绿黄三色圆形的投光器 组成,并在 1914 年始安装于纽约市 5 号大街的一座高塔上。那时的红灯亮表示“停止”, 绿灯亮表示“通行”。 随着各种交通工具的发展和交通指挥的需要,第一盏名副其实 的三色灯(红、黄、绿三种标志)于 1918 年诞生。它是三色圆形四面投影器,被安装在 纽约市五号街的一座高塔上,由于它的诞生,使城市交通大为改善。
12 交通灯设计的意义

电子技术飞速发展的今天,现代电子技术与机械的结合,制造出来一批优秀的先 进电子产品。单片机的发展也是非常迅猛。因为单片机结构形式的特殊性,使得它在 一些应用领域上承担了许多通用的微型计算机无法完成的使命。单片机集成度高,体 积较小,可靠性高,控制能力强,所需电压低,是一种高性能,且价格低廉的处理器。 因此单片机的运用十分广泛,在各行各业中随处可见。
随着人们生活水平的提高,城市里机动车数量也是急剧增长,很多的大城市例如 上海、南京、北京等地在上下班时段堵车情况相当严重,交通出现超负荷运作的情况, 因而引发了交通堵塞、拥挤,交通事故频繁发生诸如此类的问题。红绿交通灯是城市 里最主要的交通指挥系统,和老百姓的日常生活出行息息相关,交通灯不仅影响城市 交通进行的秩序,也会影响到人们的出行的安全与方便。因此设计一个灵活稳定的交 通灯控制系统非常有必要。现实生活中有许多交通灯基本都是按照一个时间间隔来转 换,而本设计中交通灯可根据上下班高峰期或平时还有深夜通过红外接收系统遥控红 绿灯的切换时间,假设上下班高峰期红灯转换时间缩短设置为40秒,而平时等待时间 设置为90秒,如果是深夜,就取消红绿灯的转换,只亮黄灯警示来往车辆注意行车安 全。这种措施可以缓解人们在上下班时间,因为红灯设置等待时间太久,赶时间而闯 红灯或者在一个路口连吃几个红灯的现象, 一定程度上缓解了交通拥挤的现象,同时方便了深夜行车。
13 交通管理的方案设计

131 总体设计方案

系统主要分为四个模块,第一模块是控制模块,主要负责整个系统的控制和运算, 从而使各模块正常工作,第二个模块式显示模块包括 LED 灯和数码管;第三是电源模 块,给各模块提供电源,让各模块工作;第四是红外控制模块,用于遥控交通灯的工 作模式转换。

132 控制模块方案

方案一:由计数器 74LS161 级联组成,配合译码器和秒脉冲信号发生器等器件组 成交通灯系统,整个系统简单,控制简单,调试容易等优点。
方案二:采用单片机 STC89C52 作为控制器。单片机运算能力强,软件编程灵活, 自由度大。在指令系统、硬件结构和片内资源上与标准 8052 单片机完全兼容,使用时 容易掌握;采用 STC89C52 单片机比较稳定可靠、应用广泛、通用性强。
方案比较:采用方案一来实现十字路口交通灯控制系统非常方便,电路结构简单, 控制单一,但整个系统性能不是很高,倒计时不是非常精确,如果要求系统能设置不 同工作时间不容易,因而对于完成题目较困难,而方案二完全能实现设计要求,容易 掌握,利于编程,易控制,I/O 接口很多,易于扩展外围电路,价格便宜,故选择方案 二。

133 电源模块方案

方案一:采用独立稳压电源。这个方案比较稳定,拥有很多成熟可靠的电路可供 选择;但是各部分模块都采用的是独立电源,这样系统结构会很复杂,并且容易影响 到该电路的电平。
方案二:采用电池提供红外遥控的简易电源,由于本设计不需要高功率电源,所 以采用三端稳压器来提供系统的主要电源供给。该方案的系统简明扼要,而且节约成 本,虽然输出功率不高,但是比较稳定符合设计要求。
综上所述,选择第二种方案。
134 显示模块方案

1倒计时显示方案

该系统要求完成倒计时功能。只需显示数字,基于上述原因,我考虑了两种方案。
方案一:采用全数码管显示。这种方案只显示有限的符号和数码字符,简单,方 便。
方案二:采用点阵式 LED 显示。这种方案虽然功能强大,并可方便的显示各种英


第1章 交通灯出现的相关背景


文字符,汉字,图形等,但实现复杂,且须完成大量的软件工作。
综上所述,选择第一种方案,四个路口采用两个二位共阴极数码管。

2状态灯显示
该系统需要完成状态灯显示的功能。由于要求简单,我们把各个路口的红灯、绿 灯和黄灯设成直行和左拐两个通行方式所共有,也就是说,一个路口只需三个状态灯, 一个共有的绿灯,一个共有的红灯,一个共有的黄灯。南北、东西这两个主要干道相 交于十字路口,每个干道都有一组红、黄、绿三种颜色组成的指示灯,用来指挥行人 和车辆的安全通行。红灯亮禁止通行,绿灯亮则允许通行,黄灯开始闪亮就是提醒人 们注意红、绿灯的状态马上会转换,并且黄灯点亮的时间为南北和东西两方向干道的 共同停车时间。

上电的时候南北方向的红灯亮 90 秒;东西方向的绿灯亮 90 秒,黄灯秒闪 3 秒。 再接下来东西方向的红灯亮 90 秒;南北方向的绿灯亮 90 秒,黄灯秒闪 3 秒。如此循 环。由软件设置交通灯的初始时间,南北方向和东西方向各 90 秒,黄灯秒闪 3 秒,数 码管的段码用不同的口线,东西方向的是用的 P3 口,南北的使用 P1 口,用单片机来 控制各种信号灯的燃亮时间,通过单片机的 P2 口控制。本设计里还可以通过按键开关 调整等待时长,也增加了特殊的深夜模式,为夜间行车提供了方便。
14 论文章节安排

论文大致分为六个章节:
1绪论,主要写一些课题背景意义,相关概念简介方案选择等;
2设计中的相关方案设计简介,以及涉及到的 STC89C52 单片机以及 PROTEUS 仿真 软件的介绍;
3硬件设计,围绕框图介绍设计的内容,并设计各模块的电路图加以解释说明;
4软件设计,围绕子程序介绍各部分的功能;
5软件仿真及硬件实物演示图片;
6总结与展望。
15 本章小结

这一章主要介绍了与课题相关的交通灯的来源背景,设计交通灯的意义,还有设 计用到的方案和单片机的简介与发展,在本章的最后用概括的语言叙述了论文的大致结构。

第 2 章 单片机控制的交通系统方案
21 单片机交通控制系统通行方案
系统的主控制器用的是 STC89C52单片机,能够协调控制其余模块工作;红外接收系 统以及按键可以切换系统的工作模式:正常模式,上下班高峰模式,还有特殊深夜模 式。系统在正常模式时,红灯等待时间设为90秒;上下班高峰模式下,红灯的等待时间 可以设为40秒,特殊深夜模式时则无需等待时间,只有黄灯闪烁提醒。交通灯系统的 显示模块可以指引车辆的通行,晶体数码管可以显示交通红绿灯转换的等待时间,车 辆及行人可以看剩余判断自己是否能够安全通过,如果不能则等待下一次绿灯。下面 是正常模式时的通行方案设计:
设在十字路口,分为东西向和南北向,在任意时刻只有一个方向通行,另一方向 禁行,持续一定时间,经过短暂的过渡时间,将通行禁行方向对换。其具体状态如图
2-1所示。说明:黑色表示亮,白色表示灭。交通状态从状态1开始变换,直至状态6然 后循环至状1,周而复始,直至状态6然后循环至状态1,通过具体的路口交通灯状态的 演示分析我们可以把这四个状态归纳如下,正常模式交通状态如图2-1所示:

东西方向红灯灭,同时绿灯亮,南北方向黄灯灭,同时红灯亮,倒计时 90 秒。此状态下,东西向禁止通行,南北向允许通行。 东西方向绿灯灭,同时黄灯亮,南北方向红灯亮,倒计时 3 秒。此状态下,除了已经正在通行中的其他所以车辆都需等待状态转换。
南北方向红灯灭,同时绿灯亮,东西方向黄灯灭,同时红灯亮,倒计时 90 秒。此 状态下,东西向允许通行,南北向禁止通行。
南北方向绿灯灭,同时黄灯亮,东西方向红灯亮,倒计时 3 秒。此状态下,除了 已经正在通行中的其他所以车辆都需等待状态转换。
如果是上下班高峰模式时,则红灯的等待时间设为 40 秒,其余不变,因此不多说明。
用图表表示灯状态和行止状态的关系如表 2-1:

东西南北四个路口均有红绿黄 3 个发光二极管和数码显示管 2 个,在任一个路口,
遇红灯禁止通行,转绿灯允许通行,之后黄灯亮警告行止状态将变换。状态及红绿灯 状态如表 2-1 所示。说明:0 表示灭,1 表示亮。
2.2 STC89C52RC 单片机简介

STC89C52 是 STC89 系列单片机中应用较为广泛的一种型号,芯片内部有 8KB 的闪 速存储器 Flash ROM。内部的 8KB 存储器用于存放可编程控制器监控程序。
STC89C52 单片机的 40 条引脚按功能来分,可以分为 3 部分,电源及时钟引脚、控 制引脚和输入/输出引脚。
STC89C52 单片机的引脚如图 2-2 所示:

第 3 章 硬件设计
本设计主要由 STC89C52单片机(控制器)、交通灯的显示模块、红外接收模块、数
码管、按键等组成。选用设备:9*15万能板1个,STC89C52单片机1片,共阴极的七段 数码管4个,红外接收器,电容电阻双向晶闸管若干,红、黄、绿 LED 灯各4个,开关 键盘、连线等。
系统总框图如图3-1所示。

图 3-1 系统总框图
本设计的控制器选用 STC89C52单片机,控制系统的正常运行。本系统有3种运 行模式,普通模式和上下班高峰模式,深夜模式。可通过按键或红外遥控对系统运行模 式进行切换。按键切换适于值班人员使用,而红外遥控切换适于交警巡查时使用,方 便快捷。现简要介绍该系统工作原理:STC89C52单片机通过锁存器控制数码管的红绿 灯等待时间,东南西北的数码管显示时间相同。P1口的管脚2~7控制交通灯显示。P1口 的2~4管脚控制东西两道的交通灯显示,而 P1口的5~7管脚控制南北道的两组交通灯的 显示,这两组红绿灯同样通过单片机控制显示相同颜色的指示灯并且切换时间相同。 P3口的三个管脚接按键,该按键可控制系统的运行模式。INT0和 INT1两个管脚接红外 的发射模块,复位管脚接红外接收模块,通过该接口可以进行红外线遥控切换系统运 行的模式。
3.2 单片机最小系统

MCS-51 系列单片机中的 8031、8051 及 8751 都采用的是 40Pin 封装双列的直接型 DIP 结构,下图是单片机最小系统的引脚配置,在 40 个引脚里,有正极电源线和接地 线两根,外面还配有石英振荡器的两根时钟线,4 组 8 位一共是 32 个 I/O 口,中断口 与 P3 口的连线复用。单片机最小系统如图 3-2 所示。

3.2.1 时钟电路

XTAL1 为片内振荡器反相放大器的一个输入端,XTAL2 为输出端,当外部振荡器 振荡时,外部振荡的信号直接加载到 XTAL1 上,XTAL2 为悬空状态。内部方式振荡时, 发生器对振荡脉冲进行二分频,晶振为 12MHz,时钟频率为 6MHz。晶振频率可在
1MHz-24MHz 内随便选择。电容大小在 30PF 左右。系统的时钟电路设计采用的是内部方 式,就是用芯片内自带的一个振荡电路。STC89C52 单片机中有一个高增益的反相放大 器可构成振荡器。两个引脚 XTAL1、XTAL2 分别为该放大器的输入、输出端。该放大器 和片外晶体谐振器构成了自激振荡器。外接的晶体谐振器还有电容 C2 和 C3 组成了一 个并联的谐振电路,接至放大器的一个反馈回路。虽然对于外接电容取值没有十分严 格的要求,但是电容的取值会影响震荡器的频率、震荡器的稳定程度、起振的速度以 及温度的稳定程度。所以,该系统电路的晶体振荡器的值是 12MHz,电容应最好选择陶 瓷电容,其电容值大概是 22μF。焊接刷电路板要注意,把晶体振荡器和电容应安装在 单片机芯片的附近,这样可以有效的减少寄生电容,从而更好地使震荡器稳定工作。

3.2.2 复位电路

振荡器在运行时,有两个机器运行周期(即 24 个振荡周期)以上的高电平出现 在这个引脚的时候,单片机将复位,这个引脚如果保持高电平,那么芯片便会循环复 位。复位后 P0-P3 口都置 1,引脚呈高电平,而程序计数器以及特殊功能寄存器 SFR都全部清零。当复位脚从高电平变成低电平的时候,芯片为 ROM 的 00H 处开始运行程
序。外部复位电路能够实现电路的复位,片内的复位电路由复位引脚 RST 经过斯密特 触发器和外部复位电路来连接,斯密特触发器可以抑制噪声,在输出的每个机器周期 时复位电路进行采样。复位电路一般采用上电复位和按钮开关复位的方式,该电路系 统采用的是上电与按钮复位电路。时钟频率为 6MHz 时,C 取 22μF,Rs 约为 200Ω, Rk 约为 1K。复位操作不会对内部 RAM 有所影响。

3.2.3 显示电路

显示器普遍地用于直观地显示数字系统的运行状态和工作数据,按照材料及产品 工艺,单片机应用系统中常用的显示器有: 发光二极管 LED 显示器、液晶 LCD 显示器、 CRT 显示器等。LED 数码管是现在最常用的显示器之一。发光二极管(LED)由特殊的 半导体材料砷化镓、磷砷化镓等制成,可以单独使用,也可以组装成分段式或点阵式 LED 显示器件(半导体显示器)。分段式显示器(LED 数码管)由 7 条线段围成 8 字型, 每一段包含一个发光二极管。外加正向电压时二极管导通,发出清晰的光。只要按规 律控制各发光段亮、灭,就可以显示各种字形或符号。LED 数码管有共阳、共阴之分。 本系统采用的是两位共阴极数码管。两位共阴极数码管引脚图如图 3-3 所示。

图 3-3 两位共阴极数码管引脚图
3.3 红外遥控设计

随着城市汽车数量的增加,市内交通道口的交通流量迅速增加,这对交通指挥的 实时、高效提出了更高的要求,原有的按固定时间放行的红绿灯在交通繁忙时段已不 能适应交通指挥的要求,通常需要人工根据实际交通进行干预,目前采用的方式是直 接操作控制柜内相应开关进行控制,这对观察车流情况不利,并且雨天也不安全。本 实用新型根据红外线遥控原理设计了红外线辅助控制装置,在红绿灯信号控制柜中安 装本装置,使用人员就可以在一定距离范围内进行遥控操作,使用灵活,安全可靠, 很大程度上解决了上下班高峰时期的交通堵塞问题,方便了上班族的出行。红外线遥 控原理图如图 3-4 所示。





红外遥控系统是由发射部分与接收部分构成,控制是通过专用的编码/解码的集成 电路进行的。红外接收系统的原理:内置的接收管先将红外线发射管的光信号转为电 信号,该信号通过 IC 内部放大器放大,再通过自动增益控制、带通滤波、解调变、 波形整形,最后还原成遥控器发射的初始编码,通过接收头的信号输出脚输入至电器 上的编码来识别电路。
当然红外遥控需要一个遥控器,让交通管理人员可以进行远程遥控,遥控器选用 高性能的红外线编码发射器,在整个遥控系统中采用单片机进行接收解码,可以输出 多路控制信号。红外遥控运用示意图如图3-5所示。

3.3.1 单片机红外遥控发射器设计原理

单片机的红外遥控发射器是由电源、单片机、行列式键盘、控制电路、红外发射 电路。

单片机待机时保持功耗低的状态,使用空闲的节电工作模式。在按下遥控装置的 按键时,外部中断1就立即产生了中断请求,让单片机立马切换为工作状态,确认下键 盘按下的按键,在按键被确认以后,控制的软件就会启动定时器 T0、T1和 T1,用来作 为发射时间的控制器,红外线发射频率控制器为 T0,T0定时溢出时,,红外管接口电平 通过中断程序反转一次,定时器的初始值设定不同,不同发射频率就会被传输到输出 口和输入口。在定时 T1溢出时,中断程序就会关闭 T0定时器,而红外线发射也随之停 止。其原理框图如图3-6。


图3-6 红外发射电路框图
图3-7 红外接收电路框图
3.3.2 单片机红外遥控接收器设计原理


单片机、红外遥控接收电路、状态指示电路、控制电路以及单片机的一些外围电
路组成单片机红外遥控接收器。

使用单片机中的 T0来做红外脉冲计数器,T1来做计数时间控制器。接收管收到收 个红外脉冲后,就触发外部中断1,计数器 T0、定时器 T1就开始工作。当定时溢出时, 计数器 T0被中断程序随之关闭,通过判定所读入的计数数值,来定下将操作的对象(遥 控按键)对它进行相对的操作,控制电路来控制负载的状态。下图3-7为红外遥控接收 器设计原理框图。

3.4 交通灯电路图
3.4.1 交通灯电路图
交通灯电路如图 3-8 所示。
图 3-8 交通灯电路图

图中大部分连线采用总线形式。共四个二位阴极数码管,这四个数码管分别用

来显示四个路口的倒计时,数码管的阳极都接到 STC89C52 的 P0 口,阴极接到 P2 口; 共 12 个发光二极管,其中 4 个绿色发光二极管,4个红色发光二极管,4 个黄色发光 二极管,四个路口每个路口各有一个红(禁行)、一个黄(警告)发光二极管,一个绿 色发光二极管(通行),四个人行道,每个人行道两边各有一红、黄、绿发光二极管, 另外一个按键按钮用于繁忙模式和夜间模式的转换,其中四个路口的二极管接到 P1 口, 人行道的发光二极管接到 P3 口,繁忙模式和特殊模式的指示灯接 P2 口。

3.4.2 电源电路设计
该电路为一个输出+5V 直流电压的稳压电源电路。IC 采用集成稳压器 7805,C1、C

3 分别为输入端和输出端滤波电容,RL 为负载电阻。当输出电较大时,7805 应配上散 热板。电源电路图如图 3-9 所示。

图 3-9 电源电路图

如图所示,220V 的交流电压经过一个变压器生成一个 9V 的交流电压,通过转换电 路进入集成稳压器 7805,最终输出一个+5V 的直流电压,可以提供稳定的电源。

3.4.3 按键电路设计
按键电路如图 3-10 所示。


本设计设置了有 3 个按键——S1:S 键接 P3.6,S2:J 键接 P3.0,S3:F 键接 P3.7。 每个按键一端接地,另一端接上拉电阻。低电平有效,当按键按下端口接地,单片机捕获 到低电平,从而知道相应的输入信息。

按键功能如下:S 键是用来启动正常模式,J 键是用来启动上下班高峰的繁忙模式,F 键是用来启动深夜特殊模式。
3.5 本章小结

本章内容前面一部分主要从理论上介绍了硬件设计的内容,后半部分结合电路图 把理论与实物相结合,介绍了系统的工作原理以及设计原理。当然我设计的简易交通 灯还是有很多不足的地方,需要以后再根据实际情况不断加强功能。

4 章 软件设计
4.1 程序主体设计流程

全部控制程序实际上分为若干模块:键盘设置处理程序,状态灯控制程序,LED 显 示程序,消抖动延时程序,中断服务子程序等。交通灯的总流程图如图 4-1 所示。

图 4-1 主程序流程图

电路系统上电,设置初始红灯等待时间 90 秒,即 S1 状态为正常模式状态,即在 非上下班高峰时段,此时交通灯正常运行,红灯等待时间为 90 秒;S2 为上下班高峰繁 忙模式,此时通过红外遥控或者按键来转换交通灯的运行模式,红灯等待时间为 40 秒; S3 为深夜特殊模式,此时通过红外遥控或者按键可以控制,无需红灯等待时间。

4.2 按键设计
首先程序不断扫描模式设置键,分别记为:S 键,J 键,F 键对应IO端口的P

3.6,P3.0,P3.7,低电平有效,按键顺序是指定的,若直接按 S 键,则为正常模式,然后进入 下一程序;若再按 J 键,则为繁忙模式,然后进入下一程序;若按下 F 键,则为特殊模式, 并进入下一程序。

程序的开始要判断是否有键按下,可以不断将 J 键值和 F 键值相或,或值为 0 则表示 没有键按下,即交通灯正常运行,为 1 则表示有键按下,交通灯启动了上下班高峰模式或者深夜特殊模式。
接下来要判断具体是那个键,若为 J 键,则表示启动的是上下班高峰模式,进入下一 程序,否则为 F 键,则表示启动的是深夜特殊模式,用 R0 存值,同时还需判断此时 S 键 是否按下,若按下,则表示恢复正常模式,进入下一程序。
在这个过程中,S,J 键的计数是循环的,从 S 键按下设置的初值 90 开始,减到 J 键 按下设置的值 40 则循环回到初值 90。
4.3 定时器的参数设计

定时器工作的时候需要给计数器传送计数器的初值,该值要传送到 TL 和 TH 中。 定时器是运用加法记数,可以从全 1 到全 0 的时候自动的产生一个溢出中断请求。这 样我们就可以把计数器它记满为 0 所需要的计数值设为 C,把计数初值设为 TC,计算
通式如下:


很明显一秒钟超过了计数器所能表示的最大时间,因而我们就必须采用软件和定 时器相结合的方法去解决这个难题。
软件延时部分:MCS-51 的工作频率为 12MHZ。机器周期与主频有关,机器周期是 主频的 12 倍,所以一个机器周期的时间为 12*(1/12M)=1us。我们可以知道具体每条 指令的周期数,这样我们就可以通过指令的执行条数来确定 1 秒的时间。由于单片机 运行的速度非常快,所以其他的一些指令的执行耗时可以不用考虑。
设定一个初值是 40 的软件计数器让 T0 定时为 50 毫秒。这样的话每次 T0 到了 50 毫秒的时候处理器就响应溢出的中端请求,并且进入中断服务的子程序。在中断服务 的子程序里,CPU 先让软件的计数器减少 1,再去判断其是否是零。如果是零的话表示 一秒就到了。定时器要设为 50 毫秒,T0 工作方式必须在 1 上,初值计算如下:
TC=M-T*T0=216-50ms=15536=3CBOH 定时器 0 中断流程如图 4-2 所示:

图 4-2 定时器 0 中断流程图



/**********************T0 中断服务程序*******************/

void timer0(void)interrupt 1 using 1

{

static uchar count; TH0=(65536-50000)/256; TL0=(65536-50000)%256; count++;


if(count==10)

{
if(Flag_SN_Yellow==1)              //测试南北黄灯标志位

{SN_Yellow=~SN_Yellow;}



洛阳理工学院电气工程与自动化学院项目设计说明书


if(Flag_EW_Yellow==1)              //测试东西黄灯标志位

{EW_Yellow=~EW_Yellow;}

}

if(count==20)

{

Time_EW--; Time_SN--;
if(Flag_SN_Yellow==1)              //测试南北黄灯标志位

{SN_Yellow=~SN_Yellow;}
if(Flag_EW_Yellow==1)              //测试东西黄灯标志位

{EW_Yellow=~EW_Yellow;}

count=0;

}

}
4.4 中断原理

本系统主要使用了外部中断,中断信号有两个引脚 INT0、INT1 进行输入,低电平 时有效,CPU 每个时钟周期都会检测 INT0 和 INT1 上的信号,STC89C52 允许外部中断 以电平方式或负边沿方式两种中断方式输入中断请求信号,可由用户通过设置 TCON 中 IT0 和 IT1 位的状态来实现。以 IT0 为例,IT0=0,为电平触发的方式,IT0=1,是负边 沿触发的方式,本设计采用电平方式,IE0 为其中断标志位,有中断信号则置位,中断 服务子程序响应后,IE0 自动清零。IE 中的 EA 为允许中断的总控制位,为 1 开启,EX0 为外部中断允许控制位,为 1 开启。在优先级的允许下,一旦有外部中断信号产生, 单片机 CPU 首先保护断点,PC 值进栈,然后执行相应的中断服务子程序,执行完后, 用 RETI 指令返回,此时 CPU 会从堆栈中取保存的断点地址,送回 PC,程序再正常执行,ED 倒计时显示。
外部中断流程图如图 4-3 所示。

子程序如下:

图 4-3 外部中断 0 中断流程图



/**********************外部 0 中断服务程序******************/

void INT0_srv(void)interrupt 0 using 1

{
EX0=0;              //关中断


if(Nomor_Button==0) //测试按键是否按下,按下来为正常状态

{

EW1=90; SN1= 40; EWL1=19; SNL1=19;
Busy_LED=0;              //关繁忙信号灯
Special_LED =0; //关特殊信号灯



洛阳理工学院电气工程与自动化学院项目设计说明书


}
if(Busy_Btton==0)              //测试按键是否按下,按下为繁忙状态

{

EW1=45; SN1=30; EWL1=14; SNL1=14;
Special_LED=0;              //关特殊信号灯
Busy_LED=1;              //开繁忙信号灯

}
if(Special_Btton==0)//测试按键是否按下,按下为特殊状态

{

EW1=75; SN1=55; EWL1=19; SNL1=19;
Busy_LED=0;              //关繁忙信号灯
Special_LED =1;//开特殊信号灯

}
EX0=1;              //开中断
}

4.5 状态灯显示及判断

在本设计中,实际控制的灯只有 6 个,即:东西红灯,东西绿灯,东西黄灯,南 北红灯,南北绿灯,南北黄灯。IO 端口均是低电平有效。共有 4 种状态:东西红灯亮, 南北绿灯亮(11011101);东西红灯亮,南北黄灯亮(10111101);东西绿灯亮,南北 红灯亮(11101101);东西黄灯亮,南北红灯亮(11100111)。
在用于显示发光二极管时,直接由 MOV 指令将十六进制码送入 P2 口。
刚才的 4 个状态是依次变换的,这就要涉及到状态的判断和衔接了。先把 P2 端口 的值与所有的 4 个状态码比较,若相同则判断成功当前状态,再把下一状态的状态码 送显 P2 即可。状态灯定义如下:(见附件)


计时每 1 秒都要刷新 1 次,那么计时满 1 秒时就要将存储时间的工作寄存器 R4 减 1,然后送入显示程序中显示。下面要将时间数据 R4 的十位,个位分开送显 P1, P0 端口,首先将 R4 除以 10,整数即十位放在 A 中,余数即个位放在 B 中,设置 7 段 显示数据的数据表,用数据指针寄存器 DPTR 指向数据表的首地址,再加上 A 中的偏 移量,就可以指向十位数字,然后送显即可,个位显示同理。设计中得延时程序都是 用软件完成,通过程序执行一条指令的时间,再加上了两次累减嵌套来实现。
在按键计数的过程里,存在机械抖动和软件方面的冲突,比如程序检测到了有按键 按下,就计数一次,而事实上,按键闭合后在微观上还会弹起然后闭合,一直达到稳定状态, 所以后面的弹落会没有效果,为了使程序不要出现这一现象,我们特别添加了上面所说 的延时消抖程序,可以在第一次检测到闭合时,调用了一定时间的延时程序。
下面是显示北向的时间程序,其他方向依此类推:
1              SMG_XS=Data[bei/10];              //显示北的十位
1              SMG_KZ=0xfd;              //允许北十位显示
1              delay(t);              //小延时一下,使数码管显示更清楚
1              SMG_KZ=0xff;              //关闭数码管显示(消隐)
1              SMG_XS=Data[bei%10];              //显示北的个位
1              SMG_KZ=0xfe;              //允许北个位显示
1              delay(t);              //小延时一下,使数码管显示更清楚
1              SMG_KZ=0xff;              //关闭数码管显示(消隐)
4.7 本章小结

本章是软件设计部分,给出了相关运算过程还有一部分重要的程序段,对定时原 理还有中断原理给出了很多相关知识,这些都是单片机运行的关键,所以做了比较充 分的介绍。

PROTEUS 仿真图如图 5-1 所示。

图 5-1 PROTEUS 仿真图

本设计完全用仿真软件在电脑上对目标电路原理图和程序进行检测和调试。调试 过程中单片机相应输入端由通用键盘和鼠标设定,运行状态、各寄存器状态、端口状 态等都可以在指定的窗口区域显示出来,以确定程序运行有无错误。

目标程序纠错:该阶段工作通常在目标程序编辑时就完成。一般来说,仿真软件 能为用户输入的程序指令纠错,包括书写格式、标号未定义或多重定义、转移地址溢 出等错误。

整体程序调试:即把各子程序整体连起来进入到综合电路调试,看是否能实现预计的功能显示。在这阶段若发生故障,可以考虑各子程序在运行时是否破坏现场,数
据缓冲单元是否发生冲突,标志位的建立和清除在设计上是否失误,堆栈是否溢出, 输入输出状态是否正常等。

5.2 硬件实物演示图片及简单介绍

图 5-2 实物正面图

如图 5-2 所示,这是一个简易的交通灯,主要有四个按键开关,一个作为控制器 的 STC89C52 芯片,四个双位阴极数码管显示时间,十二个发光二极管表示通行状态。

运行中的实物图展示:
图 5-3 初始上电画面

图 5-3 为初始上电画面,所有灯闪烁数次然后开始正常运行,通过此时的状态能 观察出 LED 灯的运行情况,如有损坏,则上电时灯不会闪烁。


图 5-4 运行中交通灯效果展示

图 5-4 所示状态为南北为绿灯,东西为红灯,即表示南北车辆通行,东西方向车 辆禁止通行。

图 5-5 特殊深夜模式

图 5-5 为深夜特殊模式图,当特殊深夜模式开启时,四个方向上黄灯都开始闪烁, 红绿灯都停止燃亮,方便了深夜少数车辆的通行。当深夜结束时,可以通过按键来转 换工作模式。

5.3 本章小结

这部分主要展示了仿真与实物运行的效果图,并且加以说明。从效果上来看设计 还是比较成功的,由于时间紧迫,红外遥控的设计部分还未加到实物中,但是特殊的 深夜模式还是成功地在实物中得以体现。总得来说,设计上还是有不足的地方,但是 一些基本的功能都能实现。


电路总图:



完整的pdf格式文档51黑下载地址:
红绿灯~基于51单片机设计(1).pdf (1.38 MB, 下载次数: 103)


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏3 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:503018 发表于 2019-4-23 21:41 | 只看该作者
感觉还是可以啊
回复

使用道具 举报

板凳
ID:738117 发表于 2020-4-26 09:23 | 只看该作者
是不错
回复

使用道具 举报

地板
ID:759305 发表于 2020-5-23 17:48 | 只看该作者
有几个图不太清楚
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表