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

下載本文檔

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

文檔簡介

1、2022-1-41第第6 6章章 80C5180C51單片機的串行口單片機的串行口計算機計算機串行通信基礎串行通信基礎6.180C5180C51單片機的單片機的串行口串行口6.280C5180C51單片機的單片機的串行口應用串行口應用6.32022-1-426.1 計算機串行通信基礎計算機串行通信基礎通信:并行通信與串行通信通信:并行通信與串行通信 v 并行通信并行通信特點特點:傳送控制簡單、速度快,但傳輸線較多,成本高。:傳送控制簡單、速度快,但傳輸線較多,成本高。 2022-1-43v 串行通信串行通信特點特點:傳送控制復雜、速度慢,傳輸線少,成本低:傳送控制復雜、速度慢,傳輸線少,成本低

2、 2022-1-44v 異步通信與同步通信異步通信與同步通信n 收、發(fā)設備時鐘獨立,以字符收、發(fā)設備時鐘獨立,以字符( (幀幀) )為單位傳輸為單位傳輸 6.1.1 6.1.1 串行通信的基本概念串行通信的基本概念v 異步通信異步通信 2022-1-45 異步通信幀格式異步通信幀格式v起始位(位);起始位(位);v 數(shù)據(jù)位(位);數(shù)據(jù)位(位);v 奇偶校驗位(位,可無校驗位);奇偶校驗位(位,可無校驗位);v 停止位(位)。停止位(位)。 特點特點n 易于實現(xiàn)易于實現(xiàn)n 效率不高效率不高 v 同步通信同步通信(發(fā)、收時鐘直接連接,效率高。板內(nèi)元件間的(發(fā)、收時鐘直接連接,效率高。板內(nèi)元件間的S

3、PI接口)接口) 2022-1-46v 串行通信的傳輸方向串行通信的傳輸方向v 單工單工 v 半雙工半雙工 v 全雙工全雙工 80C5180C51有有1 1個全雙工個全雙工串行口串行口 2022-1-47v 信號的調(diào)制與解調(diào)信號的調(diào)制與解調(diào)DTEDTE:數(shù)據(jù):數(shù)據(jù)終端終端設備設備DCEDCE:數(shù)據(jù):數(shù)據(jù)通信通信設備設備 調(diào)制解調(diào)器調(diào)制解調(diào)器n 調(diào)制調(diào)制n 解調(diào)解調(diào) 2022-1-48v 串行通信的錯誤校驗串行通信的錯誤校驗v奇偶校驗奇偶校驗 發(fā)送字符時發(fā)送字符時,數(shù)據(jù)位,數(shù)據(jù)位尾隨尾隨1 1位奇偶校驗位位奇偶校驗位(1 1或或0 0)。)。奇校驗時奇校驗時,數(shù)據(jù)中,數(shù)據(jù)中“1 1”的個數(shù)與校驗

4、位的個數(shù)與校驗位“1 1”的個數(shù)之和應為奇數(shù);的個數(shù)之和應為奇數(shù);偶校驗時偶校驗時,數(shù)據(jù)中,數(shù)據(jù)中“1 1”的個數(shù)與校驗位的個數(shù)與校驗位“1 1”的個數(shù)之和應為偶數(shù)。的個數(shù)之和應為偶數(shù)。接收字符時接收字符時,對,對“1 1”的個數(shù)進行校驗,若發(fā)現(xiàn)的個數(shù)進行校驗,若發(fā)現(xiàn)不一致,則說明傳輸數(shù)據(jù)過程中出現(xiàn)了差錯。不一致,則說明傳輸數(shù)據(jù)過程中出現(xiàn)了差錯。 2022-1-49v代碼和校驗代碼和校驗 發(fā)送方發(fā)送方將所發(fā)將所發(fā)數(shù)據(jù)塊求和數(shù)據(jù)塊求和(或各字節(jié)異或或各字節(jié)異或),產(chǎn)),產(chǎn)生的生的校驗和字節(jié)校驗和字節(jié)附加到數(shù)據(jù)塊的末尾。附加到數(shù)據(jù)塊的末尾。 接收方接收方在接收數(shù)據(jù)時要對在接收數(shù)據(jù)時要對數(shù)據(jù)塊(數(shù)據(jù)

5、塊(除校驗字節(jié)外除校驗字節(jié)外)求和(或各字節(jié)異或),求和(或各字節(jié)異或),將所得的結(jié)果與收到的將所得的結(jié)果與收到的“校驗和校驗和”進行比較,兩者相符則無差錯,否則進行比較,兩者相符則無差錯,否則就認為傳送過程出現(xiàn)了差錯。就認為傳送過程出現(xiàn)了差錯。 2022-1-410v 傳輸速率與傳輸距離傳輸速率與傳輸距離v傳輸速率傳輸速率波特率波特率:每秒鐘傳送信息的位數(shù),單位:波特(:每秒鐘傳送信息的位數(shù),單位:波特(Baud) 基帶傳輸基帶傳輸(每個(每個碼元碼元帶有帶有“1 1”或或“0 0”這這1 bit1 bit信息信息) )。 常用波特率為:常用波特率為:24002400、48004800、 9

6、6009600、14.4K14.4K、19.2K19.2K等等 v傳輸距離與傳輸速率的關(guān)系傳輸距離與傳輸速率的關(guān)系傳輸距離隨波特率的增加而減小。傳輸距離隨波特率的增加而減小。 等時間間隔信號稱為碼元每個碼元可以攜帶n位信息 2022-1-4116.1.2 6.1.2 串行通信接口標準串行通信接口標準RS-232CRS-232C定義的是定義的是DTEDTE與與DCEDCE間的接口標準。間的接口標準。 v 機械特性機械特性DB-25DB-25(陽頭)連接器(陽頭)連接器 DB-9DB-9(陽頭)連接器(陽頭)連接器 陽頭陽頭通常用于通常用于計算機側(cè)計算機側(cè),陰頭陰頭用于用于連接線側(cè)連接線側(cè) 202

7、2-1-412v 功能特性功能特性插針序號信號名稱功能信號方向 1 PGND保護接地 2(3)TXD發(fā)送數(shù)據(jù)(串行輸出)DTEDCE 3(2)RXD接收數(shù)據(jù)(串行輸入)DTEDCE 4(7)RTS請求發(fā)送DTEDCE 5(8)CTS允許發(fā)送DTEDCE 6(6)DSRDCE就緒(數(shù)據(jù)建立就緒)DTEDCE 7(5) SGND信號接地 8(1)DCD載波檢測DTEDCE 20(4)DTRDTE就緒(數(shù)據(jù)終端準備就緒)DTEDCE 22(9) RI振鈴指示DTEDCE2022-1-413v 電氣特性電氣特性RS-232CRS-232C采用負邏輯電平,規(guī)定(采用負邏輯電平,規(guī)定(-3-3-25V-2

8、5V)為邏輯)為邏輯“1 1”,(+3+3+25V+25V)為邏輯)為邏輯“0 0”。-3V-3V+3V+3V是未定義的過渡區(qū)。是未定義的過渡區(qū)。試比較:試比較: 電平轉(zhuǎn)換電路(如電平轉(zhuǎn)換電路(如MAX232MAX232)。)。 2022-1-414v 過程特性過程特性v遠遠程通信,需要調(diào)制解調(diào)器程通信,需要調(diào)制解調(diào)器 2022-1-415v近近程通信,不需要調(diào)制解調(diào)器程通信,不需要調(diào)制解調(diào)器 無聯(lián)絡線方式無聯(lián)絡線方式 聯(lián)絡線短接(偽連接)方式聯(lián)絡線短接(偽連接)方式 2022-1-416v RS-232CRS-232C電平與電平與TTLTTL電平轉(zhuǎn)換驅(qū)動電路電平轉(zhuǎn)換驅(qū)動電路v早期采用早期采用

9、MC1488MC1488、MC1489MC1489 v近期常用近期常用MAXM232MAXM232: 片內(nèi)帶有自升壓電路片內(nèi)帶有自升壓電路 僅需僅需+5V+5V電源電源 內(nèi)含內(nèi)含2 2個發(fā)送器,個發(fā)送器,2 2個接收器個接收器 2022-1-417v 采用采用RS-232CRS-232C接口存在的問題接口存在的問題 v傳輸距離短、速率低傳輸距離短、速率低 通常不超過通常不超過1515米,速率米,速率20Kbps20Kbps v有電平偏移有電平偏移 RS-232RS-232收發(fā)共地,地電流會使電平偏移出現(xiàn)邏輯錯誤。收發(fā)共地,地電流會使電平偏移出現(xiàn)邏輯錯誤。 v抗干擾能力差抗干擾能力差 RS-23

10、2RS-232單端輸入,易混入干擾。(單端輸入,易混入干擾。(故用大擺幅故用大擺幅) 新標準新標準RS-485RS-485改善了傳輸特性,應用廣泛!改善了傳輸特性,應用廣泛! 2022-1-4186.2 80C51單片機的串行口單片機的串行口6.2.1 80C516.2.1 80C51串行口的結(jié)構(gòu)串行口的結(jié)構(gòu) 1 1個全雙工串口:個全雙工串口:通信通信或或接口擴展接口擴展 接收發(fā)送緩沖器接收發(fā)送緩沖器邏輯同名、物理分開;邏輯同名、物理分開;接收雙緩沖。接收雙緩沖。 2022-1-4196.2.2 80C516.2.2 80C51串行口的控制寄存器串行口的控制寄存器v 串行口控制寄存器串行口控制

11、寄存器SCONSCONv SM0SM0和和SM1SM1:工作方式選擇位:工作方式選擇位76543210SCONSM0SM1SM2RENTB8RB8TIRI字節(jié)地址:98HSM0SM1方 式說 明波特率000移位寄存器fosc/1201110位UART(8位數(shù)據(jù))可變10211位UART(9位數(shù)據(jù))fosc/64或fosc/3211311位UART(9位數(shù)據(jù))可變2022-1-420vSM2SM2:多機通信控制位:多機通信控制位SM2=1SM2=1時時, ,接收機接收機地址幀甄別地址幀甄別使能使能 。若若RB8RB81 1,接收的信息接收的信息可進入可進入SBUFSBUF,并使,并使RIRI為為

12、1 1,進而在中斷服務中再進行地址號比較進而在中斷服務中再進行地址號比較; ;若若RB8RB80 0,該幀不接收,丟棄掉,且保持,該幀不接收,丟棄掉,且保持RI=0RI=0。 SM2=0SM2=0時,時,接收機接收機地址幀甄別地址幀甄別禁止禁止。不論收到的不論收到的RB8RB8為為0 0或或1 1,均可以使接收幀進入,均可以使接收幀進入SBUFSBUF,并使,并使RI=1RI=1。此時的此時的RB8RB8通常為校驗位。通常為校驗位。 vRENREN:串行接收使能位,軟件置:串行接收使能位,軟件置1 1時,啟動接收過程時,啟動接收過程2022-1-421vTB8TB8:多機方式發(fā)送的第:多機方式

13、發(fā)送的第9 9位位發(fā)送的發(fā)送的地址地址/ /數(shù)據(jù)幀數(shù)據(jù)幀標志。標志。也可作為奇偶校驗位。也可作為奇偶校驗位。 vRB8RB8:多機方式接收的第:多機方式接收的第9 9位位接收的接收的地址地址/ /數(shù)據(jù)幀數(shù)據(jù)幀標志。標志。也可作為奇偶校驗位。也可作為奇偶校驗位。 vTITI:發(fā)送中斷標志位,要由:發(fā)送中斷標志位,要由軟件清軟件清0 0vRIRI:接收中斷標志位,要由:接收中斷標志位,要由軟件清軟件清0 02022-1-422v 電源控制寄存器電源控制寄存器PCON PCON vSMODSMOD:波特率倍增位。波特率倍增位。在串行口方式在串行口方式1 1、方式、方式2 2、方式方式3 3時,波特率

14、與時,波特率與SMODSMOD有關(guān),有關(guān),當當SMOD=1SMOD=1時,波時,波特率提高一倍。特率提高一倍。復位時,復位時,SMOD=0SMOD=0。 76543210PCONSMOD字節(jié)地址:97H2022-1-4236.2.3 80C516.2.3 80C51串行口的工作方式串行口的工作方式v 方式方式0 0:同步移位寄存器:同步移位寄存器,用于,用于擴展并行口擴展并行口 vRXDRXD:輸入輸入或或輸出輸出引腳引腳 vTXDTXD:移位脈沖移位脈沖輸出引腳輸出引腳v發(fā)送和接收都是發(fā)送和接收都是8 8位位v波特率固定為波特率固定為:fosc/12fosc/122022-1-424數(shù)據(jù)輸數(shù)

15、據(jù)輸出出: CRCR用于對用于對74LS16474LS164清清0 0 2022-1-425數(shù)據(jù)輸數(shù)據(jù)輸入入: S/LS/L下降沿下降沿將并行數(shù)將并行數(shù)據(jù)裝入據(jù)裝入,高電平,高電平啟動啟動數(shù)據(jù)移入。數(shù)據(jù)移入。 2022-1-426v 方式方式1 1:1010位幀,用于位幀,用于雙雙機通信機通信 v起始位:起始位:1 1位位 v數(shù)據(jù)位:數(shù)據(jù)位:8 8位位v停止位:停止位:1 1位位2022-1-427串行發(fā)送串行發(fā)送:(:(寫寫SBUFSBUF啟動啟動發(fā)送過程)發(fā)送過程) 串行接收串行接收:( (置置REN=1REN=1啟動啟動接收過程接收過程) ) 2022-1-428v 方式方式2 2和方式

16、和方式3 3:1111位幀,用于位幀,用于多機多機通信通信 v起始位:起始位:1 1位位 v數(shù)據(jù)位:數(shù)據(jù)位:9 9位位v停止位:停止位:1 1位位2022-1-429串行串行發(fā)送發(fā)送:(寫:(寫SBUFSBUF啟動發(fā)送過程)啟動發(fā)送過程) 串行串行接收接收:( (置置REN=1REN=1啟動接收過程啟動接收過程) ) 2022-1-4306.2.4 80C516.2.4 80C51波特率確定與初始化步驟波特率確定與初始化步驟v 波特率的確定波特率的確定 v波特率的計算波特率的計算固定波特率:固定波特率: 方式方式0 0波特率波特率= fosc/12= fosc/12 方式方式2 2波特率波特率

17、= =(2 2SMODSMOD/64/64)* * foscfosc可變可變波特率波特率:( (方式方式1 1、方式、方式3 3) ) 波特率波特率= =(2 2SMODSMOD/32/32)* *(T1T1溢出率溢出率) T1T1溢出率溢出率 = fosc /12= fosc /12256 256 (TH1TH1)2022-1-431v 波特率的選擇波特率的選擇 波特率要選擇波特率要選擇標稱值標稱值,由于,由于TH1TH1的的初值是整數(shù)初值是整數(shù),為了,為了獲得標稱值,依公式獲得標稱值,依公式晶振頻率要選晶振頻率要選11.059211.0592MHzMHz。 方式方式1 1和方式和方式3 3

18、波特率與波特率與TH1TH1初值的對應關(guān)系:初值的對應關(guān)系: 波特率/(b/s)19.2 k9600480024001200TH1初值FDHFDHFAHF4HE8HSMOD10000若晶振為若晶振為12MHz12MHz,TH1TH1初值取初值取FDHFDH,依公式算出的波特,依公式算出的波特率為率為10416.610416.6; TH1TH1初值取初值取FCHFCH,為,為7812.57812.5。 2022-1-432v 串行口初始化步驟串行口初始化步驟 v確定確定T1T1的工作方式(的工作方式(TMODTMOD)v計算計算T1T1的初值,的初值,裝載裝載TH1TH1、TL1TL1v啟動啟動

19、T1T1(置位置位TR1TR1)v確定串行口工作方式(確定串行口工作方式(SCONSCON)v串口中斷設置(串口中斷設置(IEIE、IPIP)2022-1-4336.3 80C51單片機的串行口應用單片機的串行口應用6.3.1 6.3.1 利用單片機串口的并行利用單片機串口的并行I/OI/O擴展擴展 占用串口!占用串口!v單片機端的電平轉(zhuǎn)換單片機端的電平轉(zhuǎn)換6.3.2 6.3.2 單片機與單片機與PCPC機間的通信機間的通信v與與PCPC機的硬件連接機的硬件連接 v直通連接直通連接v交叉連接交叉連接vPCPC機串行口檢查機串行口檢查 nPCPC機的串行口的機的串行口的收、發(fā)信號引腳收、發(fā)信號引

20、腳短接短接 n運行運行串口調(diào)試軟件串口調(diào)試軟件 v連機編程測試連機編程測試void main(void)void main(void) uchar temp; uchar temp; init(); init(); while (1) while (1) temp = ReceiveChar();temp = ReceiveChar();/接收數(shù)據(jù)接收數(shù)據(jù)SendChar(temp); SendChar(temp); /發(fā)送數(shù)據(jù)發(fā)送數(shù)據(jù) void init(void)void init(void) SCON = 0 xSCON = 0 x5050; /; /方式方式1 1(N,8,1N,8,1

21、),接收允許),接收允許PCON = 0 x00; /PCON = 0 x00; /波特率不倍增波特率不倍增TMOD = 0 xTMOD = 0 x2020; /; /置置T1T1為為8 8位自動重裝方式位自動重裝方式TL1 = 0 xfd;TL1 = 0 xfd;TH1 = 0 xfd; /TH1 = 0 xfd; /波特率波特率96009600TR1 = 1; TR1 = 1; 76543210SCONSM0SM1SM2RENTB8RB8TIRI字節(jié)地址:98Huchar ReceiveChar() uchar ReceiveChar() uchar ch;uchar ch;while (

22、!RI); while (!RI); /等待接收完等待接收完ch = SBUF; ch = SBUF; RI = 0; RI = 0; return (ch);return (ch); void SendChar(uchar ch)void SendChar(uchar ch) SBUF = ch; SBUF = ch; /發(fā)送字符發(fā)送字符while (!TI); while (!TI); /等待發(fā)送完等待發(fā)送完TI = 0; TI = 0; /清標志清標志 v通信程序的擴充與完善通信程序的擴充與完善通訊協(xié)議:通訊協(xié)議:n 每幀:每幀:數(shù)據(jù)數(shù)據(jù)8 8位,起始位位,起始位1 1位,停止位位,停止

23、位1 1位,無檢位,無檢驗,波特率驗,波特率96009600。 n PC PC機作為主機,機作為主機,主機命令主機命令由由4 4個字符形成的字符個字符形成的字符串構(gòu)成,首字符串構(gòu)成,首字符$是同步頭,次字符為命令關(guān)是同步頭,次字符為命令關(guān)鍵字,其他鍵字,其他2 2個字符未定義。個字符未定義。n設命令設命令關(guān)鍵字為關(guān)鍵字為1 1時時,單片機要將緩沖區(qū)的數(shù)據(jù),單片機要將緩沖區(qū)的數(shù)據(jù)以由以由前至后的順序前至后的順序發(fā)送到發(fā)送到PCPC機端;當命令機端;當命令關(guān)鍵字為關(guān)鍵字為2 2時時,單片機要將緩沖區(qū)的數(shù)據(jù)以由,單片機要將緩沖區(qū)的數(shù)據(jù)以由后至前的順序后至前的順序發(fā)送到發(fā)送到PCPC機端,其他關(guān)鍵字未

24、定義。機端,其他關(guān)鍵字未定義。 v單片機端程序:單片機端程序:void DataInit(void)void DataInit(void) / /設置緩沖區(qū)調(diào)試數(shù)據(jù)設置緩沖區(qū)調(diào)試數(shù)據(jù)uchar i;uchar i;for(i=0;i10;i+)for(i=0;i10;i+)OutBuffi=i+0 x30; OutBuffi=i+0 x30; void SPortInit(void)void SPortInit(void) TMOD |=0 x20; TMOD |=0 x20; SCON=0 x50; SCON=0 x50; TH1=0 xfd; TH1=0 xfd; TL1=0 xfd; T

25、L1=0 xfd; TR1=1; TR1=1; ES = 1; ES = 1; EA = 1; EA = 1; void void SendCharSendChar(uchar ch)(uchar ch) SBUF = ch; /SBUF = ch; /發(fā)送字符發(fā)送字符while (!TI); /while (!TI); /等待發(fā)送完等待發(fā)送完TI = 0; TI = 0; void SPortIsr () interrupt 4void SPortIsr () interrupt 4 uchar i,ch; uchar i,ch; ES=0; ES=0; ch = SBUF; ch = SB

26、UF; RI=0; RI=0; if(ch= =0 x24) /if(ch= =0 x24) /檢測檢測$ InBuff0=ch; InBuff0=ch; for(i=1;i4;i+) for(i=1;i4;i+) while (!RI); while (!RI); RI=0; RI=0; InBuffi = SBUF; InBuffi = SBUF; InFullFlag=1; InFullFlag=1; ES=1; ES=1; void main(void)void main(void) DataInit(); DataInit(); SPortInit(); SPortInit(); I

27、nFullFlag = 0; InFullFlag = 0; while(1) while(1) if(InFullFlag)if(InFullFlag) switch(InBuff1)switch(InBuff1) /依命令完成相應功能依命令完成相應功能 InFullFlag = 0;InFullFlag = 0; switch(InBuff1)switch(InBuff1) /依命令完成相應功能依命令完成相應功能 case 0 x31case 0 x31: : for(i=0;i10;i+) for(i=0;i10;i+) SendChar(OutBuffi); SendChar(OutB

28、uffi); break;break; case 0 x32:case 0 x32: for(i=0;i10;i+) for(i=0;i10;i+) SendChar(OutBuff9-i); SendChar(OutBuff9-i); break;break; default:default:break;break; 2022-1-446PCPC機端程序:機端程序:Private Sub Form_Load()Private Sub Form_Load()MSComm1.CommPort = 1 MSComm1.CommPort = 1 設置通信端口號為設置通信端口號為COM1COM1MSC

29、omm1.Settings = MSComm1.Settings = 9600,n,8,19600,n,8,1 設置串口參數(shù)設置串口參數(shù)MSComm1.InputMode = 0 MSComm1.InputMode = 0 接收文本型數(shù)據(jù)接收文本型數(shù)據(jù)MSComm1.PortOpen = True MSComm1.PortOpen = True 打開串行口打開串行口End SubEnd Sub2022-1-447Private Sub Cmdsend_Click()Private Sub Cmdsend_Click()If Textsend.Text = ThenIf Textsend.Tex

30、t = Then pp = MsgBox( pp = MsgBox(發(fā)送數(shù)據(jù)不能為空!發(fā)送數(shù)據(jù)不能為空!, 16), 16) Exit Sub Exit SubEnd IfEnd IfMSComm1.Output = Trim(Textsend.Text)MSComm1.Output = Trim(Textsend.Text) For i = 1 To 20000000For i = 1 To 20000000Next iNext iEnd Sub End Sub Private Sub Timer1_Timer()Private Sub Timer1_Timer()Dim buf$Dim b

31、uf$buf = Trim(MSComm1.Input) buf = Trim(MSComm1.Input) 將緩沖區(qū)數(shù)據(jù)讀入將緩沖區(qū)數(shù)據(jù)讀入bufbuf變量變量If Len(buf) 0 Then If Len(buf) 0 Then 判緩沖區(qū)是否有數(shù)據(jù)判緩沖區(qū)是否有數(shù)據(jù)TextReceive.Text = TextReceive.Text = TextReceive.Text + Chr(13) + Chr(10) + buf TextReceive.Text + Chr(13) + Chr(10) + buf End IfEnd IfEnd SubEnd Sub6.3.3 6.3.3 單

32、片機與單片機間的通信單片機與單片機間的通信v硬件連接硬件連接 通訊協(xié)議:通訊協(xié)議:n 每每幀數(shù)據(jù)幀數(shù)據(jù)為為8 8位,位,1 1位起始位,位起始位,1 1位停止位,無檢位停止位,無檢驗,波特率驗,波特率96009600。 n 申請接收數(shù)據(jù)的單片機,按下本機的請求鍵(按申請接收數(shù)據(jù)的單片機,按下本機的請求鍵(按鍵接在鍵接在P3.5P3.5引腳),按下鍵后有引腳),按下鍵后有3 3種按鍵事件可能發(fā)種按鍵事件可能發(fā)生:生:短擊、長擊和雙擊短擊、長擊和雙擊,分別對應,分別對應3 3種請求接收數(shù)據(jù)種請求接收數(shù)據(jù)的命令,即:的命令,即:“$1”$1”、“$2”$2”和和“$3”$3”。3 3種命令會種命令會

33、根據(jù)發(fā)生的按鍵事件發(fā)送到對方;發(fā)送數(shù)據(jù)的單片根據(jù)發(fā)生的按鍵事件發(fā)送到對方;發(fā)送數(shù)據(jù)的單片機依據(jù)接收到的命令完成對應的數(shù)據(jù)發(fā)送任務。數(shù)機依據(jù)接收到的命令完成對應的數(shù)據(jù)發(fā)送任務。數(shù)據(jù)傳送采用據(jù)傳送采用“!”為同步字符。為同步字符。 程序見教材程序見教材2022-1-4526.1 計算機串行通信基礎計算機串行通信基礎通信:并行通信與串行通信通信:并行通信與串行通信 v 并行通信并行通信特點特點:傳送控制簡單、速度快,但傳輸線較多,成本高。:傳送控制簡單、速度快,但傳輸線較多,成本高。 2022-1-453v 串行通信串行通信特點特點:傳送控制復雜、速度慢,傳輸線少,成本低:傳送控制復雜、速度慢,傳輸

34、線少,成本低 2022-1-454v 異步通信與同步通信異步通信與同步通信n 收、發(fā)設備時鐘獨立,以字符收、發(fā)設備時鐘獨立,以字符( (幀幀) )為單位傳輸為單位傳輸 6.1.1 6.1.1 串行通信的基本概念串行通信的基本概念v 異步通信異步通信 2022-1-455 異步通信幀格式異步通信幀格式v起始位(位);起始位(位);v 數(shù)據(jù)位(位);數(shù)據(jù)位(位);v 奇偶校驗位(位,可無校驗位);奇偶校驗位(位,可無校驗位);v 停止位(位)。停止位(位)。 特點特點n 易于實現(xiàn)易于實現(xiàn)n 效率不高效率不高 v 同步通信同步通信(發(fā)、收時鐘直接連接,效率高。板內(nèi)元件間的(發(fā)、收時鐘直接連接,效率高

35、。板內(nèi)元件間的SPI接口)接口) 2022-1-456v 串行通信的傳輸方向串行通信的傳輸方向v 單工單工 v 半雙工半雙工 v 全雙工全雙工 80C5180C51有有1 1個全雙工個全雙工串行口串行口 2022-1-457v 信號的調(diào)制與解調(diào)信號的調(diào)制與解調(diào)DTEDTE:數(shù)據(jù):數(shù)據(jù)終端終端設備設備DCEDCE:數(shù)據(jù):數(shù)據(jù)通信通信設備設備 調(diào)制解調(diào)器調(diào)制解調(diào)器n 調(diào)制調(diào)制n 解調(diào)解調(diào) 2022-1-458v 串行通信的錯誤校驗串行通信的錯誤校驗v奇偶校驗奇偶校驗 發(fā)送字符時發(fā)送字符時,數(shù)據(jù)位,數(shù)據(jù)位尾隨尾隨1 1位奇偶校驗位位奇偶校驗位(1 1或或0 0)。)。奇校驗時奇校驗時,數(shù)據(jù)中,數(shù)據(jù)中

36、“1 1”的個數(shù)與校驗位的個數(shù)與校驗位“1 1”的個數(shù)之和應為奇數(shù);的個數(shù)之和應為奇數(shù);偶校驗時偶校驗時,數(shù)據(jù)中,數(shù)據(jù)中“1 1”的個數(shù)與校驗位的個數(shù)與校驗位“1 1”的個數(shù)之和應為偶數(shù)。的個數(shù)之和應為偶數(shù)。接收字符時接收字符時,對,對“1 1”的個數(shù)進行校驗,若發(fā)現(xiàn)的個數(shù)進行校驗,若發(fā)現(xiàn)不一致,則說明傳輸數(shù)據(jù)過程中出現(xiàn)了差錯。不一致,則說明傳輸數(shù)據(jù)過程中出現(xiàn)了差錯。 2022-1-459v代碼和校驗代碼和校驗 發(fā)送方發(fā)送方將所發(fā)將所發(fā)數(shù)據(jù)塊求和數(shù)據(jù)塊求和(或各字節(jié)異或或各字節(jié)異或),產(chǎn)),產(chǎn)生的生的校驗和字節(jié)校驗和字節(jié)附加到數(shù)據(jù)塊的末尾。附加到數(shù)據(jù)塊的末尾。 接收方接收方在接收數(shù)據(jù)時要對在接

37、收數(shù)據(jù)時要對數(shù)據(jù)塊(數(shù)據(jù)塊(除校驗字節(jié)外除校驗字節(jié)外)求和(或各字節(jié)異或),求和(或各字節(jié)異或),將所得的結(jié)果與收到的將所得的結(jié)果與收到的“校驗和校驗和”進行比較,兩者相符則無差錯,否則進行比較,兩者相符則無差錯,否則就認為傳送過程出現(xiàn)了差錯。就認為傳送過程出現(xiàn)了差錯。 2022-1-460v 傳輸速率與傳輸距離傳輸速率與傳輸距離v傳輸速率傳輸速率波特率波特率:每秒鐘傳送信息的位數(shù),單位:波特(:每秒鐘傳送信息的位數(shù),單位:波特(Baud) 基帶傳輸基帶傳輸(每個(每個碼元碼元帶有帶有“1 1”或或“0 0”這這1 bit1 bit信息信息) )。 常用波特率為:常用波特率為:24002400

38、、48004800、 96009600、14.4K14.4K、19.2K19.2K等等 v傳輸距離與傳輸速率的關(guān)系傳輸距離與傳輸速率的關(guān)系傳輸距離隨波特率的增加而減小。傳輸距離隨波特率的增加而減小。 等時間間隔信號稱為碼元每個碼元可以攜帶n位信息 2022-1-4616.1.2 6.1.2 串行通信接口標準串行通信接口標準RS-232CRS-232C定義的是定義的是DTEDTE與與DCEDCE間的接口標準。間的接口標準。 v 機械特性機械特性DB-25DB-25(陽頭)連接器(陽頭)連接器 DB-9DB-9(陽頭)連接器(陽頭)連接器 陽頭陽頭通常用于通常用于計算機側(cè)計算機側(cè),陰頭陰頭用于用于

39、連接線側(cè)連接線側(cè) 2022-1-462v 功能特性功能特性插針序號信號名稱功能信號方向 1 PGND保護接地 2(3)TXD發(fā)送數(shù)據(jù)(串行輸出)DTEDCE 3(2)RXD接收數(shù)據(jù)(串行輸入)DTEDCE 4(7)RTS請求發(fā)送DTEDCE 5(8)CTS允許發(fā)送DTEDCE 6(6)DSRDCE就緒(數(shù)據(jù)建立就緒)DTEDCE 7(5) SGND信號接地 8(1)DCD載波檢測DTEDCE 20(4)DTRDTE就緒(數(shù)據(jù)終端準備就緒)DTEDCE 22(9) RI振鈴指示DTEDCE2022-1-463v 電氣特性電氣特性RS-232CRS-232C采用負邏輯電平,規(guī)定(采用負邏輯電平,規(guī)

40、定(-3-3-25V-25V)為邏輯)為邏輯“1 1”,(+3+3+25V+25V)為邏輯)為邏輯“0 0”。-3V-3V+3V+3V是未定義的過渡區(qū)。是未定義的過渡區(qū)。試比較:試比較: 電平轉(zhuǎn)換電路(如電平轉(zhuǎn)換電路(如MAX232MAX232)。)。 2022-1-464v 過程特性過程特性v遠遠程通信,需要調(diào)制解調(diào)器程通信,需要調(diào)制解調(diào)器 2022-1-465v近近程通信,不需要調(diào)制解調(diào)器程通信,不需要調(diào)制解調(diào)器 無聯(lián)絡線方式無聯(lián)絡線方式 聯(lián)絡線短接(偽連接)方式聯(lián)絡線短接(偽連接)方式 2022-1-466v RS-232CRS-232C電平與電平與TTLTTL電平轉(zhuǎn)換驅(qū)動電路電平轉(zhuǎn)換驅(qū)

41、動電路v早期采用早期采用MC1488MC1488、MC1489MC1489 v近期常用近期常用MAXM232MAXM232: 片內(nèi)帶有自升壓電路片內(nèi)帶有自升壓電路 僅需僅需+5V+5V電源電源 內(nèi)含內(nèi)含2 2個發(fā)送器,個發(fā)送器,2 2個接收器個接收器 2022-1-467v 采用采用RS-232CRS-232C接口存在的問題接口存在的問題 v傳輸距離短、速率低傳輸距離短、速率低 通常不超過通常不超過1515米,速率米,速率20Kbps20Kbps v有電平偏移有電平偏移 RS-232RS-232收發(fā)共地,地電流會使電平偏移出現(xiàn)邏輯錯誤。收發(fā)共地,地電流會使電平偏移出現(xiàn)邏輯錯誤。 v抗干擾能力差

42、抗干擾能力差 RS-232RS-232單端輸入,易混入干擾。(單端輸入,易混入干擾。(故用大擺幅故用大擺幅) 新標準新標準RS-485RS-485改善了傳輸特性,應用廣泛!改善了傳輸特性,應用廣泛! 2022-1-4686.2 80C51單片機的串行口單片機的串行口6.2.1 80C516.2.1 80C51串行口的結(jié)構(gòu)串行口的結(jié)構(gòu) 1 1個全雙工串口:個全雙工串口:通信通信或或接口擴展接口擴展 接收發(fā)送緩沖器接收發(fā)送緩沖器邏輯同名、物理分開;邏輯同名、物理分開;接收雙緩沖。接收雙緩沖。 2022-1-4696.2.2 80C516.2.2 80C51串行口的控制寄存器串行口的控制寄存器v 串

43、行口控制寄存器串行口控制寄存器SCONSCONv SM0SM0和和SM1SM1:工作方式選擇位:工作方式選擇位76543210SCONSM0SM1SM2RENTB8RB8TIRI字節(jié)地址:98HSM0SM1方 式說 明波特率000移位寄存器fosc/1201110位UART(8位數(shù)據(jù))可變10211位UART(9位數(shù)據(jù))fosc/64或fosc/3211311位UART(9位數(shù)據(jù))可變2022-1-470vSM2SM2:多機通信控制位:多機通信控制位SM2=1SM2=1時時, ,接收機接收機地址幀甄別地址幀甄別使能使能 。若若RB8RB81 1,接收的信息接收的信息可進入可進入SBUFSBUF

44、,并使,并使RIRI為為1 1,進而在中斷服務中再進行地址號比較進而在中斷服務中再進行地址號比較; ;若若RB8RB80 0,該幀不接收,丟棄掉,且保持,該幀不接收,丟棄掉,且保持RI=0RI=0。 SM2=0SM2=0時,時,接收機接收機地址幀甄別地址幀甄別禁止禁止。不論收到的不論收到的RB8RB8為為0 0或或1 1,均可以使接收幀進入,均可以使接收幀進入SBUFSBUF,并使,并使RI=1RI=1。此時的此時的RB8RB8通常為校驗位。通常為校驗位。 vRENREN:串行接收使能位,軟件置:串行接收使能位,軟件置1 1時,啟動接收過程時,啟動接收過程2022-1-471vTB8TB8:多

45、機方式發(fā)送的第:多機方式發(fā)送的第9 9位位發(fā)送的發(fā)送的地址地址/ /數(shù)據(jù)幀數(shù)據(jù)幀標志。標志。也可作為奇偶校驗位。也可作為奇偶校驗位。 vRB8RB8:多機方式接收的第:多機方式接收的第9 9位位接收的接收的地址地址/ /數(shù)據(jù)幀數(shù)據(jù)幀標志。標志。也可作為奇偶校驗位。也可作為奇偶校驗位。 vTITI:發(fā)送中斷標志位,要由:發(fā)送中斷標志位,要由軟件清軟件清0 0vRIRI:接收中斷標志位,要由:接收中斷標志位,要由軟件清軟件清0 02022-1-472v 電源控制寄存器電源控制寄存器PCON PCON vSMODSMOD:波特率倍增位。波特率倍增位。在串行口方式在串行口方式1 1、方式、方式2 2、

46、方式方式3 3時,波特率與時,波特率與SMODSMOD有關(guān),有關(guān),當當SMOD=1SMOD=1時,波時,波特率提高一倍。特率提高一倍。復位時,復位時,SMOD=0SMOD=0。 76543210PCONSMOD字節(jié)地址:97H2022-1-4736.2.3 80C516.2.3 80C51串行口的工作方式串行口的工作方式v 方式方式0 0:同步移位寄存器:同步移位寄存器,用于,用于擴展并行口擴展并行口 vRXDRXD:輸入輸入或或輸出輸出引腳引腳 vTXDTXD:移位脈沖移位脈沖輸出引腳輸出引腳v發(fā)送和接收都是發(fā)送和接收都是8 8位位v波特率固定為波特率固定為:fosc/12fosc/1220

47、22-1-474數(shù)據(jù)輸數(shù)據(jù)輸出出: CRCR用于對用于對74LS16474LS164清清0 0 2022-1-475數(shù)據(jù)輸數(shù)據(jù)輸入入: S/LS/L下降沿下降沿將并行數(shù)將并行數(shù)據(jù)裝入據(jù)裝入,高電平,高電平啟動啟動數(shù)據(jù)移入。數(shù)據(jù)移入。 2022-1-476v 方式方式1 1:1010位幀,用于位幀,用于雙雙機通信機通信 v起始位:起始位:1 1位位 v數(shù)據(jù)位:數(shù)據(jù)位:8 8位位v停止位:停止位:1 1位位2022-1-477串行發(fā)送串行發(fā)送:(:(寫寫SBUFSBUF啟動啟動發(fā)送過程)發(fā)送過程) 串行接收串行接收:( (置置REN=1REN=1啟動啟動接收過程接收過程) ) 2022-1-478

48、v 方式方式2 2和方式和方式3 3:1111位幀,用于位幀,用于多機多機通信通信 v起始位:起始位:1 1位位 v數(shù)據(jù)位:數(shù)據(jù)位:9 9位位v停止位:停止位:1 1位位2022-1-479串行串行發(fā)送發(fā)送:(寫:(寫SBUFSBUF啟動發(fā)送過程)啟動發(fā)送過程) 串行串行接收接收:( (置置REN=1REN=1啟動接收過程啟動接收過程) ) 2022-1-4806.2.4 80C516.2.4 80C51波特率確定與初始化步驟波特率確定與初始化步驟v 波特率的確定波特率的確定 v波特率的計算波特率的計算固定波特率:固定波特率: 方式方式0 0波特率波特率= fosc/12= fosc/12 方

49、式方式2 2波特率波特率= =(2 2SMODSMOD/64/64)* * foscfosc可變可變波特率波特率:( (方式方式1 1、方式、方式3 3) ) 波特率波特率= =(2 2SMODSMOD/32/32)* *(T1T1溢出率溢出率) T1T1溢出率溢出率 = fosc /12= fosc /12256 256 (TH1TH1)2022-1-481v 波特率的選擇波特率的選擇 波特率要選擇波特率要選擇標稱值標稱值,由于,由于TH1TH1的的初值是整數(shù)初值是整數(shù),為了,為了獲得標稱值,依公式獲得標稱值,依公式晶振頻率要選晶振頻率要選11.059211.0592MHzMHz。 方式方式

50、1 1和方式和方式3 3波特率與波特率與TH1TH1初值的對應關(guān)系:初值的對應關(guān)系: 波特率/(b/s)19.2 k9600480024001200TH1初值FDHFDHFAHF4HE8HSMOD10000若晶振為若晶振為12MHz12MHz,TH1TH1初值取初值取FDHFDH,依公式算出的波特,依公式算出的波特率為率為10416.610416.6; TH1TH1初值取初值取FCHFCH,為,為7812.57812.5。 2022-1-482v 串行口初始化步驟串行口初始化步驟 v確定確定T1T1的工作方式(的工作方式(TMODTMOD)v計算計算T1T1的初值,的初值,裝載裝載TH1TH1

51、、TL1TL1v啟動啟動T1T1(置位置位TR1TR1)v確定串行口工作方式(確定串行口工作方式(SCONSCON)v串口中斷設置(串口中斷設置(IEIE、IPIP)2022-1-4836.3 80C51單片機的串行口應用單片機的串行口應用6.3.1 6.3.1 利用單片機串口的并行利用單片機串口的并行I/OI/O擴展擴展 占用串口!占用串口!v單片機端的電平轉(zhuǎn)換單片機端的電平轉(zhuǎn)換6.3.2 6.3.2 單片機與單片機與PCPC機間的通信機間的通信v與與PCPC機的硬件連接機的硬件連接 v直通連接直通連接v交叉連接交叉連接vPCPC機串行口檢查機串行口檢查 nPCPC機的串行口的機的串行口的收

52、、發(fā)信號引腳收、發(fā)信號引腳短接短接 n運行運行串口調(diào)試軟件串口調(diào)試軟件 v連機編程測試連機編程測試void main(void)void main(void) uchar temp; uchar temp; init(); init(); while (1) while (1) temp = ReceiveChar();temp = ReceiveChar();/接收數(shù)據(jù)接收數(shù)據(jù)SendChar(temp); SendChar(temp); /發(fā)送數(shù)據(jù)發(fā)送數(shù)據(jù) void init(void)void init(void) SCON = 0 xSCON = 0 x5050; /; /方式方式1

53、1(N,8,1N,8,1),接收允許),接收允許PCON = 0 x00; /PCON = 0 x00; /波特率不倍增波特率不倍增TMOD = 0 xTMOD = 0 x2020; /; /置置T1T1為為8 8位自動重裝方式位自動重裝方式TL1 = 0 xfd;TL1 = 0 xfd;TH1 = 0 xfd; /TH1 = 0 xfd; /波特率波特率96009600TR1 = 1; TR1 = 1; 76543210SCONSM0SM1SM2RENTB8RB8TIRI字節(jié)地址:98Huchar ReceiveChar() uchar ReceiveChar() uchar ch;ucha

54、r ch;while (!RI); while (!RI); /等待接收完等待接收完ch = SBUF; ch = SBUF; RI = 0; RI = 0; return (ch);return (ch); void SendChar(uchar ch)void SendChar(uchar ch) SBUF = ch; SBUF = ch; /發(fā)送字符發(fā)送字符while (!TI); while (!TI); /等待發(fā)送完等待發(fā)送完TI = 0; TI = 0; /清標志清標志 v通信程序的擴充與完善通信程序的擴充與完善通訊協(xié)議:通訊協(xié)議:n 每幀:每幀:數(shù)據(jù)數(shù)據(jù)8 8位,起始位位,起始位

55、1 1位,停止位位,停止位1 1位,無檢位,無檢驗,波特率驗,波特率96009600。 n PC PC機作為主機,機作為主機,主機命令主機命令由由4 4個字符形成的字符個字符形成的字符串構(gòu)成,首字符串構(gòu)成,首字符$是同步頭,次字符為命令關(guān)是同步頭,次字符為命令關(guān)鍵字,其他鍵字,其他2 2個字符未定義。個字符未定義。n設命令設命令關(guān)鍵字為關(guān)鍵字為1 1時時,單片機要將緩沖區(qū)的數(shù)據(jù),單片機要將緩沖區(qū)的數(shù)據(jù)以由以由前至后的順序前至后的順序發(fā)送到發(fā)送到PCPC機端;當命令機端;當命令關(guān)鍵字為關(guān)鍵字為2 2時時,單片機要將緩沖區(qū)的數(shù)據(jù)以由,單片機要將緩沖區(qū)的數(shù)據(jù)以由后至前的順序后至前的順序發(fā)送到發(fā)送到P

56、CPC機端,其他關(guān)鍵字未定義。機端,其他關(guān)鍵字未定義。 v單片機端程序:單片機端程序:void DataInit(void)void DataInit(void) / /設置緩沖區(qū)調(diào)試數(shù)據(jù)設置緩沖區(qū)調(diào)試數(shù)據(jù)uchar i;uchar i;for(i=0;i10;i+)for(i=0;i10;i+)OutBuffi=i+0 x30; OutBuffi=i+0 x30; void SPortInit(void)void SPortInit(void) TMOD |=0 x20; TMOD |=0 x20; SCON=0 x50; SCON=0 x50; TH1=0 xfd; TH1=0 xfd;

57、TL1=0 xfd; TL1=0 xfd; TR1=1; TR1=1; ES = 1; ES = 1; EA = 1; EA = 1; void void SendCharSendChar(uchar ch)(uchar ch) SBUF = ch; /SBUF = ch; /發(fā)送字符發(fā)送字符while (!TI); /while (!TI); /等待發(fā)送完等待發(fā)送完TI = 0; TI = 0; void SPortIsr () interrupt 4void SPortIsr () interrupt 4 uchar i,ch; uchar i,ch; ES=0; ES=0; ch = S

58、BUF; ch = SBUF; RI=0; RI=0; if(ch= =0 x24) /if(ch= =0 x24) /檢測檢測$ InBuff0=ch; InBuff0=ch; for(i=1;i4;i+) for(i=1;i4;i+) while (!RI); while (!RI); RI=0; RI=0; InBuffi = SBUF; InBuffi = SBUF; InFullFlag=1; InFullFlag=1; ES=1; ES=1; void main(void)void main(void) DataInit(); DataInit(); SPortInit(); SPort

溫馨提示

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

評論

0/150

提交評論