單片機(jī)基礎(chǔ)與應(yīng)用第7章串行口通信技術(shù)課件_第1頁
單片機(jī)基礎(chǔ)與應(yīng)用第7章串行口通信技術(shù)課件_第2頁
單片機(jī)基礎(chǔ)與應(yīng)用第7章串行口通信技術(shù)課件_第3頁
單片機(jī)基礎(chǔ)與應(yīng)用第7章串行口通信技術(shù)課件_第4頁
單片機(jī)基礎(chǔ)與應(yīng)用第7章串行口通信技術(shù)課件_第5頁
已閱讀5頁,還剩29頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、 教學(xué)內(nèi)容串行通信基礎(chǔ) 單片機(jī)串行接口 RS-232C串行通信接口串行口應(yīng)用 第7章 串行口通信技術(shù) 串行通信基礎(chǔ) 兩種通信方式的示意圖串行通信基礎(chǔ) 并行通信中,信息傳輸?shù)奈粩?shù)和數(shù)據(jù)位數(shù)相等;串行通信中,數(shù)據(jù)一位一位順序傳送。并行通信速度快,傳輸線多,適合于近距離的數(shù)據(jù)通信,但硬件接線成本高;串行通信速度慢,但硬件成本低,傳輸線少,適合于長距離數(shù)據(jù)傳輸。 串行通信的制式 在串行通信中數(shù)據(jù)是在兩個站之間進(jìn)行傳送的,按照數(shù)據(jù)傳送方向,串行通信可分為單工(simplex)、半雙工(half duplex)和全雙工(full duplex)三種制式。在單工制式下,通信線的一端是發(fā)送器,一端是接收器,數(shù)

2、據(jù)只能按照一個固定的方向傳送。在半雙工制式下,系統(tǒng)的每個通信設(shè)備都由一個發(fā)送器和一個接收器組成,但同一時刻只能有一個站發(fā)送,一個站接收;兩個方向上的數(shù)據(jù)傳送不能同時進(jìn)行。即只能一端發(fā)送,一端接收,其收發(fā)開關(guān)一般是由軟件控制的電子開關(guān)示。全雙工通信系統(tǒng)的每端都有發(fā)送器和接收器,可以同時發(fā)送和接收,即數(shù)據(jù)可以在兩個方向上同時傳送。異步通信 在異步通信中,數(shù)據(jù)通常是以字符為單位組成字符幀傳送的。字符幀由發(fā)送端一幀一幀地發(fā)送,每一幀數(shù)據(jù)是低位在前,高位在后,通過傳輸線被接收端一幀一幀地接收。發(fā)送端和接收端可以由各自獨(dú)立的時鐘來控制數(shù)據(jù)的發(fā)送和接收,這兩個時鐘彼此獨(dú)立,互不同步。在異步通信中,接收端是依

3、靠字符幀格式來判斷發(fā)送端是何時開始發(fā)送何時結(jié)束發(fā)送的。字符幀也叫數(shù)據(jù)幀,由起始位、數(shù)據(jù)位、奇偶校驗(yàn)位和停止位等四部分組成。 異步通信 異步通信 異步通信的另一個重要指標(biāo)為波特率。波特率為每秒鐘傳送二進(jìn)制數(shù)碼的位數(shù),也叫比特數(shù),單位為b/s,即位/秒。波特率用于表征數(shù)據(jù)傳輸?shù)乃俣?,波特率越高,?shù)據(jù)傳輸速度越快。通常,異步通信的波特率為509600b/s。同步通信 同步通信是一種連續(xù)串行傳送數(shù)據(jù)的通信方式,一次通信只傳輸一幀信息。這里的信息幀和異步通信的字符幀不同,通常有若干個數(shù)據(jù)字符,但它們均由同步字符、數(shù)據(jù)字符和校驗(yàn)字符CRC三部分組成。在同步通信中,同步字符可以采用統(tǒng)一的標(biāo)準(zhǔn)格式,也可以由用

4、戶約定。51單片機(jī)的串行接口 串行口結(jié)構(gòu)示意圖51單片機(jī)的串行接口 SBUF是兩個在物理上獨(dú)立的接收、發(fā)送寄存器,一個用于存放接收到的數(shù)據(jù),另一個用于存放待發(fā)送的數(shù)據(jù),可同時發(fā)送和接收數(shù)據(jù)。兩個緩沖器共用一個地址99H,通過對SBUF的讀、寫語句來區(qū)別是對接收緩沖器還是發(fā)送緩沖器進(jìn)行操作。CPU在寫SBUF時,操作的是發(fā)送緩沖器;讀SBUF時,就是讀接收緩沖器的內(nèi)容。SBUF=sendi; / 發(fā)送第i個數(shù)據(jù)bufferi=SBUF; /接收數(shù)據(jù)串行口控制寄存器SCON SCON (98H)SM0SM1SM2RENTB8RB8TIRI串行口的工作方式SM0 SM1工作方式功能波特率0 0方式0

5、8位同步移位寄存器fosc/120 1方式110位UART可變1 0方式211位UARTfosc/64或fosc/321 1 方式311位UART可變串行口控制寄存器SCON SCON (98H)SM0SM1SM2RENTB8RB8TIRISM2:多機(jī)通信控制位,用于方式2和方式3中。REN:允許串行接收位。由軟件置位或清零。REN=1時,允許接收,REN=0時,禁止接收。TB8:發(fā)送數(shù)據(jù)的第9位。在方式2和方式3中,由軟件置位或復(fù)位。一般可做奇偶校驗(yàn)位。在多機(jī)通信中,可作為區(qū)別地址幀或數(shù)據(jù)幀的標(biāo)識位,一般約定地址幀時TB8為1,數(shù)據(jù)幀時TB8為0。RB8:接收數(shù)據(jù)的第9位。功能同TB8。串行

6、口控制寄存器SCON SCON (98H)SM0SM1SM2RENTB8RB8TIRITI:發(fā)送中斷標(biāo)志位。在方式0中,發(fā)送完8位數(shù)據(jù)后,由硬件置位;在其他方式中,在發(fā)送停止位之初由硬件置位。因此,TI=1是發(fā)送完一幀數(shù)據(jù)的標(biāo)志,其狀態(tài)既可供軟件查詢使用,也可請求中斷。TI位必須由軟件清0。RI:接收中斷標(biāo)志位。在方式0中,接收完8位數(shù)據(jù)后,由硬件置位;在其他方式中,當(dāng)接收到停止位時該位由硬件置1。因此,RI=1是接收完一幀數(shù)據(jù)的標(biāo)志,其狀態(tài)既可供軟件查詢使用,也可請求中斷。RI位也必須由軟件清0。電源及波特率選擇寄存器PCON PCON主要是為CHMOS型單片機(jī)的電源控制而設(shè)置的專用寄存器,

7、字節(jié)地址為87H,不可以位尋址。在HMOS的AT89C51單片機(jī)中,PCON除了最高位以外其它位都是虛設(shè)的。 PCON (87H) SMODGF1GF0PDIDL 與串行通信有關(guān)的只有SMOD位。SMOD為波特率選擇位。在方式1、2和3時,串行通信的波特率與SMOD有關(guān)。當(dāng)SMOD=1時,通信波特率乘2,當(dāng)SMOD=0時,波特率不變。51單片機(jī)串行口的工作方式 方式0 在方式0下,串行口作同步移位寄存器使用,其波特率固定為fosc/12。串行數(shù)據(jù)從RXD(P3.0)端輸入或輸出,同步移位脈沖由TXD(P3.1)送出。 這種方式通常用于擴(kuò)展I/O口。 串行口的I/O端口擴(kuò)展 。 采用串行口擴(kuò)展并

8、行輸入口 串行口的I/O端口擴(kuò)展 。 采用串行口擴(kuò)展并行輸出口 51單片機(jī)串行口的工作方式 方式1 發(fā)送時,當(dāng)數(shù)據(jù)寫入發(fā)送緩沖器SBUF后,啟動發(fā)送器發(fā)送,數(shù)據(jù)從TXD輸出。當(dāng)發(fā)送完一幀數(shù)據(jù)后,置中斷標(biāo)志TI為1。方式1下的波特率取決于定時器1的溢出率和PCON中的SMOD位。 接收時,REN置1,允許接收,串行口采樣RXD,當(dāng)采樣由1到0跳變時,確認(rèn)是起始位“0”,開始接收一幀數(shù)據(jù)。當(dāng)RI=0,且停止位為1或SM2=0時,停止位進(jìn)入RB8位,同時置中斷標(biāo)志RI;否則信息將丟失。所以,采用方式1接收時,應(yīng)先用軟件清除RI或SM2標(biāo)志。51單片機(jī)串行口的工作方式 方式2發(fā)送時,先根據(jù)通信協(xié)議由軟

9、件設(shè)置TB8,然后將要發(fā)送的數(shù)據(jù)寫入SBUF,啟動發(fā)送。寫SBUF的語句,除了將8位數(shù)據(jù)送入SBUF外,同時還將TB8裝入發(fā)送移位寄存器的第9位,并通知發(fā)送控制器進(jìn)行一次發(fā)送,一幀信息即從TXD發(fā)送。在送完一幀信息后,TI被自動置1,在發(fā)送下一幀信息之前,TI必須在中斷服務(wù)程序或查詢程序中清0。51單片機(jī)串行口的工作方式 方式2當(dāng)REN=1時,允許串行口接收數(shù)據(jù)。當(dāng)接收器采樣到RXD端的負(fù)跳變,并判斷起始位有效后,數(shù)據(jù)由RXD端輸入,開始接收一幀信息。當(dāng)接收器接收到第9位數(shù)據(jù)后,若同時滿足以下兩個條件:RI=0和SM2=0或接收到的第9位數(shù)據(jù)為1,則接收數(shù)據(jù)有效,將8位數(shù)據(jù)送入SBUF,第9位

10、送入RB8,并置RI=1。若不滿足上述兩個條件,則信息丟失。 51單片機(jī)串行口的工作方式 方式3方式3為波特率可變的11位UART通信方式,除了波特率以外,方式3和方式2完全相同。 51單片機(jī)串行口的波特率 方式0和方式2 在方式0中,波特率為時鐘頻率的1/12,即fosc/12,固定不變。在方式2中,波特率取決于PCON中的SMOD值,當(dāng)SMOD=0時,波特率為fosc/64;當(dāng)SMOD=1時,波特率為fosc/32。即波特率= 。 51單片機(jī)串行口的波特率 方式1和方式3 在方式1和方式3下,波特率由定時器T1的溢出率和SMOD共同決定,即:方式1和方式3的波特率= 定時器1溢出率 其中,

11、定時器1的溢出率取決于單片機(jī)定時器1的計(jì)數(shù)速率和定時器的預(yù)置值。計(jì)數(shù)速率與TMOD寄存器中的C/位有關(guān),當(dāng)C/=0時,計(jì)數(shù)速率為fosc/12,當(dāng)C/=1時,計(jì)數(shù)速率為外部輸入時鐘頻率。 51單片機(jī)串行口的波特率 方式1和方式3 實(shí)際上,當(dāng)定時器T1做波特率發(fā)生器使用時,通常是工作在模式2下,即作為一個自動重裝載的8位定時器,此時TL1作計(jì)數(shù)用,自動重裝載的值在TH1內(nèi)。設(shè)計(jì)數(shù)的預(yù)置值(初始值)為X,那么每過256-X個機(jī)器周期,定時器溢出一次。為了避免溢出而產(chǎn)生不必要的中斷,此時應(yīng)禁止T1中斷。溢出周期為12(256-X)/fosc.溢出率為溢出周期的倒數(shù)。 51單片機(jī)串行口工作過程 。 查

12、詢方式發(fā)送過程(1)串口初始化。設(shè)置工作方式(幀格式)、設(shè)置波特率(傳輸速率)、啟動波特率發(fā)生器(T1)。(2)發(fā)送數(shù)據(jù)。將要發(fā)送的數(shù)據(jù)送入SBUF,即可啟動發(fā)送。此時串口自動按幀格式將SBUF中的數(shù)據(jù)組裝為數(shù)據(jù)幀,并在波特率發(fā)生器的控制下將數(shù)據(jù)幀逐位發(fā)送到TXD端(最低位先發(fā))。當(dāng)發(fā)送完一幀數(shù)據(jù)后,單片機(jī)內(nèi)部自動置中斷標(biāo)志TI為1。51單片機(jī)串行口工作過程 。 查詢方式發(fā)送過程(3)判斷一幀是否發(fā)送完畢。判斷TI是否為1,是則表示發(fā)送完畢,可以繼續(xù)發(fā)送下一幀;否則繼續(xù)判斷直至發(fā)送結(jié)束。 while(TI=0); / 查詢等待發(fā)送是否完成(4)清零發(fā)送標(biāo)志位TI。 TI=0; / 發(fā)送完成,T

13、I由軟件清0(5)跳轉(zhuǎn)到(2),繼續(xù)發(fā)送下一幀數(shù)據(jù)。51單片機(jī)串行口工作過程 。 查詢方式接收過程(1)串口初始化。設(shè)置工作方式(幀格式)、設(shè)置波特率(傳輸速率)、啟動波特率發(fā)生器(T1)。值得注意的是,發(fā)送方和接收方的初始化必須一致。(2)允許接收。置位SCON寄存器的REN位。此時串行口采樣RXD,當(dāng)采樣到由1到0跳變時,確認(rèn)是起始位“0”,開始在波特率發(fā)生器的控制下將RXD端接收的數(shù)據(jù)逐位送入SBUF,一幀數(shù)據(jù)接收完畢后單片機(jī)內(nèi)部自動置中斷標(biāo)志RI為1。 REN=1; /接收允許51單片機(jī)串行口工作過程 。 中斷方式通信過程 51單片機(jī)串行口中斷分為發(fā)送中斷和接收中斷兩種。每當(dāng)串行口發(fā)送

14、或接收完一幀串行數(shù)據(jù)后,串行口電路自動將串行口控制寄存器SCON中的TI、RI中斷標(biāo)志位置位,并向CPU發(fā)出串行口中斷請求,CPU響應(yīng)串行口中斷后便立即轉(zhuǎn)入串行口中斷服務(wù)程序執(zhí)行。 51單片機(jī)串行口中斷類型號是4,其格式如下:void 函數(shù)名() interrupt 4 using n 其中,n為單片機(jī)工作寄存器組編號,共四組,取值為0,1,2,3,缺省值為0。51單片機(jī)串行口工作過程 。 查詢方式接收過程(3)判斷是否接收到一幀數(shù)據(jù)。判斷RI是否為1,是則表示接收完畢,接收到的數(shù)據(jù)已存入SBUF;否則繼續(xù)判斷直至一幀數(shù)據(jù)接收完畢。while(RI=0); /查詢等待接收標(biāo)志為1,表示接收到數(shù)

15、據(jù)(4)清零接收標(biāo)志位RI。 RI=0; /RI由軟件清0(5)轉(zhuǎn)存數(shù)據(jù)。讀取SBUF中的數(shù)據(jù)并轉(zhuǎn)存到存儲器中。bufferi=SBUF; /接收數(shù)據(jù)(6)跳轉(zhuǎn)到(2),繼續(xù)接收下一幀數(shù)據(jù)。RS-232C串行通信接口。 EIA串行通信標(biāo)準(zhǔn) RS-232、RS-422和RS-485是美國電子工業(yè)協(xié)會(EIA)制訂并發(fā)布的異步串行通信標(biāo)準(zhǔn),其中RS-232在PC機(jī)及工業(yè)通信中被廣泛采用,如錄像機(jī)、計(jì)算機(jī)以及 許多工業(yè)控制設(shè)備上都配備有RS-232串行通信接口。 通常RS-232接口以9個引腳(DB-9)或是25個引腳(DB-25)的型態(tài)出現(xiàn),一般PC機(jī)上會有12組RS-232接口,分別稱為COM1和COM2。RS-232標(biāo)準(zhǔn)規(guī)定,采用150pF/m的通信電纜時,最大通信距離為15m,最高傳輸速率為20kbps。 RS232串行通信標(biāo)準(zhǔn) 1RS-232C的幀格式 RS-232C為異步串行通信標(biāo)準(zhǔn),字符幀格式與UART相同。該標(biāo)準(zhǔn)規(guī)定:數(shù)據(jù)幀的開始為起始位,數(shù)據(jù)本身可以是5、6、7或8位,1位奇偶校驗(yàn)位,最后為停止位。數(shù)據(jù)幀之間用“1”,表示空閑位。2RS-232C的電平標(biāo)準(zhǔn) RS-232C的電氣標(biāo)準(zhǔn)采用下面的負(fù)邏輯。邏輯“0”:+5+15V,邏輯“1”:515V。 因此,RS-232C不能和TTL電平直接相連,否則將使TTL電路燒壞。在實(shí)際應(yīng)用中,RS-232C和TTL電平之間必須

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論