王 力,薛紅喜
(電子科技大學 電子工程學院,四川 成都 610054)
在數(shù)字世界中1代表電壓高或者低,0代表電壓的低或者高,而0和1的各種組合能代表各種各樣的狀態(tài),同時它們的各種組合也形成了我們現(xiàn)實生活中看到的各種電子產(chǎn)品。開關狀態(tài)的開及關,在實際生活中也能代表各種各樣的狀態(tài)。在常見的設計中大多使用MC33993[1]或者恒流源[2]的方式來進行多路開關狀態(tài)的檢測。成套開關設備狀態(tài)的準確檢測對于確保線路的正確運行具有極大意義[3]。在電力系統(tǒng)中,為了防止電纜因接頭的接觸不良而引發(fā)的散熱不足,通常在動力電纜接頭處安裝微動熱敏開關。在汽車電子中也包含了各種各樣的開關電子元器件,比如走動開關其質量的優(yōu)劣和耐用的程度直接關系到汽車的性能[4]。
下面從設計的總體結構、硬件設計及軟件設計3個方面來對本設計分別闡述。
圖1 總體硬件結構圖Fig.1 The overall hardware structure
系統(tǒng)硬件由開關狀態(tài)采集模塊、單片機處理模塊、采集結果顯示模塊及報警模塊組成。總體結構圖如圖1所示。
本設計能實時地由開關狀態(tài)采集模塊采集64路開關的狀態(tài),并由單片機處理模塊處理并判斷出64路開關的狀態(tài)是否有了變化。一旦開關狀態(tài)有了變化,報警模塊的LED就會閃爍,蜂鳴器會開始鳴叫,同時數(shù)碼管也會顯示出是哪一路或者是哪幾路開關的狀態(tài)發(fā)生了變化。
開關狀態(tài)采集模塊由74HC138配合74HC245構成,74HC系列芯片的所有輸入和輸出均有內部保護線路,以減少由于靜電感應而損壞器件的可能性。74HC系列具有高度抗噪音和驅動負載的能力。74HC245是為在數(shù)據(jù)總線間的異步雙工通訊而設計的,內含8個三態(tài)輸出的雙總線收發(fā)器,方向控制端DIR確定數(shù)據(jù)傳送方向,接高電平時數(shù)據(jù)從A端口傳送到B端口,接低電平時數(shù)據(jù)從B端口傳送到A端口。輸出允許端OE為低電平時有效,當OE為高電平時,數(shù)據(jù)端口A、B均呈高阻。74HC245用在硬件電路設計中時一般是用來提高驅動能力或者作電平轉換之用。由一個74HC138的8個輸出分別接到1個74HC245的輸出使能端,這樣在任一時刻只能選中一個74HC245有效輸出,而任一74HC245連接了8個開關的狀態(tài)值,因此1個74HC138配合8個74HC245就能有效地檢測64個開關的狀態(tài)。
在單片機最小系統(tǒng)模塊中選用了AT89S52單片機,AT89S52是一種低功耗、高性能CMOS 8位微控制器,具有8 k在線系統(tǒng)可編程Flash存儲器。使用Atmel公司高密度非易失性存儲器技術制造,與工業(yè)89C51產(chǎn)品指令和引腳完全兼容。片上Flash允許程序存儲器在線可編程,亦適于常規(guī)編程器,同時程序掉電也不會丟失。AT89S52具有以下標準功能:8 k字節(jié)Flash,256字節(jié)RAM,32位I/O口線,看門狗定時器,2個數(shù)據(jù)指針,3個16位定時器/計數(shù)器,全雙工串行口,片內晶振及時鐘電路。另外,AT89S52可降至0 Hz靜態(tài)邏輯操作,支持2種軟件可選擇節(jié)電模式??臻e模式下,CPU停止工作,允許RAM、定時器/計數(shù)器、串口、中斷繼續(xù)工作。掉電保護方式下,RAM內容被保存,振蕩器被凍結,單片機一切工作停止,直到下一個中斷或硬件復位為止[5]。
AT89S52最小系統(tǒng)主要負責對開關狀態(tài)采集模塊電路采集過來的數(shù)據(jù)信號進行處理,并作出判斷是否有開關狀態(tài)發(fā)生了變化以及是哪一路開關的狀態(tài)發(fā)生了變化,并將結果送到采集結果顯示模塊以及報警模塊。通過這種方式將結果送到觀察者,以便觀察者作出相應的處理。
采集結果顯示模塊由ULN2803配合數(shù)碼管構成,ULN2803廣泛用于計算機,工業(yè)和消費類產(chǎn)品中,所有器件有集電極開路輸出和用于瞬變抑制的續(xù)流箝位二級管。ULN2803的設計與標準TTL系列兼容。它是一個反向驅動電路,輸入口為高電平時輸出口為低電平,而入口為低電平時出口為高電平,同時使用該器件能提高單片機輸出口的驅動能力,能提供比單片機口高得多的驅動電流[6]。當單片機驅動數(shù)碼管時,其輸出驅動能力約20 mA,不能滿足數(shù)碼管對于電流驅動的要求。同時,如果直接用單片機驅動數(shù)碼管,則單片機的灌入電流將會大大增加,進而會造成單片機發(fā)熱過高,而如果單片機工作溫度過高,會減少單片機的使用壽命以及系統(tǒng)的穩(wěn)定性。
報警模塊主要是由LED以及蜂鳴器組成,其主要目的是:一旦開關狀態(tài)有了變化,蜂鳴器鳴叫同時LED閃爍,給觀察者以醒目的提示。
在硬件電路的設計中單片機處理模塊及數(shù)據(jù)顯示模塊和報警模塊的電路相對來說都很簡單,所以下面重點對數(shù)據(jù)采集模塊的電路作詳細的介紹。
數(shù)據(jù)采集模塊的核心電路圖如圖2所示。
圖2 數(shù)據(jù)采集模塊硬件電路圖Fig.2 Hardware schematic of data acquisition module
如圖2所示:最左側開關處于開啟狀態(tài)時,74HC245的A端連接到VCC,其電壓值為高電平。而左側開關狀態(tài)為關的狀態(tài)時,則74HC245的A端下拉到地,電平也呈現(xiàn)為低電平。而74HC245的DIR恒接高電平,由芯片手冊可知,此時74HC245內部數(shù)據(jù)走向是數(shù)據(jù)從A端輸入B端輸出。當74HC245的OE為低,即為有效電平時,則此時表示開關狀態(tài)的數(shù)據(jù)信號就由開關流向了74HC245的B端。而如果OE電平無效時它會輸出高阻態(tài),這樣當8個開關同時接到S0~S7中的某一個時,無效的輸出就不會對有效的輸出造成影響。
單片機的 P2.5,P2.6,P2.7 接 138 譯碼器的 A1,A2,A3 3個輸入端。而譯碼器的Y1~Y7分別接到8個74HC245的輸出使能端,這樣任一時刻就只能有一個74HC245的輸出使能端是有效的低電平,同時也只有這一個74HC245所接的8個開關狀態(tài)能夠得到有效的輸出。因此采用這種方式就能實現(xiàn)對64路開關的狀態(tài)進行實時的采集。
而如果將設計中使用的3-8譯碼器改用4-16譯碼器,或者采用將低3位接3-8譯碼器的輸入端,最高位分別接兩個3-8譯碼器的使能端的方式擴展成4-16譯碼器。這樣系統(tǒng)就能夠對128路開關的狀態(tài)進行有效的檢測。以此類推,5-32譯碼器就能夠對256路開關的狀態(tài)進行檢測,當然這樣做的結果就是系統(tǒng)的實時性會有降低,在某些應用中可能已經(jīng)不能滿足實時性要求,但是在某些實時性要求不高的場合中,這樣擴展下去還是有意義的。
而單片機處理模塊的電路由單片機的最小系統(tǒng)組成,它包括電源電路,復位電路,時鐘產(chǎn)生電路組成。本設計中采用的電源芯片是7805,它能有效地將電壓轉化為5 V直流電壓。而時鐘產(chǎn)生電路部分接的是12MHz的晶振。
數(shù)據(jù)顯示模塊電路采用的是動態(tài)顯示的辦法來顯示輸出結果,它由P0口上拉到5 V后接ULN2803,并由ULN2803提高其驅動數(shù)碼管的能力后,接到2個數(shù)碼管。同時通過單片機的P2.5,P2.6外接三級管來對兩個數(shù)碼管進行選擇。這樣由于人眼的視覺暫留效應,人眼就能看到兩個數(shù)碼管同時點亮并顯示相應的數(shù)據(jù)。
報警模塊的電路是由LED及蜂鳴器構成,當檢測到某路或某幾路開關的狀態(tài)有了變化后,LED及蜂鳴器會實施報警,以提示觀察者線路中開關的狀態(tài)有了變化。
單片機的軟件部分主要負責采集初始的64位開關的狀態(tài)并且將這64個開關的狀態(tài)存入單片機的內存中,之后單片機會不斷地重復查詢這64個開關的狀態(tài),并且將之后查詢到的64個開關的狀態(tài)與初始的64個開關的狀態(tài)進行比較,判斷出這64路開關的狀態(tài)是否發(fā)生了變化,以及是哪些開關的狀態(tài)發(fā)生了變化,并且通過數(shù)碼管將發(fā)生變化的開關的編號顯示出來,同時通過LED及蜂鳴器進行報警。
在系統(tǒng)中對64路開關的狀態(tài)是分8組每組8個進行輪詢來實現(xiàn)的,這樣為了增強本設計的實時性,本設計中的所有程序都采用了匯編來編寫。
軟件設計的總體流程圖如圖3所示。
圖3 總體軟件設計流程圖Fig.3 Flow chart of the overall software design
現(xiàn)給出部分代碼,該部分代碼實現(xiàn)的功能是通過138譯碼器將選中的第4個74HC245對應的8個開關的狀態(tài)存入內存單元中:
筆者通過單片機配合74HC138及74HC245實現(xiàn)了對64路開關狀態(tài)的采集、處理、報警及結果顯示。相對于其他設計來說其突出優(yōu)點在于成本低,同時系統(tǒng)的可擴展性非常高。通過擴展138譯碼器為4-16譯碼器或者5-32譯碼器,系統(tǒng)可以方便地實現(xiàn)128、256路開關狀態(tài)的采集。但是,受限于單片機可用的內存資源及頻率上限,當采集的開關數(shù)據(jù)過多時,或者對系統(tǒng)實時性要求較高時,有必要重新對單片機進行選型以支持更高頻率的采樣,同時外擴存儲器以支持對更多的數(shù)據(jù)進行處理。
除了文中用數(shù)碼管顯示開關測試結果的方法以外,還可以用VB編寫串口接收程序將結果輸出至PC機,來實現(xiàn)開關狀態(tài)的實時顯示[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]王化月.成套開關設備在線檢測系統(tǒng)的研究 [D].江蘇:江蘇大學,2008.
[4]王者靜.汽車起動開關檢測裝置機械系統(tǒng)精度的分析[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]石東海,扈嘯.單片機數(shù)據(jù)通信技術從入門到精通[M].西安:西安電子科技大學,2002.
[6]裴巖,劉利民.單片機系統(tǒng)綜合設計與實踐[M].內蒙古:內蒙古大學出版社,2006.
[7]郗志剛,周宏甫.多工位開關檢測試驗臺的集中監(jiān)控系統(tǒng)[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.