引言 ................................................. - 1 - 第一章交通灯课程设计功能描述 ......................... - 3 - 1.1芯片简介 ...................................... - 3 - 1.2技术指标 ...................................... - 5 - 第二章课程设计分析设计 ............................... - 7 - 第三章绘制硬件图并对硬件电路进行说明 ................. - 9 - 3.1STC89C52RC单片机内部结构 ....................... - 9 - 3.2STC89C52RC单片机芯片引脚位置及功能符号 ........ - 11 - 第四章绘制软件流程图并对软件流程图进行说明 .......... - 13 - 4.1软件设计 ..................................... - 13 - 4.2主程序流程图.................................. - 14 - 第五章总结与致谢 .................................... - 15 - 5.1总结 ......................................... - 15 - 5.2致谢 ......................................... - 15 - 参考文献 ............................................ - 17 - 附录 ................................................ - 19 - 附录A 程序的源代码 ............................... - 19 - 附录B 实物图 .................................... - 23 -
引言
数字电子技术基础是高等学校弱电类各专业的一门重要的技术
基础课程。这门课程发展迅速、实用性和应用性强,侧重于逻辑行为的认知和验证。
随着社会经济的发展,城市交通问题越来越引起人们的关注。人、车、路三者关系的协调,已成为交通管理部门需要解决的重要问题之一。城市交通控制系统是用于城市交通数据监测、交通信号灯控制与交通疏导的计算机综合管理系统,它是现代城市交通监控指挥系统中最重要的组成部分。同时也随着城市机动车量的不断增加,许多大城市如北京、上海、南京等出现了交通超负荷运行的情况,因此,自80年代后期,这些城市纷纷修建城市高速道路,在高速道路建设完成的初期,它们也曾有效地改善了交通状况。然而,随着交通量的快速增长和缺乏对高速道路的系统研究和控制,高速道路没有充分发挥出预期的作用。而城市高速道路在构造上的特点,也决定了城市高速道路的交通状况必然受高速道路与普通道路耦合处交通状况的制约。所以,如何采用合适的控制方法,最大限度利用好耗费巨资修建的城市高速道路,缓解主干道与匝道、城区同周边地区的交通拥堵状况,越来越成为交通运输管理和城市规划部门亟待解决的主要问题。为此,本次设计完成的就是交通灯设计。以下就城乡交通灯控制系统的电路原理、设计计算和实验调试等问题来进行具体分析讨论。
关键词:交通灯,STC89C52RC芯片,紧急制动
- 1 -
- 2 -
第一章 交通灯课程设计功能描述
1.1芯片简介
STC89C52RC芯片简介
89C52是STC系列单片机的典型产品,我们以这一代表性的机型进行系统的讲解。89C52单片机包含中央处理器、程序存储器(ROM)、数据存储器(RAM)、定时/计数器、并行接口、串行接口和中断系统等几大单元及数据总线、地址总线和控制总线等三大总线,现在我们分别加以说明:
中央处理器:
中央处理器(CPU)是整个单片机的核心部件,是8位数据宽度的处理器,能处理8位二进制数据或代码,CPU负责控制、指挥和调度整个单元系统协调的工作,完成运算和控制输入输出功能等操作。
数据存储器(RAM):
8051内部有128个8位用户数据存储单元和128个专用寄存器单元,它们是统一编址的,专用寄存器只能用于存放控制指令数据,用户只能访问,而不能用于存放用户数据,所以,用户能使用的RAM只有128个,可存放读写的数据,运算的中间结果或用户定义的字型表。
程序存储器(ROM):
8051共有4096个8位掩膜ROM,用于存放用户程序,原始数据或表格。 定时/计数器(ROM):
8051有两个16位的可编程定时/计数器,以实现定时或计数产生中断用于控制程序转向。
并行输入输出(I/O)口:
- 3 -
8051共有4组8位I/O口(P0、 P1、P2或P3),用于对外部数据的传输。 全双工串行口:
8051内置一个全双工串行通信口,用于与其它设备间的串行数据传送,该串行口既可以用作异步通信收发器,也可以当同步移位器使用。
中断系统:
8051具备较完善的中断功能,有两个外中断、两个定时/计数器中断和一个串行中断,可满足不同的控制要求,并具有2级的优先级别选择。
时钟电路:
8051内置最高频率达12MHz的时钟电路,用于产生整个单片机运行的脉冲时序,但8051单片机需外置振荡电容。
单片机的结构有两种类型,一种是程序存储器和数据存储器分开的形式,即哈佛(Harvard)结构,另一种是采用通用计算机广泛使用的程序存储器与数据存储器合二为一的结构,即普林斯顿(Princeton)结构。INTEL的MCS-51系列单片机采用的是哈佛结构的形式,而后续产品16位的MCS-96系列单片机则采用普林斯顿结构。
89C52内部有128个8位用户数据存储单元和128个专用寄存器单元,它们是统一编址的,专用寄存器只能用于存放控制指令数据,用户只能访问,而不能用于存放用户数据,所以,用户能使用的RAM只有128个,可存放读写的数据,运算的中间结果或用户定义的字型表。
程序存储器(ROM):
8051共有4096个8位掩膜ROM,用于存放用户程序,原始数据或表格。
- 4 -
定时/计数器(ROM):
8051有两个16位的可编程定时/计数器,以实现定时或计数产生中断用于控制程序转向。
并行输入输出(I/O)口:
8051共有4组8位I/O口(P0、 P1、P2或P3),用于对外部数据的传输。 1.2技术指标
设计一个十字路口的交通灯控制电路,每条道路上各配有一组红、黄、绿交通信号灯,其中红灯亮,表示该道路禁止通行;黄灯亮表示该道路上未过停车线的车辆禁止通行,已过停车线的车辆继续通行;绿灯表示该道路允许通行该电路自动控制十字路口两组红、黄、绿交通灯的状态转换。
图1.1十字路交通灯控制
- 5 -
- 6 -
第二章 课程设计分析设计
实现红、绿、黄灯的循环控制。要实现此功能需要表示三种不同颜色的LED灯分别接在P1个管脚,用软件实现。
要求东西车道和南北车道上的车辆交替运行,每次通行时间为20s; 要求黄灯先亮5秒种,才能变换车道; 黄灯亮时要求每秒闪亮一次; 要求绘出原理图;
根据设计要求和技术指标设计好电路;
- 7 -
- 8 -
第三章 绘制硬件图并对硬件电路进行说明
3.1STC89C52RC单片机内部结构
在STC系列单片机中,有2个系列:子51系列和52子系列。每个系列有若干种型号。52系列有8051、8751、8031、87C51、和80C31。
我们以STC89C52RC为例来介绍其结构和功能。STC89C52RC的内部结构框图如下:
图3.1 STC89C52RC单片机内部结构
分析上图,并按其功能部件划分可以看出,STC89C52RC系列单片机是由8大部分组成的。这8大部分是:
1.一个8位中央处理器CPU(有成为微处理器)
CPU的内部结构是有运算器和控制器组成,是单片机的核心部件。其中包括算术逻辑运算单元、ALU、累加器ACC、程序状态字寄存器PSW、堆栈指针SP、
- 9 -
寄存器SP、寄存器B、程序计数器(指令指针)PC、指令寄存器IR、暂存器等部件。
2.128个字节的片内数据存储器RAM 片内数据存储器用于存放数据、运算结果。 3.4KB的片内程序存储器ROM或EPROM
用于存放程序、原始数据和表格。现在的改进产品里一般都换成了Flash存储器。
4.18个特殊功能寄存器SFR。
CPU内部包含了一些外围电路的控制寄存器、状态寄存器以及数据输入/输出寄存器,这些外围电路的寄存器构成了CPU内部的特殊功能寄存器。18个特殊功能寄存器SFR有3个是16位的,共占了21个字节。
5.4个8位并行输入输出I/O接口。
P0口、P1口、P2口、P3口(共32线),用于并行输入或输出数据。 6.1个串行I/O接口,完成单片机与其他微机之间的串行通信 。 7.2个16位定时器/计数器T0、T1。
8.一个具有5个(52子系列为6个或7个)中断源,2 个可编程优先级的中断系统。 它可以接收外部中断申请、定时器/计数器中断申请和串行口终端申请。
- 10 -
3.2STC89C52RC单片机芯片引脚位置及功能符号
图 3.2 STC89C52RC单片机芯片引脚位置
STC89C52RC系统的引脚说明:
STC89C52RC系列单片机中的8031、8051及8751均采用40Pin封装的双列直接DIP结构,图二是它们的引脚配置,40个引脚中,正电源和底线两根,外置石英振荡器的时钟线两根,4组8位共32个I/O口,中断口线与P3口线复用。
8951的复位方式可以自动复位,也可以是手动复位。除此之外,RESET/Vpd还是一复用脚,Vcc掉电其间,此脚可以接上没用电源,以保证单片机内部RAM的数据不丢失。在编程时,EA/Vpp脚还需加上21V的编程电压。
- 11 -
- 12 -
第四章 绘制软件流程图并对软件流程图进行说明
4.1软件设计
先了解实际交通灯的变化规律,假设一个十字路口为东西南走向。初始状态0为东西红灯,南北红灯;然后转状态1南北绿灯通车,东西红灯。过一段时间转状态2,南北绿灯闪几次转黄灯,延时几秒,东西仍然红灯。再转状态3,东西绿灯通车,南北红灯。过一段时间转状态4,东西绿灯闪几次转亮黄灯,延时几秒,南北仍然红灯,最后回到状态1,不断循环。
(1)当东西方向为红灯,此道车辆禁止通行,东西道行人可通过;南北道为绿灯,此道车辆通过,行人禁止通行。时间为20秒。
(2)黄灯闪烁5秒,警示车辆和行人红、绿灯的状态即将切换。
(3)当东西方向为绿灯,此道车辆通行;南北方向为红灯,南北道车辆禁止通过,行人通行。时间为20秒。 东西方向车流大 通行时间长。
(4)这样如上表的时间和红、绿、黄出现的顺序依次出现这样行人和车辆就能安全畅通的通行。
- 13 -
4.2主程序流程图
图4.1程序流程图
- 14 -
第五章 总结与致谢
5.1总结
通过这次单片机课程设计,加强了我动手、思考和解决问题的能力。巩固了数字逻辑电路的理论知识,并对芯片有了新的认识,充分了解它的功能。更为重要的是如何将逻辑电路灵活运用于实际生活。我深知做课程设计的同时也是对课本知识的巩固和加强,平时看课本时,有些问题老是弄不懂,做完课程设计之后那些问题就迎刃而解了。而且还记住很多东西。
通过本次课程设计使我自身的动手能力得到了很大的提高,使我走出了实践的盲区,为以后的毕业设计及工作后的动手打下了坚实的基础。 5.2致谢
最后感谢学院为我们提供了难得的机会。最为感谢的是许老师和同学们给予的帮助和鼓励!实践是认知的动力和学习的最终目的。实践是检验真理的唯一标准。因此一个小小的课程设计,对我们的影响是巨大的。对于我们来说,它是一笔人生的财富。
- 15 -
- 16 -
参考文献
[1]周 坚.单片机项目教程.北京:北京航空航天大学出版社,2008
[2]胡 健.单片机原理与接口技术实践教程.北京:机械工业出版社,2004 [3]胡汉才.单片机原理及系统设计.北京:清华大学出版社,2002 [4]朱承高.电工及电子技术手册[M].北京:高等教育出版社,1990 [5]姜武中.单片机原理与接口技术.大连:大连理工大学出版社,2002
- 17 -
- 18 -
附录
附录A程序的源代码
#include sbit D1=P2^1; //led灯引脚定义 sbit D2=P2^3; sbit D3=P2^2; sbit LS138A=P2^4; //数码管引脚定义 sbit LS138B=P2^5; sbit LS138C=P2^6; void delay(unsigned inti); unsigned char aa,num,num1,a; unsigned intLedOut[2]; unsigned char code Disp_Tab[] = {0xc0,0xf9,0xa4,0xb0,0x99, 0x92,0x82,0xf8,0x80,0x90}; //0~9数模 void main() { unsigned char i; TMOD=0x01,TH0=0x3c, TL0=0xb0, EA=1; //定时器初始化(50ms中断一次) ET0=1; TR0=1; - 19 - num = 40; D1=0;D2=0;D3=1; //led灯初始化 while(1) { num1=num/2; LedOut[0]=Disp_Tab[num1/10]; LedOut[1]=Disp_Tab[num1%10]; for( i=0; i<2; i++) //实现8位动态扫描循环 { P0 = LedOut[i]; //将字模送到P0口显示 switch(i) { case 0:LS138A=0; LS138B=0; LS138C=1; case 1:LS138A=0; LS138B=1; LS138C=0; } delay(10); } } } void timer0(void) interrupt 1 { TH0=0x3c,TL0=0xb0; - 20 - break; break; aa++; if(aa == 10) { //如果到了0.5s aa = 0; num--; if(num<= 6) D1 = ~D1; //黄灯闪烁 else if(a==2&&num==39) //变量a是控制不能重复这个 通道 { D1 = 0; //关闭黄灯. D2 = 0; //关闭红灯. D3 = 1; //打开绿灯. a=0; } if(num == 0) { D1 = 0; //关闭黄灯. D2 = 1; //打开红灯. D3 = 0; //关闭绿灯. num = 40; //开始20s倒计时. a++; } - 21 - } } /********************************************************** 延时程序 **********************************************************/ void delay(unsigned inti) { char j; for(i; i> 0; i--) for(j = 200; j > 0; j--); } - 22 - 附录B实物图 - 23 - 因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- xiaozhentang.com 版权所有 湘ICP备2023022495号-4
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务