基于51單片機的多機通信系統(tǒng),需要的可以了解下。
1 題設(shè)要求分析 2 硬件電路的設(shè)計 2.1 系統(tǒng)的組成 2.2 系統(tǒng)的工作原理 2.3 硬件電路原理圖設(shè)計 2.4 硬件電路的實現(xiàn) 3 軟件電路的設(shè)計 3.1 通信協(xié)議的設(shè)計 3.2 主機程序設(shè)計 3.3 從機程序設(shè)計 4 系統(tǒng)的調(diào)試與實現(xiàn) 4.1 從機模塊調(diào)試 4.2 LED顯示模塊調(diào)試 4.3電平轉(zhuǎn)換模塊功能調(diào)試 4.4主機模塊功能調(diào)試 4.5整體設(shè)計功能調(diào)試 1 題設(shè)要求分析 本小組的試驗項目如下: 一、任務(wù): 設(shè)計實現(xiàn)多臺單片機系統(tǒng)之間的串行通信 二、基本要求(難度系數(shù)0.8): (1)設(shè)計一個主從式多機通信系統(tǒng),包含1臺主機和3臺從機,主機和從機全部為單片機; (2)選擇合適總線接口芯片,正確連接主機和從機; (3)編程實現(xiàn)分布式數(shù)據(jù)采集功能,主機可以獲取各分機當(dāng)前AD轉(zhuǎn)換結(jié)果,并顯示。 三、發(fā)揮部分: (1)完善通信功能。(根據(jù)完成情況加分,上限+0.2) 經(jīng)過本小組成員對本課題認真討論先做出如下分析: 對課題分析后本小組認為本次實驗的目的是就是應(yīng)用單片的串口通信功能實現(xiàn)一個分布式采集系統(tǒng)。整個系統(tǒng)中包含一片主機和三片從機,主機的任務(wù)是實現(xiàn)對三片從機的AD轉(zhuǎn)換結(jié)果的采集并在數(shù)碼管上顯示之。這樣從硬件的角度上將整個系統(tǒng)分為兩個模塊——主機模塊和從機模塊。主機模塊中包含單片機模塊、led數(shù)碼管顯示子模塊和串口電平轉(zhuǎn)換子模塊,從機模塊則包括單片機子模塊、AD轉(zhuǎn)換子模塊和串口電平轉(zhuǎn)換子模塊。就本次試驗而言硬件電路的設(shè)計難點在于串口電平轉(zhuǎn)換芯片的選擇及其連接,而軟件的設(shè)計難點在于串口通信協(xié)議的制定及相關(guān)程序的編寫。 實現(xiàn)多機通信方案的實現(xiàn)。不同于雙機通信多機通信系統(tǒng)中需要識別通信信息發(fā)出者或是接受者是誰。經(jīng)過查閱資料發(fā)現(xiàn)在大多數(shù)的多機通信系統(tǒng)中都是才采用地址識別的方法實現(xiàn)的。所謂地址識別方法就是在發(fā)送或接受信息前先發(fā)送和校驗地址幀。就本項目而言,先要對通信系統(tǒng)中的每臺機器分配一個唯一的地址作為識別信息。具體的識別過程如下:
- 首先,從機處于只接收地址幀的狀態(tài);
- 主機發(fā)送一幀地址信息;
- 從機接受到地址幀后,將本機地址與地址幀中的地址進行比較,如果地址相同準備接受數(shù)據(jù),否則丟棄當(dāng)前幀,依然處于只接受地址幀的狀態(tài);
- 主機發(fā)送數(shù)據(jù)幀,相應(yīng)的從機接受數(shù)據(jù),數(shù)據(jù)傳送完畢后,從機繼續(xù)回到只接受地址幀的狀態(tài),在這個過程中其他從機不受影響;
- 當(dāng)主機需要與其他從機進行數(shù)據(jù)傳輸時,可以再次發(fā)送地址幀呼叫從機,重復(fù)這一過程[1]。
對于本題而言可通過此過程實現(xiàn)主機對從機的絕對控制。這樣在主機中編寫一個循環(huán)程序就可以實現(xiàn)對三臺從機的AD轉(zhuǎn)換結(jié)果的不停采集。至于地址幀與數(shù)據(jù)幀的區(qū)別則可通過串口工作方式三下的第九位的置1或置0來實現(xiàn)。在完成通信的基礎(chǔ)上,再將采集到的三路結(jié)果分別用兩個led數(shù)碼管顯示即可試驗預(yù)期目的。
2 硬件電路的設(shè)計
2.1 系統(tǒng)的組成根據(jù)項目分析可知硬件電分為主機模塊和從機模塊。主機模塊中包含單片機子模塊、led數(shù)碼管顯示子模塊和串口電平轉(zhuǎn)換子模塊,從機模塊則包括單片機子模塊、AD轉(zhuǎn)換子模塊和串口電平轉(zhuǎn)換子模塊。在主模塊中由AT89S51單片機擔(dān)任主機,六個led數(shù)碼管擔(dān)任顯示設(shè)備和一片MAX485擔(dān)任串口的電平轉(zhuǎn)換。在整個主機系統(tǒng)中有三個從機模塊三個從機模塊結(jié)構(gòu)一樣,有一片AT89S51單片機擔(dān)任從機外接一片ADC0809轉(zhuǎn)換芯片和一片MAX485擔(dān)任串口的電平轉(zhuǎn)換。串口采用單工及異步通信方式。整個硬件結(jié)構(gòu)原如圖1所示。 
圖 1 系統(tǒng)結(jié)構(gòu)原理圖 2.2 系統(tǒng)的工作原理 主機AT89S51編程可實現(xiàn)循環(huán)訪問個從機,當(dāng)從機接受主機訪問后啟動AD轉(zhuǎn)換設(shè)備ADC0809對外部模擬信號進行轉(zhuǎn)換。當(dāng)從機獲得轉(zhuǎn)換結(jié)果后通過串口將其發(fā)送到主機,主機接受到轉(zhuǎn)換結(jié)果后再將其發(fā)送到相應(yīng)的led數(shù)碼管顯示。 2.3 硬件電路原理圖設(shè)計(1)led數(shù)碼管顯示電路 led數(shù)碼管顯示電路如圖2所示顯示子模塊由六個數(shù)碼管和相應(yīng)的啟動芯片構(gòu)成。其中每路通道的采集值用量為數(shù)碼管顯示。為了節(jié)約單片機的I/O口本題的數(shù)碼管采用MAX7219芯片。給芯片的優(yōu)點在于可完成電路的刷新。MAX7219芯片的SEG A-SEG DP為數(shù)碼管段碼接口,DIG0-DIG7為位碼接口,CLK、DIN、LOAD分別與單片機P1.0、P1.1、P1.2連接。單片機通過串行的方式將要顯示的數(shù)據(jù)通過CLK、DIN、LOAD三個接口送入相應(yīng)的顯示寄存器內(nèi),MAX7219將自動完成對數(shù)碼管的刷新工作。具體的電路如圖2所示。 
圖 2 led顯示電路 (2)串口電平轉(zhuǎn)換電路 串口電平轉(zhuǎn)換電路的電路圖如圖3所示:本實驗中采用MAX485的電平轉(zhuǎn)換芯片。MAX485是一種RS-485標準接口的電平轉(zhuǎn)換芯片。RS-485采用差分式半雙工通信方式,真正實現(xiàn)多點總線連接,具有傳輸距離遠可靠性高的特點。基于以上原因本小組選擇該芯片實現(xiàn)電平轉(zhuǎn)換。MAX485的1號引腳RO為接收端接單片RXD, 4號引腳DI為發(fā)送端接單片TXD, 2、3號引腳分別為發(fā)送接收使能端端接單片P1.3引腳。6、7號引腳總線接線口。 
圖 3 電平轉(zhuǎn)換電路
(3)主機模塊電路 根據(jù)設(shè)計要求繪制主機模塊電路圖如圖4所示。 圖 4 主機模塊電路圖 (4)從機模塊電路 根據(jù)設(shè)計要求繪制從機模塊電路圖如圖5所示。 圖 5 從機模塊電路圖 2.4 硬件電路的實現(xiàn) 首先是主從機電路的實現(xiàn)。主機的電路的搭建采用主CPU板、鍵盤顯示接口板各一塊。照實驗原理圖將主CPU板的P0口接到鍵盤顯示接口板的位碼接口,P1口接到鍵盤顯示接口板的段碼的接口。從機的電路由CPU板和ADDA轉(zhuǎn)換板構(gòu)成。 其次是電平轉(zhuǎn)換電路的焊接。電平轉(zhuǎn)換的路的實現(xiàn)是通過自己搭建電路完成。電平轉(zhuǎn)換的電路主要有四塊MAX485和兩個100Ω電阻構(gòu)成。四塊MAX485采用總線方式連接,每個芯片分別引出三個引腳用于單片的連接。 最后將各個模塊的按照原理圖連接起來。 圖 6 硬件電路的連接
3 軟件電路的設(shè)計3.1 通信協(xié)議的設(shè)計通信協(xié)議的設(shè)計的設(shè)計是本題的重點難點,本題通信協(xié)議主要是區(qū)別主機和從機。由于串口的方式2、3發(fā)送和接收都是11位其第九為可編程置位可以此作為區(qū)分地址幀與數(shù)據(jù)幀從而實現(xiàn)主機與從機,從機與從機的區(qū)別。通信協(xié)議同樣要規(guī)定相同通信速率。參考相關(guān)資料后編寫如下的通信協(xié)議。 - 數(shù)據(jù)傳輸?shù)碾p方均使用9600kb/s的速率傳送數(shù)據(jù),使用主從式通信,主機發(fā)送數(shù)據(jù),從機接受數(shù)據(jù),雙方在發(fā)送數(shù)據(jù)時使用查詢方式。
- 雙機開始數(shù)據(jù)傳輸時,主機發(fā)送地址幀呼叫從機。
- 各從機開始都處于只收地址幀狀態(tài)。接收到地址幀后,將接收到的地址內(nèi)容和本機地址比較,如果地址相同,則向主機返回本機地址作為確認信息,并開始接收數(shù)據(jù);如果不同,則繼續(xù)等待。
- 主機在發(fā)送地址幀后等待,如果接收到的應(yīng)答信息中的內(nèi)容和所發(fā)地址幀的內(nèi)容相同,就開始發(fā)送數(shù)據(jù),如果不一致,主機將繼續(xù)發(fā)送地址幀。如多次應(yīng)答仍無回應(yīng)則認為出錯則主機跳出本次通信。
- 從機在接收完數(shù)據(jù)后,將根據(jù)最后的校驗結(jié)果判斷數(shù)據(jù)接收是否正確,若校驗真確,則向主機發(fā)送2AH信號,同時點亮led燈半秒鐘,表示本次通信成功;若校驗錯誤,則發(fā)送F0H信號,表示接收數(shù)據(jù)錯誤,并請求從發(fā)。
- 主機接收到2AH信號,則通信結(jié)束,否則主機將重新發(fā)送這組數(shù)據(jù)。
3.2 主機程序設(shè)計 依據(jù)試驗要求及相應(yīng)的通信協(xié)議現(xiàn)繪制如下的主機程序流程圖: 圖 7 主機程序流程圖
主機程序: 3.3 從機程序設(shè)計從程序流程圖如下: 圖 8 從機模塊流程圖 從機程序: 4 系統(tǒng)的調(diào)試與實現(xiàn) 對本課題的設(shè)計思路清晰之后,我們接下來所需要做的工作就是依據(jù)我們的方案編程實現(xiàn)功能。本過程可以分為五個部分:從機模塊調(diào)試、 LED顯示模塊調(diào)試、電平轉(zhuǎn)換模塊功能調(diào)試、主機模塊功能調(diào)試、整體設(shè)計功能調(diào)試。 4.1 從機模塊調(diào)試從機部分實現(xiàn)的功能是針對主機發(fā)送來的地址進行對照,如果是自己的從機地址,就會發(fā)送AD轉(zhuǎn)換結(jié)果。為了檢測此部分的功能是否能夠?qū)崿F(xiàn),我們借助串口測試軟件,發(fā)送預(yù)設(shè)的從機地址看看該從機是否會把AD轉(zhuǎn)換的結(jié)果發(fā)送來。此從機調(diào)試模塊分為兩個層次:1、用一個簡單的程序測試從機硬件部分是否能正常運行;2、在硬件良好的情況下測試編寫的從機部分代碼能否順利實現(xiàn)功能。 4.2 LED顯示模塊調(diào)試該部分相比較而言簡單一點,其實也可以歸為主機模塊調(diào)試的一部分。LED功能就是用來顯示DA轉(zhuǎn)換的結(jié)果。連接好電路之后,用個小程序測試LED顯示功能良好的情況下顯示從機發(fā)送來的數(shù)據(jù)。此部分在主機模塊功能調(diào)試具體介紹。 4.3電平轉(zhuǎn)換模塊功能調(diào)試此部分硬件電路多為我們自己焊接。包括4片MAX485轉(zhuǎn)換芯片組成的電平轉(zhuǎn)換電路。它們完成將TTL電平轉(zhuǎn)換為RS-485電平的功能。MAX485芯片的結(jié)構(gòu)和引腳都非常簡單,內(nèi)部含有一個驅(qū)動器和接收器。RO和DI端分別為接收器的輸出和驅(qū)動器的輸入端,與單片機連接時只需分別與單片機的RXD和TXD相連即可;/RE和DE端分別為接收和發(fā)送的使能端,當(dāng)/RE為邏輯0時,器件處于接收狀態(tài);當(dāng)DE為邏輯1時,器件處于發(fā)送狀態(tài),因為MAX485工作在半雙工狀態(tài),所以只需用單片機的一個管腳控制這兩個引腳即可;A端和B端分別為接收和發(fā)送的差分信號端,當(dāng)A引腳的電平高于B時,代表發(fā)送的數(shù)據(jù)為1;當(dāng)A的電平低于B端時,代表發(fā)送的數(shù)據(jù)為0。在與單片機連接時接線非常簡單。只需要一個信號控制MAX485的接收和發(fā)送即可。同時將A和B端之間加匹配電阻,一般可選100Ω的電阻。由于經(jīng)驗知識不足,我們匹配電阻選擇了一個阻值為10KΩ的電阻,造成芯片燒壞,此處應(yīng)引起注意。 4.4主機模塊功能調(diào)試當(dāng)主機發(fā)送地址幀呼叫從機時從機將接收到的內(nèi)容與自己的地址比較,如若相同從機會向主機發(fā)送主機所需要的數(shù)據(jù)。而主機接收到正確的數(shù)據(jù),便會通過LED數(shù)碼管顯示出來,這樣便會實現(xiàn)我們預(yù)想的主機模塊功能。當(dāng)然主機部分程序包含上面調(diào)試好的LED顯示模塊程序。此處將從機送來的數(shù)值通過調(diào)用LED顯示模塊子程序顯示出來。LED顯示模塊分為三個區(qū)域,從機0、從機1、從機2分別占用2個顯示管。 4.5整體設(shè)計功能調(diào)試各個模塊程序功能調(diào)試好之后,將他們各就各位。但此時我們又遇到一個難題:從機送給主機的數(shù)據(jù)在經(jīng)MAX485傳遞給主機時讀出來的不是理想的結(jié)果,后經(jīng)過示波器查看輸出波形,經(jīng)多次調(diào)試,將主機與從機時序調(diào)整一致才得以在主機收到從機發(fā)送來的數(shù)據(jù)。
5 總結(jié)與體會 為期一個禮拜的單片機設(shè)計就這么快的結(jié)束了,在這短暫的一個星期里我們學(xué)到了很多很多。我們在課堂上掌握的僅僅是書面的理論知識,如何去鍛煉我們的實踐能力,如何把我們所學(xué)的專業(yè)基礎(chǔ)課理論知識運用到實踐中去呢?我想做此類的設(shè)計就為我們提供了良好的實踐平臺。 在做本次設(shè)計的過程中,我感觸最深的當(dāng)屬查閱大量的資料,無論是課本上的還是網(wǎng)上的我們都學(xué)習(xí)了不少,從中也借鑒了別人的思想,開闊了自己的思路。做單片機設(shè)計,對設(shè)計者對軟硬件的理解和掌握的要求比較高。在設(shè)計程序之前,設(shè)計者必學(xué)對所用單片機的內(nèi)部結(jié)構(gòu)有一個系統(tǒng)的了解,知道該單片機內(nèi)有哪些資源;要有一個清晰的思路和一個完整的的軟件流程圖;在設(shè)計程序時,不能妄想一次就將整個程序設(shè)計好,反復(fù)修改、不斷改進是程序設(shè)計的必經(jīng)之路;要養(yǎng)成注釋程序的好習(xí)慣,一個程序的完美與否不僅僅是實現(xiàn)功能,而應(yīng)該讓人一看就能明白你的思路,這樣也為資料的保存和交流提供了方便;在設(shè)計過程中遇到問題是很正常的,但我們應(yīng)該將每次遇到的問題記錄下來,并分析清楚,以免下次再碰到同樣的問題。我們在實驗中就遇到了一系列問題,比如剛剛開始時硬件電路的連接,針對MAX485芯片匹配電阻的選擇,從機與主機握手的過程等等,在大家仔細的思考和老師同學(xué)的幫助下順利解決。
以上圖文的Word格式文檔下載(內(nèi)容和本網(wǎng)頁上的一模一樣,方便大家保存):
基于51單片機的多機通信系統(tǒng).doc
(616 KB, 下載次數(shù): 71)
2018-5-22 16:40 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|