基于单片机的带时间显示的交通灯设计

上传人:无*** 文档编号:94734397 上传时间:2022-05-23 格式:DOC 页数:14 大小:94KB
返回 下载 相关 举报
基于单片机的带时间显示的交通灯设计_第1页
第1页 / 共14页
基于单片机的带时间显示的交通灯设计_第2页
第2页 / 共14页
基于单片机的带时间显示的交通灯设计_第3页
第3页 / 共14页
点击查看更多>>
资源描述
-目录一、 设计任务和要求1、设计简介.第2页2、设计任务及要求.第2页二、 设计原理.第2页三、 设计的具体实现.第3页1、 硬件电路的设计.第3页1、时钟电路局部.第3页2、数码管显示局部.第4页3、交通灯灯局部.第4页4、复位电路局部.第5页5、键盘按键局部.第6页2、 软件编程的设计.第7页1)、数码管的扫描局部.第8页2)、LED灯的控制局部.第9页3、手动控制局部.第10页4、流程图.第12页5、程序第13页四、 软件仿真.第17页五、 设计心得体会.第19页六、 附录.第19页七、 参考文献.第20页一、 设计的任务和要求1、 设计简介为确保十字路口的车辆顺畅通行,几乎每个国家都在交通流量相对较大的十字道口设置交通信号灯,用来管理各个方向的车辆的通行。众所周知,红绿灯是交通法规的无声命令,是司机和行人的行为准则。目前,国内的大多数城市正在使用的是自动的红绿交通灯,它具有固定的红灯、绿灯转换间隔,并自动切换。它们一般由通行与制止时间控制显示、红黄绿三色信号灯和方向指示灯三局部组成。在交通灯的通行与制止时间控制显示中,通常要么东西、南北两方向各50秒;要么根据交通规律,东西方向60秒,南北方向40秒,时间控制都是固定的。交通灯的时间控制显示,以固定时间值预先固化在单片机中,每次只是以一定周期交替变化。但是,实际上不同时刻的车辆流通状况是十分复杂的,是高度非线性的,随机的,还经常受人为因素的影响。采用定时控制经常造成道路有效应用时间的浪费,出现绿灯方向车辆较少,红灯方向车辆积压。它不顾当前道路上交通车辆数目的实际变化情况,其最大的缺陷就在于当路况发生变化时,不能满足司机与路人的实际需要,轻者造成时间上的浪费,重者直接导致交通堵塞,导致城市交通效率的下降。目前,有一种使用模糊控制技术控制交通灯的方法。能够根据十字路口两个方向上车辆动态状况,自动判断红绿灯时间间隔,以保证最大车流量,减少道口的交通堵塞。但是却不像定时控制,能用数字显示器显示当前灯色剩余时间,以便于驾驶员随时掌握自己的驾驶动作,及时停车或启动。2、设计任务和要求本次的课程设计任务是设计一个基于单片机的带时间显示功能的交通灯, 就是模拟一个十字路口的交通灯的控制情况。 这里既要设计出红灯、绿灯、黄灯亮暗的变化情况,又要设计出在其变化期间的数码管计时情况。为确保在程序出错时的交通的正常通行,必须保证交通灯在出现故障等的情况下能够实现手动控制,以保障交通的正常进展。二、 设计原理首先了解实际交通灯的变化情况和规律。假设一个十字路口为东南西北走向。初始状态为东西南北都不亮。然后转为状态1:东西红灯通车,南北绿灯亮。过一段时间后,转换位状态2:东西红灯灭,黄灯亮,南北绿灯灭,黄灯亮。再转换为状态3:南北红灯亮,东西绿灯亮,可以通车。过一段时间后再转换到状态1。正常情况下一直循环状态1,状态2和状态3。对于交通信号灯来说,应该有东西南北共四组灯,但由于同一道上的两组的信号灯的显示情况是一样的,所以只要用两组就行了,因此,采用单片机内部的I/O口上的P1口中的6个引脚即可来控制6个信号灯。通过编写程序,实现对发光二极管的控制,来模拟交通信号灯的管理。每延时一段时间,灯的显示情况都会按交通灯的显示规律进展状态转换。 通过中断子程序的,可以在原有的交通信号灯控制系统设计的根底上,增添上手动控制功能,既可以实现出现故障时的手动控制,又可以实现更加人性化的功能,比方可实现人行横道灯的人为控制。这个电路用到的核心电子元器件就是单片机,我选用的单片机型号是STC89C52RC。通过对单片机进展编程,实现模拟十字路口交通灯的效果。具体要求:1、 带有时间显示功能。2、 模拟出十字路口交通灯的变化情况。3、 交通灯在特殊情况下可以由自动控制变为手动控制。三、 设计的具体实现1、 硬件电路的设计首先要说一下,电路设计中,电源的设计可谓讲究很多,可以说设计好了一个电路的电源局部,整个电路的80%已经完成了,鉴于本次课程设计的特殊性,我们只是模拟出交通灯的运行情况,这里我们只要选择电脑用的USB电源即可,USB电源标准为:+5V,500mA。我们的单片机需要+5V电源电压供电,约50mA的电流。由此看来,USB的电源完全可以带动单片机正常工作。其次要说明的是,一个硬件电路的好坏标准就我个人理解应该是从电路的稳定性,电路的功耗,电路版的面积大小,元器件的价格这四方面来衡量。本着这个原则,我设计的电路分为以下几个局部,并详细介绍各局部的选择方案:1、时钟电路局部时钟电路局部,采用外部方式时钟电路,晶振频率选择为11.0592MHz,另外需要两个30pF的陶瓷电容,电路构造如图3-1图3-12、数码管显示局部在数码管的选择上面,本电路选择的是共阴极数码管。经过查阅相关技术资料,我所选择的数码管的具体型号是JM-S10022G-H,它的平均工作电流是4-5mA,我所选择的单片机完全可以驱动它。但为确保单片机可以更加正常的控制数码管显示,也为了增大数码管的亮度,我这里在单片机的每个端口P0、P1、P2、P3上都加上了上拉电阻,并根据要求编写了共阴极数码管的子码表:0FDH,060H,0DBH,0F3H,067H,0B7H,0BFH,0E0H,0FFH,0F7H。如果您选择的数码管是共阳极数码管,请您在程序中更改相关的子码表即可。为更加真实的模拟出十字路口的交通灯的空间分布情况,我这里选择了四个数码管分别作为东西方向和南北方向的倒计时显示,硬件电路如图3-2所示:3、交通灯灯局部LED的选择上面,数量上我们需要红、黄、绿三种不同颜色的灯光各四个。器件选择上,个人感觉不需要特意去做选择,一般情况下,大家常见的LED灯就可以满足要求,单片机也可以直接驱动其正常工作。在本次的课程设计中,我假设十字路口的车辆通行方向谁双向的。即一个车道有两个方向的车辆通行,如果实际的车道为一个方向通行的单车道的话,可以拆掉一条车道上的不需要的三盏交通灯,以满足实际交通情况。这时的电路依然会正常工作,而不会受到任何的干扰为了更加形象的描述出十字路口的交通灯分布情况,我分别在东西方向和南北方向分布上六个交通灯,硬件电路图如图3-2所示:图3-24、复位电路局部复位电路局部采用低电平复位电路,通过低电平脉冲的触发来实现单片机的复位。平时有一个高电位通过一个电阻将单片机的复位引脚拉高,防止外界干扰造成复位引脚被误触发。具体点电路如图3-3所示:图3-35、键盘按键局部按键局部采用的是按钮触发方式,通过软件编程,简单实现了防按键抖动的效果,经仿真测试和实物调试,按键局部可以满足程序设计的要求。具体的电路硬件构造如图3-4所示:图3-42、 软件编程的实现硬件电路图有了,下面就应该是根据硬件电路图来设计一个程序了。首先分析程序要完成的任务。1)、数码管的扫描局部此局部程序清单如下:;&RET0: MOV A,NUMTIM ;*数码管的动态扫描* LCALL BIN_BCD ;*A存储十位,B存储个位* MOV SHIWEI,A MOV GEWEI,B INC SCANLED MOV A,SCANLED ;*A=0*01、0*02* MOV B,*4 ;* DIV AB MOV A,B;*A=B=0*01* RL A MOV DPTR,*TAB_SCAN0 JMP A+DPTR;* TAB_SCAN0:AJMP SCAN_L1 AJMP SCAN_L2SCAN_L1: MOV P2,*11111011B ;熄灭数码管 MOV A,SHIWEI;A=0*01 JMP END_SCANSCAN_L2: MOV P2,*11111100B ;P2=FD,点亮位码 MOV A,GEWEI; A=0*01 JMP END_SCANEND_SCAN:MOV DPTR,*TABLE; MOVC A,A+DPTR; ;取共阴字码表值 MOV P0,A; ;数码管依次显示0 、1、2. . MOV A,LED; MOV P1,A; ;熄灭LED灯 POP PSW POP ACCRETI ;*;省略局部代码TABLE:DB 0FDH,060H,0DBH,0F3H,067H,0B7H,0BFH,0E0H,0FFH,0F7H ;共阴字码表;&代码分析:程序初始化完成后。正常情况下,在中断0没有发生的时候。首先进入的中断就是定时计数器0中断。程序根据初始化的初值分别将数码管要显示的段码的十位和各位放入存放器A和B中。接下来使数码管的位码有效,再通过查表程序,查得数码管要显示的数值,并把数值显示在数码管上。2)、LED灯的控制局部:此局部程序清单如下:;&RED_LIGHT:MOV LED,*11111100B; ;红灯缓冲区赋值 MOV NUMTIM,RED;NUMTIM=10 DEC RED; MOV A,RED; ;A=0*09、0*08. . CJNE A,*0FFH,RET0 MOV RED,*10 ;红灯定时10s MOV A,SCANMODE ADD A,*01H MOV SCANMODE,A JMP RET0YEL_LIGHT:MOV LED,*11110011B MOV NUMTIM,YELLOW DEC YELLOW MOV A,YELLOW CJNE A,*0FFH,RET0 MOV YELLOW,*3 ;黄灯定时3s MOV A,SCANMODE ADD A,*01H MOV SCANMODE,A JMP RET0GRE_LIGHT:MOV LED,*11001111B MOV NUMTIM,GREEN DEC GREEN MOV A,GREEN CJNE A,*0FFH,RET1 MOV GREEN,*10 ;绿灯定时3s MOV A,SCANMODE ADD A,*01H MOV SCANMODE,A RET1:JMP RET0 BIN_BCD:MOV B,*10 ;个位、十位别离 DIV AB RET DELAY: MOV R5,*02 ;延时子程序 D1: MOV R6,*200 D2: MOV R7,*200 DJNZ R7,$ DJNZ R6,D2 DJNZ R5,D1 RET;&代码分析:程序进入LED显示局部以后,先是点亮相应的LED灯,然后调用数码管扫描程序,然后根据预先设定的倒计时初值进展动态扫描,直到倒计时完毕,此段LED灯熄灭。跳到下一个状态重复上述步骤。3、手动控制局部;&INTT0: PUSH ACC PUSH PSW SETB P2.1 ;熄灭数码管 SETB P2.2 MOV P1,*0FFH ;熄灭灯LP: JNB P2.4,L1 ;*红灯* JNB P2.5,L2 ;*东西方向交通灯控制*黄灯* JNB P2.6,L3 ;*绿灯* JMP LPL1: LCALL DELAY P2.4,LP MOV P1,*0FCH AJMP LPL2: LCALL DELAY P2.5,LP MOV P1,*0F3H AJMP LPL3: LCALL DELAY P2.6,LP MOV P1,*0CFH AJMP LP POP PSW POP ACC JMP INTT0;&代码分析:当外部中断0发生时,程序进入此段中断子程序。进入此段中断子程序后程序会将数码管的位码全部置“1,熄灭所有数码管,然后进入循环检测局部。不停的检测P2.5、P2.5、P2.6这三个位的状态是否为“0,如果是,则跳转到相应位置,先消除按键抖动,然后点亮对应的数码管,实现交通灯的手动控制。是是是否否是是是是是是否否否否否否中断0是否发生开场初始化定时器0中断是否发生完毕P2.4红灯按钮是否被按下P2.5黄灯按钮是否被按下P2.6绿灯按钮是否被按下红灯点亮.黄灯点亮.绿灯点亮.延时数码管倒计时点亮红灯点亮黄灯点亮绿灯是是;*;*交通灯模拟实验程序*;* GEWEI EQU 21H ;个位数据 SHIWEI EQU 23H ;十位数据 SCANLED EQU 25H SCANMODE EQU 26H RED EQU 28H ;定义灯的缓冲区 GREEN EQU 29H YELLOW EQU 32H NUMTIM EQU 33H LED EQU 34H ORG 0000H JMP START ORG 0003H ;外中断0入口地址 JMP INTT0 ORG 0BH ;定时器0中断入口 JMP TIMER0 ;*;*主程序开场*;* ORG 100HSTART:MOV SP,*50H MOV R0,*20H ;* MOV R5,*20 CLR0:MOV R0,*00H ; R0=34H时完毕循环,起延时 INC R0 DJNZ R5,CLR0 ;* MOV TMOD,*01H ;设置定时器工作方式 MOV TH0,*HIGH(65536-5000);定时器0赋初值 MOV TL0,*LOW(65536-5000) SETB TR0 ;开启定时器0计时0.5S SETB IT0 ;下降沿触发 SETB P*0 ;设置优先级 MOV IE,*10000011B MOV P0,*0FFH;* MOV P1,*0FFH MOV P2,*00H MOV P3,*0FFH MOV R3,*10 MOV R2,*3;*端口初始化* MOV R1,*10 MOV R7,*200 MOV RED,*10 ;红灯定时10s MOV YELLOW,*3 ;黄灯定时3s MOV GREEN,*10 ;绿灯定时10秒 MOV NUMTIM,*10 MOV LED,*0FFH ;* AJMP $;*;*中断0子程序*;*INTT0: PUSH ACC PUSH PSW SETB P2.1 ;熄灭数码管 SETB P2.2 MOV P1,*0FFH ;熄灭灯LP: JNB P2.4,L1 ;*红灯* JNB P2.5,L2 ;*东西方向交通灯控制*黄灯* JNB P2.6,L3 ;*绿灯* JMP LPL1: LCALL DELAY P2.4,LP MOV P1,*0FCH AJMP LPL2: LCALL DELAY P2.5,LP MOV P1,*0F3H AJMP LPL3: LCALL DELAY P2.6,LP MOV P1,*0CFH AJMP LP POP PSW POP ACC JMP INTT0;*;*定时器局部,负责交通灯的计时和数码管动态扫描*;* TIMER0:PUSH ACC PUSH PSW MOV TH0,*HIGH(65536-5000) ;定时器0重装初值 MOV TL0,*LOW(65536-5000) DJNZ R7,RET0 ;R7非0,跳到RET0数码管扫描 MOV R7,*200 ;重新赋值 MOV A,SCANMODE ;调用扫描 MOV B,*4;* DIV AB ;*A、B清零,延时* MOV A,B ;* RL A MOV DPTR,*TAB_SCAN JMP A+DPTR;*跳到TAB_SCAN处*TAB_SCAN: AJMP RED_LIGHT AJMP YEL_LIGHT AJMP GRE_LIGHT AJMP YEL_LIGHT RET0: MOV A,NUMTIM ;*数码管的动态扫描* LCALL BIN_BCD ;*A存储十位,B存储个位* MOV SHIWEI,A MOV GEWEI,B INC SCANLED MOV A,SCANLED ;*A=0*01、0*02* MOV B,*4 ;* DIV AB MOV A,B;*A=B=0*01* RL A MOV DPTR,*TAB_SCAN0 JMP A+DPTR;*TAB_SCAN0:AJMP SCAN_L1 AJMP SCAN_L2SCAN_L1: MOV P2,*11111011B ;熄灭数码管 MOV A,SHIWEI;A=0*01 JMP END_SCANSCAN_L2: MOV P2,*11111100B ;P2=FD,点亮位码 MOV A,GEWEI; A=0*01 JMP END_SCANEND_SCAN:MOV DPTR,*TABLE; MOVC A,A+DPTR; ;取共阴字码表值 MOV P0,A; ;数码管依次显示0 、1、2. . MOV A,LED; MOV P1,A; ;熄灭LED灯 POP PSW POP ACCRETI ;*;*;*红、黄、绿灯显示子程序*;*RED_LIGHT:MOV LED,*11111100B; ;红灯缓冲区赋值 MOV NUMTIM,RED;NUMTIM=10 DEC RED; MOV A,RED; ;A=0*09、0*08. . CJNE A,*0FFH,RET0 MOV RED,*10 MOV A,SCANMODE ADD A,*01H MOV SCANMODE,A JMP RET0YEL_LIGHT:MOV LED,*11110011B MOV NUMTIM,YELLOW DEC YELLOW MOV A,YELLOW CJNE A,*0FFH,RET0 MOV YELLOW,*3 MOV A,SCANMODE ADD A,*01H MOV SCANMODE,A JMP RET0GRE_LIGHT:MOV LED,*11001111B MOV NUMTIM,GREEN DEC GREEN MOV A,GREEN CJNE A,*0FFH,RET1 MOV GREEN,*10 MOV A,SCANMODE ADD A,*01H MOV SCANMODE,A RET1:JMP RET0 BIN_BCD:MOV B,*10 ;个位、十位别离 DIV AB RET DELAY: MOV R5,*02 ;延时子程序 D1: MOV R6,*200 D2: MOV R7,*200 DJNZ R7,$ DJNZ R6,D2 DJNZ R5,D1 RETTABLE:DB 0FDH,060H,0DBH,0F3H,067H,0B7H,0BFH,0E0H,0FFH,0F7H ;共阴字码表END四、 软件仿真硬件电路设计完成、软件编程也完成了。接下来我们开场用软件仿真一下,找到硬件电路或者程序中存在的问题,并加以修正,逐步完善电路,最终到达设计的要求。我这次使用的仿真软件是ProteusV7,画好硬件电路图,启动仿真按钮,开场仿真,在交通灯正常工作的情况下仿真出来的电路图如下列图4-1所示:图4-1从仿真图上可以明显的看出,正常工作的情况下,这个硬件电路你能够很好的完成程序所描述的功能,说明此局部设计初步可以认是为成功的。下面我们再来看看在外部中断0发生时的软件仿真情况,见下列图4-2:图4-2从上图可以看出,在中断0发生时,能够有效的实现人为的对交通灯的控制,至此,硬件电路和软件电路的设计宣告成功。五、 设计心得体会通过这次单片机课程设计,我不仅加深了对单片机理论的理解,将理论很好地应用到实际当中去,而且我还学会了如何去培养我们的创新精神,从而不断地战胜自己,超越自己。创新,是要我们学会将理论很好地联系实际,并不断地去开动自己的大脑,从为人类造福的意愿出发,做自己力所能及的,别人却没想到的事。使之不断地战胜别人,超越前人。同时,更重要的是,我在这一设计过程中,学会了坚持不懈,不轻言放弃。设计过程,也好比是我们个人成长的历程,常有一些不如意,也许这就是在对我们提出了挑战,勇敢过,也战胜了,胜利的钟声也就一定会为我们而敲响。这个设计过程中,我遇到过许屡次失败的考验,就比方,自己对实际生活中的交通秩序的不了解给整个设计带来的困扰,真想要就此罢休,然而,就在想要放弃的那一刻,我明白了,原来结果并不则重要,我们更应该注重的是这一整个过程。于是,我坚持了下来。当然最终,这个设计很成功,主要表达在,这一整个系统,几乎没有参考任何书,程序由自己独立完成,与用8255来制作的交通灯控制系统相比,程序简单易读,构造清楚,最重要的是本钱低。在设计一个系统,除了到达所要求的性能指标以外,本钱也是很重要的一个指标。本钱的上下也决定了产品的适用性。六、 附录器件名称符号值/型号/(备注)单片机STC89C52RCSTC89C52RC电阻RP1300电组RP2300电阻RP3300电阻RP4300电阻R110K电容C130pF电容C230pF点解电容C310F数码管U1LG3641数码管U2LG3641数码管U3LG3641数码管U4LG3641LEDLED-REDS2012SYRCLEDLED-REDS2012SYRCLEDLED-REDS2012SYRCLEDLED-REDS2012SYRCLEDLED-YELLOWS2012SYYCLEDLED-YELLOWS2012SYYCLEDLED-YELLOWS2012SYYCLEDLED-YELLOWS2012SYYCLEDLED-GREENS2012SYGCLEDLED-GREENS2012SYGCLEDLED-GREENS2012SYGCLEDLED-GREENS2012SYGC晶振CRYSTAL11.0592MHz按键S1DPE-1106按键S2DPE-1106按键S3DPE-1106按键S4DPE-1106按键S5DPE-1106按键S6DPE-1106七、 参考文献宋家友.集成电子线路设计手册.*.*科学技术.2002阎石.数字电子技术根底.高等教育.1998. z
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 管理文书 > 施工组织


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!