基于单片机的交通灯显示系统的设计与研究.pdf
萍乡学院课程设计课程单片机课程设计题目交通灯系统院系机电系专业班级学生姓名学生学号指导教师2016 年 03 月 20 日目录目录摘要摘要交通在人们的日常生活中占有重要的地位,随着人们社会活动的日益频繁,这点更是体现的淋漓尽致。交通信号灯的出现,使交通得以有效管制,对于疏导交通流量、提高道路通行能力,减少交通事故有明显效果。本系统采用单片机 AT89C51 为中心器件来设计交通灯控制器,系统实用性强、操作简单、扩展强。本设计就是采用单片机模拟十字路口交通灯的各种状态显示以及倒计时时间。本设计系统由单片机,交通灯状态显示系统、LED 数码显示系统等几大部分组成。系统除基本的交通灯功能外,还具有倒计时、紧急情况处理等功能,较好的模拟实现了十字路口可能出现的状况。本系统采用单片机 C 语言编写,主要编写了主程序,LED 数码管显示程序等。总体上完成了软件的编写。关键词:交通灯;控制;关键词:交通灯;控制;AT89C51AT89C51;倒计时显示;倒计时显示引言引言近年来随着科技的飞速发展,单片机的应用正在不断地走向深入,同时带动传统控制检测日新月益更新。在实时检测和自动控制的单片机应用系统中,单片机往往是作为一个核心部件来使用,仅单片机方面知识是不够的,还应根据具体硬件结构,以及针对具体应用对象特点的软件结合,加以完善。交通信号灯的出现,使交通得以有效管制,对于疏导交通流量、提高道路通行能力,减少交通事故有明显效果交通信号灯在大多数城市得到了广泛的应用。传统的交通信号灯控制一般采用了电子线路和继电器控制,结构复杂,可靠性低,故障率高。本次设计是基于 AT89C51 单片机的交通灯控制系统,东西南北的通行时间可调,倒计时显示通行时间灯功能,该系统具有设计周期短、可靠性高维护方便、使用简单等优点。1.1.设计目的设计目的巩固和加深对单片机原理和接口技术知识的理解;培养根据课题需要选学参考书籍、查阅手册和文献资料的能力;学会方案论证的比较方法,拓宽知识,初步掌握工程设计的基本方法;掌握常用仪器、仪表的正确使用方法,学会软、硬件的设计和调试方法;能按课程设计的要求编写课程设计报告,能正确反映设计和实验成果,能用计算机绘制电路图和流程图。2.2.设计要求设计要求 1)东西干道和南北干道的通行分左行,右行,直行,其中左行,右行固定 15 秒;直行固定 30 秒。2)信号灯分绿灯,红灯,黄灯,每次绿灯换红灯时,黄灯亮 3 秒。3)东西干道和南北干道交替控制,每次干道绿灯交替时,有 3 秒钟所有干道的交通灯都是黄灯闪烁 3 秒钟,提示已经进入路口的车辆迅速通过。4)当遇到突发状况时,各个方向静止通行,显示红灯,并维持5秒倒计时。3.3.系统总体方案硬件设计系统总体方案硬件设计设计思想及总体设计设计思想及总体设计 1)分析目前交通路口的基本控制技术以及各种通行方案,并以此为基础提出自己的交通控制的初步方案。2)确定系统交通控制的总体设计,包括,十字路口具体的通行禁行方案设计以及系统应拥有的各项功能,在这里,本设计除了有信号灯状态控制能实现基本的交通功能,还增加了倒计时显示提示。3)进行显示电路,灯状态电路,按键电路的设计和各器件的选择及连接,大体分配各个器件及模块的基本功能要求。4)进行软件系统的设计,对于本系统,本人采用 C 语言编写,对单片机内部结构和工作情况做了充足的研究,了解定时器,中断以及延时原理,总体上完成了软件的设计。中 断 键复位电路单片机单片机LED 数码管显晶 振 电LED 指示灯图 1 系统框图硬件设计硬件设计 1)单片机选型:AT89C51与 MCS-51 单片机产品兼容,8k 字节在系统可编程 Flash 存储器,1000 次可檫写周期,全静态操作:0Hz33Hz,三级加密程序存储器,32 个可编程I/O 口线,三个 16 位定时器/计数器八个中断源、全双工 UART 串行通道、低功耗空闲和掉电模式、掉电后中断可唤醒、看门狗定时器、双数据指针、掉电标识符。功能特性描述:AT89C51 是一种低功耗、高性能CMOS8 位微控制器,具有 8K 在系统可编程 Flash 存储器。使用 Atmel 公司高密度非易失性存储器技术制造,与工业80C51 产品指令和引脚完全兼容。片上 Flash 允许程序存储器在系统可编程,亦适于常规编程器。在单芯片上,拥有灵巧的 8 位 CPU 和在系统可编程 Flash,使得 AT89C51 为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。AT89C51具有以下标准功能:8k 字节 Flash,256 字节 RAM,32 位 I/O 口线,看门狗定时器,2 个数据指针,三个 16 位 定时器/计数器,一个 6 向量 2级中断结构,全双工串行口,片内晶振及时钟电路。另外,AT89C51 可降至 0Hz 静态逻 辑操作,支持 2 种软件可选择节电模式。空闲模式下,CPU 停止工作,允许 RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM 内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。8 位微控制器 8K 字节在系统可编程 Flash AT89C52P0 口:P0 口是一个 8 位漏极开路的双向I/O 口。作为输出口,每位能驱动 8 个 TTL 逻辑电平。对 P0 端口写“1”时,引脚用作高阻抗输入。当访问外部程序和数据存储器时,P0 口也被作为低 8 位地址/数据复用。在这种模式下,P0 具有内部上拉电阻。在 flash 编程时,P0 口也用来接收指令字节;在程序校验时,输出指令字节。程序校验时,需要外部上拉电阻。P1 口:P1 口是一个具有内部上拉电阻的8 位双向 I/O 口,p1 输出缓冲器能驱动 4 个TTL 逻辑电平。对 P1 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。此外,和分别作定时器/计数器 2 的外部计数输入(T2)和时器/计数器 2 的触发输入(T2EX),具体如下表所示。在 flash 编程和校验时,P1 口接收低 8 位地址字节。引脚号第二功能 T2(定时器/计数器 T2 的外部计数输入),时钟输出 T2EX(定时器/计数器 T2 的捕捉/重载触发信号和方向控制)MOSI(在系统编程用)MISO(在系统编程用)SCK(在系统编程用)P2 口:P2 口是一个具有内部上拉电阻的8 位双向 I/O 口,P2 输出缓冲器能驱动 4 个TTL 逻辑电平。对 P2 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。在访问外部程序存储器或用16 位地址读取外部数据存储器(例如执行 MOVX DPTR)时,P2 口送出高八位地址。在这种应用中,P2 口使用很强的内部上拉发送 1。在使用 8 位地址(如 MOVX RI)访问外部数据存储器时,P2 口输出 P2 锁存器的内容。在 flash 编程和校验时,P2 口也接收高 8 位地址字节和一些控制信号。P3 口:P3 口是一个具有内部上拉电阻的8 位双向 I/O 口,p2 输出缓冲器能驱动4 个 TTL 逻辑电平。对 P3 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。P3 口亦作为 AT89C51 特殊功能(第二功能)使用,如下表所示。在 flash 编程和校验时,P3 口也接收一些控制信号。端口引脚第二功能 RXD(串行输入口)TXD(串行输出口)INTO(外中断 0)INT1(外中断 1)TO(定时/计数器 0)T1(定时/计数器 1)WR(外部数据存储器写选通)RD(外部数据存储器读选通)此外,P3 口还接收一些用于FLASH 闪存编程和程序校验的控制信号。RST 复位输入。当振荡器工作时,RST 引脚出现两个机器周期以上高电平将是单片机复位。ALE/PROG 当访问外部程序存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低8 位字节。一般情况下,ALE仍以时钟振荡频率的1/6 输出固定的脉冲信号,因此它可对外输出时钟或用于定时目的。要注意的是:每当访问外部数据存储器时将跳过一个 ALE 脉冲。对 FLASH 存储器编程期间,该引脚还用于输入编程脉冲(PROG)。如有必要,可通过对特殊功能寄存器(SFR)区中的8EH 单元的D0 位置位,可禁止 ALE 操作。该位置位后,只有一条MOVX 和 MOVC 指令才能将 ALE 激活。此外,该引脚会被微弱拉高,单片机执行外部程序时,应设置 ALE 禁止位无效。PSEN程序储存允许(PSEN)输出是外部程序存储器的读选通信号,当 AT89C52 由外部程序存储器取指令(或数据)时,每个机器周期两次 PSEN 有效,即输出两个脉冲,在此期间,当访问外部数据存储器,将跳过两次 PSEN 信号。EA/VPP外部访问允许,欲使CPU 仅访问外部程序存储器(地址为 0000H-FFFFH),EA 端必须保持低电平(接地)。需注意的是:如果加密位 LB1 被编程,复位时内部会锁存EA 端状态如 EA 端为高电平(接 Vcc 端),CPU 则执行内部程序存储器的指令。FLASH 存储器编程时,该引脚加上+12V 的编程允许电源Vpp,当然这必须是该器件是使用12V 编程电压 Vpp。引脚图如下:图 2 89C51 引脚图复位电路复位电路图 3 复位电路当 8051 的 ALE 及/PSEN 两引脚输出高电平,RST 引脚高电平到时,单片机复位。RST/VPD 端的高电平,若直接由启动瞬间产生,则为启动复位,若通过按动按钮产生高电平复位称手动复位。图中,上电时,接通电源,电容器 C 相当于瞬间短路,+5V 加到了 RST/VPD 端,该高电平使 8051 全机复位。若运行过程中,需要程序从头执行,只需按动按钮S,则直接把+5V加到了 RST/VPD 端,从而复位。显然,该电路即可以上电复位,也可以手动复位,是常用复位电路之一。数码管显示数码管显示图 4 数码管显示此处采用的数码管时共阴极数码管,G、F、E、D、C、B、A 七个端口是输入端口,对其各位进行赋值,置位则亮,复位则灭,用此来显示出相应的数字;1、2 两端用来控制高位和低位的选通显示,只要对端口置位,便可以选择该端口,并对其所代表的位进行赋值,显示。正常通行状况下,数码管从 30 秒开始倒计时,各个方向,对应点亮红绿黄灯。遇到突发状况,数码管从 5 秒开始倒计时,各方向禁止通行,点亮红灯。红绿灯显示红绿灯显示图 5 红绿灯显示每个路口都采用了 3 个 LED 灯来显示,分别代表红绿黄三种灯,来模拟路口交通的变换。其中 D7 和 D8 表示转弯模块。以南北方向举例,正常状况下,从 30 秒开始倒计时,南北方向可直行,即绿灯(D6)亮起,东西方向禁止通行,亮红灯(D2)。当显示至 15 秒时,南北方向可直行和转弯,即两个绿灯(D6 和 D7)亮起,东西方向禁止通行,亮红灯(D2)。当显示至 3 秒时,通知车辆快速通过,南北黄灯(D5)闪烁,东西方向禁止通行,亮红灯(D2)。键盘:独立键盘键盘:独立键盘+中断中断图 6 独立键盘+中断采用开关来控制进入中断,可以在路口出现紧急情况时,拉动开关。使红绿灯发生相应的改变,已处理紧急情况下车辆通行。当发生突发情况时,如救护车通过,接通上面的按键,各个方向中止当前状态,即禁止通行,各个方向点亮红灯,并维持 5 秒倒计时。当结束5 秒倒计时,各个方向恢复到中止前的状态。系统原理图系统原理图图 7 总电路图4 4 软件设计软件设计总体流程总体流程开南北绿东西30s 倒计时黄灯亮3s南北红东西30s 倒计时黄灯亮 3s图 8 流程图循环流程控制思路循环流程控制思路东西红灯东西红灯南北绿灯南北绿灯东西红灯东西红灯南北及转弯绿灯南北及转弯绿灯东西红灯东西红灯南北黄灯闪南北黄灯闪中断东西黄灯闪东西黄灯闪东西及转弯绿南北绿灯南北绿灯灯东西绿灯东西绿灯南北红灯南北红灯图 9 流程控制图源程序源程序#include#include#define uint unsigned int#define uchar unsigned charuchar temp,aa,nn;sbit rn=P20;sbit nb=P21;sbit gn=P22;sbit rw=P23;sbit dx=P24;sbit gw=P25;sbit shi=P36;sbit ge=P37;/*对要使用的单片机各个口进行定义*/bit flag=0;ucharcodetable=0 x3f,0 x06,0 x5b,0 x4f,0 x66,0 x6d,0 x7d,0 x07,0 x7f,0 x6f,0 x77,0 x7c,0 x39,0 x5e,0 x79,0 x71;/*将数字 09 的 16 进制数定义成数组用以显示*/void delay(uint z);void disp(uint n);void nb_flash(void);void dx_flash(void);void xint0();void timer0();void LED_ON();void xint1();void nanbei();void dongxi();/*将所使用的子函数定义*/void main()uint num;num=0;aa=0;TMOD=0 x01;TH0=(65536-50000)/256;TL0=(65536-50000)%256;EA=1;ET0=1;TR0=1;EX0=1;IT0=0;EX1=1;IT1=1;/*中断初始化*/while(1)nanbei();nb_flash();dongxi();void delay(uint z)uint x,y;for(x=z;x0;x-)for(y=110;y0;y-);void timer0()interrupt 1 TH0=(65536-50000)/256;TL0=(65536-50000)%256;aa+;if(aa=9)aa=0;flag=1;void disp(uint n)/*while(!flag)ge=0;P0=tablen%10;delay(50);shi=1;ge=1;shi=0;P0=tablen/10;delay(50);shi=1;ge=1;显示子函数*/if(flag=1)flag=0;void nanbei()/*南北方向的红绿灯和数码管显示子函数*/uint num;num=30;disp(num);while(num15)num-;P2=0 xf3;disp(num);while(num4)/*南北方向及转弯的红绿灯和数码管显示子函数*/num-;P2=0 xb3;disp(num);void nb_flash(void)/*南北方向的黄灯和数码管显示子函数*/uint a;for(a=3;a0;a-)P2=0 xf5;nb=1;delay(100);nb=0;disp(a);void dongxi()/*东西方向的红绿灯和数码管显示子函数*/uint num;num=30;while(num15)P2=0 xde;disp(num);num-;while(num3)/*东西方向及转弯的红绿灯和数码管显示子函数*/num-;P2=0 x5e;disp(num);while(num0)P2=0 xee;dx=1;delay(100);dx=0;disp(num);num-;void xint0()interrupt 2 /*TH0=(65536-50000)/256;TL0=(65536-50000)%256;东西方向的黄灯和数码管显示子函数*/中断定义*/*LED_ON();void LED_ON()uint b;rn=0;rw=0;gn=1;gw=1;nb=1;dx=1;for(b=5;b0;b-)ge=0;shi=1;P0=tableb;delay(1000);ge=1;shi=1;return;5 5 调试运行调试运行正常运行状态正常运行状态图 10 正常运行状态左右行显示左右行显示图 11 左右行显示黄灯闪烁显示黄灯闪烁显示图 12 黄灯闪烁显示6.6.设计心得体会设计心得体会一周的单片机课程设计很快就结束了,在这一周当中,虽然开始有点困难,但是经过我们们分工合作,合理地进行设计安排,再加上老师的耐心指导,我们们终于顺利地完成了本次单片机课程设计,同时也学到了很多东西。在本次课程设计中,我们通过动手实践操作,进一步学习和掌握了单片机原理的有关知识,特别是程序的编程方面,加深了对单片机原理及应用技术的认识,进一步巩固了对单片机知识的理解,掌握简单单片机应用系统的设计、制作、调试的方法。在设计时根据课题要求,复习相关的知识,查询相关的资料。根据实验条件,找到适合的方案,找到需要的元器件及工具,进行实验。这次的单片机课程设计重点是通过实践操作和理论相结合,提高动手实践能力,提高科学的思维能力,更在一周的时间了解了更多的有关单片机的知识,使知识更加丰富,使自己更加充实。与此同时,我们也对团队分工合作有了进一步的认识,只有通过合理的分工合作,我们们才能够在短短一周的时间内完成设计任务,相信这对以后在社会上工作和学习会有很多帮助,让我们能更好的进入工作状态。最重要的是,这次课程设计也增加了我们对问题的研究和探讨,们以后的学习中会有更多的帮助。单片机为我们的主要专业课之一,但要做好一个课程设计,就必须做到:在设计程序之前,对所用单片机的内部结构有一个系统的了解,知道该单片机内有哪些资源;要有一个清晰的思路和一个完整的的软件流程图;在设计程序时,不能妄想一次就将整个程序设计好,反复修改、不断改进是程序设计的必经之路;要养成注释程序的好习惯,一个程序的完美与否不仅仅是实现功能,而应该让人一看就能明白你的思路,这样也为资料的保存和交流提供了方便;在设计课程过程中遇到问题是很正常德,但我们们应该将每次遇到的问题记录下来,并分析清楚,以免下次再碰到同样的问题的课程设计结束了,但是从中学到的知识会让我们受益终身。在完成单片机课程设计后,我们们发现我们们还有许多不足,所学到的知识还远远不够,以至于还有一些功能不能被动完成。但通过学习这一次实践,增强了我们们的动手能力,提高和巩固了单片机方面的知识,特别是软件方面。从中增强了我们的团队合作精神,并让我们们认识到把理论应用到实践中去是多么重要。7 7 参考文献参考文献 1李全利.单片机原理及应用(C51)高等教育出版 2刘海宽.包建华.张兴奎.南京东南大学出版社.3郭天祥.新概念 51 单片机 C 语言教程北京:电子工业出版社 4 张洪润.单片机原理及应用系统.北京:机械工业出版社,5 胡雪梅.单片机原理及应用.北京:清华大学出版社,6 穆兰.单片机原理及接口技术.北京:机械工业出版社,附件 1 评价表萍乡学院课程设计成绩评价表课程名称题目名称学生姓名学号指导教师姓名序评价项目号按期圆满的完成了规定的任务,难易程度和工作工作量、工作态1度和出勤率高,工作作风严谨,善于与他人合作。课程设计选题合理,计算过程简练准确,分析问2 课程设计质量题思路清晰,结构严谨,文理通顺,撰写规范,0图表完备正确。设计的硬件和程序在 proteus 能仿真运行,效果3 仿真实践良好。总分满指标分评分2量符合教学要求,工作努力,遵守纪律,出勤率0620评语:指导教师:年月日附件 2 任务书萍乡学院课程设计任务书课程题目专业姓名学号主要内容、基本要求、主要参考资料等完成期限指导教师专业负责人年月日