毕业论文-基于AT89C51单片机的信号灯报警监控系统设计.doc
本科毕业设计( 论文 )题 目:基于AT89C51单片机的信号灯报警监控系统设计 姓 名: 班 级: 1 专 业:机械电子工程 学 院:机电工程学院 入学时间: 指导教师: 日 期: 年 月 日基于AT89C51单片机的信号灯报警监控系统设计摘要如今,铁路已经遍及世界各地,贯穿了我们的生活。而信号灯是用来保障铁路正常运营的必不可少的设备。因此如果在运营中信号灯发生故障,将可能使铁路无法正常运行甚至发生事故。本课题的研究目的和意义就是设计一套信号灯报警监控系统,用来自动化的及时发现铁路中发生故障的信号灯,使维修人员能第一时间对发生故障的信号灯进行维修,以保障铁路的正常运营。本系统将使用单片机来对其进行控制,使用仿真系统来模拟整个监控系统的运行情况。关键词:信号灯;监控;故障报警Light alarm monitoring systemABSTRACT Today,the railway has been around the world,throughout our lives. The lights are the essential equipment which are used to guarantee the normal operation of the railway.So if the lights are broken down, the railway may not operate properly or even make the railway accident.The purpose of the research is to design a light alarm monitoring system which is used to find the broken light timely and automatically.By this way,the maintainer can repair the broken light in first time and guarantee the normal operation of the railway. The system will use microcontroller to control it,and use the simulation system to simulate the operation of the monitoring system. Key words:light;monitoring;failure warning目录1绪论11.1课题背景11.2课题完成的功能 21.3 课题设计的方案22单片机简介52.1单片机的发展与应用52.1.1单片机的发展52.1.2单片机的应用52.2 AT89C51的特性63 系统硬件设计93.1 总硬件电路设计93.2电流互感器103.3电压比较器103.4时钟电路的设计103.5复位电路的设计123.6时钟芯片电路的设计133.6.1 DS1302时钟芯片的简介133.6.2 DS1302的工作原理133.6.3 DS1302的引脚功能及结构143.7显示电路的设计154 软件程序设计184.1程序流程框图184.2调试过程205总结38致谢40参考文献41附录421 绪论1.1课题背景 铁路信号灯对铁路的正常运行至关重要。在过去铁路刚开始运行的时候,是由人骑着马在前面引导火车运行。用手势信号来指挥列车前进或停止。后来人们开始研究固定的信号设备:用一块长方形的板子,并在顶端加有一块圆板。它的横向线路表示停车信号,顺向线路表示前进信号。在晚上运行的时候,红色灯光表示停车信号,白色灯光表示进行信号。后来随着列车速度的不断提高,信号灯也不断改进。1841年英国开始使用臂板式信号机。这种臂板式信号机有两种显示:水平位置表示停车信号,向下倾斜45度表示进行信号。夜间仍用红色灯光表示停车,但改用绿色灯光表示前进。 随着信号灯不断的发展,为了保障信号灯能一直正常工作,使铁路能正常运行,信号灯监控系统也在不断的向自动化、智能化发展和改进。如今已经有许多利用不同的技术设计开发成功的信号灯监控系统。比如杨景玉在甘肃科技 纵横中发表的铁路设备检修自动化系统设计与实现,他利用计算机平台动态显示各信号设备的状态或采用报警继电器,用计算机监控各信号。比如张少华发表的新型站内信号灯断丝定位报警系统。,还有,又比如王国芬发表的TDB型信号灯快速定位报警系统,他利用指示灯与继电器相结合的方法,由指示灯显示灯的位置。这些技术的缺点是,占用空间大但检测的点数少,距离短而且造价贵,难以广泛应用。 本设计的特点就是可以实时检测多路铁路信号灯的工作情况,检测信号灯是否有断丝的故障,对于故障的信号灯进行报警。系统结构简单,造价不贵,适合批量生产。实物如图所示:图1-11.2课题完成的功能 1.对16路信号灯循环进行检测。 2.对灯丝发生故障的信号灯进行报警,显示发生故障的路数、小时和分钟。 3.只显示第一次检测到故障时的时间。 4.没有报警时显示当前的时间。 5.对于一段时间内发生的故障可动态显示。1.3课题设计的方案 在信号灯上串接一个电流互感器,电流互感器的输出端上并联有一个电流转电压电阻,构成一个信号采集部件,采集信号灯的正弦信号。正弦信号可能采集到的情况如下:1)灯丝正常工作时的波形,如图1-2 图1-22)灯丝故障时的波形,如图1-3 图1-33) 信号灯未工作时的波形,如图1-4 图1-4 电压信号进入电压比较器后,产生以下的比较,如图1-5图1-5 16路正弦信号通过多路模拟开关分别进入已连接可调电阻的2个电压比较器,一个可调电阻设置的电阻较高,一个较低。电压比较器的输出信号进入单片AT89C51主芯片,观察电压比较器的输出情况,若都是高电位1,则正常,此时如果原先有故障,则消除故障,如果原先没有故障,则进行下一路的监测;若一个高电位1,一个低电位0,则故障并使用数码管显示发生故障的信号灯的路数和时间,此时如果原先有故障,则进行下一路监测,如果原先没有故障,显示报警后开始监测下一路;若都为0,则没有开机,重新检测。 本系统所有的设计和调试都用PROTEUS仿真系统完成,然后用单片机程序进行控制。2 单片机简介2.1单片机的发展与应用2.1.1单片机的发展 单片机,全称单片微型计算机,又称微控制器。它由运算器、控制器、存储器、输入输出设备构成,相当于一个微型的计算机。 单片机诞生于1971年,经历了SCM、MCU、SoC三大阶段,早期的SCM单片机都是8位或4位的。其中最成功的是INTEL的8051,此后在8051上发展出了MCS51系列MCU系统。基于这一系统的单片机系统直到现在还在广泛使用。随着工业控制领域要求的提高,开始出现了16位单片机,但因为性价比不理想并未得到很广泛的应用。90年代后随着消费电子产品大发展,单片机技术得到了巨大提高。随着INTEL i960系列特别是后来的ARM系列的广泛应用,32位单片机迅速取代16位单片机的高端地位,并且进入主流市场。2.2.2单片机的应用 单片机渗透到我们生活的各个领域,几乎很难找到哪个领域没有单片机的踪迹。导弹的导航装置,飞机上各种仪表的控制,计算机的网络通讯与数据传输,工业自动化过程的实时控制和数据处理,广泛使用的各种智能IC卡,民用豪华轿车的安全保障系统,录像机、摄像机、全自动洗衣机的控制,以及程控玩具、电子宠物等等,这些都离不开单片机。更不用说自动控制领域的机器人、智能仪表、医疗器械以及各种智能机械了。因此,单片机的学习、开发与应用将造就一批计算机应用与智能化控制的科学家、工程师。 单片机广泛应用于仪器仪表、家用电器、医用设备、航空航天、专用设备的智能化管理及过程控制等领域,大致可分为这样几个范畴:智能仪器、工业控制、家用电器、网络和通信、设备领域、模块化系统、汽车电子等。2.2 AT89C51的特性 AT89C51是一种带4K字节FLASH存储器的低电压、高性能CMOS 8位微处理器,俗称单片机。AT89C2051是一种带2K字节闪存可编程可擦除只读存储器的单片机。单片机的可擦除只读存储器可以反复擦除1000次。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪速存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。AT89C51单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。外形及引脚排列如图2-1所示。 图2-1 AT89C51引脚1、电源引脚(2根)1)VCC:电源端,接5V电源。2)GND:接地引脚,有时标记为Vss。2、控制引脚(6根)1)RST/Vpd:复位信号输入引脚/备用电源输入引脚。2)XTAL1:晶体振荡器接入的一个引脚。3)XTAL2:晶体振荡器接入的另一个引脚。4)ALE/PROG:地址锁存允许信号输出引脚/编程脉冲输入引脚。5)EA/Vpp:片外ROM访问允许/编程电压输入引脚。6)PSEN:片外ROM读选通信号输出引脚。3、 输入/输出端口(32根,由4个8位端口构成) 51系列单片机有4个8位并行(8个具有相同功能的引脚)I/O端口P0P3。所有端口都可以作为通用输入/输出端口,部分端口还具有特定功能。1)P0口(P0.0-P0.7):P0口是漏极开路的8位并行端口,作双向I/O端口使用或者作为地址总线低8位数据总线使用。2)P1口(P1.0-P1.7):P1口的第一功能是作为准双向I/O端口使用,其功能完全由用户程序进行定义。这里称准双向口是由于接口内部与拉高电路。P1口的第二功能引脚第二功能符号第二功能描述P1.0T2T2的外部计数脉冲输入P1.1T2EXT2的外部触发脉冲输入P1.5MOSI在系统编程串行数据输入P1.6MISO在系统编程串行数据输出P1.7SCK在系统编程串行时钟输入3) P2口(P2.0-P2.7):P2口作为一般准双向I/O端口使用或者高8位地址总线输出引脚。4) P3口(P3.0-P3.7):P3口一般作为准双向I/O端口使用或者第二功能引脚。P3口的第二功能引脚第二功能符号第二功能描述P3.0RXD串行通信数据接收引脚P3.1TXD串行通信数据发送引脚P3.2INT0外部中断0请求信号输入引脚,低电平有效P3.3INT1外部中断1请求信号输入引脚,低电平有效P3.4T0定时器/计数器0外部计数脉冲输入引脚P3.5T1定时器/计数器1外部计数脉冲输入引脚P3.6WR外部数据存储器写选通信号,低电平有效P3.7RD外部数据存储器读选通信号,低电平有效3 系统硬件设计3.1总硬件电路设计 在设计硬件电路图时,有几点需要注意:1)选用片内程序空间足够大的单片机,本设计选用AT89C51单片机。2)在设计电路图时留有余地,以便将来扩展或者修改时方便。如果在开始设计时没有留有余地,那么后期在修改时很有可能因为一点小问题而导致大面积的返工。3)节省使用I/O口,以便将来修改和调试时方便。在设计过程中,总会有一些小问题遗漏,需要再增加输入或者输出。偶尔在调试时候可能要临时使用一些I/O口。如果一开始就能保留一些空余的端口,那么后期可能就会派上用场。 本系统主要用到的硬件有:多路电子模拟开关CD4067、电压比较器LM324、时钟芯片DS1302、串行接口74LS164、数码管、单片机主芯片AT89C51、以及若干按钮开关、电阻、电容、晶体。 电路主要流程为:模拟电压信号进入多路电子模拟开关,模拟开关的输出信号流向电压比较器,与由电压调压装置预先调好的电压相比较,在电压比较器的输出端得到高电平或低电平;单片机主芯片读取输入的信号,判别是否故障,如果故障就将故障信息显示在数码管上。如图3-1所示:时钟芯片单片机主芯片电压比较器多路模拟转换开关信号采集部件数码管移位寄存器电压比较器图3-13.2电流互感器 电流互感器原理是依据电磁感应原理的。电流互感器是由闭合的铁心和绕组组成。它的一次绕组匝数很少,串在需要测量的电流的线路中,因此它经常有线路的全部电流流过,二次绕组匝数比较多,串接在测量仪表和保护回路中,电流互感器在工作时,它的2次回路始终是闭合的,因此测量仪表和保护回路串联线圈的阻抗很小,电流互感器的工作状态接近短路。 电流互感器(Current transformer 简称CT)的作用是可以把数值较大的一次电流通过一定的变比转换为数值较小的二次电流,用来进行保护、测量等用途。3.3电压比较器 电压比较器是对输入信号进行鉴别与比较的电路,是组成非正弦波发生电路的基本单元电路。常用的电压比较器有单限比较器、滞回比较器、窗口比较器、三态电压比较器等。 电压比较器可以看作是放大倍数接近“无穷大”的运算放大器。它的功能是比较两个电压的大小(用输出电压的高或低电平,表示两个输入电压的大小关系):当”+”输入端电压高于”输入端时,电压比较器输出为高电平;当”+”输入端电压低于”输入端时,电压比较器输出为低电平,如图3-2所示: 图3-23.4时钟电路的设计 时钟电路是计算机的心脏,它控制着计算机的工作节奏。51单片机允许的时钟频率因型号而异。 51系列单片机的时钟信号来源通常有两种方式:内部振荡方式和外部振荡方式。 内部振荡方式:单片机的内部有一个用于构成内部振荡器的反相放大器,XTAL1和XTAL2分别是放大器的输入和输出端,在这两个引脚之间外接一个石英晶体或者陶瓷振荡器,就可以构成一个自激振荡器。 外部振荡方式:把已有的时钟引入单片机,外部振荡脉冲信号由XTAL1端输入单片机,XTAL2端悬空,如图3-3所示:图3-3 晶振的选择:机器周期(us)=12/f,f是晶振频率(MHz)。当晶振频率为24MHz时,机器周期是0.5us。当晶振频率是12MHz时,机器周期是1us。当晶振频率是6MHz时,机器周期是2us。 机器周期是指CPU访问存储器或者I/O端口一次所需要的时间。本设计选择了12MHz的晶振频率,机器周期为1us,如图3-4所示: 图3-4 时钟电路如图,电容C1、C2起稳定振荡频率,快速起疹的作用,电容值我选择了30pf。3.5复位电路的设计 复位是一种操作,使CPU和系统中的其他部件都置为一个确定的初始状态,并从这个初始状态开始工作。复位可以使死机状态下的单片机重新启动。 为确保微机系统中电路稳定可靠工作,复位电路是必不可少的一部分,复位电路的第一功能是上电复位。一般微机电路正常工作需要供电电源为5V±5%,即4.755.25V。由于微机电路是时序数字电路,它需要稳定的时钟信号,因此在电源上电时,只有当VCC超过4.75V低于5.25V以及晶体振荡器稳定工作时,复位信号才会撤除,微机电路开始正常工作。 复位方式主要是上电复位和按键复位。上电复位电路只要在RST复位输入引脚上接一电容至Vcc端,下接一个电阻到地即可。按键复位是指人为的按下按键使电路复位。 本设计使用的是上电复位和按键复位合二为一的电路,这样既可以起到必须上电复位的作用,也可以起到单片机死机使人为复位的作用。如图3-5: 图3-5 复位电路3.6时钟芯片电路的设计3.6.1 DS1302时钟芯片的简介 DS1302时钟芯片是美国DALLAS公司推出的一种高性能、低功耗、带RAM的实时时钟电路,它可以对年、月、日、周日、时、分、秒进行计时,具有闰年补偿功能,工作电压为2.5V5.5V。采用三线接口与CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或RAM数据。DS1302内部有一个31×8的用于临时性存放数据的RAM寄存器。3.6.2 DS1302的工作原理1)控制字节 DS1302 的控制字符表示。控制字节的最高有效位(位7)必须是逻辑1,如果它为0,则不能把数据写入DS1302中,位6如果为0,则表示存取日历时钟数据,为1表示存取RAM数据;位5至位1指示操作单元的地址;最低有效位(位0)如为0表示要进行写操作,为1表示进行读操作,控制字节总是从最低位开始输出。2)输入输出 在控制指令字输入后的下一个SCLK时钟的上升沿时,数据被写入DS1302,数据输入从低位即位0开始。同样,在紧跟8位的控制指令字后的下一个SCLK脉冲的下降沿读出DS1302的数据,读出数据时从低位0位到高位7。3)寄存器 DS1302有12个寄存器,其中有7个寄存器与日历、时钟相关,存放的数据位为BCD码形式。3.6.3 DS1302的引脚功能及结构 在DS1302的引脚排列,其中Vcc1为后备电源,VCC2为主电源。在主电源关闭的情况下,也能保持时钟的连续运行。DS1302由Vcc1或Vcc2两者中的较大者供电。当Vcc2大于Vcc1+0.2V时,Vcc2给DS1302供电。当Vcc2小于Vcc1时,DS1302由Vcc1供电。X1和X2是振荡源,外接32.768kHz晶振。RST是复位/片选线,通过把RST输入驱动置高电平来启动所有的数据传送。RST输入有两种功能:首先,RST接通控制逻辑,允许地址/命令序列送入移位寄存器;其次,RST提供终止单字节或多字节数据的传送手段。当RST为高电平时,所有的数据传送被初始化,允许对DS1302进行操作。如果在传送过程中RST置为低电平,则会终止此次数据传送,I/O引脚变为高阻态。上电运行时,在Vcc2.5V之前,RST必须保持低电平。只有在SCLK为低电平时,才能将RST置为高电平。I/O为串行数据输入输出端(双向),SCLK始终是输入端。如图3-6所示:图3-6 时钟芯片电路设计3.7显示电路的设计 为了能够观察单片机系统的运行情况,所以需要一些显示设备来显示单片机的状态。在如今单片机应用系统中,最常用的有两种,一种是由发光二极管(LED)组成的数码管显示器,一种是液晶显示器。本设计选用共阴数码管显示器来显示单片机运行的情况。如图3-7所示:图3-7 显示电路设计数码管也称LED数码管,晶美、光电、不同行业人士对数码管的称呼不一样,其实都是同样的产品。 数码管按段数可分为七段数码管和八段数码管,八段数码管比七段数码管多一个发光二极管单元(多一个小数点显示);按能显示多少个(8)可分为1位、2位、3位、4位、5位、6位、7位等数码管。 按发光二极管单元连接方式可分为共阳极数码管和共阴极数码管。共阳数码管是指将所有发光二极管的阳极接到一起形成公共阳极(COM)的数码管,共阳数码管在应用时应将公共极COM接到+5V,当某一字段发光二极管的阴极为低电平时,相应字段就点亮,当某一字段的阴极为高电平时,相应字段就不亮。共阴数码管是指将所有发光二极管的阴极接到一起形成公共阴极(COM)的数码管,共阴数码管在应用时应将公共极COM接到地线GND上,当某一字段发光二极管的阳极为高电平时,相应字段就点亮,当某一字段的阳极为低电平时,相应字段就不亮。74LS164是8位移位寄存器(串行输入,并行输出)。它是高速硅门 CMOS 器件,与低功耗肖特基型 TTL (LSTTL) 器件的引脚兼容。数据通过两个输入端(DSA 或 DSB)之一串行输入;任一输入端可以用作高电平使能端,控制另一输入端的数据输入。两个输入端或者连接在一起,或者把不用的输入端接高电平。时钟 (CP) 每次由低变高时,数据右移一位,输入到 Q0, Q0 是两个数据输入端(DSA和 DSB)的逻辑与,它将上升时钟沿之前保持一个建立时间的长度。主复位 (MR) 输入端上的一个低电平将使其它所有输入端都无效,非同步地清除寄存器,强制所有的输出为低电平。4 软件程序设计4.1程序流程框图1)主程序2)有故障时对之前故障的判别3)无故障时对之前故障的判别4.2调试过程1)数码管显示 SECOND EQU 10H MINUTE EQU 11H HOUR EQU 12H DAY EQU 13H MONTH EQU 14H WEEK EQU 15H YEARL EQU 16H ORG 0000H Ajmp START ORG 0003H ORG 0010H ORG 0030H START: MOV SECOND,#00H MOV YEARL,#14H MOV MONTH,#5H MOV DAY,#21H MOV HOUR,#17H MOV MINUTE,#58H MOV 30H,#00H MAIN: LCALL display LJMP $ DISPLAY: MOV SCON,#0 MOV A,11H ANL A,#07FH MOV B,#16 DIV AB MOV 17H,B MOV B,#10 MUL AB ADD A,17H MOV B,#10 DIV AB MOV 17H,A MOV A,B MOV DPTR,#TAB MOVC A,A+DPTR MOV SBUF,A JNB TI,$ CLR TI MOV A,17H MOV DPTR,#TAB MOVC A,A+DPTR MOV SBUF,A JNB TI,$ CLR TI MOV A,12H ANL A,#07FH MOV B,#16 DIV AB MOV 17H,B MOV B,#10 MUL AB ADD A,17H MOV B,#10 DIV AB MOV 17H,A MOV A,B MOV DPTR,#TAB MOVC A,A+DPTR MOV SBUF,A JNB TI,$ CLR TI MOV A,17H MOV DPTR,#TAB MOVC A,A+DPTR MOV SBUF,A JNB TI,$ CLR TI MOV A,30H MOV B,#10 DIV AB MOV 17H,A MOV A,B MOV DPTR,#TAB MOVC A,A+DPTR MOV SBUF,A JNB TI,$ CLR TI MOV A,17H MOV DPTR,#TAB MOVC A,A+DPTR MOV SBUF,A JNB TI,$ CLR TI LCALL DIS_DELAY RET DIS_DELAY: PUSH PSW MOV R3,#10 D1: MOV R6,#248 D2: MOV R5,#200 DJNZ R5,$ DJNZ R6,d2 DJNZ R3,D1 POP PSW RETTAB: DB 0FCH;0 DB 060H;1 DB 0DAH;2 DB 0F2H;3 DB 066H;4 DB 0B6H;5 DB 0BEH;6 DB 0E0H;7 DB 0FEH;8 DB 0F6H;9 END 仿真结果如图41图4-12)读取时钟芯片后的显示T_RST Bit P2.2 T_CLK Bit P2.1 T_IO Bit P2.0 SECOND EQU 10H MINUTE EQU 11H HOUR EQU 12H DAY EQU 13H MONTH EQU 14H WEEK EQU 15H YEARL EQU 16HORG 0000HAjmp STARTORG 0003H ORG 0013HORG 0030HSTART: CLR T_RST CLR T_CLK MOV YEARL,#14HMOV MONTH,#5HMOV DAY,#21HMOV HOUR,#17HMOV MINUTE,#58H MAIN: LCALL GET1302LCALL DISPLAYLJMP MAINDISPLAY: MOV SCON,#0MOV A,11HANL A,#07FHMOV B,#16DIV ABMOV 17H,BMOV B,#10MUL ABADD A,17HMOV B,#10DIV AB MOV 17H,AMOV A,BMOV DPTR,#TABMOVC A,A+DPTRMOV SBUF,AJNB TI,$CLR TI MOV A,17HMOV DPTR,#TABMOVC A,A+DPTRMOV SBUF,AJNB TI,$CLR TI MOV A,12HANL A,#07FHMOV B,#16DIV ABMOV 17H,BMOV B,#10MUL ABADD A,17HMOV B,#10DIV AB MOV 17H,AMOV A,BMOV DPTR,#TABMOVC A,A+DPTRMOV SBUF,AJNB TI,$CLR TIMOV A,17HMOV DPTR,#TABMOVC A,A+DPTRMOV SBUF,AJNB TI,$CLR TI MOV A,30HANL A,#07FHMOV B,#16DIV ABMOV 17H,BMOV B,#10MUL ABADD A,17HMOV B,#10DIV AB MOV 17H,AMOV A,BMOV DPTR,#TABMOVC A,A+DPTRMOV SBUF,AJNB TI,$CLR TI MOV A,17HMOV DPTR,#TABMOVC A,A+DPTRMOV SBUF,AJNB TI,$CLR TILCALL DIS_DELAYRETDIS_DELAY: PUSH PSW MOV R3,#10 D1: MOV R6,#248 D2: MOV R5,#200DJNZ R5,$DJNZ R6,D2 DJNZ R3,D1 POP PSW RETSETDS1302: CLR T_RSTNOP CLR T_CLK NOP SETB T_RST NOP MOV B,#8EH LCALL INPUTBYTE M