基于AT89C51单片机的交通灯设计

点击链接获取Keil源码与Project Backups仿真图:
https://download.csdn.net/download/qq_64505944/87779238?spm=1001.2014.3001.5503
在这里插入图片描述
源码获取

主要内容:
在日常生活中,交通灯是一项必不可少的公共设施,可 以维护道路的畅通和交通的秩序。如若交通灯发生故障,那 么后果可想而知。因此,交通灯的正常工作就显得尤为重要。 由于交通灯对于公共安全的重要性本文基于 51 单片机模拟双向交通灯的设计。
基本要求:
1.用LED灯模拟十字路口交通灯控制
2.正常情况下双方向轮流通行
3.特殊情况时,A方向通行
4.紧急情况时,A和B方向都不通行。
主要参考资料:
 [1]肖骁,戈文祺. 电气传动系统中单片机技术的应用解析[J]. 中国标准化,2017(22):250-252.
 [2]茅阳. 单片机技术在电气传动控制系统中的应用与研究[J]. 中国高新区,2018(01):24.
 [3]贾飞. 单片机技术课程中项目教学法的应用案例[J]. 张家口职业技术学院学报,2017,30(03):75-77.
完成期限:12 月 11 日 - 12 月 26 日
指导教师签名:
课程负责人签名:

摘 要
交通在人们的日常生活中占有重要的地位,随着人们社会活动的日益频繁,这点更是体现的淋漓尽致。交通信号灯的出现,使交通得以有效管制,对于疏导交通流量、提高道路通行能力,减少交通事故有明显效果。近年来随着科技的飞速发展,单片机的应用正在不断深入,同时带动传统控制检测技术日益更新。在实时检测和自动控制的单片机应用系统中,单片机往往作为一个核心部件来使用,仅单片机方面知识是不够的,还应根据具体硬件结构软硬件结合,加以完善。
本系统采用单片机STC89C52为中心器件来设计交通灯控制器,以模拟十字路口交通灯的各种状态显示以及倒计时时间。系统由单片机I/O口扩展电路、交通灯状态LED灯显示电路、数码管显示电路、复位及晶振电路等几大部分组成。系统除基本的交通灯倒计时功能外,还有倒计时时间设置、紧急情况模拟等功能,较好的模拟实现了十字路口可能出现的状况。
关键词: STC单片机;STC89C52;交通灯;数码管

	目 录

摘 要 I
1 绪论 1
1.1 设计背景与意义 1
1.2设计目的 1
1.3 设计要求及内容 1
1.4 本文结构安排 2
2 总体设计方案 3
2.1 系统需求及方案设计 3
2.2 硬件器件介绍 3
2.2.1 STC89C52单片机 3
2.2.2数码管 4
2.2.3 LED灯 5
2.3 所用软件介绍 6
2.3.1 Altium Designer电路设计软件 6
2.3.2 Keil软件及C语言设计 6
2.3.3 proteus仿真设计软件 6
2.4 本章小结 6
3 硬件设计 7
3.1 硬件电路组成 7
3.2 单片机最小系统电路 7
3.3 数码管倒计时及红绿灯电路 8
3.4按键及电源电路 9
3.5本章小结 10
4 软件设计 11
4.1 软件设计需求及设计思路 11
4.2 主函数设计 12
4.3按键程序流程图 12
4.4 本章小结 13
5 仿真演示 14
5.1 仿真实现 14
5.1.1 仿真电路图 14
5.1.2 仿真结果 15
5.2 测试情况分析 18
5.3 本章小结 18
结论 19
参考文献 20
附录一 硬件原理图 21
附录二 仿真原理图 21

1 绪论
1.1 设计背景与意义
交通在人们的日常生活中占有重要的地位,随着人们社会活动的日益频繁,这点更是体现的淋漓尽致。交通信号灯的出现,使交通得以有效管制,对于疏导交通流量、提高道路通行能力、减少交通事故有明显效果。近年来随着科技的飞速发展,单片机的应用正在不断深入,同时带动传统控制检测技术日益更新。在实时检测和自动控制的单片机应用系统中,单片机往往作为一个核心部件来使用,仅单片机方面知识是不够的,还应根据具体硬件结构软硬件结合,加以完善。
本系统采用MSC-51系列单片机STC89C52为中心器件来设计交通灯控制器,实现了能根据实际车流量设置红绿灯倒计时时间,红绿灯循环点亮,倒计时剩3秒时黄灯闪烁警示,倒计时时间通过数码管实时显示,并设置了左转绿灯功能和紧急情况模拟功能。本系统较好的模拟实现了十字路口可能出现的状况,实用性强、操作简单、扩展功能强。
1.2设计目的
(1)巩固和加深对单片机原理和接口技术知识的理解;
(2)培养根据课题需要选学参考书籍、查阅手册和文献资料的能力;
(3)学会方案论证的比较方法,拓宽知识,初步掌握工程设计的基本方法;
(4)掌握常用仪器、仪表的正确使用方法,学会软、硬件的设计和调试方法;
(5) 能按课程设计的要求编写课程设计报告,能正确反映设计和实验成果,能用计算机绘制电路图、仿真图和流程图。
1.3 设计要求及内容
(1)红灯和绿灯相互转换经过黄灯,并且黄灯闪烁三次;
(2)主干道方向通行30秒,辅干道通行20秒,单独左转信号15秒,先直行信号,后左转信号;
(3)设置自动、手动、特殊情况三种方式。
(4)自动模式下自动显示各种状态的倒计时,红绿灯自动切换;
(5)手动模式下可以根据道路车流量情况手动调节红灯绿灯相应时间;
(6)紧急情况下所有路口红灯亮,黄灯闪烁,以便120、110等及时通行。
1.4 本文结构安排
本文围绕着基于51单片机的十字路口交通灯展开设计,以交通灯需求为出发点,首先明确了研究背景与意义,介绍了设计目的,并论述了设计要求及设计内容,接下来的几章将具体展开相关设计与研究:
第二章介绍系统总体方案及相关理论知识,重点阐述了系统功能需求和系统方案论证,接着简要介绍了系统硬件及软件基本知识。
第三章重点展开硬件系统设计,首先明确硬件电路设计的思路及框架。接着依次介绍了:单片机最小系统、按键电路、数码管显示电路、LED红绿灯电路、电源电路等。通过对以上重点电路的介绍,强化了硬件电路设计的细节和重点。
第四章展开软件系统设计,通过对软件设计进行需求分析,明确软件设计的目的与需求,进一步通过程序流程图展示设计思路及框架。接着依次介绍了主函数流程、倒计时显示程序流程、红绿灯切换程序流程、按键程序流程。
第五章介绍仿真实现步骤,特别是仿真电路实现的流程和仿真测试,完美实现了设计需求及目标。
第六章总结全文,总结本文所做的工作及贡献,并根据存在的问题展望此课题今后的研究方向。

2 总体设计方案
2.1 系统需求及方案设计
为了实现基于51单片机的十字路口交通灯设计,本文将实现以下设计需求:
(1)精确、实时的进行数码管自动倒计时、LED红绿灯自动切换,较好的模拟交通灯的运行情况;
(2)直接、清晰明了的显示测得的倒计时的数值;
(3)手动调整倒计时的时间,提升交通灯可控性;
(4)能够实现交通灯紧急情况处理,完善交通灯的功能;
(5)操作简单、功能完善、精确度高。
基于以上列出的几点,本设计利用STC89C52单片机控制数码管模块、LED灯模块、按键模块等外部电路实现相关功能,具体的设计框图如图2.1所示。
图2.1 总体设计框图
在这里插入图片描述

2.2 硬件器件介绍
2.2.1 STC89C52单片机
如图2.2所示的STC89C52单片机是在单片机设计中最常用的单片机芯片之一,其功能完善,易于设计。STC89C52是STC公司生产的一种低功耗、高性能CMOS8位微控制器,具有8K字节系统可编程Flash存储器。STC89C52使用经典的MCS-51内核,但是做了很多的改进使得芯片具有传统的51单片机不具备的功能。在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。主要具备以下外设功能:
8k字节Flash;
512字节RAM;
32 位I/O口;
4KB EEPROM;
MAX810复位电路;
3个16 位定时器/计数器;
4个外部中断;
全双工串行接口。
在这里插入图片描述

图2.2 STC89C52单片机引脚图
2.2.2数码管
led数码管(LED Segment Displays)是由多个发光二极管封装在一起,“8”字型的器件,引线已在内部连接完成,只需引出它们的各个笔划,公共电极。led数码管常用段数一般为7段,有的另加一个小数点,还有一种是类似于3位“+1”型。位数有半位,1,2,3,4,5,6,8,10位等,led数码管根据LED的接法不同分为共阴和共阳两类,被广泛用于仪表,时钟,车站,家电等场合。其引脚具体如图2.3所示。
在这里插入图片描述

图2.3 两位LED数码管
2.2.3 LED灯
LED(Light Emitting Diode),发光二极管,是一种能够将电能转化为可见光的固态的半导体器件,它可以直接把电转化为光。LED的心脏是一个半导体的晶片,晶片的一端附在一个支架上,一端是负极,另一端连接电源的正极,使整个晶片被环氧树脂封装起来。
LED可以直接发出红、黄、蓝、绿、青、橙、紫、白色的光。
在这里插入图片描述

图2.4 发光二极管实物图
2.3 所用软件介绍
2.3.1 Altium Designer电路设计软件
在本科单片机设计中,设计电路使用的软件一般是Altium Designer或proteus,由于Altium Designer功能强大,可以设计硬件电路的原理图、PCB图,且界面简单,易操作,上手快。Altium Designer19是一款专业的整的端到端电子印刷电路板设计环境,用于电子印刷电路板设计。它结合了原理图设计、PCB设计、多种管理及仿真技术,能够很好的满足本次毕设的需求。
2.3.2 Keil软件及C语言设计
作为本科期间学习的第一门编程语言,C语言是我们最熟悉的编程语言之一。当然,由于其功能强大,C语言是当前世界上使用最广泛、最受欢迎的编程语言。在单片机设计中,C语言已经逐步完全取代汇编语言,因为相比于汇编语言,C语言编译与运行、调试十分方便,且可移植性高,可读性好,便于烧录与写入硬件系统,因此C语言被广泛应用在单片机设计中。keil软件由于其兼容单片机的设计,能够实现快速调试,并生成烧录文件,被广泛应用于C语言的编写和单片机的设计。
2.3.3 proteus仿真设计软件
Protues也是在单片机仿真设计中常用的设计软件之一,通过设计出硬件电路图,及写入驱动程序,就能在不实现硬件的情况进行电路调试。另外,protues还能实现PCB的设计,在仿真中也可以与KEIL实现联调,便于程序的调试,且支持多种平台,使用简单便捷。
2.4 本章小结
本章首先明确了本文整体的系统需求,并根据需求设计了系统总体框图,并以此为设计思路。接着,简要介绍了本文将用到的硬件器件,特别是每一个器件的原理图和引脚图,为下一章进行进一步的硬件电路设计奠定基础。最后,对本设计需要使用到的软件系统和编程语言进行了大概的介绍,以便进行接下来的软硬件设计。
3 硬件设计
3.1 硬件电路组成
如图3.1是本系统的硬件设计方案,具体地,硬件电路由以下模块构成:
(1)单片机最小系统。用于驱动和控制其他模块,以实现整体功能,其以STC89C52单片机为核心芯片,并辅以复位电路和晶振电路。
(2)数码管倒计时显示模块。由四个两位数码管组成,负责实时显示交通灯倒计时:主干道直行30秒,辅干道直行20秒,左转15秒。
(3)LED红绿灯模块。由16个LED灯组成,分别模拟红灯、黄灯、直行绿灯、左转绿灯。
(4)电源模块。用于整个系统的供电。
在这里插入图片描述

图3.1 硬件设计框图
3.2 单片机最小系统电路
单片机最小系统是单片机扩展开发应用中最基础和最主要的部分,一般由以下的电路构成,是整个设计的核心其保证了基于单片机的其他功能的扩展与实现。如图3.2所示。
复位电路: 复位电路是单片机应用中的最基本和最重要的电路,用于处理单片机工作失灵等紧急问题。当单片机复位端口为高电平时,单片机中的代码将不会被执行。一开始上电时,电容还未充满电,复位端口为高电平,避免了直接上电就运行程序导致的程序错误等问题。当电容充满电后,复位端口变为低电平,程序开始运行。
晶振电路:晶振电路也是的单片机设计中必备的电路,为系统提供工作时序。本毕设晶振电路提供11.0592MHZ时钟频率,以此构成整个稳定的振荡电路,为单片机的正常工作提供保障。

扫描二维码关注公众号,回复: 15312984 查看本文章

图3.2 单片机最小系统
3.3 数码管倒计时及红绿灯电路
数码管倒计时电路由四个两位数码管构成,其中南北向(主干道)的数码管显示相同的倒计时,同接在单片机相同的IO口上;东西向(辅干道)的数码管显示相同的倒计时,同接在单片机相同的IO口上;由于只是两位数码管,因此最多只能倒计时99秒。红绿灯电路由16个LED发光二极管构成,分别模拟红灯、黄灯、直行绿灯、左转绿灯。其中南北向(主干道)的LED灯显示相同的情况,同接在单片机相同的IO口上;其中东西向(辅干道)的LED灯显示相同的情况,同接在单片机相同的IO口上。具体如图3.3所示。
图3.3 数码管倒计时及红绿灯电路

3.4按键及电源电路
按键及电源电路如图3.4所示。三个按键分别接在单片机P3.5,P3.6,P3.7口,另一端接地。三个按键分别用于实现:紧急情况、自动模式倒计时增加、自动模式倒计时减少。
图3.4 按键及电源电路
3.5本章小结
本章以硬件电路设计为核心,首先介绍了硬件电路的设计框图及组成模块。接着依次介绍了单片机最小系统、数码管倒计时及红绿灯电路、按键及电源电路等各个硬件的模块,以实现整体硬件电路的设计。

4 软件设计
4.1 软件设计需求及设计思路
根据本文设计需求,在第三章硬件电路设计的基础上,需要通过软件编程实现的具体功能:
(1)驱动各个模块工作,实现数码管的显示及LED灯的点亮;
(2)按键设置功能。实现紧急情况下所有路口红灯亮、自动模式倒计时增加、自动模式倒计时减少等功能;
(3)倒计时功能实现。实现主干道方向通行30秒,辅干道通行20秒,单独左转信号15秒,先直行信号,后左转信号;
(4)LED红绿灯的切换。实现红灯和绿灯相互转换经过黄灯,并且黄灯闪烁三次。
具体设计流程如图4.1所示。
图4.1 设程序设计流程
4.2 主函数设计
主函数的主要功能是初始化数码管显示和定时系统、驱动各个模块工作、通过调用函数调用各个模块开始执行相应功能。主函数程序截图如图4.2所示:
图4.2 主程序截图
4.3按键程序流程图
按键程序需要实现紧急情况下所有路口红灯亮、自动模式倒计时增加、自动模式倒计时减少等功能,具体流程图如图4.3所示。
图4.3 按键程序流程图
4.4 本章小结
本章以软件设计为核心,首先重点论述了软件设计框架及设计思路,介绍了主函数的设计思路及按键程序的设计流程,最终实现软件的整体设计。

5 仿真演示
5.1 仿真实现
5.1.1 仿真电路图
本系统用protues8.7设计的仿真原理图如图5.1所示。
在这里插入图片描述

图5.1 仿真原理图
根据第四章软件设计的思路,结合仿真需求,我们将仿真设计的C代码利用KEIL5编写好,并进行详细地注释。接着,我们点击“create HEX file”,并再次编译程序,这样就会生成HEX烧录文件,具体如图5.2所示。
在这里插入图片描述

图5.2 调试及HEX文件生成截图
接着,我们打开仿真原理图,并将生产的“HEX”文件烧录到单片机芯片中,点击开始仿真,就可以实现相关仿真了,我们将在下一节中具体展示仿真的结果。
5.1.2 仿真结果
(1)主干道交通灯倒计时
如图5.3所示是开始仿真后主干道(南北向)倒计时情况,主干道从30秒开始倒计时,同时主干道的直行绿灯亮,表示直行可通行;辅干道的倒计时时间停留在20秒不动,同时红灯亮,表示不准通行。
图5.3 主干道交通灯倒计时
(2)辅干道倒计时
图5.4所示是辅干道(东西向)倒计时情况,辅干道从20秒开始倒计时,同时辅干道的直行绿灯亮,表示直行可通行;主干道的倒计时时间停留在30秒不动,同时红灯亮,表示不准通行。
在这里插入图片描述

图5.4 辅干道倒计时
(3)左转倒计时
无论是主干道还是辅干道,当直行倒计时结束后,开始进入左转倒计时,如图5.5是主干道左转倒计时,从15秒开始倒计时,同时主干道的左转绿灯亮,表示主干道车辆可进行左转。另外,辅干道红灯,表示不可通行。
图5.5 左转倒计时
(4)紧急情况
当紧急按键按下后,系统进入紧急模式,数码管不显示,所有红灯亮、黄灯闪烁,表示普通车辆不可通行,仅供110、120车辆通行。具体如图5.6所示。

图5.6 紧急情况
(5)手动调整倒计时
在辅干道左转倒计时情况下,由于车辆过多,需要增加左转倒计时时间。如图5.7所示是调整前的倒计时时间,连续两次按下增加按键后,倒计时时间增加了两秒,如图5.8所示。
图5.7 倒计时初始时间
图5.8 调整后倒计时时间
5.2 测试情况分析
经过以上一系列的仿真测试,本文设计的“基于51单片机的十字路口交通灯”能够完成了2.1节的系统需求,具体仿真实现了以下功能:
(1)红灯和绿灯相互转换经过黄灯,并且黄灯闪烁三次;绿灯分为直行绿灯和左转绿灯;
(2)主干道方向通行30秒,辅干道通行20秒,单独左转信号15秒,先直行信号,后左转信号;
(3)设置自动、手动、特殊情况三种方式。
(4)自动模式下自动显示各种状态的倒计时,红绿灯自动切换;
(5)手动模式下可以根据道路车流量情况手动调节红灯绿灯相应时间;
(6)紧急情况下所有路口红灯亮,黄灯闪烁,以便120、110等及时通行。

5.3 本章小结
本章结合第三章的电路设计和第四章的软件设计,利用protues软件设计了本文的仿真电路图,并通过代码编写与调试,将生成的“HEX”文件写入到仿真芯片中,实现了电路的仿真。接着,我们对仿真进行了测试,证明了本系统运行稳定,能够实现所有的既定功能。最后,我们对仿真测试进行了总结,具体列出了仿真实现的功能。

结论
本文围绕着基于单片机的十字路口交通灯设计,通过广泛查阅文献和仿真设计,完成了以下工作:
(1)绘制了电路原理图和仿真原理图,编写了本系统实现的程序代码。
(2)红灯和绿灯相互转换经过黄灯,并且黄灯闪烁三次;绿灯分为直行绿灯和左转绿灯;
(3)主干道方向通行30秒,辅干道通行20秒,单独左转信号15秒,先直行信号,后左转信号;
(4)设置自动、手动、特殊情况三种方式。。自动模式下自动显示各种状态的倒计时,红绿灯自动切换;
(5)手动模式下可以根据道路车流量情况手动调节红灯绿灯相应时间;
(6)紧急情况下所有路口红灯亮,黄灯闪烁,以便120、110等及时通行。综上所述,本文的设计达到了预期设计目标,具有一定的的实用价值。
本文虽然较好的实现了基于单片机的十字路口交通灯的设计,但由于本人水平有限,还存在着不少有待改进的地方,在未来的工作中,可以从以下几点展开相关设计:
(1)由于时间限制,本文的设计只做了相关仿真,在下一步工作中,将结合原理图设计出PCB图,并做出硬件;
(2)本设计只对车辆通行进行考虑,在今后的设计中,可以加入人行道的通行情况;
(3)在接下来的设计中,还可以增加语音提示等功能,使得交通灯系统更加智能化、人性化。

参考文献
[1]楼然苗, 李光飞. MCS-51系列单片机设计实例[J]. 单片机与嵌入式系统应用(02):84
[2]刘文涛. 单片机应用开发实例[M]. 北京:清华大学出版社,2005,18-25
[3]徐向民. Altium Designer快速入门[M]. 北京:北京航空航天大学出版社,2011,20-29
[4]王艳艳, 张荣国, 罗晓锋. Proteus与Keil软件在“C语言”教学过程中的应用[J]. 科技视界, 000(23):191-192,311
[5] 曾燕, 贾振国. Proteus仿真技术在单片机教学中的应用[J]. 长春工程学院学报(社会科学版)(1):135-138
[6] 周航慈. 单片机应用程序设计技术[M]. 北京:北京航空航天大学出版社,2002,21-25
[7]王晓萍,陈嫄嫄. 单片机在十字路口交通灯控制系统中的应用[J]. 十堰职业技术学院学报(6):105-107.
[8]郭玉秀. 基于单片机的十字路口交通灯的设计及仿真[J]. 现代制造技术与装备, 2018(8):66-68.
[9]栗洋. 基于单片机的十字路口交通灯控制[J]. 工程技术(文摘版):00219-00219.
[10] 淡海英, 杨聪. 基于单片机控制的十字路口交通灯设计与分析[J]. 电子测试, 2017, 000(013):9,8.
[11]

附录一 硬件原理图
附录二 仿真原理图

猜你喜欢

转载自blog.csdn.net/qq_64505944/article/details/130656866