單片機(jī)學(xué)習(xí)第六章_第1頁
單片機(jī)學(xué)習(xí)第六章_第2頁
單片機(jī)學(xué)習(xí)第六章_第3頁
單片機(jī)學(xué)習(xí)第六章_第4頁
單片機(jī)學(xué)習(xí)第六章_第5頁
已閱讀5頁,還剩28頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、1本章主要內(nèi)容本章主要內(nèi)容第6章 MCS-51單片機(jī)的串口通信串口通信的基本知識(shí)MCS-51單片機(jī)的串口及控制寄存器串口的工作方式串口的應(yīng)用26.1 串口通信的基本知識(shí)第6章 MCS-51單片機(jī)的串口通信6.1.1 通信的基本概念計(jì)算機(jī)通信是將計(jì)算機(jī)技術(shù)和通信技術(shù)的相結(jié)合,完成計(jì)算機(jī)與外部設(shè)備或計(jì)算機(jī)與計(jì)算機(jī)之間的信息交換。計(jì)算機(jī)通信可以分為兩大類:并行通信與串行通信。并行通信即數(shù)據(jù)的各位同時(shí)傳送;串行通信即數(shù)據(jù)一位一位地順序傳送。圖6-1為這兩種通信方式的示意圖。 計(jì)算機(jī) 2 或外設(shè) GND GND GND GND 計(jì)算機(jī) 1 計(jì)算機(jī) 1 計(jì)算機(jī) 2 或外設(shè) 發(fā)送 接收 圖6-1 兩種通信方

2、式的示意圖并行通信的特點(diǎn)是控制簡單、傳輸速度快,但由于傳輸線較多,長距離傳送時(shí)成本高且接收方的各位同時(shí)接收存在困難;串行通信的特點(diǎn)是傳輸線少,長距離傳送時(shí)成本低,且可以利用電話網(wǎng)等現(xiàn)成的設(shè)備,但數(shù)據(jù)的傳送控制比并行通信復(fù)雜。 36.1 串口通信的基本知識(shí)串口通信的基本知識(shí) 第6章 MCS-51單片機(jī)的串口通信6.1.2 串行通信的分類 按照串行數(shù)據(jù)的時(shí)鐘控制方式,串行通信可分為同步通信和異步通信兩類。1. 異步通信(Asynchronous Communication)異步通信是指通信的發(fā)送與接收設(shè)備使用各自的時(shí)鐘控制數(shù)據(jù)的發(fā)送和接收過程。為使雙方的收發(fā)協(xié)調(diào),要求發(fā)送和接收設(shè)備的時(shí)鐘盡可能一致

3、。異步通信的示意圖如圖6-2所示。 接收設(shè)備 發(fā)送設(shè)備 0 10100101 1 0 11100110 1 00100 1 11100 0 間隙任意 間隙任意 圖6-2 異步通信示意圖4 6.1 串口通信的基本知識(shí)串口通信的基本知識(shí) 第6章 MCS-51單片機(jī)的串口通信異步通信是以字符(構(gòu)成的幀)為單位進(jìn)行傳輸,字符與字符之間的間隙(時(shí)間間隔)是任意的,但每個(gè)字符中的各位是以固定的時(shí)間傳送的,即字符之間是異步的(字符之間不一定有“位間隔”的整數(shù)倍的關(guān)系),但同一字符內(nèi)的各位是同步的(各位之間的距離均為“位間隔”的整數(shù)倍)。異步通信的特點(diǎn)是不要求收發(fā)雙方時(shí)鐘的嚴(yán)格一致,實(shí)現(xiàn)容易,設(shè)備開銷較小,但

4、每個(gè)字符要附加23位用于起止位,各幀之間還有間隔,因此高。2. 同步通信(Synchronous Communication)同步通信是一種連續(xù)串行傳送數(shù)據(jù)的通信方式,一次通信只傳輸一幀信息。這里的信息幀和異步通信的字符幀不同,通常有若干個(gè)數(shù)據(jù)字符,如圖6-3所示。圖6-3(a)為單同步字符幀結(jié)構(gòu),圖6-3(b)為雙同步字符幀結(jié)構(gòu),但它們均由同步字符、數(shù)據(jù)字符和校驗(yàn)字符CRC三部分組成。在同步通信中,同步字符可以采用統(tǒng)一的標(biāo)準(zhǔn)格式,也可以由用戶約定。 5 6.1 串口通信的基本知識(shí)串口通信的基本知識(shí) 第6章 MCS-51單片機(jī)的串口通信 同步 字符 1 同步 字符 1 同步 字符 2 數(shù)據(jù) 字

5、符 1 數(shù)據(jù) 字符 2 數(shù)據(jù) 字符 3 數(shù)據(jù) 字符 1 數(shù)據(jù) 字符 2 數(shù)據(jù) 字符 n 數(shù)據(jù) 字符 n CRC1 CRC2 CRC1 CRC2 (a) 單同步字符幀格式 (b) 雙同步字符幀格式 圖6-3 同步通信的字符幀格式 6 6.1 串口通信的基本知識(shí)串口通信的基本知識(shí) 第6章 MCS-51單片機(jī)的串口通信6.1.3 串行通信的制式在串行通信中,數(shù)據(jù)是在兩個(gè)站之間進(jìn)行傳送的,按照數(shù)據(jù)傳送方向,串行通信可分為單工(Simplex)、半雙工(Half Duplex)和全雙工(Full Duplex)三圖。在單工制式下,通信線的一端接發(fā)送器,一端接接收器,數(shù)據(jù)只能按照一個(gè)固定的方向傳送,如圖6

6、-4(a)所示。 在半雙工制式下,系統(tǒng)的每個(gè)通信設(shè)備都由一個(gè)發(fā)送器和一個(gè)接收器組成,它允許兩個(gè)方向的數(shù)據(jù)傳遞,但不能同時(shí)傳輸,只能交替進(jìn)行,如圖6-4(b)所示。在全雙工制式下,它允許兩個(gè)方向同時(shí)進(jìn)行數(shù)據(jù)傳輸,如圖6-4(c)所示。 A 站 發(fā)送器 B 站 接收器 單工通信 A 站 發(fā) 收 發(fā) 收 B 站 發(fā) 收 A 站 (a) 單工制式 (b) 半雙工制式 (c) 全雙工制式 A 站 發(fā) 收 圖6-4 單工、半雙工和全雙工三種制式示意圖7 6.1 串口通信的基本知識(shí)串口通信的基本知識(shí) 第6章 MCS-51單片機(jī)的串口通信6.1.4 串行通信接口標(biāo)準(zhǔn) 1. RS-232C接口 RS-232C是

7、使用最早、應(yīng)用最多的一種異步串行通信總線標(biāo)準(zhǔn)。它是美國電子工業(yè)協(xié)會(huì)(EIA)1962年公布,1969年最后修訂而成的。其中,RS表示Recommended Standard,232是該標(biāo)準(zhǔn)的標(biāo)識(shí)號(hào),C表示最后一訂。RS-232C主要用來定義計(jì)算機(jī)系統(tǒng)的一些數(shù)據(jù)終端設(shè)備(DTE)和數(shù)據(jù)電路終接設(shè)備(DCE)之間的電氣性能。 (1)機(jī)械特性RS-232C接口規(guī)定使用25針連接器,連接器的尺寸及每個(gè)插針的排列位置都有明確的定義。然而RS-232C標(biāo)準(zhǔn)在連接器方面沒有嚴(yán)格規(guī)定,在一般應(yīng)用中并不一定用到全部RS-232C標(biāo)準(zhǔn)的全部信號(hào),所以,在實(shí)際應(yīng)用中常常使用9針連接器代替25針連接器。連接器的引腳定

8、義如圖6-5所示。圖6-5 DB-25(陽頭)和DB-9(陽頭)連接器定義8 6.1 串口通信的基本知識(shí)串口通信的基本知識(shí) 第6章 MCS-51單片機(jī)的串口通信(2)功能特性RS-232C標(biāo)準(zhǔn)接口的主要引腳定義如表6-1所示。插針序號(hào)信號(hào)名稱功 能信號(hào)方向1PGND保護(hù)接地2(3)TXD發(fā)送數(shù)據(jù)(串行輸出)DTE DCE3(2)RXD接收數(shù)據(jù)(串行輸入)DTE DCE4(7)RTS請(qǐng)求發(fā)送DTE DCE5(8)CTS允許發(fā)送DTE DCE6(6)DSRDCE就緒(數(shù)據(jù)建立就緒)DTE DCE7(5)SGND信號(hào)接地8(1)DCD載波檢測(cè)DTE DCE20(4)DTRDTE就緒(數(shù)據(jù)終端準(zhǔn)備就緒

9、) DTE DCE22(9)RI振鈴指示DTE DCE9 6.1 串口通信的基本知識(shí)串口通信的基本知識(shí) 第6章 MCS-51單片機(jī)的串口通信(3)電氣特性RS-232C采用負(fù)邏輯電平,規(guī)定DC(-3-15V)為邏輯1,DC(+3+15V)為邏輯0,-3+3V為過渡區(qū),不作定義。RS-232C的邏輯電平與通常的TTL和CMOS電平不兼容,為實(shí)現(xiàn)與TTL或CMOS電路的連接,要外加電平轉(zhuǎn)換路。(4)過程特性過程特性規(guī)定了信號(hào)之間的時(shí)序關(guān)系,以便正確地接收和發(fā)送數(shù)據(jù)RS232示。 M O D E M 計(jì) 算 機(jī) 計(jì) 算 機(jī) M O D E M TXD RXD RTS DSR TXD RXD RTS

10、DSR 電話線 圖6-6 遠(yuǎn)程通信的RS-232C總線連接近程通信時(shí)(通信距離15m),可以不用調(diào)制解調(diào)器,其連接如圖6-7所示 10 6.1 串口通信的基本知識(shí)串口通信的基本知識(shí) 第6章 MCS-51單片機(jī)的串口通信 計(jì) 算 機(jī) 甲 TXD RXD TXD RXD 計(jì) 算 機(jī) 乙 計(jì) 算 機(jī) 甲 TXD RXD 4 5 6 20 計(jì) 算 機(jī) 乙 TXD RXD 4 5 6 20 圖6-7 近程通信的RS-232C總線連接(5)RS-232C電平與TTL電平轉(zhuǎn)換驅(qū)動(dòng)電路MCS-51單片機(jī)串行接口與RS-232C接口不能直接對(duì)接,必須進(jìn)行電平轉(zhuǎn)換。常用的電平轉(zhuǎn)換集成電路是傳輸線驅(qū)動(dòng)器MC1488

11、和傳輸線接收器MC1489,MC1488芯片輸入的是TTL信號(hào),輸出的是RS232信號(hào);MC1489芯片輸入的是RS232信號(hào),輸出的為TTL信號(hào)。(6) 采用RS-232C接口存在的問題 傳輸距離短,傳輸速率低。RS-232C總線標(biāo)準(zhǔn)受電容允許值的約束,使用時(shí)傳輸距離一般不要超過15米(線路條件好時(shí)也不超過幾十米)。最高傳送速率為20kbps。11 6.1 串口通信的基本知識(shí)串口通信的基本知識(shí) 第6章 MCS-51單片機(jī)的串口通信有電平偏移。RS-232C總線標(biāo)準(zhǔn)要求收發(fā)雙方共地。通信距離較大時(shí),收發(fā)雙方的地電位差別較大,在信號(hào)地上將有比較大的地電流并降??垢蓴_能力差。 2. RS-422A

12、接口RS-422A輸出驅(qū)動(dòng)器為雙端平衡驅(qū)動(dòng)器。如果其中一條線為邏輯“1”狀態(tài),另一條線就為邏輯“0”,比采用單端不平衡驅(qū)動(dòng)對(duì)電壓的放大倍數(shù)大一倍。差分電路能從地線干擾中拾取有效信號(hào),差分接收器可以分辨200mV以上電位差。若傳輸過程中混入了干擾和噪聲,由于差分放大器的作用,可使干擾和噪聲相互抵消。因此可以避免或大大減弱地線干擾和電磁干擾的響。RS-422A傳輸速率(90kbps)時(shí),傳輸距離可達(dá)1200米。 3. RS-485接口RS-485是RS-422A的變型:RS-422A用于全雙工,而RS-485則用于半雙工。RS-485是一種多發(fā)送器標(biāo)準(zhǔn),在通信線路上最多可以使用32 對(duì)差分驅(qū)動(dòng)器/

13、接收器。如果在一個(gè)網(wǎng)絡(luò)中連接的設(shè)備超過32個(gè),還可以使用中器。 RS-485的信號(hào)傳輸采用兩線間的電壓來表示邏輯1和邏輯0。由于發(fā)送方需要兩根傳輸線,接收方也需要兩根傳輸線。傳輸線采用差動(dòng)信道,所以它的干擾抑制性極好,又因?yàn)樗淖杩沟?,無接地問題,所以傳輸距離可達(dá)1200米,傳輸速率可達(dá)1Mbps。12 6.2 MCS-51單片機(jī)的串口及控制寄存器第6章 MCS-51單片機(jī)的串口通信6.2.1 MCS-51串行口結(jié)構(gòu) MCS-51內(nèi)部有兩個(gè)獨(dú)立的接收、發(fā)送緩沖器SBUF。SBUF屬于特殊功能寄存器。發(fā)送緩沖器只能寫入不能讀出,接收緩沖器只能讀出不能寫入,二者共用一個(gè)字節(jié)地址(99H)。串行口的

14、結(jié)構(gòu)如圖6-8所示。 波特率發(fā)生器 TXD 引腳 RXD 引腳 1 發(fā)送 SBUF (99H) SBUF (99H) 接收 控制門 發(fā)送控制器 接收控制器 輸入移位寄存器 串行口中斷 串行控制寄存器 1 TI RI (98H) TI RI 8 8 8 圖6-8 串行口結(jié)構(gòu)示意圖13 6.2 MCS-51單片機(jī)的串口及控制寄存器第6章 MCS-51單片機(jī)的串口通信6.2.2 MCS-51串行控制寄存器與MCS-51串行口有關(guān)的特殊功能寄存器有SBUF、SCON、PCON。 1. 串行口數(shù)據(jù)緩沖器SBUFSBUF是兩個(gè)在物理上獨(dú)立的接收、發(fā)送寄存器,一個(gè)用于存放接收到的數(shù)據(jù),另一個(gè)用于存放欲發(fā)送的

15、數(shù)據(jù),可同時(shí)發(fā)送和接收數(shù)據(jù)。兩個(gè)緩沖器共用一個(gè)地址99H,通過對(duì)SBUF的讀、寫指令來區(qū)別是對(duì)接收緩沖器還是發(fā)送緩沖器進(jìn)行操作。CPU在寫SBUF時(shí),就是修改發(fā)送緩沖器;讀SBUF,就是接收緩沖器的內(nèi)容。接收或發(fā)送數(shù)據(jù),是通過串行口對(duì)外的兩條獨(dú)立收發(fā)信號(hào)線RXD(P3.0)、TXD(P3.1)來實(shí)現(xiàn)的,因此可以同時(shí)發(fā)送、接收數(shù)據(jù),其工作方式為全雙工制式。 2. 串行口控制寄存器SCONSCON是一個(gè)特殊功能寄存器,用以設(shè)定串行口的工作方式、接收/發(fā)送控制以及設(shè)置狀態(tài)標(biāo)志,可以位尋址,字節(jié)地址為98H。單片機(jī)復(fù)位時(shí),為0。 位號(hào) 76543210字節(jié)地址:98H SM0SM1SM2RENTB8R

16、B8T1R1SCON14 6.2 MCS-51單片機(jī)的串口及控制寄存器第6章 MCS-51單片機(jī)的串口通信對(duì)各位的說明如下。SM0、SM1:串行方式選擇位,其定義如表6-2所示。SM2:多機(jī)通信控制位,用于方式2和方式3中。在方式2和方式3處于接收方式時(shí),若SM2=1,且接收到的第9位數(shù)據(jù)RB8為0時(shí),不激活RI;若SM2=1,且RB8=1時(shí),則置RI=1。在方式2、3處于接收或發(fā)送方式時(shí),若SM2=0,不論接收到的第9位RB8為0還是為1,TI、RI都以正常方式被激活。在方式1處于接收時(shí),若SM2=1,則只有收到有效的停止位后,RI置1SM0。表6-2 串行方式定義 SM0 SM1工作方式功

17、 能波 特 率0 0方式08位同步移位寄存器fosc/120 1方式110位異步收發(fā)器可變1 0方式211位異步收發(fā)器fosc/64或fosc/321 1方式311位異步收發(fā)器可變15 6.2 MCS-51單片機(jī)的串口及控制寄存器第6章 MCS-51單片機(jī)的串口通信REN:允許串行接收位。它由軟件置位或清零。REN=1時(shí),允許接REN時(shí)收。TB8:發(fā)送數(shù)據(jù)的第9位。在方式2和方式3中,由軟件置位或復(fù)位,可做奇偶校驗(yàn)位。在多機(jī)通信中,可作為區(qū)別地址幀或數(shù)據(jù)幀的標(biāo)識(shí)位,一般約定地址幀時(shí),TB8為1,數(shù)據(jù)幀時(shí),TB8為0。RB8:接收數(shù)據(jù)的第9位。功能同TB8。TI:發(fā)送中斷標(biāo)志位。在方式0中,發(fā)送

18、完8位數(shù)據(jù)后,由硬件置位;在其他方式中,在發(fā)送停止位之初由硬件置位。因此,TI是發(fā)送完一幀數(shù)據(jù)的標(biāo)志,可以用指令JBC TI, rel來查詢是否發(fā)送結(jié)束。當(dāng)TI=1時(shí),也可向CP后TI。RI:接收中斷標(biāo)志位。在方式0中,接收完8位數(shù)據(jù)后,由硬件置位;在其他方式中,在接收停止位的中間由硬件置位。同TI一樣,也可以通過JBC RI, rel來查詢是否接收完一幀數(shù)據(jù)。當(dāng)RI=1時(shí),也可申請(qǐng)中斷,響應(yīng)中斷后,必須由軟件清除RI。3. 電源控制寄存器PCONPCON主要是為單片機(jī)的電源控制設(shè)置的專用寄存器,不可位尋址,字節(jié)地址為87H。位號(hào) 76543210字節(jié)地址:87H SMODFCON16 6.2

19、 MCS-51單片機(jī)的串口及控制寄存器第6章 MCS-51單片機(jī)的串口通信PCON中只有一位SMOD與串行口工作有關(guān),SMOD(PCON.7)為波特率倍增位,在串行口方式1、方式2、方式3時(shí),波特率與SMOD有關(guān),當(dāng)SMOD=1時(shí),波特率提高一倍。復(fù)位時(shí),SMOD=0。17 6.3 串口的工作方式 第6章 MCS-51單片機(jī)的串口通信6.3.1 方式0方式0時(shí),串行口為同步移位寄存器的輸入輸出方式。主要用于擴(kuò)展并行輸入或輸出口。數(shù)據(jù)由RXD(P3.0)引腳輸入或輸出,同步移位脈沖由TXD(P3.1)引腳輸出。發(fā)送和接收均為8位數(shù)據(jù),低位在先,高位在后。波特率固定為fosc/12。 1. 方式0

20、輸出當(dāng)一個(gè)數(shù)據(jù)寫入串行口發(fā)送緩沖器SBUF時(shí),串行口將8位數(shù)據(jù)以fosc/12的波特率從RXD引腳輸出(低位在前),發(fā)送完置中斷標(biāo)志TI為1,請(qǐng)求中斷。方式0的輸出時(shí)序如圖6-9所示。圖6-9 方式0的輸出時(shí)序18 6.3 串口的工作方式 第6章 MCS-51單片機(jī)的串口通信2. 方式0輸入在滿足REN=1和RI=0的條件下,串行口即開始從RXD端以fosc/12的波特率輸入數(shù)據(jù)(低位在前),當(dāng)接收完8位數(shù)據(jù)后,置中斷標(biāo)志RI為1,請(qǐng)求中斷。在再次接收數(shù)據(jù)之前,必須由軟件清RI為0。方式0的輸入時(shí)序如圖6-10所示。圖6-10 方式0輸入時(shí)序串行控制寄存器SCON中的TB8和RB8在方式0中未

21、用。值得注意的是,每當(dāng)發(fā)送或接收完8位數(shù)據(jù)后,硬件會(huì)自動(dòng)置TI或RI為1,CPU響應(yīng)TI或RI中斷后,必須由用戶用軟件清0。方式0時(shí),SM2必須為0。19 6.3 串口的工作方式 第6章 MCS-51單片機(jī)的串口通信方式1是10位數(shù)據(jù)的異步通信口。TXD為數(shù)據(jù)發(fā)送引腳,RXD為數(shù)據(jù)接收引腳,傳送一幀數(shù)據(jù)的格式如圖6-11所示,其中1位起始位,8位數(shù)據(jù)位,1位停止位。6.3.2 方式1 D1 D0 第 n 字符幀 8 位字符幀 起始位 D7 1 D0 D1 D2 D3 D4 D5 D6 1 0 D7 0 第 n+1 字符幀 停止位 圖6-11 方式1的10位數(shù)據(jù)格式 1. 方式1輸出發(fā)送時(shí),數(shù)據(jù)

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

23、3所示。圖6-13 方式1輸入時(shí)序21 6.3 串口的工作方式 第6章 MCS-51單片機(jī)的串口通信6.3.3 方式2和方式3方式2或方式3時(shí)為11位數(shù)據(jù)的異步通信口。TXD為數(shù)據(jù)發(fā)送引腳,RXD為數(shù)據(jù)接收引腳。發(fā)送或接收一幀數(shù)據(jù)包括1位起始位0,8位數(shù)據(jù)位,1位可編程位(用于奇偶校驗(yàn))和1位停止位1。除了波特率以外,方式3和方式2完全相同,方式2的波特率固定為晶振頻率的1/64或1/32,方式3的波特率由定時(shí)器T1的溢出率決定。傳送一幀數(shù)據(jù)的格式如圖6-14所示。 第 n 字符幀 第 n+1 字符幀 8 位數(shù)據(jù) 起始位 停止位 0/1 1 D0 D1 D2 D3 D4 D5 D6 0/1 0

24、 D7 1 D1 D0 0 圖6-14 方式2、3的11位數(shù)據(jù)格式22 6.3 串口的工作方式 第6章 MCS-51單片機(jī)的串口通信 1. 方式2、3輸出發(fā)送時(shí),先根據(jù)通信協(xié)議由軟件設(shè)置TB8,然后用指令將要發(fā)送的數(shù)據(jù)寫入SBUF,啟動(dòng)發(fā)送器。寫SBUF的指令時(shí),除了將8位數(shù)據(jù)送入SBUF外,同時(shí)還將TB8裝入發(fā)送移位寄存器的第9位,并通知發(fā)送控制器進(jìn)行一次發(fā)送。一幀信息即從TXD發(fā)送,在送完一幀信息后,TI被自動(dòng)置1,在發(fā)送下一幀信息之前,TI必須由中斷服務(wù)程序或查詢程序清0。方式2、3的輸出時(shí)序如圖6-15所示。圖6-15 方式2、3的輸出時(shí)序2. 方式2、3輸入當(dāng)REN=1時(shí),允許串行口

25、接收數(shù)據(jù)。數(shù)據(jù)由RXD端輸入,接收11位的信息。當(dāng)接收器采樣到RXD端的負(fù)跳變,并判斷起始位有效后,開始接收一幀信息。當(dāng)接收器接收到第9位數(shù)據(jù)后,若同時(shí)滿足以下條件:RI=0和SM2=0或接收到的第9位數(shù)據(jù)為1,則接收數(shù)據(jù)有效,8位數(shù)據(jù)送入SBUF,第9位送入RB8,并置RI=1。若不滿足上述條件,則信息丟失。方式2、3的輸入時(shí)序如圖6-16所示。23 6.3 串口的工作方式 第6章 MCS-51單片機(jī)的串口通信圖6-16 方式2、3的輸入時(shí)序6.3.4 波特率的計(jì)算在串行通信中,收發(fā)雙方對(duì)發(fā)送或接收數(shù)據(jù)的速率要有約定。通過軟件可對(duì)單片機(jī)串行口編程為四種工作方式,其中方式0和方式2的波特率是固

26、定的,而方式1和方式3的波特率是可變的,由定時(shí)器T1的溢出率來決定。串行口的四種工作方式對(duì)應(yīng)三種波特率。由于輸入的移位時(shí)鐘的來源不同,所以,各種方式的波特率計(jì)算公式也不相同。方式0的波特率 = fosc/12方式2的波特率 =(2SMOD/64)fosc 方式1的波特率 =(2SMOD/32)(T1溢出率)方式3的波特率 =(2SMOD/32)(T1溢出率)24 6.3 串口的工作方式 第6章 MCS-51單片機(jī)的串口通信當(dāng)T1作為波特率發(fā)生器時(shí),最典型的用法是使T1工作在自動(dòng)再裝入的8位定時(shí)器方式(即方式2,且TCON的TR1=1,以啟動(dòng)定時(shí)器)。這時(shí)溢出率取決于TH1中的計(jì)數(shù)值。 T1溢出

27、率 = fosc / 12256-(TH1)在單片機(jī)的應(yīng)用中,常用的晶振頻率為12MHz和11.0592MHz。所以,選用的波特率也相對(duì)固定。常用的串行口波特率以及各參數(shù)的關(guān)系如表6-3所示。表6-3 常用波特率與定時(shí)器1的參數(shù)關(guān)系T/C串口工作方式及波特率(b/s)fosc(MHz)SMOD定時(shí)器T1工作方式初值方式1、362.5k12102FFH19.2k11.0592102FDH960011.0592002FDH480011.0592002FAH240011.0592002F4H120011.0592002E8H25 6.3 串口的工作方式 第6章 MCS-51單片機(jī)的串口通信串行口工作

28、之前,應(yīng)對(duì)其進(jìn)行初始化,主要是設(shè)置產(chǎn)生波特率的定時(shí)器1、串行口控制和中斷控制。具體步驟如下。(1)確定T1的工作方式(編程TMOD寄存器)。(2)計(jì)算T1的初值,裝載TH1、TL1。(3)啟動(dòng)T1(編程TCON中的TR1位)。(4)確定串行口控制(編程SCON寄存器)。(5)串行口在中斷方式工作時(shí),要進(jìn)行中斷設(shè)置(編程IE、IP寄存器)。 26 6.4 串口的應(yīng)用第6章 MCS-51單片機(jī)的串口通信6.4.1 雙機(jī)通信如果兩個(gè)MCS-51單片機(jī)系統(tǒng)距離較近,那么就可以將它們的串行口直接相連,實(shí)現(xiàn)雙機(jī)通信。1. 硬件連接雙機(jī)通信的硬件連接如圖6-17所示。 RXD TXD TXD RXD 805

29、1 應(yīng)用系統(tǒng) (乙機(jī)) 8051 應(yīng)用系統(tǒng) (甲機(jī)) 圖6-17 雙機(jī)通信接口電路27 6.4 串口的應(yīng)用第6章 MCS-51單片機(jī)的串口通信2. 雙機(jī)通信的軟件編程對(duì)于雙機(jī)通信的程序,通常采用兩種方法:查詢方式和中斷方式。(1)查詢方式甲機(jī)發(fā)送編程將甲單機(jī)片外1000H101FH單元的數(shù)據(jù)塊從串行口輸出。定義方式2發(fā)送,TB8為奇偶校驗(yàn)位。發(fā)送波特率375kb/s,晶振為12MHz,SMOD=1。參考發(fā)送子程序如下:乙機(jī)接收編程使乙機(jī)接收甲機(jī)發(fā)送過來的數(shù)據(jù)塊,并存入片內(nèi)50H6FH單元。接收過程要求判斷RB8,若出錯(cuò)置F0標(biāo)志為1,正確則置F0標(biāo)志為0,然后返回。在進(jìn)行雙機(jī)通信時(shí),兩機(jī)應(yīng)采用

30、相同的工作方式和波特率。參考接收子程序如下:28 6.4 串口的應(yīng)用第6章 MCS-51單片機(jī)的串口通信在上述查詢方式的雙機(jī)通信中,因?yàn)榘l(fā)送雙方單片機(jī)的串行口均按方式2工作,所以幀格式是11位的,收發(fā)雙方均是采用奇偶位TB8來進(jìn)行校驗(yàn)的。傳送數(shù)據(jù)的波特率與定時(shí)器無關(guān),所以程序中沒有涉及定時(shí)器的編程。(2)中斷方式在很多應(yīng)用中,雙機(jī)通信的接收方都采用中斷的方式來接收數(shù)據(jù),以提高CPU的工作效率;發(fā)送方仍然采用查詢方式發(fā)送。甲機(jī)發(fā)送上面的通信程序,收發(fā)雙方是采用奇偶位TB8來進(jìn)行校驗(yàn)的,這里介紹一種用累加和進(jìn)行校驗(yàn)的方法。編程將甲單機(jī)片內(nèi)60H6FH單元的數(shù)據(jù)塊從串行口發(fā)送,在發(fā)送之前將數(shù)據(jù)塊長度

31、發(fā)送給乙機(jī),當(dāng)發(fā)送完16個(gè)字節(jié)后,再發(fā)送一個(gè)累加校驗(yàn)和。定義雙機(jī)串行口按方式1工作,晶振為11.059MHz,波特率為2400b/s,定時(shí)器1按方式2工作。經(jīng)計(jì)算或查表6-3得到定時(shí)器預(yù)置值為0F4H,SMOD=0。參考發(fā)送子程序如下:29 6.4 串口的應(yīng)用第6章 MCS-51單片機(jī)的串口通信乙機(jī)接收乙機(jī)接收甲機(jī)發(fā)送的數(shù)據(jù),并存入以2000H開始的片外數(shù)據(jù)存儲(chǔ)器中。首先接收數(shù)據(jù)長度,接著接收數(shù)據(jù),當(dāng)接收完16個(gè)字節(jié)后,接收累加和校驗(yàn)碼,進(jìn)行校驗(yàn)。數(shù)據(jù)傳送結(jié)束后,根據(jù)校驗(yàn)結(jié)果向甲機(jī)發(fā)送一個(gè)狀態(tài)字,00H表示正確,0FFH表示出錯(cuò),出錯(cuò)則甲機(jī)重發(fā)。接收采用中斷方式。設(shè)置兩個(gè)標(biāo)志位(7FH,7EH

32、位)來判斷接收到的信息是數(shù)據(jù)塊長度、數(shù)據(jù)還是累加校驗(yàn)和。參考接收程序如下:6.4.2 多機(jī)通信1. 硬件連接MCS-51串行口的方式2和方式3有一個(gè)專門的應(yīng)用領(lǐng)域,即多機(jī)通信。這一功能通常采用主從式多機(jī)通信方式,在這種方式中,要用一臺(tái)主機(jī)和多臺(tái)從機(jī)。主機(jī)發(fā)送的信息可以傳送到各個(gè)從機(jī)或指定的從機(jī),各從機(jī)發(fā)送的信息只能被主機(jī)接收,從機(jī)與從機(jī)之間不能進(jìn)行通信。圖6-18是多機(jī)通信的一種連接示意圖。30 6.4 串口的應(yīng)用第6章 MCS-51單片機(jī)的串口通信 TXD RXD TXD RXD 8051 0#從機(jī) 8051 1#從機(jī) TXD RXD TXD RXD 8051 n#從機(jī) 8051 主機(jī) 圖6

33、-18 多機(jī)通信連接示意圖2. 通信協(xié)議多機(jī)通信的實(shí)現(xiàn),主要是依靠主、從機(jī)之間正確地設(shè)置與判斷SM2和發(fā)送或接收的第9位數(shù)據(jù)來(TB8或RB8)完成的。我們首先將上述二者的作用總結(jié)如下。在單片機(jī)串行口以方式2或方式3接收時(shí),一方面,若SM2=1,表示置多機(jī)通信功能位。這時(shí)有兩種情況: 接收到第9位數(shù)據(jù)為1,此時(shí)數(shù)據(jù)裝入SBUF,并置RI=1,向CPU發(fā)中斷請(qǐng)求。 接收到第9位數(shù)據(jù)為0,此時(shí)不產(chǎn)生中斷,信息將被丟失,不能接收。另一方面,若SM2=0,則接收到的第9位信息無論是1還是0,都產(chǎn)生RI=1的中斷標(biāo)志,接收的數(shù)據(jù)裝入SBUF。根據(jù)這個(gè)功能,就可以實(shí)現(xiàn)多機(jī)通信。31 6.4 串口的應(yīng)用第6章 MCS-51單片機(jī)的串口通信在編程前,首先要為各從機(jī)定義地址編號(hào),如分別為00H、01H、02H等。在主機(jī)想發(fā)送一個(gè)數(shù)據(jù)塊給某個(gè)從機(jī)時(shí),它必須先送出一個(gè)地址字節(jié),以辨認(rèn)從機(jī)。編程實(shí)現(xiàn)多機(jī)通信的過程如下。(1)主機(jī)發(fā)送一幀地址信息,與所需的從機(jī)聯(lián)絡(luò)。

溫馨提示

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

評(píng)論

0/150

提交評(píng)論