1、6、软件框图.87、程序及其清单.9五、调试与运行.11六、参考资料及参考文献.11七、心得体会.12一、摘要在日常生活中,交通灯作为管理交通、调协车辆的一个便捷的手段,起着很大的作用。各种交通工具、行人都要根据交通灯的变化来决定是否前行,通行的时间的规定协调了它们的步伐,极大的减少了由于交通混乱引起的各种事故的发生。因此,一个完善的交通系统中,交通灯是必不可少的设备,一个完善的交通灯程序会更有效的管理当前道路中出现的实际情况,使车辆、行人的行进变得更顺畅、更和谐。信号灯的出现,使交通是得以有效管制,对于疏导交通流量、提高道路通行能力,减少交通事故有明显效果。1986年,联合国道路交通和道路标
2、志信号协定对各种信号灯的含义做了规定。绿灯是通行信号,面对绿灯的车辆可以直行,左转弯和右转弯。左右转弯的车辆都必须让合法的正在路口内行驶的车辆和过人行横道的行人优先通行。红灯是禁行信号,面对红灯的车辆必须在交叉路口的停车线后停车。黄灯是警告信号。近年来随着科技的发展,单片机的应用正在不断地走向深入。二、任务分析与设计思路1、任务分析:本次设计要求:运用所学单片机原理、模拟和数字电路等方面的知识,设计出一台交通信号灯,模拟路口交通信号。交通灯要求如下: 1)交通信号灯能够控制东西、南北两个方向的交通,红绿黄灯用对应颜色的发光二极管代替; 2)用四个2位数码管分别显示东、南、西、北方向的通行时间,
3、东西或南北通行时间为25秒,红绿灯切换中间黄灯闪烁5秒。目前,我们接触到的交通灯都位于十字路口,假设实际情况为东西南北走向的十字路口,如下图:东西南北各三盏灯,每三盏分别为红、黄、绿三种颜色,总共十二盏灯,而实际情况下,东西方向灯亮灭一致,南北方向灯亮灭一致,故只需要按东西为一组,南北为一组,两组交错亮灭来设计控制系统,即可达到交通灯系统的控制目的。根据以上分析那么只需要控制东南或者西北六盏灯亮灭规律就能实现控制,另外两组对应一致就行了。根据设计要求,要求东西或者南北通行25秒,红绿灯切换中间黄灯闪烁5秒。那么要求绿灯亮放行,放行线,绿灯持续亮(通行时间)25秒,黄灯亮(警告提醒时间)5秒,红
4、灯亮禁止通行,禁止线,为了简化设计,也为25秒。切换过程东西南北均为黄灯闪烁。2、设计思路基于完成以上任务分析,结合所学有关知识,尤其是本学期所学关于单片机的中断系统和定时/计数器的相关知识及应用,我们知道对于红、绿、黄两组各三盏灯的控制,可以通过把这六盏灯分别接到单片机的六个输出引脚,若用P1口进行输出,则分配如下: AT89C51P1.0 P1.1 P1.2 P1.3 P1.4 P1.5 L1 L2 L3 L4 L5 L6(东西红) (东西黄) (东西绿) (南北红) (南北黄) (南北绿) LED显示分布 通过对P1口P0P5编程从而实现控制。而时间的各盏灯的熄灭时间的延时情况,则用定时
5、/计数和中断结合应用实现控制。 而输出的时间显示则每个方向分别用两个发光二极管显示,十位接在P0口,个位接在P2口,对P0口P2口编程即可实现控制。三、总体设计1、单片机内部资源分布图:2、硬件原理框图: 交 通 灯时 钟 电 路 LED 数 码 管振 荡 电 路上 电 复位 电 路3、软件结构图:3、软件结构框图: 主 程 序显示子程序调用 实现 功能模块4、软硬件分工 硬件实现实物连接,软件与硬件连接相对应,通过编写程序,使硬件实现期望的功能。说的形象些,软件相当于其内在本质功能,而硬件是将该功能表现出来,让人们可见罢了。3、详细设计本设计使用的单片机为AT89C51。AT89C51是带有
6、4K字节闪存的低电压高性能微处理器。其主要特性:与MCS-51 兼容 1、工作电压5V 2、工作频率范围:024MHZ 3、应用程序空间:4K字节 4、RAM:256字节 5、4个8位并行I/O接口 6、2个16位定时器/计数器 7、5个中断源 8、用单一+5v电源 9、片内振荡器和时钟电路 10、低功耗的闲置和掉电模式1、设计电路: 设计电路主要由两部分组成,一部分为P1口与十二个发光二极管连接电路,另一部分是P0、P2口与八个七段显示器相连的电路,下面分别详细说明。2、交通灯电路: 设计中采用发光二极管作为交通灯来使用,单片机的I/O接口直接和交通灯(发光二极管)连接。在十字路口的四组红、
7、黄、绿三色交通灯中,东西方向道路上的两组同色灯连接在一起,南北方向道路上的两组同色的灯也彼此连接在,受单片机P1.0P1.5控制。单片机的I/O接口与交通灯电路的具体连接方式为:P1.0P1.2分别接东西方向的红、黄、绿共6个放光二极管,P1.3P1.5分别接南北方向的红、黄、绿共6个发光二极管。12个发光二极管采用了共阳极的连接方式,因此I/O口输出低电平时,与之相连的发光二极管会亮,I/O口输出高电平时,相应的发光二极管会灭。交通灯电路如图所示3、倒计时显示电路: 该显示装置选用七段数码管来显示交通灯转换的剩余时间,根据控制要求,每个路口需要两个数码管,这样四个路口就要求八个数码管。有序A
8、T89C51单片机的I/O作为输出时,具有较强吸收电流能力,因此我们可以选用共阳型数码管,这样由单片机的I/O就可以直接驱动,从而简化硬件电路的设计。四个路口倒计时显示被置在同一时刻显示相同的数字,期中P0口用来显示时间的十位,P2口用来显示时间的个位。电路如下图所示4、仿真电路及效果图:(1)仿真电路:(2)仿真效果:5、元件清单: 名称 件数 参数 选择理由 电阻810K 限流,以免烧坏数码管 发光二极管123色便于仿真显示14K闪存低电压,高性能八位微处理器七段显示数码管常用数字显示,便于仿真 开关3特殊情况使用6、软件框图(1)主程序流程图:东西红灯亮,南北绿灯亮(2)显示子程序流程图
9、:7、程序及注释 主程序:#includeintrins.habsacc.h#define uchar unsigned charsbit k1=P32。 /按键 sbit k2=P33。sbit k3=P34。sbit k4=P35。void display(uchar m,uchar f,uchar F1)。void keyscan()。uchar t,m,G1,g,o,f,M1,i,c,k1num,k2num。unsigned char code tab=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90。void Delay(unsign
10、ed char a)unsigned char i。while(-a!=0)for(i=0。i125。i+) 。void init()/初始化函数TMOD=0x01。 /设定定时器0工作方式为1TH0=(65536-46083)/256。 /高8位赋值TL0=(65536-46083)%256。/低8位赋值EA=1。 /开总中断ET0=1。/开定时器0中断TR0=1。/启动定时器0void main()init()。G1=20。g=10。o=5。M1=0。c=0 。while(1) keyscan()。 void keyscan() / K1键盘扫描函数 if(k2=0) Delay(5)。 k2num+。 while(!k2)。 if(k2num! switch(k2num) case 1: TR0=0。 P1=0xee。 P2=0x00。 。break。 case 2: TR0=1。 k2num=0。 else if(k1=0) if(k1=0) k1num+。k1)。 if(k1num! switch(k1num) case 1: /南北绿灯通行显示时间 TR0=0。 /允许计时器T0工作位,0停止工作 ,可以设置南北方向绿灯通行时间 if(k4=0) /可以设置南北方向绿灯通行时间
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1