为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

基于单片机的交通信号灯设计

2020-03-08 38页 doc 79KB 12阅读

用户头像

is_574951

暂无简介

举报
基于单片机的交通信号灯设计毕  业  论  文 题目:基于单片机的交通信号灯设计 姓名: 专业: 设计要求及实现功能,用51单片机实现一个模拟交通信号灯系统。 (1)右转灯设置为绿灯常亮,直行灯和左转灯为红、绿、黄,三灯转换。绿灯时间设置为30秒 黄灯为3秒,然后是红灯。 (2)要求数码管能以倒计时的方式,显示距离下一次红灯或绿灯的时间(黄灯3秒包括其中)。 (3)设置紧急手动控制模式,既紧急南北绿灯 和 紧急东西绿灯。 硬件设计 根据课题要求和实现功能,本人选用了AT89C51单片机。 单片机的简介  单片机是一种集成在电路芯片,是采用超大规模...
基于单片机的交通信号灯设计
毕  业  论  文 目:基于单片机的交通信号灯 姓名: 专业: 设计要求及实现功能,用51单片机实现一个模拟交通信号灯系统。 (1)右转灯设置为绿灯常亮,直行灯和左转灯为红、绿、黄,三灯转换。绿灯时间设置为30秒 黄灯为3秒,然后是红灯。 (2)要求数码管能以倒计时的方式,显示距离下一次红灯或绿灯的时间(黄灯3秒包括其中)。 (3)设置紧急手动控制模式,既紧急南北绿灯 和 紧急东西绿灯。 硬件设计 根据课题要求和实现功能,本人选用了AT89C51单片机。 单片机的简介  单片机是一种集成在电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计时器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的计算机系统。  单片机是一种集成电路芯片,采用超大规模技术把具有数据处理能力(如算术运算,逻辑运算、数据传送、中断处理)的微处理器(CPU),随机存取数据存储器(RAM),只读程序存储器(ROM),输入输出电路(I/O口),可能还包括定时计数器,串行通信口(SCI),显示驱动电路(LCD或LED驱动电路),脉宽调制电路(PWM),模拟多路转换器及A/D转换器等电路集成到一块单块芯片上,构成一个最小然而完善的计算机系统.这些电路能在软件的控制下准确、迅速、高效地完成程序设计者事先规定的任务.   由此来看,单片机有着微处理器所不具备的功能,它可单独地完成现代工业控制所要求的智能化控制功能,这是单片机最大的特征.   然而单片机又不同于单板机,芯片在没有开发前,它只是具备功能极强的超大规模集成电路,如果赋予它特定的程序,它便是一个最小的、完整的微型计算机控制系统,它与单板机或个人电脑(PC机)有着本质的区别,单片机的应用属于芯片级应用,需要用户了解单片机芯片的结构和指令系统以及其它集成电路应用技术和系统设计所需要的理论和技术,用这样特定的芯片设计应用程序,从而使该芯片具备特定的功能.   不同的单片机有着不同的硬件特征和软件特征,即它们的技术特征均不尽相同,硬件特征取决于单片机芯片的内部结构,用户要使用某种单片机,必须了解该型产品是否满足需要的功能和应用系统所要求的特性指标.这里的技术特征包括功能特性、控制特性和电气特性等等,这些信息需要从生产厂商的技术手册中得到.软件特征是指指令系统特性和开发支持环境,指令特性即我们熟悉的单片机的寻址方式,数据处理和逻辑处理方式,输入输出特性及对电源的要求等等.开发支持的环境包括指令的兼容及可移植性,支持软件(包含可支持开发应用程序的软件资源)及硬件资源.要利用某型号单片机开发自己的应用系统,掌握其结构特征和技术特征是必须的.   单片机控制系统能够取代以前利用复杂电子线路或数字电路构成的控制系统,可以软件控制来实现,并能够实现智能化,现在单片机控制范畴无所不在,例如通信产品、家用电器、智能仪器仪表、过程控制和专用控制装置等等,单片机的应用领域越来越广泛.   诚然,单片机的应用意义远不限于它的应用范畴或由此带来的经济效益,更重要的是它已从根本上改变了传统的控制方法和设计思想.是控制技术的一次革命,是一座重要的里程碑.   1946年第一台电子计算机诞生至今,只有50年的时间,依靠微电子技术和半导体技术的进步,从电子管——晶体管——集成电路——大规模集成电路,现在一块芯片上完全可以集成几百万甚至上千万只晶体管,使得计算机体积更小,功能更强.特别是近20年时间里,计算机技术获得飞速的发展,计算机在工农业,科研,教育,国防和航空航天领域获得了广泛的应用,计算机技术已经是一个国家现代科技水平的重要标志.   单片机诞生于20世纪70年代,象Fairchid公司研制的F8单片微型计算机.所谓单片机是利用大规模集成电路技术把中央处理单元(Center Processing Unit,也即常称的CPU)和数据存储器(RAM)、程序存储器(ROM)及其他I/O通信口集成在一块芯片上,构成一个最小的计算机系统,而现代的单片机则加上了中断单元,定时单元及A/D转换等更复杂、更完善的电路,使得单片机的功能越来越强大,应用更广泛.   20世纪70年代,微电子技术正处于发展阶段,集成电路属于中规模发展时期,各种新新工艺尚未成熟,单片机仍处在初级的发展阶段,元件集成规模还比较小,功能比较简单,一般均把CPU、RAM有的还包括了一些简单的I/O口集成到芯片上,象Farichild公司就属于这一类型,它还需配上外围的其他处理电路方才构成完整的计算系统.类似的单片机还有Zilog公司的Z80微处理器.   1976年INTEL公司推出了MCS-48单片机,这个时期的单片机才是真正的8位单片微型计算机,并推向市场.它以体积小,功能全,价格低赢得了广泛的应用,为单片机的发展奠定了基础,成为单片机发展史上重要的里程碑.   在MCS-48的带领下,其后,各大半导体公司相继研制和发展了自己的单片机,象Zilog公司的Z8系列.到了80年代初,单片机已发展到了高性能阶段,象INTEL公司的MCS-51系列,Motorola公司的6801和6802系列,Rokwell公司的6501及6502系列等等,此外,日本的著名电气公司NEC和HITACHI都相继开发了具有自己特色的专用单片机.   80年代,世界各大公司均竞相研制出品种多功能强的单片机,约有几十个系列,300多个品种,此时的单片机均属于真正的单片化,大多集成了CPU、RAM、ROM、数目繁多的I/O接口、多种中断系统,甚至还有一些带A/D转换器的单片机,功能越来越强大,RAM和ROM的容量也越来越大,寻址空间甚至可达64kB,可以说,单片机发展到了一个全新阶段,应用领域更广泛,许多家用电器均走向利用单片机控制的智能化发展道路.   1982年以后,16位单片机问世,代表产品是INTEL公司的MCS-96系列,16位单片机比起8位机,数据宽度增加了一倍,实时处理能力更强,主频更高,集成度达到了12万只晶体管,RAM增加到了232字节,ROM则达到了8kB,并且有8个中断源,同时配置了多路的A/D转换通道,高速的I/O处理单元,适用于更复杂的控制系统.   九十年代以后,单片机获得了飞速的发展,世界各大半导体公司相继开发了功能更为强大的单片机.美国Microchip公司发布了一种完全不兼容MCS-51的新一代PIC系列单片机,引起了业界的广泛关注,特别它的产品只有33条精简指令集吸引了不少用户,使人们从INTEL的111条复杂指令集中走出来.PIC单片机获得了快速的发展,在业界中占有一席之地. AT89C51单片机介绍: 1. 电源引脚:连接电源 Vcc(40脚)  电源正极  Vss(20脚) 电源负极 2. 时钟引脚 :连接时钟电路 XTAL1(19脚):输入引脚 XTAL2(18脚):输出引脚 3. 复位引脚:连接复位电路 RST/VPD(9脚):复位引脚 4. 控制引脚:辅助控制作用 PSEN(29脚) ALE/PROG(30脚) EA / VPP(31脚):接高电平 5. I/O端口引脚:用来连接单片机和外部设备,实现数据的输入/输出 P0.0----P0.7(39-32脚)  8位双向I/O口线 P1.0----P1.7(1-8脚)    8位准双向I/O口线 P2.0----P2.7(21-28脚) 8位准双向I/O口线 P0.0----P3.7(10-17脚)  8位准双向I/O口线 单片机工作条件: 要使单片机工作起来,最基本的条件是 1. 电源电路,向单片机供电 AT89C51单片机的工作电压范围:4.0V—5.5V所以通常给单片机外接5V直流电源 既:VCC40脚: +5V  Vss(20)脚:接地 2. 时钟电路:单片机工作的时间基准,决定单片机的工作速度 AT89C51单片机的时钟频率范围:0-33MHz XTAL1(19脚) XTAL2(18脚 接晶振,C1 C2电容起稳定作用 注意:因为本设计使用的是12MHz频率的晶振 晶振频率=12MHz 振荡频率=12MHz 振荡周期=1/12us 机器周期= 振荡周期*12=  1/12us*12  =1us 3. 单片机复位电路 复位电路产生复位信号,使单片机从固定的起始状态开始工作,完成单片机的“启机”过程。 51单片机复位只需要在RST/VPD(9脚)接高电平持续2us就可以实现。 如上图 分别为 上电复位电路、手动复位电路和复合复位电路 以图3复合复位电路来讲解单片机的复位原理 自动复位 在电路图中,电容的的大小是10uf,电阻的大小是10k。所以根据公式,可以算出电容充电到电源电压的0.7倍(单片机的电源是5V,所以充电到0.7倍即为3.5V),需要的时间是10K*10UF=0.1S。也就是说在电脑启动的0.1S内,电容两端的电压时在0~3.5V增加。这个时候10K电阻两端的电压为从5~1.5V减少(串联电路各处电压之和为总电压)。所以在0.1S内,RST引脚所接收到的电压是5V~1.5V。在5V正常工作的51单片机中小于1.5V的电压信号为低电平信号,而大于1.5V的电压信号为高电平信号。所以在开机0.1S内,单片机系统自动复位(RST引脚接收到的高电平信号时间为0.1S左右)。 按键复位 在单片机启动0.1S后,电容C两端的电压持续充电为5V,这是时候10K电阻两端的电压接近于0V,RST处于低电平所以系统正常工作。当按键按下的时候,开关导通,这个时候电容两端形成了一个回路,电容被短路,所以在按键按下的这个过程中,电容开始释放之前充的电量。随着时间的推移,电容的电压在0.1S内,从5V释放到变为了1.5V,甚至更小。根据串联电路电压为各处之和,这个时候10K电阻两端的电压为3.5V,甚至更大,所以RST引脚又接收到高电平。单片机系统自动复位。 信号灯接法: P0 接口的0-7 ,P2口的 0-3口。 共12个接口,接12个LED灯。 它们是 南北直行 红、黄、绿P0^0, P0^1, P0^2 南北左转 红、黄、绿P0^3, P0^4, P0^5 东西直行 红、黄、绿P0^6, P0^7, P2^0 东西左转 红、黄、绿P2^1, P2^2, P2^3 由于P0口没有内置上拉电阻,所以接了一个 排阻 阻止为1K,LED发光二极管导通压降为1.7V 发光二极管工作在3mA-10mA之间, 既(5V-1.7V)/1K欧姆=3.3mA ,在正常工作范围内。 数码管接法 数码管分 共阴和共阳数码管,本设计采用的是共阴数码管(发光二极管的阴极共同连接在一起)。 如图所示,共阴极数码管,内部由八个发光二极管组成: a b c d e f g h(dp) 根据要显示的内容,点亮所需的二极管,如显示数字“7” 既 a b c 输入高电平,公共端 输入低电平 即可。 共阴极二极管显示数字0-9 编码如下 0  1  2    3    4    5    6    7  8  9 0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F 本设计中用到8个2位数码管,直行 4个 左转4个,数码管段选(数码管内每个二极管的控制)由 P1端口控制,控制数码管内的二极管,位选(公共端),由P2口(P2.4-P2.7) 和P3口(P3.0-P3.3) 八个I/O口控制。 数码光动态扫描 如图显示的 3 2 9 8 四个数字 其实程序设计的时候,是 第一个 显示3 然后灭掉 第二个显示2 然后灭点 第三个显示9 然后灭点 第四个显示 8 然后灭掉。以非常快的速度这样显示,在我们看来就感觉四个数字是同时点亮的,这就是由于人眼具有一定的“视觉残留”,只要延时时间设置恰当,便会感觉到多位数码管同时被点亮。 程序设计: 本程序设计 要考虑多方面的因素 1. 信号灯(发光二极管)由时间变化而转换 2. 数码管也要随时变化 这都要用到 单片机内部的定时器,才能准确显示和变化。 信号灯设计 信号灯亮灭顺序 初始化  南北直行绿灯30秒 然后 黄灯3秒(黄灯1秒1次闪烁),33秒后南北直行变红灯 同时 南北左转变绿灯30秒 接着3秒黄灯 66秒后接着南北左转变红灯,同时东西直行变绿灯30秒 接着3秒黄灯,99秒后东西直行红灯,同时东西左转绿灯30秒 接着3秒黄灯。 整个轮回共用时132秒。 主循环时序图 上图是根据信号灯变换顺序制作的 信号灯时间轴图 如图所示;信号灯会在 这8个时间段变换,用程序将这八个时间段的信号灯状态装入程序,即可完成实现。 关于定时功能 由于8051单片机的定时器/计数器使用的时钟脉冲是外部晶振(12MHZ)经过12分频(12MHZ/12=1MHZ)之后的频率,所以,一个时钟脉冲就是1微秒;所以,8192个脉冲=8192微秒=8.192毫秒; 65536个脉冲=65536微秒=65.536毫秒; 256个脉冲=256微秒=0.256毫秒; 我们用给定时器设置初值的方式是线计时。 TH0=(65536-50000)/256; TL0=(65536-50000)%256; 这样计时器每计满一次就是50ms , 20次就是一秒。设置两个变量 time 判断是否计满20次,S用来累加共走了多少秒。 数码管显示 本设计数码管 的数字显示表示该方向离下一次变红或变绿还差多少秒。 如图所示  南北直行灯 33秒表示 离 绿灯变红灯还有33秒(30秒绿灯+3秒闪烁黄灯) 东西左转灯99秒表示离红灯转绿灯还差99秒(96秒红灯+3秒闪烁黄灯) 结合 上面的信号灯时间轴图,以南北直行灯为例,实现数码管倒计时显示。 1. 开机即可显示 33秒倒计时(30秒绿灯+3秒黄灯灯) 2. 当S>33时,显示 99秒倒计时(96秒红灯+3秒黄灯) 3. 由于信号灯是数码管是同步进行的,所以当时间S=132时,再重新赋值S==0;实现循环。 紧急通行设置 定义 南北通行绿灯状态 和 东西通行绿灯状态 ,当P3.4 和P3.5变低电平时 启动 完整的proteus仿真图 结论 本次设计利用AT89C51单片机完成了城市道路交通信号灯控制系统的设计。 使用单片机作为控制系统的核心元件,使得电路控制具有较高的可靠性,功能相对较完善,且具有较大的升级空间。  本次设计可适用于十字路口的车辆和行人的交通管理,通过数码管显示红绿灯倒计时时间更加直观便捷,通过串口与上位机进行通信可以修改红绿灯的倒计时时间,从而适应不同的路况。在现在这个车辆不断增加,城市化进程不断加快的状况下,此交通信号灯控制系统对于交通管理、缓解和疏导交通堵塞具有十分现实且重要的意义。  在本次设计,我发现很多的问题,有很多看似简单的问题其实并没有想象中那么简单,而这一切都需要用实践去检验。同时,通过本次毕业设计,巩固了我所学习过的专业知识,也使我们把理论与实践从真正意义上相结合了起来;考验了我们借助互联网络搜集、查阅相关文献资料和组织材料的综合能力;从中可以自我测验,认识到自己哪方面有欠缺、不足,以便于在日后的学习中得以改进、提高;通过使用proteus,  也让我们了解到计算机辅助仿真的智能化,有利于提高工作效率。总之,此次设计的过程中,我收获了很多。此次设计的完成对我未来的人生之路有着非常重要的意义。 参考文献: [1]谭浩强 C程序设计第三版 [2]张毅刚 单片机原理及应用 [3]郭天祥 51单片机 C语言教程 [4]童诗白 华成英 模拟电子技术基础 [5]阎石 王红 数字电子技术基础 附加程序 附加 程序代码: #include #define uchar unsigned char #define uint unsigned int sbit LED1=P0^0;//LED1-LED12  12个信号灯 sbit LED2=P0^1; sbit LED3=P0^2; sbit LED4=P0^3; sbit LED5=P0^4; sbit LED6=P0^5; sbit LED7=P0^6; sbit LED8=P0^7; sbit LED9=P2^0; sbit LED10=P2^1; sbit LED11=P2^2; sbit LED12=P2^3; sbit dongxi=P3^7;//紧急东西控制端 sbit nanbei=P3^6;//紧急南北控制端 sbit W1=P2^4;//4个2位数码管的位选 sbit W2=P2^5; sbit W3=P2^6; sbit W4=P2^7; sbit W5=P3^0; sbit W6=P3^1; sbit W7=P3^2; sbit W8=P3^3; uchar code table[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F}; uint time; uchar s,a,y; void chushihua()//设置上电初始信号灯状态 { if(s==0) { LED1=1; LED2=1; LED3=0; LED4=0; LED5=1; LED6=1; LED7=0; LED8=1; LED9=1; LED10=0; LED11=1; LED12=1;                } } void delay(uchar k)//定义延时函数用于数码管动态扫描 { for(k;k>0;k--) for(y=50;y>0;y--); } void normal()//定义正常模式 { if(time==20) {    time=0; s++; if(s<=30)//0~30秒 { LED1=1; LED2=1; LED3=0; LED4=0; LED5=1; LED6=1; LED7=0; LED8=1; LED9=1; LED10=0; LED11=1; LED12=1;            } else if(s<=33)//30~33秒 { LED1=1; LED2=~LED2; LED3=1; LED4=1; LED5=~LED5; LED6=1; LED7=0; LED8=1; LED9=1; LED10=0; LED11=1; LED12=1; } else    if(s<=63)//33~63秒 {                    LED1=0; LED2=1; LED3=1; LED4=1; LED5=1; LED6=0; LED7=0; LED8=1; LED9=1; LED10=0; LED11=1; LED12=1; } else    if(s<=66)//63~66秒 { LED1=0; LED2=1; LED3=1; LED4=1; LED5=~LED5; LED6=1; LED7=1; LED8=~LED8; LED9=1; LED10=0; LED11=1; LED12=1; } else if(s<=96)//66~96秒 { LED1=0; LED2=1; LED3=1; LED4=0; LED5=1; LED6=1; LED7=1; LED8=1; LED9=0; LED10=0; LED11=1; LED12=1; } else if(s<=99)//96~99秒 { LED1=0; LED2=1; LED3=1; LED4=0; LED5=1; LED6=1; LED7=1; LED8=~LED8; LED9=1; LED10=1; LED11=~LED11; LED12=1; } else if(s<=129)//99~129秒 { LED1=0; LED2=1; LED3=1; LED4=0; LED5=1; LED6=1; LED7=0; LED8=1; LED9=1; LED10=1; LED11=1; LED12=0; } else if(s<=132)//129~132秒 { LED1=1; LED2=~LED2; LED3=1; LED4=0; LED5=1; LED6=1; LED7=0; LED8=1; LED9=1; LED10=1; LED11=~LED11; LED12=1; }                } } void smg1(uchar ds)//南北左转个位十位赋值 { W1=0; P1=table[(ds-s)/10]; delay(a); W1=1; W2=0; P1=table[(ds-s)%10]; delay(a); W2=1; } void smg2(uchar ds)//南北直行个位十位赋值 { W3=0; P1=table[(ds-s)/10]; delay(a); W3=1; W4=0; P1=table[(ds-s)%10]; delay(a); W4=1; } void smg3(uchar ds)//东西左转个位十位赋值 { W5=0; P1=table[(ds-s)/10]; delay(a); W5=1; W6=0; P1=table[(ds-s)%10]; delay(a); W6=1; } void smg4(uchar ds)//东西直行个位十位赋值 { W7=0; P1=table[(ds-s)/10]; delay(a); W7=1; W8=0; P1=table[(ds-s)%10]; delay(a); W8=1; }    void xianshi1() { if (s<=33)  //南北左转 { smg1(34); } else if(s<=66) { smg1(67); } else smg1(164);    if(s<=33)//南北直行 { smg2(34); } else smg2(133); if(s<=99)//东西左转    { smg3(100); } else smg3(133); if(s<=66)//东西直行 { smg4(67); } else if(s<=99) { smg4(100); } else smg4(199); if(s==133) s=0; } void main() { TMOD=0X01; TH0=(65536-50000)/256; TL0=(65536-50000)%256; EA=1; ET0=1; TR0=1; //定义十二个灯初始状态 s=0; a=20; while(1) { if(nanbei==0&&dongxi==1)//紧急南北通行 { LED1=1; LED2=1; LED3=0; LED4=1; LED5=1; LED6=0; LED7=1; LED8=1; LED9=1; LED10=1; LED11=1; LED12=1; } else if(nanbei==1&&dongxi==0)//紧急东西通行 { LED1=1; LED2=1; LED3=1; LED4=1; LED5=1; LED6=1; LED7=1; LED8=1; LED9=0; LED10=1; LED11=1; LED12=0; } else    //正常模式 {chushihua(); //初始化 normal();//信号灯显示 xianshi1();    }//数码管显示 } } void T0_time(void)interrupt 1 { TH0=(65536-50000)/256; TL0=(65536-50000)%256; time++;//一次50ms  20次位1秒 }
/
本文档为【基于单片机的交通信号灯设计】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索