河北建筑工程学院课程设计报告书课程名称:交通信号灯模拟控制系统学院:电气工程学院专业:电气工程及其自动化班级:电控131学号:2013308113学生姓名:杨鹏指导教师:杜春晖职称:讲师2016年6月25日2目录一.设计概述………………………………………………………………31.1课程设计的性质和目的……………………………………………31.2设计任务……………………………………………………………3二.设计方案及原理………………………………………………………3三.设计内容........................................5四.器件介绍及其功能……………………………………………………64.1AT89C51……………………………………………………………74.2LED数码管…………………………………………………………9五.硬件电路及介绍.................................105.1单片机主电路………………………………………………………105.2灯接口电路…………………………………………………………115.3LED数码管显示电路………………………………………………125.4紧急按键控制电路…………………………………………………12六.程序框图及代码………………………………………………………136.1显示子程序…………………………………………………………136.2紧急中断服务子程序………………………………………………136.3延迟程序……………………………………………………………146.4总程序框图…………………………………………………………15七.软件原理.......................................15八.设计心得.......................................16参考文献...........................................16附录一(程序代码).................................16附录二(仿真图)...................................233交通信号灯模拟控制系统设计一.概述1.课程设计的性质和目的本课程设计的主要目的是通过对电子技术及单片机原理的学习,综合掌握电子电路综合设计的过程,设计要求和具体的设计方法。通过设计更好的复习、理解模拟电子、数字电子和单片机等课程内容,使理论和实际相结合,加强学生的动手能力以及查阅相关资料解决实际问题的能力,培养学生从事设计工作的整体观念。2.设计任务(1)完成交通灯的变化规律,即一个十字路口为东西向和南北向,四个路口均有红黄绿三等和两个LED数码显示管。交通灯上电以后进入初始状态即东西红灯,南北红灯。5s后转状态1:南北绿灯亮通车,东西红灯亮,禁止通行,持续30s;30s后转状态2:南北绿灯灭转黄灯闪亮,延迟5s,东西仍然红灯;5s后转状态3:东西绿灯亮通车,南北转红灯,持续30s;30s后转状态4:东西绿灯灭转亮黄闪灯,延迟5s,南北仍然红灯。最后循环至状态1。(2)用8个LED数码管(各方向均有两个LED数码管,分别表示个位和十位),显示倒计时。倒计时用于提醒驾驶员或者行人信号灯发生改变的时间,以便他们在“停止”和“通行”两者做出合适的选择。(3)紧急状态下,通过K1键手动设置,将所有路口的灯变为红灯;再次按下此键后进入状态1,然后依次循环。二.设计方案及原理通过网上查阅资料,最终确定以下几种方案:4方案一:该方案使用了CD4511显示译码器和74LS138译码器。通过CD4511将单片机输出的BCD8421码转换成为七段码然后送LED数码管显示;通过74LS138译码器将单片机输出的三位二进制码转换成八位只有一个低电平的代码,从而对LED数码管进行片选。时钟电路和复位电路为单片机提供正常的工作环境。按键电路为在紧急情况下的应急处理系统,作用是使东西南北的等变为红灯。红绿灯电路由单片机I/O口直接驱动。方案一方案二:采用74HC573锁存器控制数码管显示,使用动态扫描方法,控制数码管位选和段选的通断来使数码管依次显示相应数值;交通灯则可通过单片机的I/O口来直接控制其关断;按键可通过对外部中断标志位的查询来控制紧急情况的相应动作。此方案框图如下:时钟电路复位电路按键电路STC89C52单片机CD4511译码器74LS138译码器LED数码显示红绿灯电路交通灯(发光二极管)单片机按键锁存器数码管方案二5方案三方案三:直接用单片机的I/O口进行LED数码管字位驱动,使用的I/O口比较多,但是成本较低方案比较:通过比较三种方案,结合交通灯的实际情况,红绿灯和数码管的东西方向和南北方向一致,所以可以节省10个I/O口,因此此系统仅仅需要19个I/O口就足够了,使用CD4511和74LS138不仅增加了成本,而且也没起到什么太大的作用,采用方案二节省下来的I/O口在该系统中也没有什么用处,而且在编程的时候也大大增加了编程的难度,电路也相对复杂了。所以综合考虑,我们采用方案三的设计。三.设计内容本方案使用AT89S51单片机,P0口控制数码管的段选,P2口控制数码管的位选,采用动态扫描方式显示;P1口用来控制交通灯(发光二极管)的亮灭;定时采用定时器0的方式一,外接12MHz的晶振;按键接P3.2,即外部中断0,并设为高优先级中断,中断方式为电平中断,一旦有紧急情况发生,便按下按键进行中断,中断子程序便是使所有路口红灯亮,断开按键便可恢复原主程序继续执行。显示子程序:数码管显示数字为0—9,可以利用查表方式显示相应数字,将编辑好的数字显示代码存入表中,代码显示内容与其在表中位置相对应({0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}),将表中相应位置的代码送进数码管段选控制I/O口(P0)便可使数码管显示相应数字,再通过位选控制来使不同数码管显示不同内容。定时子程序:定时采用定时器0的方式一,外接12MHz的晶振,通过计算给定时器装入合适初值,为方便计算,可设定时器一次中断为50ms,这样中断20次即为单片机P0口数码管交通灯(发光二极管)按键P2口段选位选P1口中断P3口61s然后每个5s或30s便执行相应动作。工作原理:由软件设置交通灯的初始时间,南北方向通行35秒,东西方向通行35秒,数码管采用动态显示,P0口送字形码,P2口送字位选通信号,通过单片机的P1口控制各种信号灯的燃亮与熄灭。采用中断方式实现按键的功能系统上电或手动复位之后,系统先显示状态灯及LED数码管,将状态码值送显P1口,将要显示的时间值的个位和十位分别送显P0口,在此同时用软件方法计时1秒,到达1s就要将时间值减1,刷新LED数码管。时间到达一个状态所要全部时间,则要进行下一状态判断及衔接,并装入次状态的相应状态码值以及时间值。四.器件介绍及其功能本系统以单片机为核心,系统硬件电路由状态灯,LED显示,按键,组成。其中P1,P2用于送显两片LED数码管,P0用于控制红绿黄发光二极管,XTAL1和XTAL2接入晶振时钟电路,REST引脚接上复位电路,P3口的八条I/O线对数码管进行片选,系统工作原理系统上电或手动复位之后,系统先显示状态灯及LED数码管,将状态码值送显P1口,将要显示的时间值的个位和十位分别送显P0口,在此同时用软件方法计时1秒,到达1s就要将时间值减1,刷新LED数码管。时间到达一个状态所要全部时间,则要进行下一状态判断及衔接,并装入次状态的相应状态码值以及时间值,当然,还要开启两个外部中断,其一为紧急情况处理中断,一旦信号有效,即K1键为低电平时进入中断服务子程序,东西南北路口的红灯全亮禁止全部通行,再按一下K1键,中断结束返回。7元件清单名称型号数量用途单片机AT89C511个核心控制交通灯红黄绿三色4个红绿灯显示电源Vcc+5V/1A2个提供+5V电源晶振12MHz1个晶振电路电容30pF/10uF2个/1个晶振电路/复位电路排电阻10K1个上拉电阻数码管2位共阴4个显示电路按键2个复位电路电阻1K1个复位电路非门6个反相放大1.AT89C51AT89C51是美国ATMEL公司生产的低电压,高性能CMOS8位单片机,片内含有4KB的可反复擦写的只读程序存储器和128字节的随机存储器。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容,由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,它为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。与MCS-51兼容,4K字节可编程闪烁存储器,寿命:1000写/擦循环,数据保留时间:10年,全静态工作:0Hz-24Hz,三级程序存储器锁定,128*8位内部RAM,32可编程I/O线,两个16位定时器/计数器,5个中断源(两个外部中断源和3个内部中断源),可编程串行通道,低功耗的闲置和掉电模式,片内振荡器和时钟电路。·引脚与功能:·VCC:电源电压·GND:接地·P0口:P0口是一组8位双向I/0口。P0口即可AT89C51引脚图8作地址/数据总线使用,又可以作为通用的I/O口使用。当CPU访问片外存储器时,P0口分时先作低8位地址总线,后作双向数据总线,此时,P0口就不能再作I/O口使用了。在访问期间激活要使用上拉电阻。·P1口:Pl是一个带内部上拉电阻的8准位双向I/O口,P1作为通用的I/O口使用。·P2口:P2是一个带有内部上拉电阻的8位准双向I/O口,P2即可作为通用的I/O口使用,也可以作为片外存储器的高8位地址总线,与P0口配合,组成16位片外存储器单元地址。·P3口:P3口是一组带有内部上拉电阻的8位准双向I/0口。P3口除了作为通用的I/O口使用之外,每个引脚还具有第二功能。·RST复位输入。当振荡器工作时,RST引脚出现两个机器周期以上高电平将使单片机复位。WDT溢出将使该引脚输出高电平,设置SFRAUXR的DISRT0位(地址8EH)可打开或关闭该功能。DISRT0位缺省为RESET输出高电平打开状态。P3口的第二功能·ALE/PROG————:当访问外部程序存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低8位字节。即使不访问外部存储器,ALE仍以时钟振荡频率的1/6输出固定的正脉冲信号,因此它可对外输出时钟或用于定时目的。要注意的P3口各位第二功能P3.0RXT(串行口输入)P3.1TXD(串行口输出)P3.2/INT0(外部中断0输入)P3.3/INT1(外部中断1输入)P3.4T0(定时器/计数器0的外部输入)P3.5T1(定时器/计数器1的外部输入)P3.6/WR(片外数据存储器写允许)P3.7/RD(片外数据存储器读允许)9是:每当访问外部数据存储器时将跳过一个ALE脉冲。对F1ash存储器编程期间,该引脚还用于输入编程脉冲(PROG)。如有必要,可通过对特殊功能寄存器(SFR)区中的8EH单元的D0位置位,可禁止ALE操作。该位置位后,只有一条M0VX和M0VC指令ALE才会被激活。此外,该引脚会被微弱拉高,单片机执行外部程序时,应设置ALE无效。·PSEN————程序储存允许(PSEN————)输出是外部程序存储器的读选通信号,当AT89S51由外部程序存储器取指令(或数据)时,每个机器周期两次PSEN————有效,即输出两个脉冲。当访问外部数据存储器,没有两次有效的PSEN————信号。·EA——/VPP:外部访问允许。欲使CPU仅访问外部程序存储器(地址为0000H-FFFFH),EA端必须保持低电平(接地)。需注意的是:如果加密位LB1被编程,复位时内部会锁存EA端状态。如EA端为高电平(接VCC端),CPU则执行内部程序存储器中的指令。F1ash存储器编程时,该引脚加上+12V的编程电压Vcc。·XTAL1:振荡器反相放大器及内部时