第七章UART串行接口_第1頁
第七章UART串行接口_第2頁
第七章UART串行接口_第3頁
第七章UART串行接口_第4頁
第七章UART串行接口_第5頁
已閱讀5頁,還剩45頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、第第7 7章章UART UART 串行接口串行接口 教學(xué)目的:了解80C51系列單片機UART串行接口的結(jié)構(gòu)、原理及應(yīng)用;能夠采用查詢方式進行串行通信。教學(xué)重點:1. UART串行接口的工作原理; 2. UART串行接口的4種工作方式的編 程、應(yīng)用。教學(xué)難點:1 .多機通信方式 2.波特率值的設(shè)置7.1 串行通信概述 在實際應(yīng)用中,不但計算機與外部設(shè)備之間常常要進行信息交換,而且計算機之間也需要交換信息,所有這些信息的交換均稱為“通信”。 通信有并行通信和串行通信兩種方式。在多微機系統(tǒng)以及現(xiàn)代測控系統(tǒng)中信息的交換多采用串行通信方式。并行通信 并行通信:所傳送數(shù)據(jù)的各位用多條數(shù)據(jù)線同時發(fā)送或接收

2、 。 并行通信控制簡單、傳輸速度快;由于傳輸線較多,長距離傳送時成本高且接收方的各位同時接收存在困難。串行通信 串行通信串行通信:所傳送數(shù)據(jù)的各位按順序一位一位地發(fā)送或接收。 串行通信的特點串行通信的特點:傳輸線少,長距離傳送時成本:傳輸線少,長距離傳送時成本低,且可以利用電話網(wǎng)等現(xiàn)成的設(shè)備,但數(shù)據(jù)的低,且可以利用電話網(wǎng)等現(xiàn)成的設(shè)備,但數(shù)據(jù)的傳送控制比并行通信復(fù)雜。傳送控制比并行通信復(fù)雜。7.1.1 同步通信和異步通信方式1 1、異異步通信步通信ASYNCASYNC(Asynchronous Data CommunicatioAsynchronous Data Communication n)

3、 異步通信是以字符(構(gòu)成的幀)為單位進行傳輸(也稱為幀格式),字符與字符之間的間隙(時間間隔)是任意的,但每個字符中的各位是以固定的時間傳送的,即字符之間是異步的(字符之間不一定有“位間隔”的整數(shù)倍的關(guān)系),但同一字符內(nèi)的各位是同步的(各位之間的距離均為“位間隔”的整數(shù)倍)。一個字符由起始位、數(shù)據(jù)位、奇偶校驗位和停止位4個部分組成。起始位為0信號占1位;其后接著的就是數(shù)據(jù)位,它可以是5位、6位、7位或8位,傳送時低位在先、高位在后;再后面的1位為奇偶校驗位,可要也可以不要;最后是停止位,它用信號1來表示字符的結(jié)束,可以是1位、1位半或2位。p 起始位:通信線上沒有數(shù)據(jù)傳送時,為高電平(邏輯1)

4、;當要發(fā)送數(shù)據(jù)時,首先發(fā)1個低電平信號(邏輯0),此信號稱為“起始位”,表示開始傳輸1幀數(shù)據(jù)。p 數(shù)據(jù)位:起始位之后的位即數(shù)據(jù)位。一般從最低位開始傳送,最高位在最后。p 奇偶校驗位:通過對數(shù)據(jù)奇偶性的檢查,可用于判別字符傳送的正確性,有3種可能的選擇,即奇、偶、無校驗。通信雙方須事先約定是采用奇校驗還是偶校驗。p 停止位:表示一幀結(jié)束,用高電平(邏輯1)表示。停止位可以是1、1.5或2位。 例如,采用串行異步通信方式傳送ASCII碼字符5,規(guī)定為7位數(shù)據(jù)位,1位偶校驗位,1位停止位,無空閑位。 由于5的ASCII碼為35H,其對應(yīng)7位數(shù)據(jù)位為0110101,如按低位在前、高位在后順序排列應(yīng)為1

5、010110。前面加1位起始位,后面配上偶校驗位1位0,最后面加1位停止位1,因此傳送的字符格式為0101011001,其對應(yīng)的波形如圖所示。傳送ASCII碼字符5的波形圖 在串行異步傳送中,CPU與外設(shè)之間事先必須約定:字符格式。 雙方要事先約定字符的編碼形式、奇偶校驗形式及起始位和停止位的規(guī)定。例如用ASCII碼通信,有效數(shù)據(jù)為7位,加1個奇偶校驗位、1個起始位和1個停止位共10位。當然停止位也可大于1位。波特率(Baudrate)。 波特率就是數(shù)據(jù)的傳送速率,即每秒鐘傳送的二進制位數(shù),單位為位/秒。 異步通信的特點:不要求收發(fā)雙方時鐘的嚴格一致,實現(xiàn)容易,設(shè)備開銷較小,但每個字符要附加2

6、3位用于起止位,各幀之間還有間隔,因此傳輸效率不高。2 2、同步通信、同步通信SYNCSYNC(Synchronous Data CommunicationSynchronous Data Communication) 在異步傳送中,每1個字符都要用起始位和停止位作為字符開始和結(jié)束的標志,占用了一定的時間。為了提高傳送速度,有時就去掉這些標志,而采用同步傳送,即1次傳送1組數(shù)據(jù)。在這1組數(shù)據(jù)的開始處要用同步字符SYN(12個)來加以指示,實現(xiàn)發(fā)送端和接收端同步。一旦檢測到約定同步字符,下面就連續(xù)、順序地發(fā)送和接受數(shù)據(jù)。 同步通信時要建立發(fā)送方時鐘對接收方時鐘的直接控制,使雙方達到完全同步。此時

7、,傳輸數(shù)據(jù)的位之間的距離均為“位間隔”的整數(shù)倍,同時傳送的字符間不留間隙,即保持位同步關(guān)系,也保持字符同步關(guān)系。 同步通信所傳輸?shù)囊粠瑪?shù)據(jù)可以是任意位。所以傳輸?shù)男瘦^高,但實現(xiàn)的硬件設(shè)備比異步通信復(fù)雜。7.1.2 串行通信的數(shù)據(jù)傳送速率 傳送速率是指數(shù)據(jù)傳送的速度。 在串行通信中數(shù)據(jù)傳送速率的單位用波特率(Baud rate)表示,其意義是每秒鐘傳送多少位二進制數(shù)。單位為b/s或bps 波特率與字符的傳送速率(字符/秒)之間存在如下關(guān)系: 波特率=位/字符字符/秒=位/秒 例如,假設(shè)字符傳送的速率為120字符/秒,而每1個字符為10位,那么傳送的波特率為:10位/字符120字符/秒=1200

8、位/秒=1200波特 每1位二進制位的傳送時間Td就是波特率的倒數(shù),例如上例中: Td=1/1200=0.833ms7.1.3 串行通信的方式串行通信的數(shù)據(jù)傳送方向有3種形式。單工(Simplex):只允許單方向傳送,只需一條數(shù)據(jù)線。半雙工(Half Duplex) :接收和發(fā)送分時雙向進行,只需一條數(shù)據(jù)線。全雙工(Full Duplex) :甲、乙兩機之間數(shù)據(jù)的發(fā)送和接收可以同時進行,通信必須使用二根數(shù)據(jù)線 。圖7-2 通信方式示意圖7.1.4 通信協(xié)議 計算機之間進行數(shù)據(jù)傳輸時的一些約定,包括通信方式、幀格式、波特率、命令碼的約定等 。7.2 80C51串行口簡介 80C51的串行口是一個

9、可編程的全雙工串行通信接口,通過軟件編程它可以做通用異步接收和發(fā)送器UART(Universal Asynchronous ReceiverTransmitter),也可做同步移位寄存器用。其幀格式可設(shè)置8位、10位或11位,并能設(shè)置不同的波特率 。7.2.1 串行口結(jié)構(gòu)與工作原理圖 73 串行口結(jié)構(gòu)框圖 主要由接收與發(fā)送緩沖寄存器SBUF、輸入移位寄存器以及串行控制寄存器SCON等組成。 波特率發(fā)生器可以利用定時器T1或T2控制發(fā)送和接收的速率。 SCON用于存放串行口的控制和狀態(tài)信息。 發(fā)送數(shù)據(jù)緩沖寄存器SBUF用于存放準備發(fā)送出去的數(shù)據(jù);接收數(shù)據(jù)緩沖寄存器SBUF用于接收由外部輸入到輸入

10、移位寄存器中的數(shù)據(jù)。 80C51串行口正是通過對上述專用寄存器的設(shè)置、檢測與讀取來管理串行通信。 串行口的接收發(fā)送操作:首先對串行口初始化。發(fā)送時CPU寫SBUF ,一方面修改發(fā)送寄存器,同時啟動數(shù)據(jù)串行發(fā)送到TXD端,發(fā)送完畢后置標志位TI;接收時置允許接收位REN才開始接受操作,接受完畢置位RI,這時CPU可以讀SBUF,即讀接收到的數(shù)據(jù)。 發(fā)送操作:數(shù)據(jù)寫入發(fā)送緩沖寄存器SBUF(99H),串行口即把8位數(shù)據(jù)以fosc 12 波特率從RXD端送出(低位在前), TXD端送出同步移位脈沖,發(fā)送完后置中斷標志TI=1。MOV TMOD, #00HMOV SBUF, #dataJNB TI,

11、$CLR TIRET 接收操作:REN是串行口接收器允許接收控制位。當RI=0,軟件置REN為1時,即開始從RXD端以fosc 12波特率輸入數(shù)據(jù)(低位在前), TXD端送出同步移位脈沖,當接收到8位數(shù)據(jù)時,置中斷標志RI=1。RECV:MOV TMOD,#00H CLR RI SETB REN JNB RI, $ MOV A,SBUF CLR RI RET7.2.2 串行口寄存器 與串行口工作有關(guān)的寄存器有6個:串行口控制寄存器SCON、接收與發(fā)送緩沖寄存器SBUF、電源控制寄存器PCON、中斷允許控制寄存器IE、中斷優(yōu)先級寄存器IP。1、串行口控制寄存器 SCON用于串行通信的方式選擇、接

12、收和發(fā)送控制,并可反映串行口的工作狀態(tài)SM0、SM1:串行方式選擇位SM2:多機通信控制位 主要用于方式2和方式3。當接收機的SM2=1時可以利用收到的RB8來控制是否激活RI(RB80時不激活RI,收到的信息丟棄;RB81時收到的數(shù)據(jù)進入SBUF,并激活RI,進而在中斷服務(wù)中將數(shù)據(jù)從SBUF讀走)。當SM2=0時,不論收到的RB8為0和1,均可以使收到的數(shù)據(jù)進入SBUF,并激活RI(即此時RB8不具有控制RI激活的功能)。通過控制SM2,可以實現(xiàn)多機通信。 在方式0時,SM2必須是0。在方式1時,若SM2=1,則只有接收到有效停止位時,RI才置1。REN:允許串行接收位 由軟件置REN=1,

13、則啟動串行口接收數(shù)據(jù);若軟件置REN=0,則禁止接收。TB8:發(fā)送數(shù)據(jù)的第9位 在方式2或方式3中,是發(fā)送數(shù)據(jù)的第九位,可以用軟件規(guī)定其作用??梢杂米鲾?shù)據(jù)的奇偶校驗位,或在多機通信中,作為地址幀/數(shù)據(jù)幀的標志位。在方式0和方式1中,該位未用。RB8:接收數(shù)據(jù)的第9位在方式2或方式3中,是接收到數(shù)據(jù)的第九位,雙機通信是奇偶位,多機通信是地址數(shù)據(jù)標識位。 TI:發(fā)送中斷標志位 在方式0時,當串行發(fā)送第8位數(shù)據(jù)結(jié)束時,或在其它方式,串行發(fā)送停止位的開始時,由內(nèi)部硬件使TI置1,向CPU發(fā)中斷申請。在中斷服務(wù)程序中,必須用軟件將其清0,取消此中斷申請。RI:接收中斷標志位 在方式0時,當串行接收第8位

14、數(shù)據(jù)結(jié)束時,或在其它方式,串行接收停止位的中間時,由內(nèi)部硬件使RI置1,向CPU發(fā)中斷申請。也必須在中斷服務(wù)程序中,用軟件將其清0,取消此中斷申請。復(fù)位時,SCON的所有位均清02、數(shù)據(jù)緩沖寄存器SBUF 數(shù)據(jù)緩沖寄存器SBUF實際上是2個獨立的寄存器:接收數(shù)據(jù)緩沖寄存器和發(fā)送數(shù)據(jù)緩沖寄存器,采用同一個地址代碼99H,寄存器名都是SBUF。 CPU通過不同的操作指令區(qū)別這2個寄存器,CPU發(fā)出寫SBUF命令時,即向發(fā)送緩沖寄存器中裝載新的信息,同時啟動數(shù)據(jù)串行發(fā)送,51系列單片機沒有專門的啟動發(fā)送狀態(tài)的指令;當CPU發(fā)出讀SBUF命令時,即讀接收緩沖寄存器的內(nèi)容。 接收寄存器是雙緩沖的,以避免

15、在接收下一幀數(shù)據(jù)之前,CPU未能及時響應(yīng)接收器的中斷,沒有把上一幀數(shù)據(jù)讀走,而產(chǎn)生兩幀數(shù)據(jù)重疊的問題。3、電源控制寄存器PCON PCON中只有一位(最高位)SMOD與串行口的工作有關(guān), 該位是串行口的波特率倍增位; SMOD=1 時, 波特率加倍, 否則不加倍;復(fù)位時,SMOD=0。4、中斷允許控制寄存器IE IE用于控制與管理單片機的中斷系統(tǒng)。IE的ES位用于控制串行口的中斷:ES=0時,禁止串行口中斷;ES=1時,允許串行口中斷。5、中斷優(yōu)先級寄存器IP IP用于管理單片機中各中斷源中斷優(yōu)先級。IP的PS位用于設(shè)置串行口中斷的優(yōu)先級:PS=0時,串行口中斷為低優(yōu)先級;PS=1時,串行口中

16、斷為高優(yōu)先級。7.2.3 80C51的幀格式 80C51串行口通過編程可設(shè)置4種工作方式,三種幀格式。 方式0以8位數(shù)據(jù)為一幀,不設(shè)起始位和停止位,先發(fā)送或接收最低位。 方式1以10位為一幀傳輸,設(shè)有一個起始位“0”,8個數(shù)據(jù)位和一個停止位“1”。 方式2和3以11位為一幀傳輸,設(shè)有1個起始位“0”,8個數(shù)據(jù)位,1個可編程位(第九數(shù)據(jù)位)D8和1個停止位“1”。7.2.4 波特率的設(shè)置 在串行通信中,收發(fā)雙方對發(fā)送或接收數(shù)據(jù)的速率要有約定。通過軟件可對單片機串行口編程為四種工作方式,其中方式0和方式2的波特率是固定的,而方式1和方式3的波特率是可變的,由定時器T1的溢出率來決定。 串行口的四種

17、工作方式對應(yīng)三種波特率。由于輸入的移位時鐘的來源不同,所以,各種方式的波特率計算公式也不相同。方式0的波特率 = fosc/12方式2的波特率 =(2SMOD/64) fosc 方式1的波特率 =(2SMOD/32)(T1溢出率)方式3的波特率 =(2SMOD/32)(T1溢出率) 當T1作為波特率發(fā)生器時,最典型的用法是使T1工作在自動再裝入的8位定時器方式(即方式2,且TCON的TR1=1,以啟動定時器)。為了避免因溢出而產(chǎn)生不必要的中斷,此時應(yīng)禁止T1中斷。這時溢出率取決于TH1中的計數(shù)值。 T1 溢出率 = fosc /12256 (TH1) 在單片機的應(yīng)用中,常用的晶振頻率為:12M

18、Hz和11.0592MHz。所以,選用的波特率也相對固定。常用的串行口波特率以及各參數(shù)的關(guān)系如表所示。7.3 串行口通信工作方式7.3.1 方式0 方式0時,串行口為同步移位寄存器的輸入輸出方式。以8位數(shù)據(jù)為一幀,發(fā)送和接收均為8位數(shù)據(jù),低位在先,高位在后。數(shù)據(jù)由RXD(P3.0)引腳輸入或輸出,同步移位脈沖由TXD(P3.1)引腳輸出。波特率固定為fosc/12。主要用于擴展并行輸入或輸出口。方式0發(fā)送 數(shù)據(jù)從RXD引腳串行輸出,TXD引腳輸出同步脈沖。當1個數(shù)據(jù)寫入串行口發(fā)送緩沖器SBUF時,串行口將8位數(shù)據(jù)以fosc/12的固定波特率從RXD引腳輸出,從低位到高位。發(fā)送完后置中斷標志TI

19、為1,呈中斷請求狀態(tài),在再次發(fā)送數(shù)據(jù)之前,必須用軟件將TI清0。方式0接收 在滿足REN=1和RI=0的條件下,串行口處于方式0輸入。此時,RXD為數(shù)據(jù)輸入端,TXD為同步信號輸出端,接收器也以fosc/12的波特率采樣RXD引腳輸入的數(shù)據(jù)信息。當接收器接收完8位數(shù)據(jù)后,置中斷標志RI=1為請求中斷,在再次接收之前,必須用軟件將RI清0。 在方式0工作時,必須使SCON寄存器中的SM2位為“0”;TB8和RB8在方式0中也未用。 方式0發(fā)送或接收完8位數(shù)據(jù)后由硬件置位TI或RI中斷請求標志,CPU在響應(yīng)中斷后要用軟件清除TI或RI標志。方式0接收和發(fā)送電路7.3.2 方式1 方式1是10位通用

20、異步通信接口。TXD(P3.1)為數(shù)據(jù)發(fā)送引腳,RXD( P3.0)為數(shù)據(jù)接收引腳,傳送一幀數(shù)據(jù)的格式如圖所示。其中1位起始位,8位數(shù)據(jù)位,1位停止位。 波特率是可變的, 它取決于定時器 T1 的溢出速率及SMOD的狀態(tài)。方式1的波特率=(2SMOD/32)定時器T1的溢出率方式1發(fā)送 用軟件清除 TI后, CPU執(zhí)行任何一條以 SBUF為目標寄存器的指令, 就啟動發(fā)送過程。數(shù)據(jù)由TXD引腳輸出。一幀信號發(fā)送完時, 將置位發(fā)送中斷標志TI=1, 向CPU申請中斷, 完成一次發(fā)送過程 用軟件置REN為1時,且RI=0,接收器以所選擇波特率的16倍速率采樣RXD引腳電平,檢測到RXD引腳輸入電平發(fā)

21、生負跳變時,則說明起始位有效,將其移入輸入移位寄存器,并開始接收這一幀信息的其余位。接收過程中,數(shù)據(jù)從輸入移位寄存器右邊移入,起始位移至輸入移位寄存器最左邊時,控制電路進行最后一次移位。當RI=0,且SM2=0(或接收到的停止位為1)時,將接收到的9位數(shù)據(jù)的前8位數(shù)據(jù)裝入接收SBUF,第9位(停止位)進入RB8,并置RI=1,向CPU請求中斷。方式1接收7.3.3 方式2和方式3 方式2或方式3時為11位的異步通信方式。TXD為數(shù)據(jù)發(fā)送引腳,RXD為數(shù)據(jù)接收引腳 。 方式2和方式3時起始位1位,數(shù)據(jù)9位(含1位附加的第9位,發(fā)送時為SCON中的TB8,接收時為RB8),停止位1位,一幀數(shù)據(jù)為1

22、1位。 方式2的波特率固定為晶振頻率的1/64或1/32,方式3的波特率由定時器T1的溢出率決定。發(fā)送 發(fā)送前,先根據(jù)通信協(xié)議由軟件設(shè)置TB8(如作奇偶校驗位或地址數(shù)據(jù)標識位),然后執(zhí)行任何一條以SBUF作為目的寄存器的寫指令即啟動發(fā)送器,同時TB8自動裝到發(fā)送移位寄存器的第9位位置上 ,從TXD端輸出一幀數(shù)據(jù) ,發(fā)送完畢,TI標志=1。多機通信中,TB8=1為地址幀; TB8=0為數(shù)據(jù)幀。接收 先置位REN為1,使串行口處于允許接收狀態(tài),同時還要將RI清0。在滿足這個條件的前提下,再根據(jù)SM2的狀態(tài)和所接收到的RB8的狀態(tài)決定是否會使RI置1,并申請中斷,接收數(shù)據(jù)。 當SM20時,不管RB8

23、為0還是為1,RI都置1,此串行口將接收發(fā)來的信息。 當SM21,且RB8為l時,表示在多機通信情況下,接收的信息為地址幀,此時RI置1。串行口將接收發(fā)來的地址。 當SM21,且RB8為0時,表示接收的信息為數(shù)據(jù)幀,但不是發(fā)給本從機的,此時RI不置1,因而SBUF中所接收的數(shù)據(jù)幀將丟失。 8 位數(shù)據(jù)裝入接收緩沖器SBUF,第9位數(shù)據(jù)裝入SCON中的RB8以及置位 RI的信號只有在產(chǎn)生最后一個移位脈沖且同滿足下列兩個條件, 才會產(chǎn)生: RI=0; SM2=0或接收到的第9位數(shù)據(jù)為“1”。 上述兩個條件中任一個不滿足, 所接收的數(shù)據(jù)幀就會丟失, 不再恢復(fù)。 兩者都滿足時, 第9位數(shù)據(jù)裝入 TB8, 前8位數(shù)據(jù)裝入SBUF。7.3.4 多機通信圖7-4多機通信連接圖主從多機通信的具體過程如下:(1) 使所有的從機的SM2位置1,以便接收主機發(fā)來的地址。(2) 主機發(fā)出一幀地址信息,其中包括8位需要與之通信的從機地址,第9位為1。(3) 所有從機接收到地址幀后,各自將所接收到的地址與本機地址相比較,對于地址相同的從機,使SM2位清零以接收主機隨后發(fā)來的所有信息;對于地址不符合的從機,仍保持SM2=1的狀態(tài),對主機隨后發(fā)來的數(shù)據(jù)不予理睬,直至發(fā)送新的地址幀。(4) 主機給已被尋址的從機發(fā)送控制指令和數(shù)據(jù)(數(shù)據(jù)幀的第9位為0)。(5)本次通信結(jié)束后,主、從機重置SM2

溫馨提示

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

評論

0/150

提交評論