电子回单柜中的单片机控制程序
2009-07-14王凤芹
王凤芹
〔摘 要〕本论文结合我们开发电子回单柜控制系统的实践经验,详细地介绍了电子回单柜中单片机的控制程序;提出了系统中出现干扰脉冲、死机的解决方案。
〔关键词〕电子回单柜;单片机;控制程序
〔中图分类号〕TP391 〔文献标识码〕B 〔文章编号〕1008-0821(2009)02-0214-03
Singlechip Control Program in Electronic Receipt CabinetWang Fengqin
(Department of Computer,Jilin Management and Business College,Changchun 130062,China)
〔Abstract〕In this paper,a detailed introduction to control program of singlechip in electronic receipt cabiney was addressed.Put forward solution method to appear disruptions pulse or lockdown of system.
〔Key words〕electronic receipt cabinet;singlechip;control progranm
电子回单柜的控制系统由硬件和软件两个部分所组成。系统软件,是由主机与单片机的通信协议和单片机的控制程序所组成。单片机的控制程序又分主程序和中断服务程序。其中主程序是用来完成系统的初始化;中断服务程序,则完成系统的所有控制和检测。本文主要介绍单片机控制程序的实现方法。
1 控制程序
系统控制程序主要由主程序、串行口中断服务程序[1]、看门狗复位程序和若干子程序组成,其控制流程如图1所示。
1.1 主程序
主程序主要完成设置串行口的通信方式,设置定时器的工作方式,启动波特率发生器,设置接收和发送缓冲区,开辟堆栈保护区,触发看门狗,关闭行列译码器,关闭多路开关,关闭光电二极管电源,开中断,等待中断等功能。
1.2 串行口中断服务程序
当主机向各回单柜发出控制指令时便发生串行口的接收中断。在接收中断服务程序中主要完成控制指令的接收、目标柜号和本地柜号的比较、目标回单盒的选中和开启、开启状态的检测、关闭状态的检测、存单状态的检测和状态信息的反馈等功能。
当进行目标回单盒的选中和开启操作时,行列译码器将同时启动,使目标回单盒的电磁铁通电,但关闭多路开关。
当进行目标回单盒开启状态的测试时,为了避免电磁铁的无为耗电将列译码器关闭,但行译码器仍然工作,且启动多路开关。然后检测比较器的输出信号。此时如果检测到了一个负脉信号,立刻向主机发送“目标回单盒已经打开”的状态信息,如果检测不到,那么再次打开、再度测试,如此重复三次仍然测不到,将向主机发送“目标回单盒无法打开”的状态信息。
结束目标回单盒开启状态的检测之后,紧接着进行关闭状态的检测。我们在调试过程中发现,当把回单盒给开启和关闭时,比较器的输出端连续出现多个负脉冲信号。这对以后的关闭检测和存单检测造成一个假象和混乱。其中的第二个脉冲,很容易冒充后续的关门或者有单信号。这是因为,回单盒的开启和关闭以及存单的检测方法本质上没有区别,只是在时间上有先后之分而已。当小磁铁在经过干簧继电器位置时会产生磁场的变化,从而引起干簧
继电器触点的颤动,这就是在比较器输出端连续出现多个负脉冲的根本原因。原因虽然清楚了,但要想把它彻底消除是极其困难的。那么究竟如何解决这个问题呢?我们想到的是延时方法。单片机检测到第一个负脉冲信号之后,立刻调用延时子程序,来躲过后续干扰脉冲的作用时间。实践证明,此方法不仅简单又十分管用。另外,回单盒是靠人工关闭的,因此控制程序无法判断它在何时关闭。为此系统规定了最长关盒等待时间,而且此时间还可以由系统主机,通过控制指令随时对其进行调整。如果在最长关盒等待时间内检测到负脉冲的关门信号,那么立刻向主机发送“目标回单盒已经关闭”的状态信息;如果超过了此等待时间,但仍未检测到负脉冲信号,那么将向主机发送“目标回单盒尚未关闭”的状态信息。
当进行目标回单盒的存单检测时,接通回单盒控制电路的发光二极管电源,同时检测比较器的输出信号。当检测到低电平信号,则向主机发送“目标回单盒中有回单”的状态信息;如果测到的是高电平信号,那么向主机发送“目标回单盒中无回单”的状态信息。
1.3 为了避免因外界干扰引起的系统“死机”,单片机控制电路专门设计了看门狗[2]复位电路,其定时时间为1.6秒
在主程序和中断服务程序中,多处安排了此看门狗的触发程序。所以在正常情况下,由于看门狗的触发间隔时间不会超过1.6秒,因此控制程序也不能复位。然而,当程序因某种原因进入死循环时,由于在1.6秒内执行不到看门狗的触发程序,因此单片机将复位,使控制程序起死回生,重新投入运行。这样的自动补救措施,对保证系统的安全性和可靠性是至关重要的。
1.4 控制程序中有两个子程序供中断服务程序地调用一个为基准延时子程序,另一个为发送子程序。前者是用来延时的,后者则是专门用来给主机反馈状态信息的。在本控制系统中用到很多延时环节,其中延时时间的准确设定是一件比较困难的事情。为了方便地找准最佳的延时时间,我们预先编制了较短时间的基准延时子程序。这样,在调试过程中只要修改该子程序的连续调用次数,就可以调整延时时间,从而可以简化延时时间的设定过程。
2 结 论
通过多次的集中测试和如今的现场应用表明,本控制系统的控制方法具有程序结构合理,运行稳定和可靠等诸多特点。至今已经持续运行了3个多月,但尚未发现明显的故障和错误。特别是采用回单盒的动态分配技术之后,回单盒的实际使用效率和容量明显得到提高,在这一点上传统的回单柜是无法跟它比拟的。
参考文献
[1]王福瑞.单片微机测控系统设计大全[M].北京:北京航空航天大学出版社,1999.3.
[2]万福君.MCS-51单片机原理、系统设计与应用[M].北京:清华大学出版社,2008.6.