单片机课程设计交通信号灯灯控制系统设计.doc
单片机仿真训练 -交通信号灯灯控制系统设计 院 别:电气工程及自动化学院 专业班级:电信02-5班姓 名:学 号:02030131指导老师:交通信号灯控制系统设计一、内容摘要:除随着社会的经济的快速发展,人们生活水平的日益提高,繁忙的道路交通变得越来越受到广泛的重视,因此设计适当的交通灯电路对我们的生活息息相关。本系统以89C52单片机为核心,加上适当的驱动电路,数码管显示,红、黄、绿交通灯显示。本系统的特色是具有硬件调时功能与应对紧急事件功能,并且使用仿真软件模拟实现交通信号灯控制情况良好。关键词:交通控制 交通灯 定时器 数码管二、设计目的在该设计中通过学生自主设计和调试某一简单实际系统,综合应用单片机原理、微机原理、微机接口技术等方面的知识,熟练掌握单片机仿真系统的使用方法,达到提高综合应用的能力,掌握单片机仿真系统设计过程和目的。三、交通灯的控制系统基本工作原理时间设定单片机89C52驱动LED显示数码管显示 图1四、总体方案设计1、设计要求A、设计基本要求(1)采用89C52单片机控制交通信号灯(2)以南北方向的交通灯为例,结合实际情况,控制红黄绿交通灯的亮和灭。(3)红、黄、绿交通灯的亮和灭时间可调、软件可调。B、设计提高要求(1)采用LED数码管显示红灯或绿灯亮的剩余时间。(2)按钮去控制红、绿灯亮的时间。(3)控制东西和南北方向的红、黄、绿灯的亮和灭。(4)控制系统的接线图和原理图采用PROTEL等专用绘图软件绘制。2、总体设计思想单片机选用美国Atmel公司生产的AT系列中的AT89C52芯片,信号灯选用红黄绿三种颜色的发光二极管,计时显示使用四位LED数码管。本系统以89C52单片机为核心,加上适当的驱动电路,数码管显示,红、黄、绿交通灯显示。本系统的特色是具有硬件调时功能与应对紧急事件功能,并且使用仿真软件模拟实现交通信号灯控制情况良好。首先,我们经过对交通灯流程的分析,画出了交通灯的时序流程图(如图2所示),由流程图可以看出主干道的红黄绿交通灯与次干道的红黄绿交通灯存在以下逻辑关系:主干道绿灯+主干道黄灯=次干道红灯,次干道绿灯+次干道黄灯=主干道红灯。于是两条干道上的绿灯时间可调就可以满足两条干道的交通灯时间可调,在此,我门设定黄色交通灯时间固定为3秒,而主干道绿灯点亮为20秒,次干道绿灯点亮为15秒,这样我们只需要3个寄存器。控制简单方便。除了交通灯的正常流程以外,我们还外加了两个功能,在运行期间我们可以通过对两条干道绿灯的时间调节来调整整个交通灯的流程,在时间调整返回后,继续执行原来的流程,当上次的流程结束后便转入时间调整后的流程。另外一个功能是在遇到紧急交通情况下,两条干道上的红灯同时亮起,在紧急情况结束之后,交通灯返回原来的流程继续执行。总体的交通信号灯控制系统电路原理图如后面附图示。3、 连线说明本课程设计所设计的是道路交通灯,设计要求是一共有四组红黄绿灯,为了更好的仿真实际生活中的交通灯,我们采用如图3所示的方式来布局设计我们的交通信号灯。G代表绿色,Y代表黄色,R代表红色。图3每组还有一组两组的LED显示灯显示剩余时间,南北方向的时间为20秒而东西方向的时间为15秒,时间是可以随意设置的,这里我们设定的时间较短是为了很快的见到效果,更好的模拟现实中交通灯的实际情况,这个时间是可以通过软件和硬件进行调节的。我们这里共用了六个按键,分别接在P3.1、P3.2、P1.6、P1.7、P3.6、RST口,RST的功能为复位,P3.1的功能为紧急情况处理,P3.2的功能是时间调节中断,P1.6的功能是调整主干道的绿灯时间和次干道的红灯时间,P1.7的功能是调整次干道的绿灯时间和主干道的红灯时间,P3.6的功能是退出功能、退出时间调节和紧急情况。交通灯电路的设计,我们共用了12个交通灯,分别有P1.0、P1.1、P1.2、P1.3、P1.4、P1.5这六个口来控制,考虑到南北路上的六个灯其中两两相同,于是我们可以让其中各条路上的红黄绿交通灯两两并联,电路图如图4所示。图4对于显示模块,我们共采用四块共阴极数码管来分别显示两条路上的时间,我们分别用P0口控制数码管的数据输入、用P2口的高四位控制数码管的选种。由于小数点不需要,所以这里的P1.7口不用接线。为了使数码管的亮度更亮,我们在P1.0-P1.1分别接了一个5.1K的上拉电阻,代替驱动器件来驱动数码管。接线图如图5所示。晶振电路连接为:由89C52上的XTAL1和XTAL2连接晶体振荡器,利用RST作为复位电路; 89C52的Vcc端接+5的直流电源,GND端接公共端,即接地。五、硬件组成及设计1、89C52单片机89C52单片机是美国Atmel公司生产的低电压,高性能CMOS 8位单片机,片内含8Kbytes的可反复擦写的只读程序存储器(PEROM)和256bytes的随机存取数据存储器(RAM),器件采用Atmel公司的高密度、非易失性存储技术生产,与标准MCS51指令系统及8052产品引脚兼容,片内置通用8位中央处理器(CPU)和Flash存储单元,功能强大。2、功能特性概述:AT89C52提供以下标准功能:8K字节Flash闪速存储器,256字节内部RAM,32个I/O口线,3个16 位定时/计数器,一个6向量两极中断结构,一个全双工串行通信口,片内振荡器及时钟电路。同时,AT89C52可降至0Hz的静态逻辑操作,并支持两种软件可选的节电工作模式。空闲方式停止CPU的工作,但允许RAM,定时/计数器,串行通信口及中断系统继续工作,掉电方式保存RAM中的内容,但振荡器停止工作并禁止其它所有部件工作直到下一个硬件复位。AT89C52的方框图如下图(图5)所示:图5 AT89C52方框图它的很多引脚都具有第二功能,以下是对各引脚的详细介绍:Vcc:电源电压GND:地P0口:P0口是一组8位漏极开路型双向I/O口,也即地址/数据总线复用口。作为输出口用时,每位能吸收电流的方式驱动8个TTL逻辑门电路,对端口P0写“1”时,可作为高阻抗输入端用。 在访问外部数据存储器或程序存储器时,这组口线分时转换地址(低8位)和数据总线复用。在访问期间激活内部上拉电阻。在Flash编程时,P0口接收指令字节,而在程序校验时输出指令字节。校验时,要求外接上拉电阻。P1口:P1是一个带内部上拉电阻的8位双向I/O口,P1的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对端口写“1”,通过内部上拉电阻把端口拉到高电平,此时可作输入口。作输出口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(I1L)。Flash编程和程序校验期间,P1接收低8位地址。P1.0,P1.1的第二功能引脚号功能特性P1.0T2(定时/计数器2 外部计数脉冲输入),时钟输出P1.1T2EX(定时/计时2捕获/重装载触发和方向控制)P2口:P2是一个带内部上拉电阻的8位双向I/O口,P2的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对端口P2写“1”,通过内部的上拉电阻把端口拉到低电平,此时可做输入口,做输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(I1L)。在访问外部程序存储器或16位地址的外部数据存储器(例如执行 MOVX DPRT)时,P2口送出高8位地址数据。在访问8位地址的外部数据存储器(如执行MOVX R1)指令时,P2口输出P2锁存器的内容。Flash编程或校验时,P2亦接收高位地址和一些控制信号。P3口:P3口是一组带有内部上拉电阻的8位双向I/O口。P3口输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对P3口写“1”时,它们被内部上拉电阻拉高并可作为输入端口。此时,被外部拉低的P3口将用上拉电阻输出电流(I1L)。P3口除了作为一般的I/O口线外,更重要的用途是它的第二功能,如下表所示:端口引脚第二功能P3.0RXD(串行输入口)P3.1TXD(串行输出口)P3.2INT0(外中断0)P3.3INT1(外中断1)P3.4T0(定时/计数器0)P3.5T1(定时/计数器1) P3.6WR(外部数据存储器写选通)P3.7RD(外部数据存储器读选通)此外,P3口还接收一些用于Flash闪速存储器编写和程序校验的控制信号。RST:复位输入。当振荡器工作时,RST引脚出现两个机器周期以上高电平将使单片机复位。ALE/PROG:当访问外部程序存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低8位字节。一般情况下,ALE仍以时钟振荡频率的1/6输出固定脉冲信号,因此它可对外输出时钟或用于定时目的。要注意的是:每当访问外部数据存储器时将跳过一个ALE脉冲。对Flash存储器编程期间,该引脚还用于输入编程脉冲(PROG)。如有必要,可通过对特殊功能寄存器(SFR)区中的8EH单元的D0位置,可禁止ALE操作。该位置位后,只有一条MOVX和MOBC指令才能将ALE 激活。此外,该引脚会被微弱拉高。单片机执行外部程序时,应设置ALE 禁止位无效。PSEN:程序储存允许(PSEN)输出是外部程序存储器的读选通信号。当AT89C52由外部程序存储器取指令(或数据)时,每个机器周期两次PSEN有效,即输出两个脉冲。在此期间,当访问外部数据存储器,将跳过两次PSEN信号。EA/VPP:外部访问允许。欲使CPU仅访问外部程序存储器(地址为0000HFFFFH),EA端必须保持低电平(接地)。须注意的是:如果加密位LB1被编程,复位时内部会锁存EA端状态。如EA 端为高电平(接Vcc端),CPU则执行内部程序存储器中的指令。XTAL2:振荡器反相放大器的输出端。定时器/计数器 该系统属实时控制系统,所以需要实现定时延时控制,即计数控制。 89C52内部定时器/计数器由特殊功能的寄存器TCON,TMOD,以及T0,T1组成,其中TMOD为模式控制寄存器。主要用来设置定时器/计数器的操作模式;TCON为控制寄存器,主要用来控制定时器的启动与停止。其定时工作方式为:当TMOD的D6或D2被置为0时,T1或T2工作于定时方式。其实质是在单片机内部对机器周期进行计数,计数脉冲输入信号由内部时钟提供,每一个机器周期计数器自动加1。由于每个机器周期等于12个振荡周期,故计数器的计数频率为振荡器频率的1/12。计数工作方式为:当TMOD的D6和D2设置为1时,T1或T0工作于计数方式。其实质是对外部事件进行计数。计数脉冲来自相应的外部输入引脚T1或T0。当外部输入脉冲信号,产生由1到0的跳变时,计数器的值自动加1。显示电路 该设计的显示电路使用LED数码管,其结构原理如下:LED数码显示管由多只条状半导体发光二极管按照一定的连接方式组合而成的。LED数码管有共阳极、共阴极之分。共阳极LED数码管中的正极均连接在一起,作为公共阳极与电源正极相连,当某段电极加驱动低电平时,相应某段会发光。共阴极LED数码管中的各发光二极管的负极均连接在一起,作为公共阴极与电负极相连,当某段电极加驱动高电平时,相应的某段也会发光。六、程序设计程序流程图如图6所示:七、电路板焊接1、检查器件:用万用表,+5伏电源检测电阻,电容,三极管,发光二极管,LED数码管,导线等元件是否正常。2、布局在万用电路板上布置各个元件,目的使电路连线尽量不重叠,易于观察,便于焊接。3、焊接注意事项防止假焊,漏焊,焊错等影响电路正常工作的劣质焊接。4、检查电路用数字万用表按照芯片顺序进行线路检查,以防止多焊连接,假焊等排除故障。中断1开始检测P1.6、P1.7、P3.6定时、中断初始化P1.6为低电平41H寄存器加1P1.7为低电平40H寄存器加1主干道绿灯亮、次干道红灯亮30秒调用显示程序P3.6为低电平结束主干道黄灯亮、次干道红灯亮3秒调用显示程序中断0主次干道均亮红灯次干道绿灯亮、主干道红灯亮20秒调用显示程序调用显示程序检测P3.6次干道黄灯亮、主干道红灯亮3秒调用显示程序结束八、调试1、硬件调试(1)脱机调试:在样机加电前,先用万用表等工具,根据原理图检查线路的正确性,并核对元件的型号,规格是否合乎要求。另外注意走线的短路和假焊。(2)联机调试:注意电源是否正常,供电电流大小,地线接法。2、软件调试用伟福仿真器,输入子程序,调节LED和交通灯,即逐块调试,成功后再进行综合调试。六 元器件清单名称型号参数数量备注电阻5.1K6电阻51011单片机AT89C521晶振12M1发光二极管12红黄绿各3个电容20PF2电容22uF1按键6LED数码管4万能板1导线、焊锡若干40脚管座2七 心得体会时间飞逝,两周很快过去了。但这两周时间使我有学到了好多的知识,对于单片机综合应用有了更深的了解,通过自主的程序设计、程序编写,不仅使我加深了对课本知识的理解,而且使我体会到了学习的乐趣、成功的喜悦,同时还使我对学习生活更加的充满信心。我们学习单片机的时间虽然不长,但我们通过一系列的编程训练,较好的掌握了单片机着们课程。理论知识有利于更好的实践,而实践使我们加深对理论的理解和认识,我们只有不断的应用我们所学过的知识才能使这些知识永远成为我们自己的知识。单片机室是应工业测控系统数字化、智能化的迫切要求而提出的,它的出现标志着计算机技术在工业领域的应用开始走向完善与成熟。通过此次单片机的课程设计,使我又认识了89C52系列的单片机,增加了知识面,同时也让我从新学习了单片机这门课程。对单片机外部扩展和接口技术也有了更清晰的认识,汇编语言的编程及应用也有了提高。这次课程设计提高了我的动手能力,也使我更明了的掌握了电路系统的设计与制作。而由于此次课程设计以组为单位,也增加了我们的集体意识与合作能力,这些对于以后的毕业设计或是实践都有很大帮助。再这里诚挚的感谢帮助我的老师和同学。八 参考资料1. 余发山. 单片机原理及应用技术. 中国矿业大学出版社. 20032. 杨凌霄. 微型计算机原理及应用. 中国矿业大学出版社. 20043. 先锋工作室. 单片机程序设计实例. 清华大学出版社.2002附:(程序和电路原理图)程序如下:ORG 0000HLJMP STARTORG 0003HLJMP INT0ORG 000BHLJMP TT0ORG 0013HLJMP INT1初始化: ORG 0100HSTART: MOV 40H,#20 ;主绿灯显示时 MOV 41H,#15 ;支绿灯显示时间 MOV 42H,#3 ;黄灯显示时间 MOV 43H,#100 ;延时1秒 CLR 01H MOV SP,#30H MOV TMOD,#01H MOV IE,#87H MOV TH0,#0D8H MOV TL0,#0F0H MOV P2,#0FFH MOV P1,#0FFH MOV P0,#0FFH MOV TCON,#10H主程序:MAIN0:MOV P1,#0F3H ;主绿灯亮 支红灯亮 MOV R2,40H MOV A,40H ADD A,#3 MOV R3,AXH1: LCALL DISPLAY MOV R5,#05H LCALL DELAY JNB 01H,XH1 ;判断是否到1秒 DEC R2 DEC R3 CLR 01H CJNE R2,#00H,XH1 ;判断绿灯是否结束MAIN1:MOV P1,#0F5H;主黄灯亮 支红灯亮 MOV R2,42HXH2: LCALL DISPLAY MOV R5,#05H LCALL DELAY JNB 01H,XH2 DEC R2 DEC R3 CLR 01H CJNE R2,#00H,XH2MAIN2:MOV P1,#0DEH ;主红灯亮 支绿灯亮 MOV R3,41H MOV A,41H ADD A,#3 MOV R2,AXH3: LCALL DISPLAY MOV R5,#05H LCALL DELAY JNB 01H,XH3 DEC R2 DEC R3 CLR 01H CJNE R3,#00H,XH3MAIN3:MOV P1,#0EEH ;主红灯亮 支黄灯亮 MOV R3,42HXH4: LCALL DISPLAY MOV R5,#05H LCALL DELAY JNB 01H,XH4 DEC R2 DEC R3 CLR 01H CJNE R3,#00H,XH4 LJMP MAIN0显示程序:DISPLAY:MOV DPTR,#TAB MOV A,R2 MOV B,#10 DIV AB MOVC A,A+DPTR MOV P0,A MOV P2,#0BFH MOV R5,#01 LCALL DELAY MOV A,B MOVC A,A+DPTR MOV P0,A MOV P2,#7FH MOV R5,#01 LCALL DELAY MOV A,R3 MOV B,#10 DIV AB MOVC A,A+DPTR MOV P0,A MOV P2,#0EFH MOV R5,#01 LCALL DELAY MOV A,B MOVC A,A+DPTR MOV P0,A MOV P2,#0DFH MOV R5,#01 LCALL DELAY RET定时中断0:TT0:PUSH ACC PUSH PSW MOV TH0,#0D8H MOV TL0,#0F0H DJNZ 43H,OUT SETB 01H MOV 43H,#100OUT:POP PSW POP ACC RETI中断0按键调时:INT0: PUSH PSW PUSH ACC CLR TR0 SETB RS0JC0: JNB P1.6,JC1 JNB P1.7,JC2 JNB P3.6,OJS MOV R2,40H MOV R3,41H LCALL DISPLAY AJMP JC0JC1: MOV A,40H INC A MOV 40H,AS1: MOV R5,#01H LCALL DELAY LCALL DISPLAY JNB P1.6,S1 CJNE A,#61,JC0 LJMP CL1JC2: MOV A,41H INC A MOV 41H,AS2: MOV R5,#01H LCALL DELAY LCALL DISPLAY JNB P1.7,S2 CJNE A,#41,JC0 LJMP CL2CL1: MOV 40H,#00H LJMP JC0CL2: MOV 41H,#00H LJMP JC0OJS: SETB TR0 POP ACC POP PSW RETI中断1紧急情况:INT1: PUSH PSW PUSH ACC PUSH P1 CLR TR0 MOV P1,#0F6H LOOP: LCALL DISPLAY JNB P3.6,JS AJMP LOOPJS: SETB TR0 POP P1 POP ACC POP PSW RETI延时R5*10毫秒:DELAY:MOV R6,#10D1: MOV R7,#100 DJNZ R7,$ DJNZ R6,D1 DJNZ R5,DELAY RETTAB: DB 03FH, 006H, 05BH, 04FH, 066H DB 06DH, 07DH, 007H, 07FH, 06FH END