王新輝,王梓全,劉 輝,馬凌云
(長沙大學電子與通信工程系,湖南長沙 410003)
多單片機協同工作方法研究及應用*
王新輝,王梓全,劉 輝,馬凌云
(長沙大學電子與通信工程系,湖南長沙 410003)
介紹了多單片機協同工作方法及系統,該工作系統由一個單片機主機、多個單片機客機、一個計數器、一個譯碼器和一個數據選擇器組成.單片機主機上的4個IO端口作為控制端口,該4個IO端口分別是計數器復位端口,計數脈沖輸出端口、響應信號反饋端口和使能端口.每一個單片機客機都有一個功能執行單元,該功能執行單元用于由譯碼器輸出的輸出選通信號觸發而執行本單片機客機中的預設程序以實現預設的功能.采用較少且廉價的外圍芯片,使用很少的單片機IO端口線就解決了多單片機陣列的協同工作的應用技術障礙問題,充分發揮了單片機價格低廉,性價比極高,具有很廣的應用前景.
多單片機;協同工作;主機;客機
單片機具有價格低廉,應用方便可靠的優點,應用十分廣泛和普及,但單片機作為一個單機來說,由于其IO端口線有限,使得其應用受到了限制,隨著應用領域的不斷擴大,有時單個單片機的控制就顯得力不從心了,因此在一些較大的系統中要應用單片機的話,需要用到多個單片機構成單片機陣列來參與控制,并且往往要求這些單片機協同工作.例如,在LED大屏幕顯示裝置中就需要使用多個單片機,為確保LED大屏幕顯示裝置畫面的統一完整,各單片機必須能夠協同工作.
目前,實現單片機協同工作方式可以借助于使用單片機的串行口進行通信組成一個單片機網絡系統工作,這種方式存在以下缺陷[1-4]:(1)不能靈活地選用單片機的IO口線,只能固定使用單片機的串行端口線;(2)主客單片機的串行口都要被占用,系統不能通過串行口與上位機(PC機)或者其它裝置進行通信;(3)軟件設計復雜度較高.
另一種方式是將單片機通過2根IO端口線直接相聯,這種方式的主要問題是單片機擴大的數量受到限制,仍然只適合于需要單片機的IO端口控制線還不太多的應用,而且還要以失去主單片機的IO端口線和控制功能為代價.
要解決上述問題,需要尋找一種僅占用單片機的IO端口線資源很少、能夠避開單片機特定的IO端口線、即IO端口線可以是任選的、外圍芯片十分廉價、客機數量又不受限制的方案.為此提出了多單片機協同工作方法.在需要使用多個單片機協同工作時,可以設定一個單片機為呼叫單片機(簡稱主機),其他單片機為被呼叫單片機(簡稱客機),它們之間的關系為主─—客關系,當主機發現系統中需要客機協助完成某項的工作時,呼叫客機,使客機及時完成該工作.它們各自有相對的獨立性,有單獨的任務要完成,但又需要協同工作,它們的空間位置比較近,傳輸的信息量并不大,只傳送命令及執行命令的情況,不傳送數據,這一點不同于主─從式通信,因而它類似于人類社會領導與成員之間的關系.
如圖1所示,多單片機協同工作系統由一個單片機主機U0、多個單片機客機U1~Un、一個二進制計數器IC1、一個二進制譯碼器IC2和一個數據選擇器IC3組成;其基本思想是任選單片機主機的4個IO端口作為控制端口,分別定義為IOX0~IOX3,見表一所示單片機主機端口定義所示,每個單片機客機只要安排任意2個IO端口,分別定義為IOX0~IOX1,見表1所示單片機客機端口[5]定義所示.

圖1 多單片機協同工作方法硬件組成

表1 單片機陣列各IO端口線定義
主機輸出的計數器復位端口(IOX0)與計數器的復位端(RST)相接,計數脈沖輸出端口(IOX1)與計數器的時鐘信號輸入端(CLK)相接;
主機輸入客機響應信號反饋端口(IOX2)與數據選擇器的輸出端(Z)相接;
主機輸出的使能端口(IOX3)接譯碼器的使能端(EN)和數據選擇器的選通端(G).
計數器的數據輸出端(Q0~Qm)與譯碼器的數據輸入端(A0~Am)以及數據選擇器的通道選擇數據輸入端(A0~Am)對應一一連接;
數據選擇器的多個輸入通道(D1-Dn)分別與多個單片機客機的響應IO端口一一連接;
客機從其IOX0端口輸入主機的呼叫信號,將響應信號從其IOX1輸出.其中IOX0連接到負責對主機輸出的客機地址進行譯碼的譯碼器的一個輸出端,IOX1則連接到負責將客機響應信號傳送回主機的數據選擇器輸入端上.從而形成了主機與客機之間協同工作所需的信息溝通路徑與主機進行通信.
在這種方法中,對主、客單片機IO引腳無特定要求,因此可以留出主、客機單片機的特定引腳給系統使用.比如串行口及中斷口都可以供系統的其他功能使用.
采用前述的多單片機協同工作系統的硬件連接方法,單片機主機的工作步驟為:
步驟1:二進制計數器清零,置數據選擇器使能端有效,置譯碼器使能端無效;
步驟2:發送要呼叫的單片機客機的編號到計數器;
步驟3:根據響應信號反饋端口(IOX2)的狀態判斷被呼叫的單片機客機是否空閑,如果空閑,則進入下一步,否則返回步驟3;
步驟4:置數據選擇器使能端無效,置譯碼器使能有效,使得譯碼器輸出單片機客機選通信號;
步驟5:延時,然后計數器清零;
步驟6:置數據選擇器使能端有效,置譯碼器使能端無效,呼叫操作結束;
單片機客機的工作步驟為:
步驟A:復位響應端口狀態,表示空閑可響應呼叫;
步驟B:查詢選通IO端口的狀態,判斷是否有呼叫,如果有呼叫則進入下一步,否則返回步驟B;
步驟C:置相應端口狀態為有效,表示響應呼叫;
步驟D:啟動功能執行單元,完成呼叫所規定的操作;
步驟E:復位響應端口狀態,表示空閑可響應呼叫,并返回步驟B.
當主機在發現系統有呼叫某一客機的需要時,就會起動如圖2(a)所示的操作流程,主機程序可以子程序的形式編寫.
每一個單片機客機都有一個功能執行單元,該功能執行單元用于由譯碼器輸出的輸出選通信號觸發而執行本單片機從機中的預設程序以實現預設的功能.
在客機程序中,查詢主機的呼叫信號,按如圖2(b)所示的流程進行響應.如果在系統中,客機不需要使用外部中斷,可以選擇IOX0=P3.2(P3.3),而將客機響應安排為中斷服務程序,可避免客機進行查詢,可使響應過程更為及時快速.
多個單片機協同工作方法采用很好地克服了在單個單片機IO線數量不夠,需要多個單片機協同工作應用場合遇到的協調技術障礙.將本技術應用于某一行線數為96、列線數為1280的單色LED顯示屏廣告顯示系統中,使用了10片單片機89S52,并僅另外加入了二進制譯碼器為74LS138D芯片,二進制計數器4024BP芯片,數據選擇器采用74LS251D芯片.由于本技術的使用,可以使單片機進行協同工作,有較多單片機的資源可以利用,較容易地實現了文字和圖片畫面的左移、右移、上移、上移、逐行消失、逐列消失、閃爍等功能.實踐表明可行.

圖2 多單片機協同工作軟件流程
[1]葉佩.MCS-51單片機的多機通信方式研究[J].科協論壇,2009,(12):58 -59.
[2]忽曉偉,吳海燕,周曉平.單片機系統中多處理器協同工作的研究[J].科技信息,2011,(12):46.
[3]王富東,邵光慶.單片機多串口通迅技術及其應用[J].儀器儀表學報,2002,(z1):262 -264.
[4]徐新華.多單片機的聯合工作[J].科技創新導報,2008,(21):14.
[5]李朝青.單片機原理及接口技術[M].北京:北京航空航天大學出版社,1999.
TP273
A
1008-4681(2012)02-0026-03
2011-12-15
王新輝(1964-),男,湖南雙峰人,長沙大學電子與通信工程系教授,碩士.研究方向:單片機控制、傳感檢測技術.
(作者本人校對)