王鳳芹
〔摘 要〕本論文結(jié)合我們開發(fā)電子回單柜控制系統(tǒng)的實(shí)踐經(jīng)驗(yàn),詳細(xì)地介紹了電子回單柜中單片機(jī)的控制程序;提出了系統(tǒng)中出現(xiàn)干擾脈沖、死機(jī)的解決方案。
〔關(guān)鍵詞〕電子回單柜;單片機(jī);控制程序
〔中圖分類號(hào)〕TP391 〔文獻(xiàn)標(biāo)識(shí)碼〕B 〔文章編號(hào)〕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
電子回單柜的控制系統(tǒng)由硬件和軟件兩個(gè)部分所組成。系統(tǒng)軟件,是由主機(jī)與單片機(jī)的通信協(xié)議和單片機(jī)的控制程序所組成。單片機(jī)的控制程序又分主程序和中斷服務(wù)程序。其中主程序是用來完成系統(tǒng)的初始化;中斷服務(wù)程序,則完成系統(tǒng)的所有控制和檢測(cè)。本文主要介紹單片機(jī)控制程序的實(shí)現(xiàn)方法。
1 控制程序
系統(tǒng)控制程序主要由主程序、串行口中斷服務(wù)程序[1]、看門狗復(fù)位程序和若干子程序組成,其控制流程如圖1所示。
1.1 主程序
主程序主要完成設(shè)置串行口的通信方式,設(shè)置定時(shí)器的工作方式,啟動(dòng)波特率發(fā)生器,設(shè)置接收和發(fā)送緩沖區(qū),開辟堆棧保護(hù)區(qū),觸發(fā)看門狗,關(guān)閉行列譯碼器,關(guān)閉多路開關(guān),關(guān)閉光電二極管電源,開中斷,等待中斷等功能。
1.2 串行口中斷服務(wù)程序
當(dāng)主機(jī)向各回單柜發(fā)出控制指令時(shí)便發(fā)生串行口的接收中斷。在接收中斷服務(wù)程序中主要完成控制指令的接收、目標(biāo)柜號(hào)和本地柜號(hào)的比較、目標(biāo)回單盒的選中和開啟、開啟狀態(tài)的檢測(cè)、關(guān)閉狀態(tài)的檢測(cè)、存單狀態(tài)的檢測(cè)和狀態(tài)信息的反饋等功能。
當(dāng)進(jìn)行目標(biāo)回單盒的選中和開啟操作時(shí),行列譯碼器將同時(shí)啟動(dòng),使目標(biāo)回單盒的電磁鐵通電,但關(guān)閉多路開關(guān)。
當(dāng)進(jìn)行目標(biāo)回單盒開啟狀態(tài)的測(cè)試時(shí),為了避免電磁鐵的無為耗電將列譯碼器關(guān)閉,但行譯碼器仍然工作,且啟動(dòng)多路開關(guān)。然后檢測(cè)比較器的輸出信號(hào)。此時(shí)如果檢測(cè)到了一個(gè)負(fù)脈信號(hào),立刻向主機(jī)發(fā)送“目標(biāo)回單盒已經(jīng)打開”的狀態(tài)信息,如果檢測(cè)不到,那么再次打開、再度測(cè)試,如此重復(fù)三次仍然測(cè)不到,將向主機(jī)發(fā)送“目標(biāo)回單盒無法打開”的狀態(tài)信息。
結(jié)束目標(biāo)回單盒開啟狀態(tài)的檢測(cè)之后,緊接著進(jìn)行關(guān)閉狀態(tài)的檢測(cè)。我們?cè)谡{(diào)試過程中發(fā)現(xiàn),當(dāng)把回單盒給開啟和關(guān)閉時(shí),比較器的輸出端連續(xù)出現(xiàn)多個(gè)負(fù)脈沖信號(hào)。這對(duì)以后的關(guān)閉檢測(cè)和存單檢測(cè)造成一個(gè)假象和混亂。其中的第二個(gè)脈沖,很容易冒充后續(xù)的關(guān)門或者有單信號(hào)。這是因?yàn)椋貑魏械拈_啟和關(guān)閉以及存單的檢測(cè)方法本質(zhì)上沒有區(qū)別,只是在時(shí)間上有先后之分而已。當(dāng)小磁鐵在經(jīng)過干簧繼電器位置時(shí)會(huì)產(chǎn)生磁場(chǎng)的變化,從而引起干簧
繼電器觸點(diǎn)的顫動(dòng),這就是在比較器輸出端連續(xù)出現(xiàn)多個(gè)負(fù)脈沖的根本原因。原因雖然清楚了,但要想把它徹底消除是極其困難的。那么究竟如何解決這個(gè)問題呢?我們想到的是延時(shí)方法。單片機(jī)檢測(cè)到第一個(gè)負(fù)脈沖信號(hào)之后,立刻調(diào)用延時(shí)子程序,來躲過后續(xù)干擾脈沖的作用時(shí)間。實(shí)踐證明,此方法不僅簡(jiǎn)單又十分管用。另外,回單盒是靠人工關(guān)閉的,因此控制程序無法判斷它在何時(shí)關(guān)閉。為此系統(tǒng)規(guī)定了最長(zhǎng)關(guān)盒等待時(shí)間,而且此時(shí)間還可以由系統(tǒng)主機(jī),通過控制指令隨時(shí)對(duì)其進(jìn)行調(diào)整。如果在最長(zhǎng)關(guān)盒等待時(shí)間內(nèi)檢測(cè)到負(fù)脈沖的關(guān)門信號(hào),那么立刻向主機(jī)發(fā)送“目標(biāo)回單盒已經(jīng)關(guān)閉”的狀態(tài)信息;如果超過了此等待時(shí)間,但仍未檢測(cè)到負(fù)脈沖信號(hào),那么將向主機(jī)發(fā)送“目標(biāo)回單盒尚未關(guān)閉”的狀態(tài)信息。
當(dāng)進(jìn)行目標(biāo)回單盒的存單檢測(cè)時(shí),接通回單盒控制電路的發(fā)光二極管電源,同時(shí)檢測(cè)比較器的輸出信號(hào)。當(dāng)檢測(cè)到低電平信號(hào),則向主機(jī)發(fā)送“目標(biāo)回單盒中有回單”的狀態(tài)信息;如果測(cè)到的是高電平信號(hào),那么向主機(jī)發(fā)送“目標(biāo)回單盒中無回單”的狀態(tài)信息。
1.3 為了避免因外界干擾引起的系統(tǒng)“死機(jī)”,單片機(jī)控制電路專門設(shè)計(jì)了看門狗[2]復(fù)位電路,其定時(shí)時(shí)間為1.6秒
在主程序和中斷服務(wù)程序中,多處安排了此看門狗的觸發(fā)程序。所以在正常情況下,由于看門狗的觸發(fā)間隔時(shí)間不會(huì)超過1.6秒,因此控制程序也不能復(fù)位。然而,當(dāng)程序因某種原因進(jìn)入死循環(huán)時(shí),由于在1.6秒內(nèi)執(zhí)行不到看門狗的觸發(fā)程序,因此單片機(jī)將復(fù)位,使控制程序起死回生,重新投入運(yùn)行。這樣的自動(dòng)補(bǔ)救措施,對(duì)保證系統(tǒng)的安全性和可靠性是至關(guān)重要的。
1.4 控制程序中有兩個(gè)子程序供中斷服務(wù)程序地調(diào)用一個(gè)為基準(zhǔn)延時(shí)子程序,另一個(gè)為發(fā)送子程序。前者是用來延時(shí)的,后者則是專門用來給主機(jī)反饋狀態(tài)信息的。在本控制系統(tǒng)中用到很多延時(shí)環(huán)節(jié),其中延時(shí)時(shí)間的準(zhǔn)確設(shè)定是一件比較困難的事情。為了方便地找準(zhǔn)最佳的延時(shí)時(shí)間,我們預(yù)先編制了較短時(shí)間的基準(zhǔn)延時(shí)子程序。這樣,在調(diào)試過程中只要修改該子程序的連續(xù)調(diào)用次數(shù),就可以調(diào)整延時(shí)時(shí)間,從而可以簡(jiǎn)化延時(shí)時(shí)間的設(shè)定過程。
2 結(jié) 論
通過多次的集中測(cè)試和如今的現(xiàn)場(chǎng)應(yīng)用表明,本控制系統(tǒng)的控制方法具有程序結(jié)構(gòu)合理,運(yùn)行穩(wěn)定和可靠等諸多特點(diǎn)。至今已經(jīng)持續(xù)運(yùn)行了3個(gè)多月,但尚未發(fā)現(xiàn)明顯的故障和錯(cuò)誤。特別是采用回單盒的動(dòng)態(tài)分配技術(shù)之后,回單盒的實(shí)際使用效率和容量明顯得到提高,在這一點(diǎn)上傳統(tǒng)的回單柜是無法跟它比擬的。
參考文獻(xiàn)
[1]王福瑞.單片微機(jī)測(cè)控系統(tǒng)設(shè)計(jì)大全[M].北京:北京航空航天大學(xué)出版社,1999.3.
[2]萬(wàn)福君.MCS-51單片機(jī)原理、系統(tǒng)設(shè)計(jì)與應(yīng)用[M].北京:清華大學(xué)出版社,2008.6.