第7章80C51單片機的串行口_第1頁
第7章80C51單片機的串行口_第2頁
第7章80C51單片機的串行口_第3頁
第7章80C51單片機的串行口_第4頁
第7章80C51單片機的串行口_第5頁
已閱讀5頁,還剩64頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

2023/2/61第7章80C51單片機的串行口計算機串行通信基礎7.180C51單片機的串行口7.280C51單片機的串行口應用7.3

單片機通信是指單片機與計算機或單片機與單片機之間的信息交換。通信的基本方式可分為并行通信和串行通信兩種。

在單片機系統(tǒng)以及現(xiàn)代單片機測控系統(tǒng)中,信息的交換多采用串行通信的方式。

并行通信是指數(shù)據(jù)的各位同時在多根數(shù)據(jù)線上發(fā)送或接收。特點:控制簡單、傳輸速度快,但占用的數(shù)據(jù)線多,成本較高,適用于近距離傳輸。例如:老式的打印機就是通過并口方式與計算機連接的。

串行通信是數(shù)據(jù)的各位在同一根數(shù)據(jù)線上依次逐位發(fā)送或接收。特點:占用的數(shù)據(jù)線少,成本低但速度較慢,數(shù)據(jù)傳送控制比并行復雜,適用于遠距離傳輸。7.1計算機串行通信基礎2023/2/637.1計算機串行通信基礎通信:并行通信與串行通信

并行通信特點:傳送控制簡單、速度快,但傳輸線較多,成本高。2023/2/64

串行通信特點:傳輸線少,成本低;傳送控制復雜、速度慢串行通信的必要過程是:發(fā)送時要把并行數(shù)據(jù)變成串行數(shù)據(jù)發(fā)送到線路上;接收時要把串行數(shù)據(jù)變成并行數(shù)據(jù),才能被計算機和其他設備處理。2023/2/65異步通信與同步通信收、發(fā)設備時鐘獨立,以字符(幀)為單位傳輸

7.1.1串行通信的基本概念異步通信(通信的發(fā)送和接收設備各自使用自己的時鐘)

1.異步通信

異步通信中,傳送的數(shù)據(jù)可以是一個字符代碼或一個字節(jié)數(shù)據(jù),數(shù)據(jù)以幀的形式一幀一幀傳送。

異步通信的一幀數(shù)據(jù)格式2023/2/67

異步通信幀格式起始位(1位);數(shù)據(jù)位(8位);奇偶校驗位(1位,可無校驗位);停止位(1位)。

特點易于實現(xiàn)效率不高同步通信(發(fā)、收時鐘直接連接,效率高。板內元件間的SPI接口)

注:PC機上的RS-232C接口就是典型的異步通信(1)起始位:在沒有數(shù)據(jù)傳送時,通信線上處于邏輯“1”狀態(tài)。當發(fā)送端要發(fā)送1個字符數(shù)據(jù)時,首先發(fā)送1個邏輯“0”信號,這個低電平便是幀格式的起始位。其作用是向接收端表示發(fā)送端開始發(fā)送一幀數(shù)據(jù)。接收端檢測到這個低電平后,就準備接收數(shù)據(jù)信號。(2)數(shù)據(jù)位:在起始位之后,發(fā)送端發(fā)出(或接收端接收)的是數(shù)據(jù)位,數(shù)據(jù)的位數(shù)沒有嚴格的限制,5~8位均可。由低位到高位逐位傳送。(3)奇偶校驗位:數(shù)據(jù)位發(fā)送完(接收完)之后,可發(fā)送一位用來檢驗數(shù)據(jù)在傳送過程中是否出錯的奇偶校驗位。奇偶校驗是收發(fā)雙方預先約定好的差錯檢驗方式之一有時也可不用奇偶校驗。(4)停止位:字符幀格式的最后部分是停止位,邏輯“1”電平有效,它可占1/2位、1位或2位(在串行通信時每位的傳送時間是固定的)。停止位表示傳送一幀信息的結束,也為發(fā)送下一幀信息作好準備。同步通信:是把數(shù)據(jù)塊作為整體來傳輸,由定時時鐘實現(xiàn)接收端與發(fā)送端同步。每次傳一組數(shù)據(jù),加入幀頭和幀尾。同步通信的特點:必須建立發(fā)送方時鐘對接收方時鐘的直接控制,使雙方達到完全同步;傳送的字符間不留間隙,即保持位同步,也保持字符同步關系。同步字符

校驗字符數(shù)據(jù)塊

字符1

字符2……

字符n一幀2、同步通信2023/2/612串行通信的傳輸方向單工

半雙工

全雙工80C51有1個全雙工串行口

二、串行通信的波特率

波特率(BaudRate)是串行通信中一個重要概念,它是指傳輸數(shù)據(jù)的速率,亦稱比特率。波特率的定義是每秒傳輸二進制數(shù)碼的位數(shù)。如:波特率為1200bps是指每秒鐘能傳輸1200位二進制數(shù)碼。

波特率的倒數(shù)即為每位數(shù)據(jù)傳輸時間。例如:波特率為1200bps,每位的傳輸時間為:1)(833.01200msdT==

波特率和字符幀的傳輸速率不同,若采用前面圖中的數(shù)據(jù)幀格式,并且數(shù)據(jù)幀連續(xù)傳送(無空閑位),則實際的字符傳輸速率為1200/11=108.08幀/秒。再例如:每秒鐘傳送240個字符,而每個字符格式包含10位(1個起始位、1個停止位、8個數(shù)據(jù)位),這時的波特率為10位*240個/秒=2400bps。2023/2/615信號的調制與解調DTE:數(shù)據(jù)終端設備計算機DCE:數(shù)據(jù)通信設備MODEM調制解調器調制解調

串行通信的目的不只是傳送數(shù)據(jù)信息,更重要的是應確保準確無誤地傳送。因此必須考慮在通信過程中對數(shù)據(jù)差錯進行校驗,校驗方法有奇偶校驗、累加和校驗等。檢錯:數(shù)據(jù)在傳輸過程中可能受干擾使接收的數(shù)據(jù)出錯,如何發(fā)現(xiàn)錯誤——檢錯。糾錯:發(fā)現(xiàn)錯誤后,如何消除或糾正錯誤——糾錯??垢蓴_編碼:最簡單的編碼是奇偶校驗;奇校驗:所傳送的數(shù)據(jù)中1的個數(shù)為奇數(shù);偶校驗:所傳送的數(shù)據(jù)中1的個數(shù)為偶數(shù);發(fā)送字符時,數(shù)據(jù)位尾隨1位奇偶校驗位(1或0)。奇校驗時,數(shù)據(jù)中“1”的個數(shù)與校驗位“1”的個數(shù)之和應為奇數(shù);偶校驗時,數(shù)據(jù)中“1”的個數(shù)與校驗位“1”的個數(shù)之和應為偶數(shù)。

奇偶校驗能夠檢測出奇數(shù)位誤碼,但是不能糾錯,比較低級,一般只用在異步通信中。

串行通信的錯誤校驗2023/2/617代碼和校驗

發(fā)送方將所發(fā)數(shù)據(jù)塊求和(或各字節(jié)異或),產(chǎn)生的校驗和字節(jié)附加到數(shù)據(jù)塊的末尾。接收方在接收數(shù)據(jù)時要對數(shù)據(jù)塊(除校驗字節(jié)外)求和(或各字節(jié)異或),將所得的結果與收到的“校驗和”進行比較,兩者相符則無差錯,否則就認為傳送過程出現(xiàn)了差錯。2023/2/618傳輸速率與傳輸距離傳輸速率波特率:每秒鐘傳送信息的位數(shù),單位:波特(Baud)單片機通信屬于基帶傳輸(每個碼元帶有“1”或“0”這1bit信息)。

常用波特率為:2400、4800、9600、14.4K、19.2K等

傳輸距離與傳輸速率的關系***傳輸距離隨波特率的增加而減小。等時間間隔信號稱為碼元每個碼元可以攜帶n位信息7.1.2串行通信接口種類

根據(jù)串行通信格式及約定(如同步方式、通信速率、數(shù)據(jù)塊格式等)不同,形成了許多串行通信接口標準,如常見的:

UART(串行異步通信接口)、

USB(通用串行總線接口)、

I2C(集成電路間的串行總線)、

SPI(串行外設總線)、

485總線、CAN總線接口等。51單片機的串行接口:作通用異步收發(fā)器(UART),也可作同步移位寄存器通信只有3根線(P3.0—RXD,P3.1—TXD,GND)全雙工通信,有4種工作方式TTL電平正邏輯輸出(RS-232C為負邏輯),實現(xiàn)RS-232C接口需要電平轉換——

MAX232芯片實現(xiàn)RS485接口需要變換——MAX485芯片以下是P3.1發(fā)送字符“9”的時序:起始位校驗位停止位字符位編碼010011101/001D0D7空閑空閑7.1.2串行通信接口標準

RS-232C標準接口是EIA(美國電子工業(yè)協(xié)會)于1969年頒布的串行通信接口標準。RS是“RecommendedStandard”(推薦標準)的縮寫,232為標準的編號,C為版本號。在RS-232C之前為RS-232A與RS-232B,1987年修訂為EIA-232D,1991年修訂為EIA-232E,1997年又修訂為EIA-232F。其中,RS-232C最為常用。RS-232C定義的是DTE與DCE間的接口標準。

2023/2/622機械特性DB-25(陽頭)連接器DB-9(陽頭)連接器陽頭通常用于計算機側,陰頭用于連接線側

RS-232C接口規(guī)定使用25針連接器(DB-25),連接器的尺寸及每個插針的排列位置都有明確的定義。由于一般的應用中很少用到RS-232C標準的全部信號線,所以在實際應用中常常使用9針連接器(DB-9)替代25針連接器。兩者的外形與引腳排列如圖9-7所示。通常一端做成插針,另一端做成插孔。2023/2/623功能特性注:引腳序號欄中帶括號的序號為DB-9連接器的引腳序號。2023/2/624電氣特性RS-232C采用負邏輯電平,規(guī)定(-3~-25V)為邏輯“1”,(+3~+25V)為邏輯“0”。-3V~+3V是未定義的過渡區(qū)。試比較:

電平轉換電路(如MAX232)。

2023/2/625過程特性遠程通信,需要調制解調器2023/2/626近程通信,不需要調制解調器無聯(lián)絡線方式聯(lián)絡線短接(偽連接)方式

用匯編指令編寫高級語言或匯編中的中斷調用

2023/2/627

RS-232C電平與TTL電平轉換驅動電路早期采用MC1488、MC1489

近期常用MAXM232:

片內帶有自升壓電路僅需+5V電源,內有升壓泵變?yōu)?10V-+10V內含2個發(fā)送器,2個接收器,與TTL/CMOS兼容RS-232C的缺點接口的信號電平值較高,易損壞接口電路的芯片。與TTL電平不兼容,與TTL電平接口連接需進行電平轉換。傳輸距離短,使用時傳輸距離一般不超過15m,線路條件好時也不超過幾十米。傳輸速率較低,最高傳送速率為20kbit/s。由于收發(fā)信號采用共地傳輸,容易產(chǎn)生共模干擾,所以抗干擾能力較差。新標準RS-485改善了傳輸特性,應用廣泛!

2023/2/6297.2

80C51單片機的串行口7.2.180C51串行口的結構1個全雙工串口:通信或接口擴展,幀格式為8位、10位或11位接收發(fā)送緩沖器邏輯同名、物理分開;接收雙緩沖。

2023/2/6307.2.280C51串行口的控制寄存器串行口控制寄存器SCONSM0和SM1:工作方式選擇位2023/2/631SM2:多機通信控制位,主要用于方式2和3SM2=1時,接收機地址幀甄別使能。若RB8=1,接收的信息可進入SBUF,并使RI為1,進而在中斷服務中將數(shù)據(jù)從SBUF讀走;若RB8=0,該幀不接收,丟棄掉,且保持RI=0。

SM2=0時,接收機地址幀甄別禁止。不論收到的RB8為0或1,均可以使接收的幀進入SBUF,并使RI=1。此時的RB8通常為校驗位。注意:方式0時,SM2=0;方式1時,若SM2=1,則只有接收到停止位時,RI=1REN:串行接收使能位,軟件置1時,啟動接收過程2023/2/632TB8:多機方式發(fā)送的第9位(方式2、3)發(fā)送的地址/數(shù)據(jù)幀標志。也可作為奇偶校驗位。方式0和1時,該位未用。

RB8:多機方式接收的第9位(方式2、3)接收的地址/數(shù)據(jù)幀標志。也可作為奇偶校驗位。方式0不用(SM2=0);方式1時也不用,置SM2=0,則RB8是接收到的停止位。

TI:發(fā)送中斷標志位,在中斷服務程序中要由軟件清0RI:接收中斷標志位,在中斷服務程序中要由軟件清02023/2/633電源控制寄存器PCONSMOD:波特率倍增位。在串行口方式1、方式2、方式3時,波特率與SMOD有關,當SMOD=1時,波特率提高一倍。復位時,SMOD=0。2023/2/6347.2.380C51串行口的工作方式方式0:同步移位寄存器,用于擴展并行口

RXD:輸入或輸出引腳TXD:移位脈沖輸出引腳發(fā)送和接收都是8位波特率固定為:fosc/122023/2/635數(shù)據(jù)輸出:

CR用于對74LS164清0

2023/2/636數(shù)據(jù)輸入:

S/L下降沿將并行數(shù)據(jù)裝入,高電平啟動數(shù)據(jù)移入。

2023/2/637方式1:10位幀,用于雙機通信(基本上都用方式1)起始位:1位數(shù)據(jù)位:8位停止位:1位2023/2/638串行發(fā)送:(寫SBUF啟動發(fā)送過程)

串行接收:(置REN=1啟動接收過程)

①RI=0。即上一幀數(shù)據(jù)接收完成時,RI=1發(fā)出的中斷請求已被響應,SBUF中數(shù)據(jù)已被取走。由軟件使RI=0,以便提供“接收SBUF已空”的信息。②SM2=0或收到的停止位為1(方式1時,停止位進入RB8)。

滿足上述兩個條件,將接收到的數(shù)據(jù)裝入串行口的SBUF和RB8(RB8裝入停止位),并置位RI,通知CPU取數(shù)據(jù);如果不滿足,接收到的數(shù)據(jù)不能裝入SBUF,這意味著該幀信息將會丟失。接收有效的兩個條件:2023/2/640方式2和方式3:11位幀,用于多機通信起始位:1位數(shù)據(jù)位:9位停止位:1位2023/2/641串行發(fā)送:(寫SBUF啟動發(fā)送過程)

串行接收:(置REN=1啟動接收過程)

發(fā)送前,先根據(jù)通信協(xié)議由軟件設置TB8(如作奇偶校驗位或地址/數(shù)據(jù)標志位),然后將要發(fā)送的數(shù)據(jù)寫入SBUF,即可啟動發(fā)送過程。串行口能自動把TB8取出,并裝入到第9位數(shù)據(jù)位的位置,再逐一發(fā)送出去。發(fā)送完畢,使TI=1。發(fā)送過程接收時,使SCON中的REN=1,允許接收。當檢測到RXD(P3.0)端有1→0的跳變(起始位)時,開始接收9位數(shù)據(jù),送入移位寄存器(9位)。當滿足RI=0且SM2=0,或接收到的第9位數(shù)據(jù)為1時,前8位數(shù)據(jù)送入SBUF,附加的第9位數(shù)據(jù)送入SCON中的RB8,置RI為1;否則,這次接收無效,也不置位RI。接收過程2023/2/6447.2.480C51波特率確定與初始化步驟波特率的確定波特率的計算固定波特率:

方式0波特率=fosc/12

方式2波特率=(2SMOD/64)*

fosc可變波特率:(方式1、方式3)

波特率=(2SMOD/32)*(T1溢出率)

T1溢出率=fosc/{12×[256-(TH1)]}(1)方式0的波特率由下圖可見,方式0時,每個機器周期產(chǎn)生一個移位時鐘,發(fā)送或接收一位數(shù)據(jù)。因此,波特率固定為振蕩頻率的1/12,并不受PCON寄存器中SMOD位的影響。串行口方式0波特率的產(chǎn)生(2)方式2的波特率方式2波特率取決于PCON中SMOD位的值:

SMOD=0時,波特率為fosc的1/64;

SMOD=1時,波特率為fosc的1/32。即:方式2波特率≌(2SMOD/64)×foscfosc=12MHz,SMOD=0,187.5kbpsSMOD=1,375kbps(3)方式1和方式3的波特率方式1和方式3的移位時鐘脈沖由定時器T1產(chǎn)生,如圖所示。因此,MCS-51串行口方式1和方式3的波特率由定時器T1的溢出率與SMOD值共同決定。即方式1、方式3波特率≌(2SMOD/32)×T1溢出率串行口方式1、方式3波特率的產(chǎn)生2023/2/648波特率的選擇波特率要選擇標稱值,由于TH1的初值是整數(shù),為了獲得標稱值,依公式晶振頻率要選11.0592MHz。

方式1和方式3波特率與TH1初值的對應關系:

若晶振為12MHz,TH1初值取FDH,依公式算出的波特率為10416.6…;

TH1初值取FCH,為7812.5。

例:若定時器T1工作于方式1,采用11.059MHz的晶振,要求利用定時器1產(chǎn)生1200bps的波特率,則

令SMOD=0,可算得初值為

那么,TH1的初值為0FFH,TL1的初值為0E8H。2023/2/650串行口初始化步驟確定T1的工作方式(TMOD)計算T1的初值,裝載TH1、TL1啟動T1(置位TR1)確定串行口工作方式(SCON)串口中斷設置(IE、IP)2023/2/6517.380C51單片機的串行口應用7.3.1利用單片機串口的并行I/O擴展占用串口!單片機端的電平轉換7.3.2單片機與PC機間的通信與PC機的硬件連接

直通連接交叉連接PC機串行口檢查

PC機的串行口的收、發(fā)信號引腳短接

運行串口調試軟件連機編程測試voidmain(void){uchartemp;init();while(1) { temp=ReceiveChar();//接收數(shù)據(jù)

SendChar(temp);//發(fā)送數(shù)據(jù) }}voidinit(void){ SCON=0x50;//方式1(N,8,1),接收允許 PCON=0x00;//波特率不倍增 TMOD=0x20;//置T1為8位自動重裝方式 TL1=0xfd; TH1=0xfd;//波特率9600 TR1=1;}ucharReceiveChar(){ ucharch; while(!RI);//等待接收完 ch=SBUF; RI=0; return(ch);}voidSendChar(ucharch){ SBUF=ch;//發(fā)送字符 while(!TI);//等待發(fā)送完 TI=0;//清標志}通信程序的擴充與完善通訊協(xié)議:

每幀:數(shù)據(jù)8位,起始位1位,停止位1位,無檢驗,波特率9600。PC機作為主機,主機命令由4個字符形成的字符串構成,首字符‘$’是同步頭,次字符為命令關鍵字,其他2個字符未定義。設命令關鍵字為1時,單片機要將緩沖區(qū)的數(shù)據(jù)以由前至后的順序發(fā)送到PC機端;當命令關鍵字為2時,單片機要將緩沖區(qū)的數(shù)據(jù)以由后至前的順序發(fā)送到PC機端,其他關鍵字未定義。單片機端程序:voidDataInit(void){//設置緩沖區(qū)調試數(shù)據(jù) uchari; for(i=0;i<10;i++) OutBuff[i]=i+0x30;}voidSPortInit(void){TMOD|=0x20;SCON=0x50; TH1=0xfd; TL1=0xfd;TR1=1;ES=1; EA=1;

}voidSendChar(ucharch){SBUF=ch;//發(fā)送字符while(!TI);//等待發(fā)送完TI=0;}voidSPortIsr()interrupt4{uchari,ch;ES=0;ch=SBUF;RI=0;

if(ch==0x24)//檢測‘$’

{

InBuff[0]=ch;for(i=1;i<4;i++)

{while(!RI);RI=0;InBuff[i]=SBUF;

}InFullFlag=1;

}ES=1;}voidmain(void){DataInit();SPortInit();InFullFlag=0;while(1){

if(InFullFlag)

{

switch(InBuff[1])

{//依命令完成相應功能

}

InFullFlag=0;

}}}switch(InBuff[1]){//依命令完成相應功能

case0x31:for(i=0;i<10;i++)Send

溫馨提示

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

評論

0/150

提交評論