王新輝,王梓全,劉 輝,馬凌云
(長沙大學(xué)電子與通信工程系,湖南長沙 410003)
多單片機(jī)協(xié)同工作方法研究及應(yīng)用*
王新輝,王梓全,劉 輝,馬凌云
(長沙大學(xué)電子與通信工程系,湖南長沙 410003)
介紹了多單片機(jī)協(xié)同工作方法及系統(tǒng),該工作系統(tǒng)由一個單片機(jī)主機(jī)、多個單片機(jī)客機(jī)、一個計數(shù)器、一個譯碼器和一個數(shù)據(jù)選擇器組成.單片機(jī)主機(jī)上的4個IO端口作為控制端口,該4個IO端口分別是計數(shù)器復(fù)位端口,計數(shù)脈沖輸出端口、響應(yīng)信號反饋端口和使能端口.每一個單片機(jī)客機(jī)都有一個功能執(zhí)行單元,該功能執(zhí)行單元用于由譯碼器輸出的輸出選通信號觸發(fā)而執(zhí)行本單片機(jī)客機(jī)中的預(yù)設(shè)程序以實現(xiàn)預(yù)設(shè)的功能.采用較少且廉價的外圍芯片,使用很少的單片機(jī)IO端口線就解決了多單片機(jī)陣列的協(xié)同工作的應(yīng)用技術(shù)障礙問題,充分發(fā)揮了單片機(jī)價格低廉,性價比極高,具有很廣的應(yīng)用前景.
多單片機(jī);協(xié)同工作;主機(jī);客機(jī)
單片機(jī)具有價格低廉,應(yīng)用方便可靠的優(yōu)點(diǎn),應(yīng)用十分廣泛和普及,但單片機(jī)作為一個單機(jī)來說,由于其IO端口線有限,使得其應(yīng)用受到了限制,隨著應(yīng)用領(lǐng)域的不斷擴(kuò)大,有時單個單片機(jī)的控制就顯得力不從心了,因此在一些較大的系統(tǒng)中要應(yīng)用單片機(jī)的話,需要用到多個單片機(jī)構(gòu)成單片機(jī)陣列來參與控制,并且往往要求這些單片機(jī)協(xié)同工作.例如,在LED大屏幕顯示裝置中就需要使用多個單片機(jī),為確保LED大屏幕顯示裝置畫面的統(tǒng)一完整,各單片機(jī)必須能夠協(xié)同工作.
目前,實現(xiàn)單片機(jī)協(xié)同工作方式可以借助于使用單片機(jī)的串行口進(jìn)行通信組成一個單片機(jī)網(wǎng)絡(luò)系統(tǒng)工作,這種方式存在以下缺陷[1-4]:(1)不能靈活地選用單片機(jī)的IO口線,只能固定使用單片機(jī)的串行端口線;(2)主客單片機(jī)的串行口都要被占用,系統(tǒng)不能通過串行口與上位機(jī)(PC機(jī))或者其它裝置進(jìn)行通信;(3)軟件設(shè)計復(fù)雜度較高.
另一種方式是將單片機(jī)通過2根IO端口線直接相聯(lián),這種方式的主要問題是單片機(jī)擴(kuò)大的數(shù)量受到限制,仍然只適合于需要單片機(jī)的IO端口控制線還不太多的應(yīng)用,而且還要以失去主單片機(jī)的IO端口線和控制功能為代價.
要解決上述問題,需要尋找一種僅占用單片機(jī)的IO端口線資源很少、能夠避開單片機(jī)特定的IO端口線、即IO端口線可以是任選的、外圍芯片十分廉價、客機(jī)數(shù)量又不受限制的方案.為此提出了多單片機(jī)協(xié)同工作方法.在需要使用多個單片機(jī)協(xié)同工作時,可以設(shè)定一個單片機(jī)為呼叫單片機(jī)(簡稱主機(jī)),其他單片機(jī)為被呼叫單片機(jī)(簡稱客機(jī)),它們之間的關(guān)系為主─—客關(guān)系,當(dāng)主機(jī)發(fā)現(xiàn)系統(tǒng)中需要客機(jī)協(xié)助完成某項的工作時,呼叫客機(jī),使客機(jī)及時完成該工作.它們各自有相對的獨(dú)立性,有單獨(dú)的任務(wù)要完成,但又需要協(xié)同工作,它們的空間位置比較近,傳輸?shù)男畔⒘坎⒉淮?,只傳送命令及?zhí)行命令的情況,不傳送數(shù)據(jù),這一點(diǎn)不同于主─從式通信,因而它類似于人類社會領(lǐng)導(dǎo)與成員之間的關(guān)系.
如圖1所示,多單片機(jī)協(xié)同工作系統(tǒng)由一個單片機(jī)主機(jī)U0、多個單片機(jī)客機(jī)U1~Un、一個二進(jìn)制計數(shù)器IC1、一個二進(jìn)制譯碼器IC2和一個數(shù)據(jù)選擇器IC3組成;其基本思想是任選單片機(jī)主機(jī)的4個IO端口作為控制端口,分別定義為IOX0~I(xiàn)OX3,見表一所示單片機(jī)主機(jī)端口定義所示,每個單片機(jī)客機(jī)只要安排任意2個IO端口,分別定義為IOX0~I(xiàn)OX1,見表1所示單片機(jī)客機(jī)端口[5]定義所示.
圖1 多單片機(jī)協(xié)同工作方法硬件組成
表1 單片機(jī)陣列各IO端口線定義
主機(jī)輸出的計數(shù)器復(fù)位端口(IOX0)與計數(shù)器的復(fù)位端(RST)相接,計數(shù)脈沖輸出端口(IOX1)與計數(shù)器的時鐘信號輸入端(CLK)相接;
主機(jī)輸入客機(jī)響應(yīng)信號反饋端口(IOX2)與數(shù)據(jù)選擇器的輸出端(Z)相接;
主機(jī)輸出的使能端口(IOX3)接譯碼器的使能端(EN)和數(shù)據(jù)選擇器的選通端(G).
計數(shù)器的數(shù)據(jù)輸出端(Q0~Qm)與譯碼器的數(shù)據(jù)輸入端(A0~Am)以及數(shù)據(jù)選擇器的通道選擇數(shù)據(jù)輸入端(A0~Am)對應(yīng)一一連接;
數(shù)據(jù)選擇器的多個輸入通道(D1-Dn)分別與多個單片機(jī)客機(jī)的響應(yīng)IO端口一一連接;
客機(jī)從其IOX0端口輸入主機(jī)的呼叫信號,將響應(yīng)信號從其IOX1輸出.其中IOX0連接到負(fù)責(zé)對主機(jī)輸出的客機(jī)地址進(jìn)行譯碼的譯碼器的一個輸出端,IOX1則連接到負(fù)責(zé)將客機(jī)響應(yīng)信號傳送回主機(jī)的數(shù)據(jù)選擇器輸入端上.從而形成了主機(jī)與客機(jī)之間協(xié)同工作所需的信息溝通路徑與主機(jī)進(jìn)行通信.
在這種方法中,對主、客單片機(jī)IO引腳無特定要求,因此可以留出主、客機(jī)單片機(jī)的特定引腳給系統(tǒng)使用.比如串行口及中斷口都可以供系統(tǒng)的其他功能使用.
采用前述的多單片機(jī)協(xié)同工作系統(tǒng)的硬件連接方法,單片機(jī)主機(jī)的工作步驟為:
步驟1:二進(jìn)制計數(shù)器清零,置數(shù)據(jù)選擇器使能端有效,置譯碼器使能端無效;
步驟2:發(fā)送要呼叫的單片機(jī)客機(jī)的編號到計數(shù)器;
步驟3:根據(jù)響應(yīng)信號反饋端口(IOX2)的狀態(tài)判斷被呼叫的單片機(jī)客機(jī)是否空閑,如果空閑,則進(jìn)入下一步,否則返回步驟3;
步驟4:置數(shù)據(jù)選擇器使能端無效,置譯碼器使能有效,使得譯碼器輸出單片機(jī)客機(jī)選通信號;
步驟5:延時,然后計數(shù)器清零;
步驟6:置數(shù)據(jù)選擇器使能端有效,置譯碼器使能端無效,呼叫操作結(jié)束;
單片機(jī)客機(jī)的工作步驟為:
步驟A:復(fù)位響應(yīng)端口狀態(tài),表示空閑可響應(yīng)呼叫;
步驟B:查詢選通IO端口的狀態(tài),判斷是否有呼叫,如果有呼叫則進(jìn)入下一步,否則返回步驟B;
步驟C:置相應(yīng)端口狀態(tài)為有效,表示響應(yīng)呼叫;
步驟D:啟動功能執(zhí)行單元,完成呼叫所規(guī)定的操作;
步驟E:復(fù)位響應(yīng)端口狀態(tài),表示空閑可響應(yīng)呼叫,并返回步驟B.
當(dāng)主機(jī)在發(fā)現(xiàn)系統(tǒng)有呼叫某一客機(jī)的需要時,就會起動如圖2(a)所示的操作流程,主機(jī)程序可以子程序的形式編寫.
每一個單片機(jī)客機(jī)都有一個功能執(zhí)行單元,該功能執(zhí)行單元用于由譯碼器輸出的輸出選通信號觸發(fā)而執(zhí)行本單片機(jī)從機(jī)中的預(yù)設(shè)程序以實現(xiàn)預(yù)設(shè)的功能.
在客機(jī)程序中,查詢主機(jī)的呼叫信號,按如圖2(b)所示的流程進(jìn)行響應(yīng).如果在系統(tǒng)中,客機(jī)不需要使用外部中斷,可以選擇IOX0=P3.2(P3.3),而將客機(jī)響應(yīng)安排為中斷服務(wù)程序,可避免客機(jī)進(jìn)行查詢,可使響應(yīng)過程更為及時快速.
多個單片機(jī)協(xié)同工作方法采用很好地克服了在單個單片機(jī)IO線數(shù)量不夠,需要多個單片機(jī)協(xié)同工作應(yīng)用場合遇到的協(xié)調(diào)技術(shù)障礙.將本技術(shù)應(yīng)用于某一行線數(shù)為96、列線數(shù)為1280的單色LED顯示屏廣告顯示系統(tǒng)中,使用了10片單片機(jī)89S52,并僅另外加入了二進(jìn)制譯碼器為74LS138D芯片,二進(jìn)制計數(shù)器4024BP芯片,數(shù)據(jù)選擇器采用74LS251D芯片.由于本技術(shù)的使用,可以使單片機(jī)進(jìn)行協(xié)同工作,有較多單片機(jī)的資源可以利用,較容易地實現(xiàn)了文字和圖片畫面的左移、右移、上移、上移、逐行消失、逐列消失、閃爍等功能.實踐表明可行.
圖2 多單片機(jī)協(xié)同工作軟件流程
[1]葉佩.MCS-51單片機(jī)的多機(jī)通信方式研究[J].科協(xié)論壇,2009,(12):58 -59.
[2]忽曉偉,吳海燕,周曉平.單片機(jī)系統(tǒng)中多處理器協(xié)同工作的研究[J].科技信息,2011,(12):46.
[3]王富東,邵光慶.單片機(jī)多串口通迅技術(shù)及其應(yīng)用[J].儀器儀表學(xué)報,2002,(z1):262 -264.
[4]徐新華.多單片機(jī)的聯(lián)合工作[J].科技創(chuàng)新導(dǎo)報,2008,(21):14.
[5]李朝青.單片機(jī)原理及接口技術(shù)[M].北京:北京航空航天大學(xué)出版社,1999.
TP273
A
1008-4681(2012)02-0026-03
2011-12-15
王新輝(1964-),男,湖南雙峰人,長沙大學(xué)電子與通信工程系教授,碩士.研究方向:單片機(jī)控制、傳感檢測技術(shù).
(作者本人校對)