《交通灯控制电路实验设计报告.doc》由会员分享,可在线阅读,更多相关《交通灯控制电路实验设计报告.doc(28页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、 单片机原理及应用 课程设计报告书 题 目: 城市道口交通灯控制系统的设计 姓 名:张晶 邱佳平 左凡容 学 号: 专 业:电子信息科学与技术 指导老师:徐武雄 设计时间:2011年 12 月 目 录1.引 言21.1.设计意义21.2.系统功能要求21.3.本组成员所做的工作32.方案设计33.硬件设计54.软件设计85.系统调试136.设计总结157.附 录A;源程序158.附 录B;作品实物图片269.参考文献27 城市道口交通灯控制系统的设计1. 引 言1.1.设计意义交通信号灯的出现,使交通得以有效管制,对于疏导交通流量、提高道路通行能力,减少交通事故有明显效果。近年来随着科技的飞速
2、发展,单片机的应用正在不断深入,同时带动传统控制检测技术日益更新。在实时检测和自动控制的单片机应用系统中,单片机往往作为一个核心部件来使用,仅单片机方面知识是不够的,还应根据具体硬件结构软硬件结合,加以完善。本系统采用单片机AT89SS52为中心器件来设计交通灯控制器,系统实用性强、操作简单交通在人们的日常生活中占有重要的地位,随着人们社会活动的日益频繁,这点更是体、扩展性强。本设计就是采用单片机模拟十字路口交通灯的各种状态显示以及倒计时时间。本设计系统由单片机I/O口扩展系统、交通灯状态显示系统、LED数码显示系统、复位电路等几大部分组成。系统除基本的交通灯功能外,还具有倒计时等功能,较好的
3、模拟实现了十字路口可能出现的状况。软件上采用C51编程,主要编写了主程序,LED数码管显示程序,中断程序延时程序等。经过整机调试,实现了对十字路口交通灯的模拟。关键字:电子线路 AT89S52 LED 交通灯1.2.系统功能要求1.2.1.系统功能: 城市道口交通灯控制系统模型采用单片机作为主控制器,用于十字路口的车辆及行人的交通管理,每个方向既有左拐、右拐、直行及行人4种通行指示灯,计时牌显示路口通行转换剩余时间。 1.2.2.设计要求: 1.进一步熟悉和掌握单片机的结构和工作原理。 2.掌握单片机的接口技术及相关外围芯片的外特性,控制方法。 3.通过课程设计,掌握以单片机为核心的电路设计的
4、基本方法和技术,了解有关电路参数的计算方法。 4.通过实际程序设计和调试,逐步掌握模块化程序设计方法和调试技术。 5.通过完成一个包括电路设计和程序开发的完整过程,为我们今后从事相应工作打下基础。1.3.本组成员所做的工作 邱佳平():主要负责元器件的检查、电路板的排版、元器件的焊接 左凡容():主要负责电路的检查、协助焊接工作、电路的连线 张 晶():主要负责电路的分析测试、实验设计报告的完成1.4实验原材料电阻:10k 1个 电容:30p 2个 电解电容:10u 1个 510 35个 0.01u 5个 100u 1个 47k 3个数码管 3个 三极管 3个 单片机AT89S52 1个集成块
5、 74LS244 3个 IC插座:40脚 2个 20脚 3个发光二级管:红 17个 绿 16个 按键开关 2个导线 7m 焊锡 3m 印刷版 帽针 4个 排针3p 晶振1个 2. 设计方案 方案1:采用标准AT89S52单片机作为控制器;显示倒计时显示采用3位LED数码管;左拐、右拐、直行及行人4中通行指示灯采用双色高亮发光二极管;LED显示采用动态扫描,以节约端口数。按以上系统构架设计,单片机端口资源刚好满足要求。该系统具有电路简单,设计方便,显示亮度高,耗电较少,可靠性高等特点。整个电路组成框图如图2-1所示。上电复位 P1 P2 AT89S52 p0INT1 P3 P3 南北通行灯(2组
6、)东西通行灯(2组)3位LED显示器(4组)列扫驱动串口通信手控键盘图2-1 采用LED动态扫描的交通灯控制系统方案2:采用AT89C2051单片机作为控制器;通行倒计时显示采用1616点阵LED发光管,左拐、右拐、直行及行人4种通行指示灯也采用1616点阵LED发光管。该系统设计框架如图2-2所示。列驱动采用74LS595以实现串行端口扩展,行驱动采用4/16译码器74LS154动态扫描,译码器74LS154生成16条行选通信号线,再经过驱动器驱动对应的行线。每条行线上需要较大的驱动电流,应选用大功率三极管作为驱动管。这种设计方案的图案显示逼真,单片机占用端口资源少;缺点是需要大量的硬件,电
7、路复杂,耗电量大,在模型制作中较少采用。 REDTXD单片机I/O口电源行驱动器列驱动器74LS595双色LED显示点阵(每个路口7个)图2-2 采用1616点阵LED发光管设计的交通灯控制系统方案3:采用AT89C2051单片机作为控制器,通行倒计时及左拐、右拐、直行、行人通行指示采用单块LCD液晶点阵显示器。这种方案设计占用单片机的端口最少,硬件也少,耗电量也最小;虽然显示图案也很精美,但由于亮度太暗,晚上还得开背光灯,所以较少采用。 通过以上综合分析可以看出,方案1具有综合设计优点,因此城市道口交通灯控制系统采用方案1设计。3. 硬件设计 整套电路系统由控制系统模块、通行灯输出控制显示模
8、块和时间显示模块。主控制器采用AT89S52,是ATMEL公司生产的一款性能稳定的8位单片机。AT89S52具有1个8KB的Flash程序存储器,1个512字节的RAM,4个8位的双向可位寻址I/O端口,3个16位的定时/计数器及一个串行口和6个向量二级中断结构。单片机P0.0P0.7及P3.0P3.2用于4组3位LED计时器的控制,手动自动转换采用P3.7口按键,P1.0P1.7及P2.0P2.7分别控制南北和东西方向的红绿灯。3.1 主控制系统图3-1-1单片机控制图3-1-2南北方向红绿灯控制图3-1-3东西方向红绿灯控制图3-1-4数码管控制3.2 通行灯输出控制 道口交通灯指示采用高
9、亮度红绿双色放光二极管,左拐、直行、右拐及行人各一个。当发光电流为6mA时,按公式R=(5-1.8)/0.006计算,限流电阻应为510欧姆。由于南北通行是双向指示牌相同,因此每个端口应具有12mA的吸收电流能力。另外,人行道口按4个灯算需24mA的吸收电流。这样在单片机的输出喽需接驱动电路74HC244,以保护单片机的输出端口。图3-2所示为道口指示灯电路图。图3-2 城市道口交通指示灯电路3.3 时间显示模块道口通行剩余时间采用高亮红色7断LED发光数码管显示,采用共阳数码管,如用单片机吸收电流驱动,列扫描驱动使用三极管,按每段6mA电流算,全显示字形“8”每个数码管6mA8=48mA。由
10、于时间显示每个道口相同,4组需192mA,因此设计中采用中功率三极管9012。由于单片机每个段码输出口需吸收24mA电流,因此在电路设计中也使用了驱动集成块74HC244.其显示驱动电路如图3-3。图 3-3时间显示驱动电路3.4 复位电路3.5 时钟电路时钟倒计时初值通过键盘输入。倒计时使用52单片机内部定时器1实现计数,时钟控制部分是使用定时、计数器2实现计时,以秒为基本单位在数码管中显示。时钟部分:当秒的个位计时到了10,则秒个位清0,同时十位进一,以此类推;倒计时部分显示是则递减显示。此过程通过判断语句实现。4. 软件设计 道口交通控制系统程序主要分为以下几个模块:初始化程序、主程序、
11、定时中断程序和特种车实时响应程序等。4.1 初始化程序 初始化程序主要完成内存规划,定时器的工作模式、中断方式等的设定。由于程序调用较多,因此初始化时堆栈指针设于80H处。定时器T0、T1设为16位定时器模式,定时时间为50ms,T0为妙计时用,T1为通行结束闪烁用。4.2 主程序 主程序主要负责总体程序管理功能,实现人机交互设定。由于采用动态扫描方式显示时间,因此主程序大部分时间要调用扫描显示程序。主程序流程图如4-1所示。 图4-1 主程序流程图4.3 定时器中断服务程序 定时中断服务程序主要用于行车及行人的通行指示,按照通行规则,红绿灯控制转换逻辑表如表4-1所示。 南北方向端口控制功能
12、120110s11070s7060s6010s100sP*.7左拐红00011P*.6左拐绿11100/1P*.5直行红11100P*.4直行绿000/111P*.3右拐红01111P*.2右拐绿10000/1P*.1行人红11100P*.0行人绿000/111道口控制字66H6AH6AH/7BH99H99H/DDH东南方向P*.7左拐红00000P*.6左拐绿11111P*.5直行红00000P*.4直行绿11111P*.3右拐红01111P*.2右拐绿10000/1P*.1行人绿00000P*.0行人红11111道口控制字55H59H59H59H59H/5DH表4-1道口通行方式控制码数据
13、表通行规则如下:车辆南北直行、各路右拐,南北向行人通行。南北向通行时间为1min,各路右拐比直行滞后10s开放;车辆南北向左拐、各路右拐,行人禁行。通行时间为1min;车辆东西向直行、各路右拐,东西向行人通行。东西向通行时间为1min,各路右拐比直行滞后10s开放;车辆东西向左拐、各路右拐,行人禁行。通信时间为1min。 交通灯的4种通行规则,是以给控制红绿灯端口送控制码的方式实现的。它的原理是,将按不同规则通行的个路口的红绿灯亮灭情况转换为单片机端口控制码。其指示灯功能通过T0定时中断服务程序实现。 定时器T0定时益出中断周期设为50ms,中断累计20次(即1s)时对120s倒计时单元减1操
14、作。设计中将4种通行规则分成几种不同的亮灯方式,通过查询秒倒计时单元的数据,实现在不同的时间段给控制端口送不同的控制数据码。控制码分为5个时间段:120110s、11070s、7060s、6010s、100s。交通管理定时功能程序流程图如图4-3所示。T0中断程序现场保护关中断T0T0初值重装TIME110?TIME70?TIME60?TIME10?TIME0?南北/东西标志位取反Y中断返回NNNNNMOVSN,#66HMOVEW,#55HMOVSN,#6AHMOVEW,#59HMOVSN,#6AHMOVEW,#59HMOVSN,#99HMOVEW,#59HMOVSN,#99HMOVEW,#5
15、9H图4-3 T0定时中断服务程序流程图5. 系统调试根据系统设计方案,本系统的调试共分为三大部分:硬件调试,软件调试和软硬件联调。由于在系统设计中采用模块化设计,所以方便了对各电路功能模块的逐级测试,包括对交通灯通行方式功能的调试,行人通行指示功能调试,倒计时功能调试。单片机软件先在最小系统板上调试,确保工作正常之后,再与硬件系统联调。最后将各模块组合后在交道口模型上进行整体测试,使系统的所有功能得以实现。5.1 硬件调试交道口交通灯控制系统的电路板焊接工作量非常大,并且采用万用板,电路安装完成后,首先进行检查,即确认电路无虚焊,无短路,无断路,集成元件安装是否正确,之后进行电路功能模块的分
16、级调试,根据电路功能逐级进行: 通行方式功能调试:包括对四种通行方式控制调试,行人和行车方向指示灯调试 倒计时功能调试:数码管显示值调试 紧急情况手动控制功能调试:包括按键功能及规则调试 5.2 软件调试 本系统的软件系统很大,选用一般的仿真器对AT89S52进行调试。除了语法差错外,当确认程序没问题时,通过直接下载到单片机来调试。采取的是自下到上的调试方法,即单独调试好每一个模块,然后再连接成一个完整的系统,最后完成一个完整的系统调试。5.3 软硬联调 系统做好后,进行系统的完整调试。主要任务是检验实现的功能及其效果并校正数值。根据实测数据,逐步校正数据,使测量结果更准确。单片机软件先在最小
17、系统板上调试,确保工作正常之后,再与硬件系统联调。 5.4 各模块调试5.4.1 交通灯通行方式功能的调试:显示倒计时采用3位LED数码管;左拐、右拐、直行及行人4组通行指示灯采用双色高亮发光二极管。接线繁琐,极易出错.检查二极管无故障,导线无断线,连线接头无互相搭联后可先写一个软件调试程序,依次检查东南西北方向的指示灯(发光二极管)是否点亮;若未点亮,则可能是连线接错.根据灯的亮灭情况依次查找直到电路正常工作为止。我们主要出现的是数码管不亮的问题,后来通过检查,为连接线接错。改正后数码管亮度也达到最佳了。值得注意的是,南北方向、东南方向的指示灯要同时调试。设计中将4种通行规则分成几种不同的亮
18、灯方式,分成5个时间段:120110s、11070s、7060s、6010s、100s。经过调试指示灯的亮灭符合控制要求。5.4.2 紧急情况手动控制功能调试:当按下手动开关时,南北方向和东西方向的红灯灭掉,绿灯亮起。则说明该模块符合要求。6. 设计总结本系统以AT89S52单片机为核心,开发程序调试阶段采用W78E516B进行在线编程及修改,可大大加快调试速度。设计的交通灯可用于十字路口的车辆及行人的交通管理,显示采用3位7段数码管,可以很直观地显示红绿灯的开放和关闭的时间;设计中应用了两种倒计时显示方式,120s倒计时适用于车流量较大的大城市,60s倒计时可用于中小型城市。在此次设计中,我
19、们得到以下体会: 这这次时钟计时器设计的过程让我进一步熟悉各种芯片、元器件的功能,将从书本上的知识应用于实践,使我对各种芯片有了更深刻的了解。经过这次试验我们又重新复习了各种电路如时钟电路、定时电路、LED显示电路的原理。在电路板排版的设计时,既要考虑到各芯片与元器件之间的连接,又要考虑排版的美观;在焊接方面,我们了解到焊接某些器件时,要先消去电烙铁上的静电,防止静电对芯片特别是放大器件造成伤害,焊接晶振、三极管等芯片时要快,防止持续高温损坏芯片。我们在焊接时争取一次性焊接成功,当焊接好时再去检查时非常困难,所以要非常的仔细。而且要焊实,不能出现虚焊的情况,但也不要使电路板受热太长时间,以免铜
20、盘被焊掉;从中我们学习到了大家的团结是非常重要的,组里的每一个成员都是必不可少的,因此团结合作的精神是非常的重要的。通过这次课程设计,使我得到了一次用专业知识、专业技能分析和解决问题全面系统的锻炼。使我在单片机的基本原理、单片机应用系统开发过程,以及在常用编程设计思路技巧(特别是汇编语言)的掌握方面都能向前迈了一大步,为日后成为合格的应用型人才打下良好的基础。7. 附录A:源程序 以下是城市道口交通灯控制系统模型控制用汇编程序:; 交通灯 ; TIME EQU 50H ;秒计数用 TIMESFR EQU 51H ;临时寄存器 CONR5 EQU 52H ;T11秒定时计数用 TIMED0 EQ
21、U 55H ;单向最大定时时间,直行开始,人行开始 120 TIMED1 EQU 56H ; 各路右转开始时间 110 TIMED2 EQU 57H ; 前行结束提醒 70 TIMED3 EQU 58H ; 前行结束,人行结束,左转开始 60 TIMED4 EQU 59H ; 左转结束提醒 TIMED5 EQU 5AH ; 左转结束 TIMED6 EQU 5BH ; TIMED7 EQU 5CH ; SN EQU P1 ; 南北口 EW EQU P2 ; 东西口 SCAN EQU P3 ;扫描口 LEDOUT EQU P0 ;段码口 SNEWFLAG BIT 09H ;东西口与南北口转换标志;
22、 按键在扫描口的最高位,按一下,全红灯,再按一下,恢复原状态; 定时器T0、T1溢出周期为50MS,T0为秒计数用,; 中断入口程序 ; ORG 0000H ;程序执行开始地址 LJMP START ;跳到标号START执行 ORG 0003H ;外中断0中断程序入口 RETI ;外中断0中断返回 ORG 000BH ;定时器T0中断程序入口 LJMP INTT0 ;跳至INTTO执行 ORG 0013H ;外中断1中断程序入口 LJMP INT11 ;外中断1中断返回,119.120中断 ORG 001BH ;定时器T1中断程序入口 LJMP INTT1 ORG 0023H ;串行中断程序入
23、口地址 RETI ;串行中断程序返回; ; ; 主 程 序 ; ; START: MOV SP,#80H MOV R0,#00H ;清70H-7AH共11个内存单元 MOV R7,#8FH ; CLEARDISP: MOV R0,#00H ; INC R0 ; DJNZ R7,CLEARDISP ; MOV TIMED0,#78H ;单向最大定时时间,直行开始,人行开始 120 MOV TIMED1,#6EH ; 各路右转开始时间 110 MOV TIMED2,#46H ; 前行结束提醒 70 MOV TIMED3,#3CH ; 前行结束,人行结束,左转开始 60 MOV TIMED4,#0A
24、H ; 左转结束提醒 CLR SNEWFLAG ;南北先通行标志位 MOV TMOD,#11H ;设T0、T1为16位定时器 MOV TL0,#0B0H ;50MS定时初值(T0计时用) MOV TH0,#3CH ;50MS定时初值 MOV TL1,#0B0H ;50MS定时初值(T1闪烁定时用) MOV TH1,#3CH ;50MS定时初值; JB SCAN.7,SSST ;120秒管理;以下为60秒管理 LCALL DL1MS LCALL DL1MS LCALL DL1MS JB SCAN.7,SSST ;干扰 MOV TIMED0,#60 ;单向最大定时时间,直行开始,人行开始60 MO
25、V TIMED1,#55 ; 各路右转开始时间 55 MOV TIMED2,#35 ; 前行结束提醒 35 MOV TIMED3,#30 ; 前行结束,人行结束,左转开始 30 MOV TIMED4,#05 ; 左转结束提醒 SSWAIT: JNB SCAN.7,SSWAIT LCALL DL1MS LCALL DL1MS LCALL DL1MS JNB SCAN.7,SSWAIT ; SSST: MOV TIME,TIMED0 ;120秒 LCALL TUNBCD MOV SN,#66H ; MOV EW,#55H ; SETB EA ;总中断开放 SETB PX1 SETB EX1 SET
26、B ET0 ;允许T0中断 SETB TR0 ;开启T0定时器 MOV R4,#14H ;1秒定时用初值(50MS20) MOV CONR5,#20 START1: LCALL DISPLAY ;调用显示子程序 JNB SCAN.7,KEYFUN ;手动状态 SJMP START1 ;P1.0口为1时跳回START1;KEYFUN: LCALL DISPLAY LCALL DISPLAY JB SCAN.7,START1 CLR ET0 CLR TR0 MOV SN,#056H ;全车道停,行人通 MOV EW,#056H ; MOV TIME,#00H ;时间显示0 LCALL TUNBCD
27、 KEYWAIT: LCALL DISPLAY ; JNB SCAN.7,KEYWAIT ; KEYY: LCALL DISPLAY ;等待按键按下 JB SCAN.7,KEYY LCALL DISPLAY JB SCAN.7,KEYY KEYWAIT1: LCALL DISPLAY ; JNB SCAN.7,KEYWAIT1 ; MOV TIME,TIMED0 ;从新开始计时初值 LCALL TUNBCD CLR SNEWFLAG ;南北先通行标志位 SETB TR0 SETB ET0 AJMP START1; 1秒计时程序 ;T0中断服务程序 INTT0: PUSH ACC ;累加器入栈保
28、护 PUSH PSW ;状态字入栈保护 CLR ET0 ;关T0中断允许 CLR TR0 ;关闭定时器T0 MOV A,#0B7H ;中断响应时间同步修正 ADD A,TL0 ;低8位初值修正 MOV TL0,A ;重装初值(低8位修正值) MOV A,#3CH ;高8位初值修正 ADDC A,TH0 ; MOV TH0,A ;重装初值(高8位修正值) SETB TR0 ;开启定时器T0 DJNZ R4, OUTT00 ;20次中断未到中断退出 MOV R4,#14H ;20次中断到(1秒)重赋初值 JB SNEWFLAG, INT22 DEC TIME MOV A,TIME CJNE A,T
29、IMED1,LOOP11 ; 判断是否小于110秒 LOOP11: JC LOOP22 ; 120-110 MOV SN,#66H ; I MOV EW,#55H ; I LJMP OUTT0 ; 120-110 LOOP22: MOV A,TIME CJNE A,TIMED2,LOOP33 ; 判断是否小于70秒 LOOP33: JC LOOP44 ; 110-70 MOV SN,#6AH ; I MOV EW,#59H ; I LJMP OUTT0 ; 110-70 LOOP44: MOV A,TIME CJNE A,TIMED3,LOOP55 ; 判断是否小于60秒 LOOP55: JC
30、 LOOP66 ; 70-60 MOV 20H,SN ; CPL 04H ; CPL 00H MOV SN,20H ; I MOV EW,#59H ; I LJMP OUTT0 ; 70-60 LOOP66: MOV A,TIME CJNE A,TIMED4,LOOP77 ; 判断是否小于10秒 LOOP77: JC LOOP88 ; 60-10 MOV SN,#99H ; I MOV EW,#59H ; I LJMP OUTT0 ; 60-10 LOOP88: MOV A,TIME JZ OUT88 MOV 20H,SN ; CPL 06H ; CPL 02H MOV SN,20H ; MOV 20H,EW CPL 02H MOV EW,20H ; I LJMP OUTT0 ; 70-60 OUT88: MOV TIME,TIMED0 ;120秒初值 CPL SNEWFLAG OUTT0: LCALL TUNBCD ; OUTT00: POP PSW ;恢复状态字(出栈) POP ACC ;恢复累加器 SETB ET0 ;开放T0中断 RETI ;中断返回; INT22: DEC TIME MOV A,TIME CJNE A,TIMED1,LOOP111 ; 判断是否小于110秒 LOOP111: JC LOOP221 ; 120-110 MOV EW,#66H ; I