串口通信測試方法_第1頁
串口通信測試方法_第2頁
串口通信測試方法_第3頁
串口通信測試方法_第4頁
串口通信測試方法_第5頁
免費預(yù)覽已結(jié)束,剩余1頁可下載查看

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

1、串口通信測試方法1關(guān)于串口通信的一些知識:RS-232c是目前最常用的串行接口標(biāo)準(zhǔn),用來實現(xiàn)計算機和計算機之間、計算 機和外設(shè)之間的數(shù)據(jù)通信。在PC機系統(tǒng)中都裝有異步通信適配器,利用它可以實現(xiàn)異步串行通信。而且 MCS-51單片機本身具有一個全雙工的串行接口,因此只要配以電平轉(zhuǎn)換的驅(qū)動 電路、隔離電路就可以組成一個簡單可行的通信接口。由于MCS-51單片機的揄入和揄出電平為TTL也平,而PC機配置的是RS-232c 標(biāo)準(zhǔn)串行接口,二者電氣規(guī)范不一致,因此要完成PC機與單片機的數(shù)據(jù)通信, 必須進行電平轉(zhuǎn)換。注明:3) RS-232c上傳送的數(shù)字量采用負(fù)邏輯,且與地對稱邏輯1: -3-15V邏輯0

2、: +3+15V所以與單片機連接時常常需要加入電平轉(zhuǎn)換芯片:2實現(xiàn)串口通信的三個步驟:(1)硬件連接51單片機有一個全雙工的串行通訊口,所以單片機和計算機之間可以 方便地進行串口通訊。進行串行通訊時要滿足一定的條件,比如計算機的串口是 RS232電平的,而單片機的串口是TTL電平的,兩者之間必須有一個電平轉(zhuǎn)換電 路,我們采用了專用芯片MAX232進行轉(zhuǎn)換。我們采用了三線制連接串口,也就 是說和計算機的9針串口只連接其中的3根線:第5腳的GND、第2腳的RXD、 第3腳的TXD。也路如下圖所示,MAX232的第10腳和單片機的11腳連接,第9 腳和單片機的10腳連接,第15腳和單片機的20腳連接

3、。使用MAX232串口通信電路圖(9孔串口接頭)(2)串行通信程序設(shè)計通信協(xié)議的使用通信協(xié)議是通信設(shè)備在通信前的約定。單片機、計算機有了協(xié)議這種 約定,通信雙方才能明白對方的意圖,以進行下一步動作。假定我們需要在PC 機與單片機之間進行通信,在設(shè)計過程中,有如下約定:0x31: PC機發(fā)送0x31,單片機回送0x01,表示選擇本單片機;Ox*: PC機發(fā)送Ox*,單片機回送Ox*,表示選擇單片機后發(fā)送數(shù)據(jù)通 信正常:在系統(tǒng)工作過程中,單片機接收到PC機數(shù)據(jù)信息后,便查找協(xié)議,完 成相應(yīng)的操作。串行通信程序設(shè)計主要有微機發(fā)送接收程序和單片機發(fā)送接收程序,微機上的 發(fā)送和接收程序主要采用計算機高級

4、語言編寫,如C語言,因為了能夠在計算機 端看到單片機發(fā)出的數(shù)據(jù),我們必須借助一個陽NDOWS軟件進行觀察,這里利用 如下圖標(biāo)的一個免費計算機串口調(diào)試軟件,故而這一塊計算機通信的程序可不 寫!在單片機上主要用匯編或C編寫,在使用出口之前,必須先對串口進行初始 化,主要是設(shè)置產(chǎn)生波特率的定時器1、串口控制和中斷控制。具體步驟如下:(1)確定定時器1的工作方式編程TMOD寄存器(設(shè)置波特率);(2)確定串口的控制編程SCON;(3)串口的中斷方式,必須開CPU和源中斷編寫IE寄存器;(4)計算定時器1的初值裝載TH1, TL1:(5)啟動定時器1編程TCON中的TR1位。為何串行口的工作方式選擇方式

5、1,這是針對于我們平常最常用的,單純一塊板 對應(yīng)于我們的私人也腦,所以就無須考慮是哪一塊板發(fā)來的信息,即無須分清是 數(shù)據(jù)幀還是地址幀。因為此時屬于直通方式,所以無須考慮的。方式1為波特率可變的10位異步通訊接口方式,發(fā)送或接收一幀信息,包括1 個起始位0, 8個數(shù)據(jù)位和一個停止位1,。其中的起始位和停止位在發(fā)送時自動 插入的。輸出:當(dāng)單片機執(zhí)行一條指令將數(shù)據(jù)寫入發(fā)送緩沖SBUF且TI=0時,就啟動發(fā)送。 串行數(shù)據(jù)從TXD引腳輸出,發(fā)送完一幀數(shù)據(jù)后,就有硬件置位輸入:在(REN) =1時,串行口采樣RXD引腳,當(dāng)采樣到1到。的跳變時,確認(rèn) 是串行發(fā)送來的一幀數(shù)據(jù)的開始位0,從而開始接收一幀數(shù)據(jù)。

6、在接收到附加的 第9位數(shù)據(jù)后,當(dāng)滿足(1) RI=0 (2) SM2=0或接收到的第9位數(shù)據(jù)為1時,第 9位數(shù)據(jù)(停止住)才進入RB8, 8位數(shù)據(jù)才能進入接收寄存器,并由硬件置位 中斷標(biāo)志RI.否則信息丟失。所以在方式1接收時,應(yīng)先用軟件清零RI和SM2 標(biāo)志。通常串行接口以方式1工作時,SM2直為0.而我們現(xiàn)實中需要的是一個機器中多塊板進行顯示和讀取數(shù)據(jù),所以這里不得不 采取SM2=1的多機通信,而且我們一般采取的方式為方式3, TB8發(fā)送數(shù)據(jù)位, 在模式2和3是要發(fā)送的第9位。該位可以用軟件根據(jù)需要置位或清除,通常這 位在通信協(xié)議中做奇偶位,在多處理機通信中這一位則用于表示是地址幀還是數(shù)

7、據(jù)幀。這里就可以根據(jù)地址判斷出我們需要選取的板是不是方位監(jiān)測板。注明:如果用C語言來寫的話,無論你是先發(fā)地址幀,然后數(shù)據(jù)幀,還是只發(fā)數(shù)據(jù)幀,最后顯示的都是一樣的內(nèi)容,而匯編語言是不行的。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)SM2二。時,就不管接收到的第九位數(shù) 據(jù)為多少,克接送人并申請中斷,因為這個時候是直通方式。注明:這里如果在SM2=1的時候,發(fā)來的是數(shù)據(jù)而不是地址,則不會發(fā)出 中斷請求,不會進入中斷

8、服務(wù)程序。(就像我一直以為要判斷數(shù)據(jù)是第一次發(fā)來 的還是SM2二0后發(fā)來的,其實不需要)如不需要 MOV A, SCON;;判斷是不是第二次中斷后發(fā)來的數(shù)據(jù) CJNE A,#90H,WAIT發(fā)來的如果是數(shù)據(jù),能夠進入中斷服務(wù)程序的一定是SM2清零后的數(shù)據(jù)。方式2為固定波特率的11位UART方式,它比方式1增加了 一位可程控為1或0 的第9位數(shù)據(jù)。榆出: 二的中行數(shù)據(jù)由TXD端輸出一幀信息為11位,附加的第9位來自SCON 寄存器的TB8位,用軟件置位或復(fù)位。它可作為多機通信中地址、數(shù)據(jù)信息的標(biāo) 志位;也可以作為數(shù)據(jù)的奇偶校臉位。當(dāng)單片機執(zhí)行一條數(shù)據(jù)寫入SUBF的指令 且TI=0時,就啟動發(fā)送器

9、發(fā)送。發(fā)送一幀信息后,置位中斷標(biāo)志TI,發(fā)送完一 個之后,如果TI不清零的話,則會一直發(fā)送在發(fā)送緩沖器里的數(shù)據(jù) JNB Tl,$ CLR Tlo輸入:在(REN) =1時,串行口采樣RXD引腳,當(dāng)采樣到1到。的跳變時,確認(rèn) 是中行發(fā)送來的一幀數(shù)據(jù)的開始位0,從而開始接收一幀數(shù)據(jù)。在接收到附加的 第9位數(shù)據(jù)后,當(dāng)滿足(1) RI=0 (2) SM2=0或接收到的第9位數(shù)據(jù)為1時,第 9位數(shù)據(jù)(地址位或者數(shù)據(jù)位)才進入RB8, 8位數(shù)據(jù)才能進入接收寄存器,并 由硬件置位中斷標(biāo)志RI,此時申請中斷,進入中斷服務(wù)程序.RB8=1;標(biāo)志此時是一個地址幀,SM2=1時,將地址轉(zhuǎn)入SBUF,置位RI,發(fā)出

10、中斷請求,若相符,則將從機的SM2清零,變成直通方式,準(zhǔn)備接受其后傳送 來的數(shù)據(jù)。RB8二0;數(shù)據(jù)幀,對SM2=1, RB8二。的從機接收到直接丟棄,而對SM2二。的從機, 直通方式,不論RB8是。還是1,都將接受并將置位,發(fā)出中斷請求。)主明:多機處理通信方式,首先保證室一臺從機在系統(tǒng)中的編號是唯一的。系統(tǒng)初始化時,將所有從機中的SM2均置1,并處于允許串行口中斷接 妝狀態(tài)。主機欲與某從機通信時,先向所有從機發(fā)出從機的地址,然后才接著發(fā)命令或者 數(shù)據(jù)。在主機發(fā)地址時,置第9位數(shù)據(jù)(TB8為1),表示主機發(fā)送的是地址中貞, 然后才將第9位數(shù)據(jù)(TB8)清0,發(fā)送命令或數(shù)據(jù)。3觀察結(jié)果:下面列舉

11、一個使用的串口通信測試軟件,其功能為,將PC機鍵盤的榆人發(fā)送 給單片機,單片機收到PC機發(fā)來的數(shù)據(jù)后,回送同一數(shù)據(jù)給PC機,并在屏底上 顯示出來,只要兩者相同,則說明兩者之間的通信正常。在PC上打開軟件串口調(diào)試器.exe,設(shè)置端口號C0M1,波特率4800,數(shù)據(jù) 位8,停止位1,打開串口,并勾選發(fā)送區(qū)的“十六進制”與接收區(qū)的“十六進 制”。發(fā)送數(shù)據(jù)時根據(jù)通信協(xié)議將一幀通信數(shù)據(jù)劃分為地址碼和功能數(shù)據(jù)碼。要 完成一幀通信數(shù)據(jù)的發(fā)送,要在串口調(diào)試器.exe分先后兩次發(fā)送實現(xiàn)。首先發(fā)送地址,如圖2所示操作:圖2接下來,發(fā)送功能數(shù)據(jù)碼操作如圖3所示:-口I x|T串口調(diào)試器2002亳秒HTF_2步設(shè)置校

12、 幡位為Space校蛉位:停止位:4步點擊此處 打開串口施備發(fā)在第5步點擊此處 發(fā)送數(shù)據(jù)清空顯示 I手工發(fā)送I-第1步點擊此處 通訊狀態(tài)-關(guān)I可串口I串口狀態(tài):關(guān)閉發(fā)厚字節(jié):I0授1生意串F的火態(tài)清除計數(shù)接收字符:回顯值表網(wǎng) 逋信正常關(guān)于 退出十六進制 廠自動分行清空顯示保存數(shù)據(jù)圖3注:在切換發(fā)送地址碼和功能數(shù)據(jù)碼時,都要先關(guān)閉串口,再設(shè)置校臉位, 要發(fā)送時再打開串口。還有就是不同版本的串口調(diào)試器,可能在發(fā)送數(shù)據(jù)功能碼 時是否加空格分開有一定的區(qū)別。4通信故障分析過程如果串口通信不行的話,按以下步驟進行檢查: 將MAX232芯片翹起來,將MAX232的7腳和8腳用銀子短路,則在串口調(diào)試 器上自動發(fā)送一個數(shù)值,則應(yīng)回顯同樣的一個數(shù)值,如果可回顯,則表示電腦的 串口是可以正常通信了,如果不行,則代表電腦的串口不行,重新更換電腦: 如果電腦的串口可以的話,則查看MAX232是否正常,則拿銀子將單片機的 第10腳和第11腳短路,則串口同樣可以自動收發(fā)數(shù)據(jù),如果不行的話,則為 MAX232芯片有問題:先更換芯片;如果芯片正常,則查看外圍的極性電容是否正常焊接,一般不正常焊接極性 電容也會出現(xiàn)以上問題; 如果以上

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論