孫慧 湯宇
摘 要:本文從多機通信協議入手,重點研究了如何利用查詢法和中斷法實現主從式通信,并通過Proteus仿真軟件對兩種通信方法進行了仿真驗證。查詢法通信易于實現,但占用單片機內部資源較多。中斷法通信更穩定可靠,可以大大提高單片機的工作效率。
關鍵詞:單片機 多機通信 查詢法 中斷法 Proteus仿真
單片機目前已廣泛應用于家用電器、航空航天、儀器儀表及專用設備的智能化管理和過程控制等領域。隨著計算機技術的發展及工業自動化水平的提高,在許多場合單機控制已不能滿足現場要求,多機串行通信構成的主從式通信方式,因其通信編程靈活、硬件簡潔,并遵循統一的標準,在工業控制領域應用前景廣闊,非常具有研究意義。
一、多機通信原理
51系列單片機的多機通信一般采用主從式通信方式。在這種方式中,只有一臺主機,可以有多臺從機。主機發送的信息可以傳到各個從機或指定的從機,各個從機發送的信息只能被主機接收,從機之間不能進行通信。單片機多機通信示意圖如圖1所示。
圖1 單片機多機通信示意圖
二、多機通信過程
在多機通信時串口必須工作在方式2或方式3,根據通信要求設置單片機通信控制寄存器SCON中的每一位。
多機通信的過程如下。
第一,所有從機處于地址幀接收狀態(SM2=1)。
第二,主機先發送一個地址幀,其中前8位數據表示要尋址的從機地址,第9位為1(TB8=1)表示該幀為地址幀。
第三,所有從機接收到地址幀后,把接收到的地址與本機地址相比較。地址相符時將SM2清0,并發回從機地址作為應答信號,由主機進行確認。地址不相符的從機不作任何處理,仍保持SM2=1。
第四,在主機確認地址正確時,向尋址的從機發送相應的數據信息。當確認地址錯誤時,不發送數據信息。
第五,地址相符的從機(SM2=0),可以接收到主機發來的數據信息。而對于地址不符的從機SM2=1,則不予理睬,這樣就實現了主機與地址相符的從機之間的雙機通信;
第六,被尋址的從機通信結束后,恢復為多機通信狀態(SM2=1)。
三、多機通信協議設計
本次設計為了驗證多機通信的協議是否正確,在Proteus軟件中繪制了一個由1主機2從機構成的多機通信系統。主機和從機芯片均采用AT89S51單片機,主機通過按鍵發送信號,從機接收信號,通過從機連接的數碼管顯示變化,來表明一個主機和兩個及兩個以上從機通信的正確性,軟件部分主要包括通信模塊、按鍵掃描模塊、數碼管顯示模塊和中斷服務程序等,使用的通信模式主要是查詢法和中斷法兩種。
1.查詢法通信協議算法設計
查詢法即通過單片機程序的不斷掃描,循環查詢通信標志位來判斷是否進行通信以及和哪個從機通信的方式,從而完成主從式多機之間的數據交換任務。主機主要完成尋址及數據發送,查詢法通信主機設計流程圖如圖2所示。
圖2 主機通信設計流程圖
從機主要完成地址校驗、數據接收和顯示任務。所有從機的通信程序相似,只是從機定義的通信地址不可相同,從機通信設計流程圖如圖3所示。
圖3 從機通信設計流程圖
2.中斷法通信協議算法設計
所有從機初始時均處于聽命狀態,即SM2=1,以便接收主機發來的地址,當接收到一幀信息的RB8為“1”時,表示主機發送來的是地址信息,所有的從機均發生接收中斷,進入相應的中斷服務程序,把接收到的地址和本機地址進行比較。如果相符合就令其SM2=0,并向主機發回本機地址以作應答,主機得到應答信號并校驗成功后,就與該從機聯通實現雙機通信,準備接收主機發來的命令或數據信息,順利實現地址幀和數據幀的分離。而其他的未被尋址從機保持SM2=1并退出各自的中斷服務程序。被尋址從機在通信完成后重新使SM2=1,并退出中斷服務程序,等待下次通信。
主機的程序設計可分為兩部分:一是主程序,主要用于完成按鍵掃描;二是中斷服務程序,用于完成通信及數據的收發功能。中斷法通信實際是將圖2中的虛線框部分的掃描程序替換為如圖4所示的中斷服務程序去執行。
圖4 主機中斷服務程序設計流程圖
從機程序設計主要分為兩部分,一是主程序,完成數碼管的顯示任務;二是中斷服務程序,完成主機發送過來的地址校驗和數據接收等任務。從機的中斷服務程序設計流程圖如圖5所示。
圖5 從機中斷服務程序設計流程圖
四、多機通信在Proteus中的仿真
按照上述兩種通訊協議算法的設計思路,使用單片機C語言進行編程,采用Keil C51 uVesion3作為調試工具,用Proteus 作為仿真工具,與Keil C51 uVesion3聯合調試,最終成功實現了1主機2從機之間的通信,仿真運行圖如圖6所示。
按下K1鍵,對1號從機的數碼管顯示值加1,按下K2鍵,對2號從機的數碼管顯示值加1。若主機尋址從機時發現地址錯誤,將不進行任何操作,此時不會影響其他通信地址正確的從機的正常通信。
五、結束語
本設計的兩種通信方案,均通過了Proteus成功仿真,并在實際電路中也得到了驗證,1臺主機最多可以同時與255臺從機進行通信。中斷法通信方式因其程序結構簡潔明了、運行可靠、占用單片機內部資源較小,因此較查詢法通信方式的應用更為廣泛。