《交通灯设计报告资料讲解.doc》由会员分享,可在线阅读,更多相关《交通灯设计报告资料讲解.doc(28页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、Good is good, but better carries it.精益求精,善益求善。交通灯设计报告-1、 方案设计说明1.1.设计任务书利用单片机设计并制作交通信号灯控制系统。具体要求如下:(1)用发光二极管模拟红绿黄交通灯,主、支干道交替通行,主干道每次放行30秒,支干道每次放行20秒;(2)每次绿灯变红灯时黄灯先闪3次(时间间隔为0.5秒);(3)十字路口要有数字显示,具体要求主支干道通行时间以秒为单位进行减计数;(4)带紧急按钮功能,当紧急按钮按下,所有方向均亮红灯,再次按下该键,则恢复之前的运行。*(5)要求主、支干道通行时间均可在099s内任意设定。1.2.设计思路(1) 分
2、析各个路口所需的通行方案,并以此为基础提出初步设计方案;(2) 确定交通灯设计的总体方案,包括东西,南北方向的通行,禁止,倒计时显示,紧急情况处理这两项特殊功能;(3) 进行显示电路,灯显示状态电路,按键电路的设计及各器件的选择和连接,分配各个器件和模块的基本功能;(4) 进行软件系统的设计,采用汇编语言编写,了解单片机内部结构及工作情况,了解定时器,中断,延时的工作原理,完成程序的编写.硬件设计部分,为实现所要求的功能,选用89ATC51单片机为硬件设计的核心器件。它具有128*8位内部RAM,有32根可编程I/O线、两个16位定时器/计数器、5个中断源、可编程串行通道、低功耗的闲置和掉电模
3、式、片内振荡器和时钟电路。其次采用74LS245驱动电路驱动LED晶体管显示部分,用数码管显示黄、红、绿灯。通过中断扩展实现交通灯系统特殊情况的转换。软件设计部分,分为一个主程序和一个中断子程序,用于有紧急车辆通过时,系统要能禁止普通车辆通行,实行中断可使A、B两道均亮红灯.1.3.通行方案设计设在十字路口,分为东西向和南北向,在任一时刻只有一个方向通行,另一方向禁行,持续一定时间,经过短暂的过渡时间,将通行禁行方向对换。其具体状态如下图所示。说明:黑色表示亮,白色表示灭。交通状态从状态1开始变换,直至状态6然后循环至状态1,周而复始,即如图所示:红绿黄红绿黄黄红黄红黄红红黄绿绿绿绿红红绿黄黄
4、绿红黄绿红绿黄红黄绿红黄绿红黄绿红黄绿黄绿黄红绿红东西南北黄灯闪,等待变换东西红灯亮,南北绿灯亮东西南北黄灯闪,等待变换东西绿灯亮,南北红灯亮表1:交通灯控制码表P1.7P1.6P1.5P1.4P1.3P1.2P1.1P1.0控制码状态说明空空东西红东西黄东西绿南北红南北黄南北绿11011110DEH东西红,南北绿1110(1)110(1)1EDH(FF)H东西南北黄灯闪11110011F3H东西绿,南北红1110(1)110(1)1EDH(FF)H东西南北黄灯闪2. 硬件设计2.1.单片机AT89C51的简介(1)功能:AT89C51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROMF
5、alshProgrammableandErasableReadOnlyMemory)的低电压、高性能CMOS8位微处理器,俗称单片机。具有128*8位内部RAM,有32根可编程I/O线、两个16位定时器/计数器5个中断源、可编程串行通道、低功耗的闲置和掉电模式、片内振荡器和时钟电路。(2)管脚说明:VCC:供电电压。GND:接地。P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编程时,P0口作为原码输入口,当FIASH进行校验时,P0输出原码,此时
6、P0外部必须被拉高。P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收。P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给
7、出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。P3口也可作为AT89C51的一些特殊功能口,如下表所示:口管脚备选功能P3.0RXD(串行输入口)P3.1TXD(串行输出口)P3.2/INT0(外部中断0)P3.3/INT1(外部中断1)P3.4T0(记时器0
8、外部输入)P3.5T1(记时器1外部输入)P3.6/WR(外部数据存储器写选通)P3.7/RD(外部数据存储器读选通)P3口同时为闪烁编程和编程校验接收一些控制信号。RST:复位输入。ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节PSEN:外部程序存储器的选通信号。EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。当/EA端保持高电平时,此间内部程序存储器。XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。XTAL2:来自反向振荡器的输出。(3)振荡器特性:XTAL1和XTAL2分别为反
9、向放大器的输入和输出。该反向放大器可以配置为片内振荡器。石晶振荡和陶瓷振荡均可采用。如采用外部时钟源驱动器件,XTAL2应不接。有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度。(4)芯片擦除:整个PEROM阵列和三个锁定位的电擦除可通过正确的控制信号组合,并保持ALE管脚处于低电平10ms来完成。在芯片擦操作中,代码阵列全被写“1”且在任何非空存储字节被重复编程以前,该操作必须被执行。此外,AT89C51设有稳态逻辑,可以在低到零频率的条件下静态逻辑,支持两种软件可选的掉电模式。在闲置模式下,CPU停止工作。但RAM,定时器
10、,计数器,串口和中断系统仍在工作。在掉电模式下,保存RAM的内容并且冻结振荡器,禁止所用其他芯片功能,直到下一个硬件复位为止。At89C51图:2.2、整体电路图:2.3、时钟电路2.4、复位电路采用上电+复位,复位电容采用1nf,电阻,连接如图:当8051的ALE及/PSEN两引脚输出高电平,RST引脚高电平到时,单片机复位。RST/VPD端的高电平,若直接由启动瞬间产生,则为启动复位,若通过按动按钮产生高电平复位称手动复位。图中,上电时,接通电源,电容器C相当于瞬间短路,+5V加到了RST/VPD端,该高电平使8051全机复位。若运行过程中,需要程序从头执行,只需按动按钮S,则直接把+5V
11、加到了RST/VPD端,从而复位。2.5、数码管倒计时显示电路采用四位一体共阴数码管,分别显示西和北的剩余时间,A到G为码段控制端口,1到4为片选端口。数码段显示部分通过RESPACK-8接单片机管脚的P0口,片选部分由P3.6到P3.7提供,具体的共阴数码管见图。其中P3.6控制北边和西边剩余时间的十位数的显示;P3.7控制北边和西边剩余时间的个位数的显示。2.6、交通灯显示电路为了方便实验,可以用发光二极管作为交通灯来使用,单片机的I/O接口直接和交通灯(发光二极管)连接。在十字路口的四组红、黄、绿三色交通灯中,东西方向道路上的两组同色灯连接在一起,南北方向道路上的两组同色的灯也彼此连接在
12、,受单片机P1.0P1.5控制。P1.0:控制南北方向绿灯的亮灭;P1.1:控制南边方向黄灯的亮灭;P1.2:控制南北方向红灯的亮灭;P1.3:控制东西方向绿灯的亮灭;P1.4:控制东西方向黄灯的亮灭;P1.5:控制东西方向红灯的亮灭。2.7、驱动部分使用RESPACK_8来使共阴极数码显示读数,由于P0口内部无上拉电阻,所以要使其工作必须外接上拉电阻,此处的用了一个排阻。2.8紧急情况处理电路紧急开关接在P3.2口,可在特殊情况下使用。当有紧急情况发生时,如消防车、救护车等紧急车辆通过时,按下K1键,四个路口同时红灯亮10秒,10秒过后,紧急解除,恢复为原理的状态。3、软件设计3.1、总程序
13、流程图:开始中断返回是中断处理判断按键是否按下调用东西南北黄灯闪子程序调用东西通行,南北禁止子程序调用东西南北黄灯闪子程序中断初始化调用南北通行,东西禁止子程序开始3.2、中断之程序流程图:断点入栈保护状态参数设置送状态字至端口状态响应中断返回3.3、源程序ORG0000HAJMPSTARTORG0003HLJMPINT00ORG0013HLJMPINT10START:MOVSP,#60HSETBEX0SETBEX1SETBEAMAIN:LCALLST10LCALLST20LCALLST30LCALLST40LJMPMAINST00:MOVA,#00MOVP1,AST10:MOVR7,#30S
14、T11:MOVR0,#0DEH;南北绿灯亮,东西红灯亮MOVP1,R0LCALLDELAY1SRETST20:MOVR4,#05ST21:MOVR0,#0EDH;东西南北黄灯闪MOVP1,R0MOVR5,#05L22:LCALLDELAY01SDJNZR5,L22MOVR0,#0FFHMOVP1,R0MOVR5,#05L23:LCALLDELAY01SDJNZR5,L23DJNZR4,ST21RETST30:MOVR7,#20MOVR0,#0F3H;东西绿道行亮,南北红灯亮MOVP1,R0LCALLDELAY1SRETST40:MOVR4,#05ST41:MOVR0,#0EDH;黄灯闪MOVP
15、1,R0MOVR5,#05L42:LCALLDELAY01SDJNZR5,L42MOVR0,#0FFHMOVP1,R0MOVR5,#05L43:LCALLDELAY01SDJNZR5,L43DJNZR4,ST41RETDELAY1S:MOVR3,#50CLRADIS0:MOVA,R7LCALLX0DJNZR3,DIS0DJNZR7,DELAY1SRETDELAY01S:MOVR7,#05CLRADIS1:MOVA,R4LCALLX0DJNZR7,DIS1RETDELAY10MS:MOVR2,#20DEL1:MOVR6,#248DJNZR6,$DJNZR2,DEL1MOVR6,#00MOVR2,
16、#00RETTAB:DB3FH,06H,5BH,4FHDB66H,6DH,7DH,07HDB7FH,6FH,77H,7CHDB39H,5EH,79H,71HDB40H,00HX0:MOVR6,AMOVR1,#40HMOVA,R6MOVB,#10DIVABMOVR1,AINCR1MOVR1,BMOVDPTR,#TABMOVA,R1MOVCA,A+DPTRMOVP0,ACLRP3.7LCALLDELAY10MSSETBP3.7DECR1MOVDPTR,#TABMOVA,R1MOVCA,A+DPTRMOVP0,ACLRP3.6LCALLDELAY10MSSETBP3.6RETINT00:MOV36H
17、,R7PUSH36HMOV37H,R0PUSH37HMOV39H,R3PUSH39HMOVR7,#10;紧急情况按钮,南北停止通行,均为红灯,持续10秒。MOVP1,#0DBHLCALLDELAY1SPOP39HPOP37HPOP36HMOVR7,36HMOVR0,37HMOVP1,R0MOVR3,39HRETIINT10:MOV36H,R7PUSH36HMOV37H,R0PUSH37HMOV38H,R6PUSH38HMOV39H,R3PUSH39HEND4、 制作调试结果及说明4.1、Proteus软件仿真东西红灯亮,南北绿灯亮30秒东西、南北黄灯闪,等待转换,延时5秒东西绿灯亮,南北红灯亮20秒紧急情况处理,东西南北均为红灯,延时10秒4.2、遇到的问题及解决方法(1) 编写的程序与设计好的电路图不相符,导致灯无法显示,或者显示混乱,解决办法就是修改程序和电路图,修改LED的共阴级和共阳级的接线;写好程序后,倒计时的数码管不会显示,这个问题我反复检查电路和程序发现都没有错,最后是同学告诉我可能没有注意到数码管的共阴共阳问题,刚开始也只是改数码管的dp是否接线,改变所查的表的数值,后来才发现我把用的是CA的共阳的数码管,与程序不想符,改为CA共阴的就好了。-
限制150内