王 力,薛红喜
(电子科技大学 电子工程学院,四川 成都 610054)
在数字世界中1代表电压高或者低,0代表电压的低或者高,而0和1的各种组合能代表各种各样的状态,同时它们的各种组合也形成了我们现实生活中看到的各种电子产品。开关状态的开及关,在实际生活中也能代表各种各样的状态。在常见的设计中大多使用MC33993[1]或者恒流源[2]的方式来进行多路开关状态的检测。成套开关设备状态的准确检测对于确保线路的正确运行具有极大意义[3]。在电力系统中,为了防止电缆因接头的接触不良而引发的散热不足,通常在动力电缆接头处安装微动热敏开关。在汽车电子中也包含了各种各样的开关电子元器件,比如走动开关其质量的优劣和耐用的程度直接关系到汽车的性能[4]。
下面从设计的总体结构、硬件设计及软件设计3个方面来对本设计分别阐述。
图1 总体硬件结构图Fig.1 The overall hardware structure
系统硬件由开关状态采集模块、单片机处理模块、采集结果显示模块及报警模块组成。总体结构图如图1所示。
本设计能实时地由开关状态采集模块采集64路开关的状态,并由单片机处理模块处理并判断出64路开关的状态是否有了变化。一旦开关状态有了变化,报警模块的LED就会闪烁,蜂鸣器会开始鸣叫,同时数码管也会显示出是哪一路或者是哪几路开关的状态发生了变化。
开关状态采集模块由74HC138配合74HC245构成,74HC系列芯片的所有输入和输出均有内部保护线路,以减少由于静电感应而损坏器件的可能性。74HC系列具有高度抗噪音和驱动负载的能力。74HC245是为在数据总线间的异步双工通讯而设计的,内含8个三态输出的双总线收发器,方向控制端DIR确定数据传送方向,接高电平时数据从A端口传送到B端口,接低电平时数据从B端口传送到A端口。输出允许端OE为低电平时有效,当OE为高电平时,数据端口A、B均呈高阻。74HC245用在硬件电路设计中时一般是用来提高驱动能力或者作电平转换之用。由一个74HC138的8个输出分别接到1个74HC245的输出使能端,这样在任一时刻只能选中一个74HC245有效输出,而任一74HC245连接了8个开关的状态值,因此1个74HC138配合8个74HC245就能有效地检测64个开关的状态。
在单片机最小系统模块中选用了AT89S52单片机,AT89S52是一种低功耗、高性能CMOS 8位微控制器,具有8 k在线系统可编程Flash存储器。使用Atmel公司高密度非易失性存储器技术制造,与工业89C51产品指令和引脚完全兼容。片上Flash允许程序存储器在线可编程,亦适于常规编程器,同时程序掉电也不会丢失。AT89S52具有以下标准功能:8 k字节Flash,256字节RAM,32位I/O口线,看门狗定时器,2个数据指针,3个16位定时器/计数器,全双工串行口,片内晶振及时钟电路。另外,AT89S52可降至0 Hz静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止[5]。
AT89S52最小系统主要负责对开关状态采集模块电路采集过来的数据信号进行处理,并作出判断是否有开关状态发生了变化以及是哪一路开关的状态发生了变化,并将结果送到采集结果显示模块以及报警模块。通过这种方式将结果送到观察者,以便观察者作出相应的处理。
采集结果显示模块由ULN2803配合数码管构成,ULN2803广泛用于计算机,工业和消费类产品中,所有器件有集电极开路输出和用于瞬变抑制的续流箝位二级管。ULN2803的设计与标准TTL系列兼容。它是一个反向驱动电路,输入口为高电平时输出口为低电平,而入口为低电平时出口为高电平,同时使用该器件能提高单片机输出口的驱动能力,能提供比单片机口高得多的驱动电流[6]。当单片机驱动数码管时,其输出驱动能力约20 mA,不能满足数码管对于电流驱动的要求。同时,如果直接用单片机驱动数码管,则单片机的灌入电流将会大大增加,进而会造成单片机发热过高,而如果单片机工作温度过高,会减少单片机的使用寿命以及系统的稳定性。
报警模块主要是由LED以及蜂鸣器组成,其主要目的是:一旦开关状态有了变化,蜂鸣器鸣叫同时LED闪烁,给观察者以醒目的提示。
在硬件电路的设计中单片机处理模块及数据显示模块和报警模块的电路相对来说都很简单,所以下面重点对数据采集模块的电路作详细的介绍。
数据采集模块的核心电路图如图2所示。
图2 数据采集模块硬件电路图Fig.2 Hardware schematic of data acquisition module
如图2所示:最左侧开关处于开启状态时,74HC245的A端连接到VCC,其电压值为高电平。而左侧开关状态为关的状态时,则74HC245的A端下拉到地,电平也呈现为低电平。而74HC245的DIR恒接高电平,由芯片手册可知,此时74HC245内部数据走向是数据从A端输入B端输出。当74HC245的OE为低,即为有效电平时,则此时表示开关状态的数据信号就由开关流向了74HC245的B端。而如果OE电平无效时它会输出高阻态,这样当8个开关同时接到S0~S7中的某一个时,无效的输出就不会对有效的输出造成影响。
单片机的 P2.5,P2.6,P2.7 接 138 译码器的 A1,A2,A3 3个输入端。而译码器的Y1~Y7分别接到8个74HC245的输出使能端,这样任一时刻就只能有一个74HC245的输出使能端是有效的低电平,同时也只有这一个74HC245所接的8个开关状态能够得到有效的输出。因此采用这种方式就能实现对64路开关的状态进行实时的采集。
而如果将设计中使用的3-8译码器改用4-16译码器,或者采用将低3位接3-8译码器的输入端,最高位分别接两个3-8译码器的使能端的方式扩展成4-16译码器。这样系统就能够对128路开关的状态进行有效的检测。以此类推,5-32译码器就能够对256路开关的状态进行检测,当然这样做的结果就是系统的实时性会有降低,在某些应用中可能已经不能满足实时性要求,但是在某些实时性要求不高的场合中,这样扩展下去还是有意义的。
而单片机处理模块的电路由单片机的最小系统组成,它包括电源电路,复位电路,时钟产生电路组成。本设计中采用的电源芯片是7805,它能有效地将电压转化为5 V直流电压。而时钟产生电路部分接的是12MHz的晶振。
数据显示模块电路采用的是动态显示的办法来显示输出结果,它由P0口上拉到5 V后接ULN2803,并由ULN2803提高其驱动数码管的能力后,接到2个数码管。同时通过单片机的P2.5,P2.6外接三级管来对两个数码管进行选择。这样由于人眼的视觉暂留效应,人眼就能看到两个数码管同时点亮并显示相应的数据。
报警模块的电路是由LED及蜂鸣器构成,当检测到某路或某几路开关的状态有了变化后,LED及蜂鸣器会实施报警,以提示观察者线路中开关的状态有了变化。
单片机的软件部分主要负责采集初始的64位开关的状态并且将这64个开关的状态存入单片机的内存中,之后单片机会不断地重复查询这64个开关的状态,并且将之后查询到的64个开关的状态与初始的64个开关的状态进行比较,判断出这64路开关的状态是否发生了变化,以及是哪些开关的状态发生了变化,并且通过数码管将发生变化的开关的编号显示出来,同时通过LED及蜂鸣器进行报警。
在系统中对64路开关的状态是分8组每组8个进行轮询来实现的,这样为了增强本设计的实时性,本设计中的所有程序都采用了汇编来编写。
软件设计的总体流程图如图3所示。
图3 总体软件设计流程图Fig.3 Flow chart of the overall software design
现给出部分代码,该部分代码实现的功能是通过138译码器将选中的第4个74HC245对应的8个开关的状态存入内存单元中:
笔者通过单片机配合74HC138及74HC245实现了对64路开关状态的采集、处理、报警及结果显示。相对于其他设计来说其突出优点在于成本低,同时系统的可扩展性非常高。通过扩展138译码器为4-16译码器或者5-32译码器,系统可以方便地实现128、256路开关状态的采集。但是,受限于单片机可用的内存资源及频率上限,当采集的开关数据过多时,或者对系统实时性要求较高时,有必要重新对单片机进行选型以支持更高频率的采样,同时外扩存储器以支持对更多的数据进行处理。
除了文中用数码管显示开关测试结果的方法以外,还可以用VB编写串口接收程序将结果输出至PC机,来实现开关状态的实时显示[7]。
[1]高亮,高瑜.基于多路开关检测接口芯片MC33993的开关量输入电路[J].电测与仪表,2008,45(2):58-60.
GAO Liang,GAO Yu.Input circuit of switch state on switch detection interface[J].Electrical Measurement&Instrumentation, 2008, 45(2):58-60.
[2]易晓林.扫描开关检测方法讨论 [J].宇航计测技术,2006,26(4):68-72.
YI Xiao-lin.Measurement method for scanning switch[J].Journal of Astronautic Metrology and Measurement, 2006,26(4):68-72.
[3]王化月.成套开关设备在线检测系统的研究 [D].江苏:江苏大学,2008.
[4]王者静.汽车起动开关检测装置机械系统精度的分析[J].青岛建筑工程学院学报,1997,18(1):49-54.
WANG Zhe-jing.The precision analysis about mechanical system of examining and testing installmentof starting switch of cars[J].Journal of Qingdao Institute of Architecture and Engineering, 1997, 18(1):49-54.
[5]石东海,扈啸.单片机数据通信技术从入门到精通[M].西安:西安电子科技大学,2002.
[6]裴岩,刘利民.单片机系统综合设计与实践[M].内蒙古:内蒙古大学出版社,2006.
[7]郗志刚,周宏甫.多工位开关检测试验台的集中监控系统[J].组合机床与自动加工技术,2004,16(11):71-75.
XI Zhi-gang,ZHOU Hong-pu.The concentrated surveillant control system about the multi-work position test-bed of the switch[J].Modular Machine Tool& Automatic Manufacturing Technique,2004, 16(11):71-75.