江城学院交通信号灯模拟控制系统设计 一、课程设计的性质和目的本课程设计的主要目的是通过对电子技术及单片机原理的学习,综合掌握电子电路综合设计的过程,设计要求和具体的设计方法通过设计更好的复习、理解模拟电子、数字电子和单片机等课程内容,使理论和实际相结合,加强学生的动手能力以及查阅相关资料解决实际问题的能力,培养学生从事设计工作的整体观念二、设计任务:1.完成交通灯的变化规律,即一个十字路口为东西向和南北向,四个路口均有红黄绿三等和两个LED数码显示管交通灯上电以后进入初始状态即东西红灯,南北红灯5s后转状态1:南北绿灯亮通车,东西红灯亮,禁止通行,持续30s;30s后转状态2:南北绿灯灭转黄灯闪亮,延迟5s,东西仍然红灯;5s后转状态3:东西绿灯亮通车,南北转红灯,持续30s;30s后转状态4:东西绿灯灭转亮黄闪灯,延迟5s,南北仍然红灯最后循环至状态12.用8个LED数码管(各方向均有两个LED数码管,分别表示个位和十位),显示倒计时倒计时用于提醒驾驶员或者行人信号灯发生改变的时间,以便他们在“停止”和“通行”两者做出合适的选择3.紧急状态下,通过K1键手动设置,将所有路口的灯变为红灯。
三、设计方案及原理:方案一、采用74LS138译码器和CD4511译码器的交通灯系统图 1 方案一 采用74LS138和CD4511译码器的交通灯系统框图该方案使用了CD4511显示译码器和74LS138译码器通过CD4511将单片机输出的BCD8421码转换成为七段码然后送LED数码管显示;通过74LS138译码器将单片机输出的三位二进制码转换成八位只有一个低电平的代码,从而对LED数码管进行片选时钟电路和复位电路为单片机提供正常的工作环境按键电路为在紧急情况下的应急处理系统,作用是使东西南北的等变为红灯红绿灯电路由单片机I/O口直接驱动方案二、直接进行片选和驱动LED数码显示的交通灯系统图 2 方案二 直接进行片选和驱动LED数码显示的交通灯系统 该方案直接采用单片机的I/O口对LED数码管进行数字显示和片选的驱动时钟电路和复位电路为单片机提供正常的工作环境按键电路为在紧急情况下的应急处理系统,作用是使东西南北的等变为红灯红绿灯电路由单片机I/O口直接驱动方案比较:方案一采用了CD4511译码器和74LS138译码器,理论上为单片机的使用节省了9个I/O口,实际需要29个而采用该方案以后仅仅使用了20个,但是由于使用了两个译码器,所以在成本上增加了花销。
方案二直接用单片机的I/O口进行LED数码管字位驱动,使用的I/O口比较多,但是成本较低通过比较两种方案,结合交通灯的实际情况,红绿灯和数码管的东西方向和南北方向一致,所以可以节省10个I/O口,因此此系统仅仅需要19个I/O口就足够了,使用CD4511和74LS138不仅增加了成本,而且也没起到什么太大的作用,采用方案一节省下来的I/O口在该系统中也没有什么用处,而且在编程的时候也大大增加了编程的难度,电路也相对复杂了所以综合考虑,我们采用方案二的设计四、元件清单表 1 元器件清单名 称规 格数 量单片机AT89C521排阻9脚4.7K 1排阻9脚330 1晶振11.0592MHz 1发光二极管GREEN 4发光二极管RED 4发光二极管YELLOW 4 数码管 两位共阴 4 电阻1K 5按键 2电解电容10uF 1独石电容30pF 21.AT89C52单片机AT89C52是美国 ATMEL 公司生产的低电压,高性能 CMOS 8 位单片机,片内含 8k bytes 的可反复擦写的只读程序存 储器(PEROM)和 256 bytes 的随机存取数据存储器(RAM) ,器件采用 ATMEL 公司的高密度,非易失性存储技术生产, 与标准 MCS-51 指令系统及 8052 产品引脚兼容, 片内置通用 8 位中央处理器 (CPU) Flash 存储单元, 和 功能强大AT89C52单片机适合于许多较为复杂控制应用场合.图 3 AT89C52单片机AT89C52为8 位通用微处理器,采用工业标准的C51内核,在内部功能及管脚排布上与通用的8xc52 相同,其主要用于会聚调整时的功能控制。
功能包括对会聚主IC内部寄存器、数据RAM及外部接口等功能部件的初始化,会聚调整控制,会聚测试图控制,红外遥控信号IR的接收解码及与主板CPU通信等主要管脚有:XTAL1(19 脚)和XTAL2(18 脚)为振荡器输入输出端口,外接12MHz 晶振RST/Vpd9 脚)为复位输入端口,外接电阻电容组成的复位电路VCC(40 脚)和VSS(20 脚)为供电端口,分别接+5V电源的正负端P0~P3 为可编程通用I/O 脚,其功能用途由软件定义,在本设计中,P0 端口(32~39 脚)被定义为N1 功能控制端口,分别与N1的相应功能管脚相连接,13 脚定义为IR输入端,10 脚和11脚定义为I2C总线控制端口,分别连接N1的SDAS(18脚)和SCLS(19脚)端口,12 脚、27 脚及28 脚定义为握手信号功能端口,连接主板CPU 的相应功能端,用于当前制式的检测及会聚调整状态进入的控制功能本实验硬件电路搭建采用STC89C52单片机,软件仿真的时候采用的是AT89C52单片机,虽然两个单片机电路功能稍有区别,但是在使用及编程的时候引脚通用,编程无影响所以硬件编程代码同样适用于软件仿真2.LED数码管LED数码管实际上是由七个发光管组成8字形构成的,加上小数点就是8个。
这些段分别由字母a,b,c,d,e,f,g,dp来表示当数码管特定的段加上电压后,这些特定的段就会发亮,以形成我们眼睛看到的2个8数码管字样了如:显示一个“2”字,那么不同之分,也有0.5寸、1寸等不同的尺寸小尺寸数码管的显示笔画常用一个发光二极管组成,而大尺寸的数码管由二个或多个发光二极管组成,一般情况下,单个发 图 4 LED数码管光二极管的管压降为1.8V左右,电流不超过30mA发光二极管的阳极连接到一起连接到电源正极的称为共阳数码管,发光二极管的阴极连接到一起连接到电源负极的称为共阴数码管常用LED数码管显示的数字和字符是0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、FLED数码管分为共阴极和共阳极两种,本实验在硬件电路搭建的时候采用的是共阳极LED数码管,这样使用单片机容易驱动,而采用共阴极则不易驱动二极管而在proteus软件仿真的时候由于采用共阴极数码管时出现乱码,在寻找错误时也没有发现什么不对的地方,为了方便起见在软件仿真时选用了共阴极LED数码管,这时就需要在P0口驱动的时候加上一个反相器其结果才和硬件电路一样3.发光二级管图 5 发光二级管它是半导体二极管的一种,可以把电能转化成光能;常简写为LED。
发光二极管与普通二极管一样是由一个PN结组成,也具有单向导电性当给发光二极管加上正向电压后,从P区注入到N区的空穴和由N区注入到P区的电子,在PN结附近数微米内分别与N区的电子和P区的空穴复合,产生自发辐射的荧光不同的半导体材料中电子和空穴所处的能量状态不同当电子和空穴复合时释放出的能量多少不同,释放出的能量越多,则发出的光的波长越短常用的是发红光、绿光或黄光的二极管发光二极管和数码二极管一样分为共阴极和共阳极两种,本实验在硬件电路搭建的时候采用的是共阳极发光二级管,这样使用单片机容易驱动,而采用共阴极则不易驱动二极管,有时候采用高电平驱动则会产生单片机电压过低而无法点亮二极管致使单片机烧毁的情况在proteus软件仿真的时候软件给出的发光二级管如图所示,该红绿灯模块为共阴极发光二级管模块,所以仿真时采用的驱动方式是高电平驱动由于是软件仿真,所以不会出现无法驱动的情况,真实情况下需要考虑其驱动情况五、硬件电路图1.单片机主电路如右图所示,单片机的主电路主要包括时钟电路和复位电路,以及5V电压和接地电压等这几部分保证了单片机可以正常的工作 图 6 单片机主电路时钟振荡电路采用内部时钟产生方式,在XTAL1和XTAL2两端跨接晶体或陶瓷振荡器,与内部反相器构成稳定的自击震荡。
其发出的时钟脉冲直接送入片内定时控制部件 复位电路采用上电+按钮电平复位方式,当按下按钮时,RST管脚高电平触发为保证复位可靠,RC时间常数应大于两个机器周期,电容取10uf,电阻取1000欧2.交通灯接口电路图 7 交通等接口电路交通灯接口电路如上图所示硬件电路的发光二级管是共阳极的,采用低电平驱动点亮方式,而在软件中提供的交通灯模块是共阴极的,本汇编程序最初编写是根据硬件电路共阳极二极管采用低电平驱动编写而成,所以在软件仿真的时候需要加一个非门来将P1口输出的低电平变成高电平来驱动交通灯模块发光,经过实验得出其结果和硬件仿真的完全相同由于是软件仿真,所以不会出现无法驱动的情况,真实情况下需要考虑其驱动情况南北和东西的交通灯显示相同,所以本系统仅仅使用了六个I/O口来进行交通灯的控制3.LED数码管显示电路图 8 LED数码管显示电路LED数码管显示电路如上图所示该电路采用P0口进行数码管的数字显示,用P2口对数码管进行片选实际搭建的硬件电路中,使用的数码管为共阳极数码管,所以采用的驱动方式是低电平驱动,而在软件仿真的时候采用的是共阴极数码管,由于程序在编写的时候是对实际搭建的硬件电路编写的,因此在软件电路仿真连接的时候需要接非门从而使电路由低电平驱动变为高电平驱动。
P0口内部没有上拉电阻,所以在使用P0口是需要外接上拉电阻P2口的2.4、2.5、2.6、2.7四个口作为八个数码管的片选信号,低电平有效,由于南北和东西两个方向的数码管显示相同,所以八个数码管只需要四个片选信号即可,软件程序仿真电路图结果如上图所示4键盘接口电路图 9 键盘接口电路键盘接口电路如右图所示该电路比较简单,原理是先将P3口全部置1,然后在延迟代码段中加入检测P3口高低电平的代码,观察P3口是否变化,如果有变化则进入紧急情况的处理代码,在紧急情况处理代码中继续检测P3口状态,如果变回全部为1则跳到初始状态重新开始由程序代码可得,该电路连至P3任意一口都是可以的用单片机最小系统和单片机学习模板块搭建的交通等系统如下图所示图 10 交通灯系统实物电路用proteus绘制的整体电路图如下图图 11 交通灯系统电路图六、软件设计1.程序流程图图 12 程序流程图2.主要功能模块①设置状态模块 该模块设置程序的状态初始值,分为初始状态,状态1和状态2,代码段主要如下:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;设置初始状态;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;INIT:MOV 42H,#1 ;闪烁标志位 MOV R0,#0 ;R0为状态标志位 MOV SP,#60H ;设置堆栈。