资源描述
单片机技术课程设计说明书 交通灯 院 、 部: 电气与信息工程学院 学生姓名: 沐 弓 指导教师: 王韧 职称 副教授 专 业: 电子信息工程 班 级: 电子120班 完成时间: 2013年12月21日 摘 要交通灯在现代社会交通管理的作用毋庸置疑,它使交通得以有效管制,对于疏导交通流量、提高道路通行能力,减少交通事故有明显效果。本系统采用单片机AT89S52为中心器件来设计交通灯控制器,系统实用性强、操作简单、扩展性强。本设计就是采用单片机模拟十字路口交通灯的状态显示以及倒计时。设计以AT89S52单片机为核心,外接外围电路构成基本电路,本设计除基本的交通灯功能外,还增加了在紧急情况下能手动切换信号灯让特殊车辆优先通行,较好的模拟实现了十字路口可能出现的状况。软件上采用汇编语言编程,主要编写了主程序,LED数码管显示程序。经过整机调试,实现了对十字路口交通灯的模拟关键词 交通灯;单片机ABSTRACT The traffic lights in the modern society traffic management role.its occurrence, make traffic to effectively control for relieves traffic flow, improve traffic capacity, reduce the number of traffic accidents have obvious effect. The system adopts single-chip microcomputer AT89C51 as the center device to designing traffic light controller, system strong practicality, simple operation, extensible. This design is one-chip computer simulation intersection traffic lights state display and countdown.Design with AT89S52 single-chip microcomputer as the core, an external circuit constitute the basic circuit .Intelligent traffic control system will usually achieve automatic control and in emergency situations can manual switching lights make special vehicle righe-of-way.good simulation crossroads possible conditions.Software is used on assembly language programming, mainly prepared the main program, LED digital pipe display program. After the machine commissioning, realize the intersection traffic simulation.Key words The traffic lights;single-chip 目 录1 系统总体设计方案11.1 设计课题任务11.2 功能要求说明11.3 总体方案介绍及工作原理12 设计课题硬件系统的设计22.1 设计课题硬件系统各模块功能简要介绍22.2 设计课题电路原理图、PCB图、元器件布局图各1份32. 3 设计课题元器件清单43 设计课题软件系统的设计43.1 设计课题使用单片机资源的情况43. 2 设计课题软件系统各模块功能简要介绍63.3 设计课题软件系统程序流程框图73. 4 设计课题软件系统程序清单84 使用说明,仿真结果及误差分析8 4.1 设计使用说明8 4.2 程序仿真结果8 4.3 误差分析10 4.4 设计体会10结束语11致 谢12参考文献13附录A14附录B15附录C16附录D17附录E18附录F261 系统总体设计方案1.1 设计课题任务 设计一个具有特定功能的十字路口交通灯。1.2 功能要求说明(1)该交通灯上电或按键复位后能自动显示系统提示符“P.”。(2)进入准备工作状态。按开始键则开始工作,按结束键则返回“P.”状态。(3)要求甲车道和乙车道两条交叉道路上的车辆交替运行,甲车道为主车道, 每次通车时间为60秒,乙车道为次车道,每次通车时间为30秒,要求黄灯亮3秒,并且1秒闪烁一次。(4)有应急车辆出现时,红灯全亮,应急车辆通车时间10秒,同时禁止其他车辆通过。1.3 总体方案介绍及工作原理交通灯的总体功能原理是以AT89S52单片机为主要的控制核心,通过外接4个独立式键盘作为控制信号源,八个七段数码管作为显示器件。单片机实时的去执行相应的功能。在数码管上显示出来,此时通过不同的按键来观看和调节各种数据。系统的硬件框图如图1所示。 图1 系统的硬件框图 2 设计课题硬件系统设计2.1 设计课题硬件系统各模块功能简要介绍2.1.1 单片机最小系统片机最小系统包括AT89S52单片机以及电源电路、时钟电路、复位电路。只有当单片机有了这些电路才会工作。AT89S52主要性能与MCS-51单片机产品兼容 、8K字节在系统可编程Flash存储器,1000次擦写周期,全静态操作。0Hz33H三级加密程序存储器、32个可编程I/O口线、三个16位定时器/计数器、八个中断源、全双工UART串行通道、低功耗空闲和掉电模式、掉电后中断可唤醒、看门狗定时器、双数据指针、掉电标识符。AT89S52具有 8K 在系统可编程Flash存储器。空闲模式下,CPU 停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。时钟电路中主要由石英晶体这个感性元件,与电容构成振荡回路,为片内放大器提供正反馈和振荡所需的相移条件,从而构成一个稳定的自激振荡器。从而给单片机提供计数时间。复位电路复位电路有上电复位,按键电平复位和按键脉冲复位3种。80C51的RST引脚是复位信号的输入端。复位信号时高电平有效,其有效时间应持续24个振荡脉冲周期以上,整个复位电路包括芯片内、外两部分。外部电路产生的复位信号RST送施密特触发器;再由片内复位电路在每个机器周期的S5P2时刻对施密特触发器的输出进行采样;最后才得到内部复位操作所需要的信号。电源电路给单片机提供稳定的直流稳压电源。2.1.2 键盘功能模块按键电路的设计就是在一端公共接地,另一端通过上拉电阻接到P1口,当有按键按下,相应的口就会变成低电平,产生一个下降沿各键功能单一,互不影响,操作起来十分的清晰与方便2.1.3 数码管显示模块数码管的八个位控口接在AT89S52单片机的P2口线上,段控制线接在P0口线上,由于数码管的本身显示亮度不够,所以一般都会在其位控和段控口前加上一定的驱动电路,本次设计中采用74HC573作为驱动.本次采用的数码管为共阳极。2.1.4 蜂鸣器模块 蜂鸣器通过9012三极管与单片机P3.1口线连接,当P3.1口线取低电平时,蜂鸣器鸣叫。 2.1.5 LED模块LED电路直接挂接在单片机的P3口上,采用共阳接法。P3口线取低电平时LED2.1.6 下载电路下载口的1脚接P1.5口,2脚悬空,3脚接单片机的复位口,4脚接P1.6口,5脚接P1.7口,6脚接地,7、8、8、10脚接地。2.2设计课题电路原理图、PCB图、元器件布局图各1份电路原理图见附录A电路pcb图见附录B元器件布局图见附录C电路CDA图件附录F2.3 设计课题元器件清单元器件清单见附录D3 设计课题软件系统的设计3.1 设计课题使用单片机资源的情况P0口输出数码管段控信号,P2口输出数码管位控信号,P1口接按键,P3口接流水灯;晶振12MHz;按键S0:P1.0,复位显示P;按键S1:P1.1;按键S2:P1.2;按键S3:P1.3;按键S4:P1.4,复位显示P。40H用于显示缓冲区个位;41H用于显示缓冲区十位;堆栈栈底:70H。3.2 设计课题软件系统各模块功能简要介绍 3.2.1 键扫描子程序 键处理函数主要是将从P1口取值送往单片机进行取反处理。键扫描函数主要是判断是否真的有键按下,即度过前沿抖动之后再判断是否有键按下,如果确实有键按下再判断是否释放,同样也要度过后沿抖动。最终将处理完的键值作为返回值返回3.2.2 显示子程序显示子程序主要是完成数码管的动态显示,将相应的段控码送P0口,位控码送P2口,根据查表显示需要的字符信息。3.2.3 延时子程序根据程序的设计要求,需要1ms,500ms,1s的延时,由于时间比较短,故采用软件方式延时。3.2.4 外部中断程序本课题是用外部中断函数来实现应急车道通车。外部中断函数里面用到的延时1s和正常通车时用到的延时1s不是同一个延时函数,因为按键扫描是加在正常通车时的延时1s中,这样是为了防止其他按键影响中断服务的进行。3.2.5 主程序本课题的主程序中,包含上电显示P.和键扫描程序,当没有键按下时,一直显示P.。当S1按下时,甲车道通车;当S2按下时,乙车道通车;当S4按下时显示P.;当S3按下时,显示紧急车道通车。3.3 设计课题软件系统程序流程框图根据软件系统各模块设计程序流程框图3.3.1 主程序流程框图 图2 主程序流程框图3.3.2 显示子程序流程框图 图3 显示子程序流程框图3.3.3 键扫描子程序流程框图 图4键扫描子程序流程框图3.3.4 键功能子程序流程框图 图5键功能子程序流程框图3.3.5 中断子程序流程框图 图6中断子程序流程框图3.4 设计课题软件系统程序清单程序清单见附录E4 使用说明,仿真结果及误差分析4.1 设计使用说明本次设计的十字路口交通灯能够运用在大多情况下,S1键控制甲车道通车,S2键控制乙车道通车,S3键控制紧急情况通车,S4键显示P.。4.2 程序仿真结果上电显示P.仿真。 图7上电显示仿真图按下S1后,甲车道通车,甲车道绿灯亮60S,乙车道红灯亮60S。 图8 甲车道通车仿真图甲车道通车60S内,最后3秒黄灯闪烁。 图9 甲车道黄灯闪烁仿真图按下S2后,乙车道通车30S,乙车道绿灯亮30S,甲车道红灯亮30S。 图10 乙车道通车仿真乙车道通车30S内,最后3秒乙车道黄灯闪烁,甲车道红灯亮。 图11 乙车道黄灯闪烁仿真 按下S4后,显示P.,LED灯全部熄灭。 图12 显示P.仿真按下S3后,紧急情况通车,甲乙两车道红灯亮10S。 图13 紧急情况仿真4.3 误差分析交通灯在紧急情况下入栈后经过中断程序后出栈的值会有所出入。该误差可能的产生原因是:(1)首先是采用的计时方案是软件计时的,计时又是利用中断来实现。而你开启定时器和开启LED灯顺序上是有先后的,这个过程需时间的,所以就产生了一定的误差,当然这个误差是避免不了的;(2) 设计用到12MHz的晶振,计算是满20次为一秒钟,但实际会慢很多;(3) 受到外部因素的影响,如温度等4.4 设计体会通过本次课程设计,我进一步地掌握了单片机的接口技术以及汇编语言程序设计。在编写程序之前,我首先好好的看了一下要用到的书上的内容,然后理清思路,画出大概的流程图以后才开始动手编写程序。第一次写这样长的程序,刚开始时非常害怕的,但在老师的指导下,通过分模块的编写,将一个大的程序分成几个小程序编写果然简单了许多。我认为本次课题的难点在与堆栈的使用,刚开始因为对断点保护的不熟悉,反复几次通过Proteus和Keil的验证才找出问题并解决,让我对着两个软件的功能有了更进一步的认识。结束语将本设计的程序下载到单片机中,通过测试,基本上完成了任务书的基本要求,并且在不外加干扰的情况下可以实现智能控制十字路口的车辆交通情况。但是因为定时是用的延时编写的程序,所以定时的精度有待进一步提高在设计过程中,画电路图制PCB板、打孔、溶铜、焊接等,真的经历了许多困难,却积累了很多宝贵的经验,在调试时出现异常,不过这些都是经常性错误,经过调试修改都一一解决,程序顺利完成,并实现了其功能。由于使用的是单片机作为核心的控制元件,使得电路的可靠性比较高,功能也比较强大,而且可以随时的更新系统,进行不同状态的组合。但是在我们设计和调试的过程中,也发现了一些问题,譬如红灯和绿灯的切换还不够迅速,红绿灯规则不效率还不是很高等等,这需要在实践中进一步完善。当然,通过这次课程设计,我也发现了自身的很多不足之处,在以后的学习中,我会不断的完善自我。致谢通过本次课程设计,我懂得了单片机学习的重要性,更是了解到理论知识与实践相结合的重要意义,学会了坚持、耐心和努力,这将为自己今后的学习和工作做出了最好的榜样。另外,要非常感谢我的指导老师王韧老师,是她细心的给我讲解了许多关于AT89S52、独立式键盘、数码管显示相关的知识,并在设计过程中所遇到的难题都给了非常重要的意见,是她指引我克服一个由一个的困难,让我学会对困难无所畏惧,以及对问题的一些很重要的思考方法。同时,在我的实际作品的制作过程之中,得到的学校许多的同学的热情的指导和详细的说明。此外,在实际程序的编写的过程之中得到了别人的认可,在遇到许多的不解困难的时候,自己班里的电子制作的爱好者也给我提供的最详细的解答,没有以上的每一个人的帮助,我的单片机课程设计很难顺利的完成,在此,我对于在我的设计和制作的过程中给予我帮助的每一个人一并表示感谢。参考文献1马忠梅.单片机C程序设计M,北京:北京航空航天大学出版社,2007 Ma Zhongmei. microcontroller C programming M, Beijing: Beijing Aerospace University Press, 20072李广弟.单片机基础M,北京:北京航空航天大学出版社,2007 Li Guangdi. microcontroller based on M, Beijing: Beijing Aerospace University Press, 20073 曹巧媛.单片机原理及应用M,北京:电子工业出版社,1997.7.Cao QiaoYuan.Microcontroller Theory and Applications M, Beijing: Electronic Industry Press, 1997.7.4 张洪润.兰清华,单片机应用技术教程M,北京:清华大学出版社,1997.11.Zhang Hongrun ,Lan Qinghua, MCU application technology tutorial M, Beijing: Tsinghua University Press, 1997.11.附录A电路原理图 图14 电路原理图附录B电路PCB图 图15顶层PCB图 图16底层PCB图附录C元器件布局图 图17元器件布局图附录D材料清单表1 元器件清单名称数量参数单片机1个AT89S52共阳数码管2个4位一体晶振1个12MHz发光二极管9个芯片插座1个20DIP芯片插座1个40DIP蜂鸣器1个按键10个排阻4个10K下载口座子1个十芯六脚按键开关1个USB电源线加接口1个电阻1个200电阻3个1K电阻8个470电解电容2个22f瓷片电容2个33p短路帽3个PCB板子1块电源白色插座1个杜邦线2个铜柱 (带螺母)4个集成芯片1个74HC573排阻1个470三极管1个9012附录E程序清单/*项目名称:交通灯*/*设 计 者:宋强*/*时 间:2013年12月21日 */*项目功能:设计一个具有特定功能的十字路口交通灯。*/*项目所以单片机资源:P0口输出数码管段控信号, P2口输出数码管位控信号, P1口接按键, P3口接流水灯; 晶振12MHz; 按键S1:P1.0,甲车道通车; 按键S2:P1.1,乙车道通车; 按键S3:P1.3,紧急情况通车; 按键S4:P1.2,复位显示P.; 40H用于显示缓冲区个位; 41H用于显示缓冲区十位; 堆栈栈底:70H。*/*项目所用的显示模块:四位一体数码管最后2位; 6个LED灯(LED0,LED3,LED4,LED5,LED6,LED7).*/*项目所用报警装置: 蜂鸣器(与单片机P3.1口线相连接)。*/;*建立显示缓冲区: 个位40H, 十位41H, * ORG 0000HLJMP MAINORG 0003HLJMP WBZDMAIN: MOV SP,#70HSETB EASETB EX0SETB IT0MOV 40H,#17MOV 41H,#16 ;显示P.SETB P3.0SETB P3.3SETB P3.4SETB P3.5SETBP3.6SETBP3.7 ;关闭所有灯DD: LCALL KEY LJMP DD ;判有无按键按下;*甲车道通60s*JIA:CLR P3.3 ;甲车道绿灯亮CLR P3.5 ;乙车道红灯亮SETB P3.4SETB P3.0 SETB P3.7SETB P3.6 ;关闭其他灯MOV 40H,#0 MOV 41H,#6;初始化60S LCALL DELAY;延时1秒并显示 MOV R4,#05LOOP1: DEC 41H;十位减MOV 40H,#9 ;个位显示9LCALL DELAYLOOP2: DEC 40H;个位减LCALL DELAYMOV A,40HCJNE A,#00H,LOOP2LOOP3: DJNZ R4,LOOP1FF: MOV 40H,#9MOV 41H,#0LCALL DELAYDD1: DEC 40HLCALL DELAYMOV A,40HCJNEA,#04H,DD1;*黄灯闪烁3s*HD1:CLR P3.4 ;甲车道黄灯亮 CLR P3.5 ;乙车道红灯亮 SETB P3.0SETB P3.3SETB P3.7SETB P3.6 MOV 40H,#3MOV 41H,#0;初始化3S LCALL DLY ;显示500MS 并延时SETBP3.4LCALL DLY ;显示500MS 并延时LOOP4:DEC 40HCLR P3.4LCALL DLY;显示500MS 并延时SETBP3.4LCALL DLY;显示500MS 并延时MOV A,40HCJNE A,#01H,LOOP4;*乙车道30s*JI: CLR P3.6 ;乙车道绿灯亮CLR P3.0 ;甲车道红灯亮SETB P3.5SETB P3.3 SETB P3.4SETB P3.7;关闭其他灯 MOV 40H,#0MOV 41H,#3;初始化30S LCALL DELAY;延时1秒并显示 MOV R3,#02LOOP5:DEC 41H;十位减MOV 40H,#9;个位显示9LCALL DELAYLP1: DEC 40H;个位减LCALL DELAYMOV A,40HCJNE A,#00H,LP1 ;判断个位是否为0LP2: DJNZ R3,LOOP5FF1: MOV 40H,#9MOV 41H,#0 LCALL DELAYDQ: DEC 40HLCALL DELAYMOV A,40HCJNE A,#04H,DQ;*黄灯闪3s*HD2:CLR P3.7;乙车道黄灯亮 CLR P3.0 ;甲车道红灯亮SETB P3.6 SETB P3.5SETB P3.3SETB P3.4 MOV 40H,#3MOV 41H,#0 ;初始化3S LCALL DLY ;显示500MS 并延时SETBP3.7LCALL DLY ;显示500MS 并延时LOOP6:DEC 40HCLR P3.7LCALL DLY ;显示500MS 并延时SETBP3.7LCALL DLY ;显示500MS 并延时MOVA,40HCJNE A,#01H,LOOP6LJMP JIA;* 500ms延时*DLY:MOV A,R0PUSH ACCMOV R0,#125LL:LCALL DIRLCALL KEYDJNZ R0,LLMOV R0,APOP ACCRET;*延时1s,显*DELAY:MOV A,R0PUSH ACCMOV R0,#250LOO11: LCALL DIRLCALL KEYDJNZ R0,LOO11MOV R0,APOP ACCRET;*显示程序*DIR:PUSH DPHPUSH DPLPUSH ACCMOV DPTR,#TABMOV P2,#00000001B ;选中个位数码管MOVA,40H MOVC A,A+DPTRMOV P0,A ;送个位数LCALL DL ;延时1msMOV P0,#0FFHMOV P2,#00000010B ;选中十位数码管MOV A,41HMOVC A,A+DPTRMOV P0,A ;送十位数LCALL DLMOV P0,#0FFHPOP ACCPOP DPLPOP DPHRET;*延时1ms*DL:MOV R7,#01HDL1: MOV R6,#8EHDL0: MOV R5,#02HDJNZ R5,$DJNZ R6,DL0DJNZ R7,DL1RET;*应急车道10s*WBZD:PUSH PSWPUSH ACCPUSH BMOV B,P3MOV 45H,40HMOV 46H,41HCLRP3.1CLR P3.0CLR P3.5 ;亮两个红灯SETB P3.4SETB P3.3SETB P3.7SETB P3.6;关闭其他灯MOV 40H,#0MOV 41H,#1;初始化10秒LCALL DELAY1;显示并延时1SMOV 40H,#9MOV 41H,#0;显示09LCALL DELAY1 ;显示并延时1SBB:DEC 40HLCALL DELAY1 ;显示并延时1SMOV A,40HCJNE A,#00H,BBMOV P3,BSETB P3.2MOV 40H,45HMOV 41H,46HPOP BPOP ACCPOP PSWCLRIE0RETI;*中断调的延1s*DELAY1: MOV A,R3PUSH ACCMOV R3,#250LOOP51: LCALL DIR ;调显示LCALL DLLCALL DLDJNZ R3,LOOP51 POP ACCMOV R3,ARET;*键盘扫描*KEYSAO: LCALL KEYCHULI JZ EXIT LCALL DL LCALL DL;去抖动 LCALL KEYCHULI JZ EXIT MOV B,20HKEYSF: LCALL KEYCHULI JZ KEY110 LCALL DL LCALL DL ;去抖动 LJMP KEYSFKEY110: MOV 20H,BEXIT: RETKEYCHULI:PUSH PSW CLR RS1 SETB RS0 MOV P1 , #0FFH MOV A, P1 CPL A ANL A, #0FH MOV 20H, A CLR RS1 CLR RS0 POP PSW RET ;*按键功能判断*KEY:LCALL DIR ;调显示子程序 LCALL KEYSAO ;调键盘扫描子程序 MOV A, 20H ;键值送AKEY0: CJNE A , #01H, KEY1 LJMP JIA KEY1: CJNE A , #02H, KEY2 LJMP JI KEY2: CJNE A , #08H, KEY3 LJMP MAIN KEY3: RET;*段码表(阳)*TAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H, 88H,83H,0C6H,0A1H,86H,8EH,0FFH,0CH END附录F电路CAD图 26
展开阅读全文