資源描述:
《串口通信測試方法》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。
1、串口通信測試方法1關(guān)于串口通信的一些知識:RS-232C是目前最常用的串行接口標準,用來實現(xiàn)計算機和計算機之間、計算機和外設(shè)之間的數(shù)據(jù)通信。在PC機系統(tǒng)中都裝有異步通信適配器,利用它可以實現(xiàn)異步串行通信。而且MCS-51單片機本身具有一個全雙工的串行接口,因此只要配以電平轉(zhuǎn)換的驅(qū)動電路、隔離電路就可以組成一個簡單可行的通信接口。由于MCS-51單片機的輸入和輸出電平為TTL電平,而PC機配置的是RS-232C標準串行接口,二者電氣規(guī)范不一致,因此要完成PC機與單片機的數(shù)據(jù)通信,必須進行電平轉(zhuǎn)換。注明:3)RS-232C上傳送的數(shù)字量
2、采用負邏輯,且與地對稱邏輯1:-3~-15V??邏輯0:+3~+15V?所以與單片機連接時常常需要加入電平轉(zhuǎn)換芯片:2實現(xiàn)串口通信的三個步驟:(1)硬件連接????51單片機有一個全雙工的串行通訊口,所以單片機和計算機之間可以方便地進行串口通訊。進行串行通訊時要滿足一定的條件,比如計算機的串口是RS232電平的,而單片機的串口是TTL電平的,兩者之間必須有一個電平轉(zhuǎn)換電路,我們采用了專用芯片MAX232進行轉(zhuǎn)換。我們采用了三線制連接串口,也就是說和計算機的9針串口只連接其中的3根線:第5腳的GND、第2腳的RXD、第3腳的TXD。電
3、路如下圖所示,MAX232的第10腳和單片機的11腳連接,第9腳和單片機的10腳連接,第15腳和單片機的20腳連接。使用MAX232串口通信電路圖(9孔串口接頭)(2)串行通信程序設(shè)計①通信協(xié)議的使用????通信協(xié)議是通信設(shè)備在通信前的約定。單片機、計算機有了協(xié)議這種約定,通信雙方才能明白對方的意圖,以進行下一步動作。假定我們需要在PC機與單片機之間進行通信,在設(shè)計過程中,有如下約定:????0x31:PC機發(fā)送0x31,單片機回送0x01,表示選擇本單片機;0x**:PC機發(fā)送0x**,單片機回送0x**,表示選擇單片機后發(fā)送數(shù)據(jù)
4、通信正常;????在系統(tǒng)工作過程中,單片機接收到PC機數(shù)據(jù)信息后,便查找協(xié)議,完成相應(yīng)的操作。②串行通信程序設(shè)計主要有微機發(fā)送接收程序和單片機發(fā)送接收程序,微機上的發(fā)送和接收程序主要采用計算機高級語言編寫,如C語言,因為了能夠在計算機端看到單片機發(fā)出的數(shù)據(jù),我們必須借助一個WINDOWS軟件進行觀察,這里利用如下圖標的一個免費計算機串口調(diào)試軟件,故而這一塊計算機通信的程序可不寫!在單片機上主要用匯編或C編寫,在使用串口之前,必須先對串口進行初始化,主要是設(shè)置產(chǎn)生波特率的定時器1、串口控制和中斷控制。具體步驟如下:(1)確定定時器1的
5、工作方式——編程TMOD寄存器(設(shè)置波特率);(2)確定串口的控制——編程SCON;(3)串口的中斷方式,必須開CPU和源中斷——編寫IE寄存器;(4)計算定時器1的初值——裝載TH1,TL1;(5)啟動定時器1——編程TCON中的TR1位。為何串行口的工作方式選擇方式1,這是針對于我們平常最常用的,單純一塊板對應(yīng)于我們的私人電腦,所以就無須考慮是哪一塊板發(fā)來的信息,即無須分清是數(shù)據(jù)幀還是地址幀。因為此時屬于直通方式,所以無須考慮的。方式1為波特率可變的10位異步通訊接口方式,發(fā)送或接收一幀信息,包括1個起始位0,8個數(shù)據(jù)位和一個停
6、止位1,。其中的起始位和停止位在發(fā)送時自動插入的。輸出:當(dāng)單片機執(zhí)行一條指令將數(shù)據(jù)寫入發(fā)送緩沖SBUF且TI=0時,就啟動發(fā)送。串行數(shù)據(jù)從TXD引腳輸出,發(fā)送完一幀數(shù)據(jù)后,就有硬件置位TI。輸入:在(REN)=1時,串行口采樣RXD引腳,當(dāng)采樣到1到0的跳變時,確認是串行發(fā)送來的一幀數(shù)據(jù)的開始位0,從而開始接收一幀數(shù)據(jù)。在接收到附加的第9位數(shù)據(jù)后,當(dāng)滿足(1)RI=0(2)SM2=0或接收到的第9位數(shù)據(jù)為1時,第9位數(shù)據(jù)(停止位)才進入RB8,8位數(shù)據(jù)才能進入接收寄存器,并由硬件置位中斷標志RI.否則信息丟失。所以在方式1接收時,應(yīng)
7、先用軟件清零RI和SM2標志。通常串行接口以方式1工作時,SM2置為0.而我們現(xiàn)實中需要的是一個機器中多塊板進行顯示和讀取數(shù)據(jù),所以這里不得不采取SM2=1的多機通信,而且我們一般采取的方式為方式3,TB8發(fā)送數(shù)據(jù)位,在模式2和3是要發(fā)送的第9位。該位可以用軟件根據(jù)需要置位或清除,通常這位在通信協(xié)議中做奇偶位,在多處理機通信中這一位則用于表示是地址幀還是數(shù)據(jù)幀。這里就可以根據(jù)地址判斷出我們需要選取的板是不是方位監(jiān)測板。注明:如果用C語言來寫的話,無論你是先發(fā)地址幀,然后數(shù)據(jù)幀,還是只發(fā)數(shù)據(jù)幀,最后顯示的都是一樣的內(nèi)容,而匯編語言是不
8、行的。SM2:多機通信控制位,僅用于方式2和方式3.接收狀態(tài)時,當(dāng)串行口工作于方式2或3時,以及SM2=1時,只有當(dāng)接收到的第九位數(shù)據(jù)為1時,才把接收到的前8位數(shù)據(jù)送入SBUF,且置位RI發(fā)出中斷申請,否則會將接收到的數(shù)據(jù)丟棄。而當(dāng)S