《基于单片机交通信号灯设计.pdf》由会员分享,可在线阅读,更多相关《基于单片机交通信号灯设计.pdf(23页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、课程设计单片机系统单片机系统课课程程设设计计成绩评定表设计课题设计课题:基于单片机的交通信号灯设计学院名称学院名称:电气工程学院专业班级专业班级:电气 F1206学生姓名学生姓名:学学号号:指导教师指导教师:设计地点设计地点:31-510设计时间设计时间:2014-12-292015-01-09指导教师意见:成绩:签名:年月日课程设计单片机系统单片机系统课课程程设设计计课程设计名称:课程设计名称:基于单片机的交通信号灯设计专专 业业 班班 级级:电气 F1206学学 生生 姓姓 名名:学学号号:指指 导导 教教 师师:课程设计地点:课程设计地点:31-510课程设计时间:课程设计时间:2014
2、-12-292015-01-09课程设计单片机系统单片机系统课程设计任务书课程设计任务书学生姓名题目课题性质指导教师工程设计专业班级电气 F1206学号基于单片机的交通信号灯设计课题来源利用 89C51 单片机设计交通信号灯系统,实现以下功能1、在正常的工作情况下,系统的红、黄、绿灯交替进行转换,而且在对应的LED 显示器上可以以到计时的方式显示剩余时间。2、在紧急的情况下,两组交通灯同时为红灯,禁止所有的车辆通行,只允许特殊的车辆通过,当紧急的车辆通过后系统要可以通过手动按钮恢复以前的正常工作情况方式。第 1-2 天:熟悉课程设计任务及要求,查阅技术资料,确定设计方案。第 3-4 天:按照确
3、定的方案设计单元电路。要求画出单元电路图,元件及元件参数选择要有依据,各单元电路的设计要有详细论述。第 5-6 天:软件设计,编写程序。第 7-8 天:实验室调试。第 9-10 天:撰写课程设计报告。要求内容完整、图表清晰、文理流畅、格式规范、方案合理、设计正确,篇幅不少于 6000 字。1张迎新单片微型计算机原理、应用及接口技术(第 2 版)M北京:国防工业出版社,20042 赵晶 主编Prote199 高级应用人民邮电出版社,2000主要参考资料3 于海生 编著微型计算机控制技术清华大学出版社 2003.44 张志良 编著单片机原理与控制技术M 机械工业出版社,20055 蒋方君 编著 在
4、论循环时序电路的简便设计J 机电一体化,20056 徐维祥.单片微型机原理及应用 大连理工大学出版社,2006审查意见系系(教研室)(教研室)主任签字:主任签字:年年月月日日自拟主要内容(参数)任务要求(进度)第 1 页课程设计目目录录1 绪论.31.1 交通信号灯概况.31.2 本文研究内容.32 总体方案设计.33 硬件电路.53.1 时钟电路设计.53.2 复位电路设计.63.3 显示电路设计.63.3.1 倒计时器电路设计.63.3.2 红绿灯显示电路设计.74 软件设计.84.1 软件实现功能综述.84.2 流程图设计.84.2.1 主程序流程图设计.84.2.2 中断流程图设计.8
5、5 仿真电路.96 总结.12参考文献.13附录 A 系统原理图.14附录 B 源程序.15第 2 页课程设计1 1 绪论绪论1.11.1 交通信号灯概况交通信号灯概况十字路口车辆穿梭,行人熙攘,车行车道,人行人道,有条不紊,那么靠什么来实现这井然秩序呢?靠的就是交通信号灯的自动指挥系统。由于传统的交通灯控制管理系统一般有数字电路构成,电路复杂,体积大,成本高。而本系统采用单片机为主控元件,能够简单,方便的实现交通灯的控制管理。系统适应于十字路口道路。在正常的工作情况下,系统的红、黄、绿灯交替进行转换,而且在对应的 LED 显示器上可以以到计时的方式显示剩余时间。在紧急的情况下,两组交通灯同时
6、为红灯,禁止所有的车辆通行,只允许特殊的车辆通过,当紧急的车辆通过后系统要可以通过手动按钮恢复以前的正常工作情况方式。进人正常的工作。因此,该系统设计方便、实用,而且硬件的元件连接又是十分的简单1.21.2 本文研究内容本文研究内容所设计的交通灯管理系统主要有主控摸块(89C51 单片机)。译码/驱动电路,时钟电路,交通灯模拟部分,紧急情况手动控制部分及剩余时间显示部分等组成。利用单片机 89C51 定时功能,是红、黄、绿灯分别点亮和熄灭一段时间,并且通过与显示器的连接可以显示剩余时间。而且当出现特殊或紧急的情况时,可以通过紧急情况手动控制单元的按钮进行特别的处理,而当紧急的情况消失后,系统又
7、可以通过解除按钮恢复正常工作。令其中断方式为 1,当定时时间到时则立即执行中断程序,并转向下一个状态,同时调用显示子程序,在 LED显示器上显示剩余时间。2 2 总体方案设计总体方案设计主要设计,通过单片机 AT89C51对外设各个硬件进行连接,并通过软件的设计,对十字路口交通信号灯进行模拟控制。时钟电路,产生单片机工作所需要的时钟信号,为了保证同步工作方式的实现,电路应在唯一的时钟信号控制下严格工作。AT89C51通过连接硬件,并对信号做出处理。锁存器,锁存信息。74LS373,外设扩展CPU 并行接口。LED,第3页课程设计显示剩余时间。交通灯,指示车辆通行。锁存器时钟电路LED显示器AT
8、89C51交通灯图 2.1 交通灯总设计方案框图所设计的交通灯管理系统主要有主控摸块(89C51 单片机)。译码/驱动电路,时钟电路,交通灯模拟部分,紧急情况手动控制部分及剩余时间显示部分等组成。2.2AT89C51AT89C51是一种带 4K 字节闪烁可编程可擦除只读存储器(FPEROMFalshProgrammable and Erasable Read Only Memory)的低电压,高性能 CMOS8 位微处理器,俗称单片机。AT89C2051是一种带 2K 字节闪烁可编程可擦除只读存储器的单片机。单片机的可擦除只读存储器可以反复擦除 100 次。该器件采用ATMEL高密度非易失存储
9、器制造技术制造,与工业标准的 MCS-51 指令集和输出管脚相兼容。由于将多功能 8 位 CPU 和闪烁存储器组合在单个芯片中,ATMEL的 AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。AT89C单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。单片机的引脚除了电源、复位、时钟接入和用户 I/O 口外,其余引脚都是为了实现系统扩展而设置的。这些引脚构成了三总线结构,即 16 位地址总线(AB)、8 位数据总线(DB)和 8 位控制总线(CB)。数据总线:DOD7、PA0PA7、PB0PB7、PC0PC7,此 32 条数据总线均为双向三态,其中D0D7 用于传
10、送 CPU 与 74ls373 之间的命令与数据,PAOPA7、PB0PB7、PC0PC7 分别于 ABC3 口对应,用于 74ls373 与外设之间的数据传送数据。控制线:RD、WR、RESET第4页课程设计RD:读信号,输入信号线,低电平有效。表示 CPU 对 74LS373 进行读操作。WR:写信号,输入信号线,低电平有效。表示 CPU 对 74LS373 进行写操作。RESET:复位信号,输入信号线,高电平有效。寻址线:CS、A0、A1CS:片选信号,输入信号线,低电平有效。3 3 硬件电路硬件电路3.13.1 时钟电路设计时钟电路设计时钟电路由一个晶体振荡器 12MHZ 和两个 33
11、PF 的瓷片电容组成。时钟电路产生单片机工作所需要的时钟信号,而时序所研究的是指令执行中各信号之间的相互关系。单片机本身就如一个复杂的同步时序电路,为了保证同步工作方式的实现,电路应在唯一的时钟信号控制下严格工作。单片机芯片内部有一个高增益反相放大器,其输入端为芯片引脚 XTAL1,输出端为引脚 XTAL2,在芯片外部通过两个引脚跨接晶体振荡器和微调电容,形成反馈电路,可得时钟电路图(图 3.1)。图 3.1 时钟电路图振荡电路产生的振荡脉冲并不直接使用,而是经分频后再为系统所用振荡脉冲经过二分频后才作为系统的时钟信号。在二分频的基础上再三分频产生ALE 信号,再二分频的的基础上再六分频得到机
12、器周期信号。晶振 Y1 也可以采用 6MHz 或者 11.0592MHz,在正常工作的情况下可以采用更高频率的的晶振,晶振的振荡频率直接影响单片机的处理速度,频率越大单片机处理速度越快。本设计采用 11.0592MHz,图中用约等于 12MHz。起振电容 C1、C2 一般采用 1533uF,并且电容离晶振越近越好,晶振离单片机越近越好。本设计中 C1、C2 采用 33uF。第5页课程设计3.23.2 复位电路设计复位电路设计单片机在启动时都需要复位,以使CPU及系统各部件处于确定的初始状态,并从初态开始工作。89 系列单片机的复位信号是从 RST 引脚输入到芯片内的施密特触发器中的。当系统处于
13、正常工作状态时,且振荡器稳定后,如果 RST 引脚上有一个高电平并维持 2 个机器周期(24 个振荡周期)以上,则 CPU 就可以响应并将系统复位。单片机系统的复位方式有:手动按钮复位和上电复位。采用专用复位电路芯片构成复位电路在实际应用系统中,为了保证复位电路可靠的工作,常将 RC 电路接施密特电路后再接入单片机复位端;或采用专用的复位电路芯片。复位电路的极性电容 C1 的大小直接影响单片机的复位时间,一般采用1030uF,容值越大需要的复位时间越短。(如图 3.2)图 3.2 复位电路图3.33.3 显示电路设计显示电路设计3.3.13.3.1 倒计时器电路设计倒计时器电路设计倒计时器的电
14、路原理图主要有 CPU 内核、实时日历时钟芯片和现实及其驱动电路三部分组成。交通信号灯模拟控制的硬件电路如图 3.3.1 所示。从图中可以看出,交通信号灯的控制通过单片机的 P1 口实现。当端口给出高电平时,相应的指示灯才亮;而当端口给出低电平时,相应的指示灯处于灭的状态。第6页.课程设计.DS12887AP0.0P0.1P0.1P0.1P0.1P0.1P0.1P0.1RDWRINT1ALEP2.345678910111715191413AD0AD1AD2VCCAD3AD4 RESETAD5AD6AD7CLKDSR/WIRQSQWASCSVCC24182189C5123DIS DRIVEP0P
15、2RDWR.图 3.3.1 倒计时器显示电路3.3.23.3.2 红绿灯显示电路设计红绿灯显示电路设计其中在本次设计中,红绿灯显示电路分别由红黄绿三种颜色发光二极管显示,选用共阴极的LED,由于P0 口有上拉电阻,所以选用O 直接驱动,在共阴极端用 NPN 型的三极管扩流,简化了电路的复杂度。(如图 3.3.2)图 3.3.2 红绿信号灯显示电路图第7页课程设计4 4 软件设计软件设计4.14.1 软件实现功能综述软件实现功能综述交通信号灯模拟控制的软件设计也比较简单。其基本思路是利用软件延时,对相应信号灯的点亮时间加以控制。4.24.2 流程图设计流程图设计4.2.14.2.1 主程序流程图
16、设计主程序流程图设计图 4.2.1 主程序流程图4.2.24.2.2 中断流程图设计中断流程图设计本设计的中断程序的功能是在有重要车辆通过时,相应车道的信号灯持续为绿灯,而对应车道的信号灯则持续为红灯,直到重要车辆通过后,恢复正常第8页课程设计点亮规律图 4.2.2 中断程序流程图5 5 仿真电路仿真电路本设计通过 proteus 仿真节省了大量的做实物的时间,为能够短时间内做好设计提供了很大帮助。Proteus ISIS 是英国 Labcenter 公司开发的电路分析与实物仿真软件。它运行于Windows 操作系统上,可以仿真、分析(SPICE)各种模拟器件和集成电路,该软件的特点是:实现了
17、单片机仿真和 SPICE 电路仿真相结合。具有模拟电路仿真、数字电路仿真、单片机及其外围电路组成的系统的仿真、RS232 动态仿真、I2C 调试器、SPI 调试器、键盘和 LCD 系统仿真的功能;有各种虚拟仪器,如示波器、逻辑分析仪、信号发生器等。支持主流单片机系统的仿真。同时支持第三方的软件编译和调试环境,如 Keil C51 uVision2等软件。具有强大的原理图绘制功能。总之,该软件是一款集单片机和 SPICE分析于一身的仿真软件,功能极其强大。根据功能要求分别仿真各种情况下的亮灯情况,具体如下:如图 5.1 仿真图所示,正常情况下主干道方向亮绿灯,主干道放行。支干道方向亮红灯,支第9
18、页课程设计图 5.1 红灯仿真图如图 5.2 所示主干道方向亮黄灯 3 秒,支干道方向亮红灯:第10页课程设计图 5.2 黄灯仿真图如图 5.3 仿真图所示,有紧急车通过时按下按键K0 时,主、支干道均亮红灯特殊指示灯亮:第11页课程设计图 5.3 特殊指示灯仿真图6 6 总结总结在这次设计中遇到了很多实际性的问题,在实际设计中才发现,书本上理论性的东西与在实际运用中的还是有一定的出入的,所以有些问题不但要深入地理解,而且要不断地更正以前的错误思维。一切问题必须要靠自己一点一滴的解决,而在解决的过程当中你会发现自己在飞速的提升。在整个设计过程中大部分时间是用在程序上面的。很多子程序是可以借鉴书
19、本上的,但怎样衔接各个子程序才是关键的问题所在,这需要对系统的结构很熟悉。因此可以说系统的设计是软件和硬件的结合,二者是密不可分的。通过这次课程设计我也发现了自身存在的不足之处,虽然感觉理论上已经掌握,但在运用到实践的过程中仍有意想不到的困惑,经过一番努力才得以解决。这次设计以单片机 AT89C51作为城市交通灯的控制核心,模拟定周期交通第12页课程设计信号灯的工作状态。以单片机 89c51 为主,设计连接数据存储器,复位电路,时钟电路。对输入输出接口进行设计连接。本系统就是充分利用了 AT89C51的I/O引脚。系统采用51系列的AT89C51单片机和可编程并行I/O接口芯片74ls373为
20、中心器件来设计交通信号灯控制器,实现了 AT89C51单片机的设置交通信号灯点亮时间的功能;交通灯的点亮采用了 LED;电源则接 220V 交流电源,最后对各个程序进行软件的设计编程。并对所设计的内容进行仿真,测试。系统设计简便、实用、操作简单、程序设计简便。参考文献参考文献1张迎新单片微型计算机原理、应用及接口技术(第 2 版)M北京:国防工业出版社,20042 赵晶 主编Prote199 高级应用人民邮电出版社,20003 于海生 编著微型计算机控制技术清华大学出版社 2003.44 张志良 编著单片机原理与控制技术M 机械工业出版社,20055 蒋方君 编著 在论循环时序电路的简便设计J
21、 机电一体化,20056 徐维祥.单片微型机原理及应用 大连理工大学出版社,2006第13页课程设计附录附录 A A 系统原理图系统原理图系统原理图第14页课程设计附录附录 B B 源程序源程序主程序清单 ORG 0000HAJMPMAIN ORG00013HLJMPINT9跳到跳到特种车辆自动服务程序.数字显示代码.TAB:DB3FH,6H,5BH,4FH,66H,6DH,7DH,7H,7FH,6FH/*主程序*/ORG0300H MAIN:MOV25H,#60南北通行时间初始值,存到 25H 单元MOV26H,#30东西通行时间初始值,存到 26H 单元 SETBIT0外部中断一边沿触发M
22、OVIE,#8FH开中断.南北绿灯东西红灯.NBLD:MOVR1,25H为南北方向显示时间做准备NBLD1:MOV20H,R1南北通行时间 60 秒(25h)=60(NBLD 即东西绿灯)MOVP2,#1EH点亮南北绿灯东西红灯 MOVA,R1ADDA,#3MOV21H,A为东西方向显示时间做准备 LCALLDISP1显示通行所剩时间,其中有 0.5 秒延时 LCALLDISP1再次显示以便数码管不闪,且再延时 0.5秒以便凑够一秒 DJNZR1,NBLD1判断 60 秒是否已完,若未完则从新显示、延时.南北黄灯闪东西红灯.ShanHD:MOVR2,#3黄灯闪亮 3 秒HD:MOVP2,#1D
23、H点亮黄灯MOV22H,R2为显示时间做准备LCALLDISP2黄灯闪亮剩时显示其中延时 0.5 秒第15页课程设计 MOVP2,#1FH熄灭黄灯 LCALLDISP2显时,且再延时 0.5 秒以便凑够 1 秒 DJNZR2,HD判断 3 秒是否已完,若未完则从新闪灭、延时和显示.南北红灯东西绿灯.DXLD:MOVR3,26H东西通行30秒(26H)=30,(DXLD即东西绿灯)DXLD1:MOVP2,#33H点亮南北红灯东西绿灯 MOV24H,R3为东西方向显示时间做准备 MOVA,R3 ADDA,#3 MOV23H,A为南北方向显示时间做准备LCALLDISP3时间显示其中有 0.5 秒延
24、时LCALLDISP3凑够 1 秒时间DJNZR3,DXLD1判断 30 秒是否已完.南北红灯东西黄灯闪.ShanHD1:MOVR2,#3转入黄灯闪亮 3 秒HD1:MOV22H,R2为显示做准备 MOVP2,#2BH点亮南北红灯东西黄灯LCALLDISP2显示时间,并延时 0.5 秒MOVP2,#3BH点亮南北红灯关闭东西黄灯 LCALLDISP2显时,且再延时 0.5 秒以便凑够 1 秒 DJNZR2,HD1判断 3 秒是否到,若未到继续闪灭东西黄灯 AJMPNBLD主程序到此完.延时程序.DELAY3:MOVR6,#15ms 延时(5ms=50*50*2us)DE61:MOVR0,#1D
25、E71:DJNZR0,DE71DJNZR6,DE61RETDELAY:ACALLDELAY110ms 延时ACALLDELAY1第16页课程设计RETDELAY1:MOVR6,#505ms 延时,(5ms=50*50*2us)DE6:MOVR0,#50 DE7:DJNZR0,DE7 DJNZ R6,DE6 RET.南北通行的时间显示子程序.DISP1:MOVP0,#0熄灭数码管 MOVR7,#25以下调用四次 5 毫秒延时程序,故25*4*5 毫秒=0.5 秒 RP1:MOVA,20H南北方向要显示时间移到寄存器 AMOVDPTR,#TAB要显示的数字代码表首地址MOVB,#10DIVAB要显
26、示的时间与 10 相除,求出十位和个位 MOVCA,A+DPTR找到十位的显示代码 MOVP1,#00001110B;选择南北数码管十位片MOVP0,A送出十位显示代码LCALLDELAY1延时 5ms 以点亮数码管MOVA,B把个位数移到寄存器 AMOVCA,A+DPTR找到个位数显代码 MOVP1,#00001101B选择南北数码管个位片 MOVP0,A送出个位数显示代码LCALLDELAY1延时 5ms 以点亮数码管 MOVA,21H东西方向要显时间移到寄存器 AMOVDPTR,#TAB要显示的数字代码表首地址MOVB,#10DIVAB要显示的时间与 10 相除,求出十位和个位MOVCA
27、,A+DPTR找到十位的显示代码MOVP1,#00001011B;选择东西数码管的十位片MOVP0,A送出十位显示代码第17页课程设计LCALLDELAY1延时 5ms 以点亮数码管MOVA,B把个位数移到寄存器 AMOVCA,A+DPTR找到个位的显示代码MOVP1,#00000111B选择东西数码管的个位片MOVP0,A送出个位显示码LCALLDELAY1DJNZR7,RP1是否已循环 25 次RET.黄灯的时间显示子程序.DISP2:MOVP0,#0熄灭数码管 MOVR7,#25以下调用两次 0.01 秒延时程序,RP2:MOVA,22H要显示的时间移到寄存器 A MOVDPTR,#TA
28、B要显示的数字代码表首地址MOVB,#10DIVAB要显示的时间与 10 相除,求十位和个位 MOVCA,A+DPTR找到十位的显示代码MOVP1,#00001010B;选择南北数码管十位片和东西数码管十位片MOVP0,A送出十位显示代码LCALLDELAY延时 10ms 以点亮数码管 MOVP1,#00000101B选择东西南北数码管个位片MOVA,B把个位数移到寄存器 AMOVCA,A+DPTR找到个位数显示代码 MOVP0,A送出个位数显示代码LCALLDELAY延时 10ms 一点亮数码管DJNZR7,RP2RET.东西通行的时间显示子程序.DISP3:MOVP0,#0熄灭数码管 MO
29、VR7,#25以下调用 4 次调用延时程序,RP3:MOVA,23H要南北方向显示的时间移到寄存器 A第18页课程设计MOVDPTR,#TAB要显示的数字代码表首地址 MOVB,#10DIVAB要显示的时间与 10 相除,求出十位和个位MOVCA,A+DPTR找到十位的显示代码MOVP1,#00001110B;选择南北数码管十位片 MOVP0,A送出十位显示代码LCALLDELAY1延时 5ms 以点亮数码管 MOVA,B把个位数移到寄存器 AMOVCA,A+DPTR找到个位数显示代码MOVP1,#00001101B;选择南北道数码管个位片MOVP0,A送出个位数显示代码 LCALLDELAY
30、1延时 5ms 一点亮数码管MOVA,24H要东西方向显示的时间移到寄存器 AMOVB,#10DIVAB要显示的时间与 10 相除,求出十位和个位 MOVCA,A+DPTR找到十位的显示代码MOVP1,#00001011BMOVP0,A送出十位显示代码LCALLDELAY1延时 5ms 以点亮数码管MOVA,BMOVCA,A+DPTRMOVP1,#00000111B选择东西数码管个位片MOVP0,A送出个位显示代码LCALLDELAY1DJNZR7,RP3RET.特殊车辆通过的时间显示子程序.DISP4:MOVP0,#0熄灭数码管 MOVR7,#50以下调用两次 0.01 秒延时程序,RP4:
31、CLRP3.0第19页课程设计MOVA,27H要显示的时间移到寄存器 AMOVDPTR,#TAB要显示的数字代码表首地址MOVB,#10DIVAB要显示的时间与 10 相除,求出十位和个位MOVCA,A+DPTR找到十位的显示代码MOVP1,#00001010B;选择南北、东西数码管十位片MOVP0,A送出十位显示代码LCALLDELAY延时 10ms 以点亮数码管MOVA,B把个位数移到寄存器 AMOVCA,A+DPTR找到个位数显示代码MOVP1,#00000101B;选择南北、东西数码管的个位片MOVP0,A送出个位数显示代码LCALLDELAY延时 10ms 一点亮数码管DJNZR7,RP4RET.特殊车辆通过,中断服务程序.INT9:PUSHP0PUSHACCCLRP3.0MOVP2,#1BH点亮东西南北红灯 MOVR4,#15特殊车辆通过时间 15 秒QHD:MOV27H,R4为显示做准备LCALLDISP4显示时间MOVR5,#5BEEP:CLRP3.1LCALLDELAY3SETBP3.1DJNZR5,BEEPLCALLDELAY3DJNZR4,QHD第20页课程设计SETBP3.0POPACCPOPP0RETIEND第21页
限制150内