版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
2024/12/91第8章串行口及應(yīng)用(yìngyòng)
共七十七頁2024/12/92內(nèi)容(nèiróng)串行通信(tōngxìn)基礎(chǔ)知識8.180C51單片機的串行口8.2串行口的應(yīng)用8.3共七十七頁2024/12/938.1串行通信(tōngxìn)基礎(chǔ)知識8.1.1計算機對外通信(tōngxìn)方式計算機與計算機之間、計算機與外設(shè)之間的數(shù)據(jù)交換稱為通信。計算機通信有兩種基本方式:并行通信和串行通信。
數(shù)據(jù)的各位被同時傳送的通信方法稱為并行通信。
圖8-1并行通信收發(fā)設(shè)備連接示意圖圖8-2并行通信傳送時序圖并行通信的特點是控制簡單,傳輸速度快。由于傳輸線較多,長距離傳送時成本高且接收方的各位同時接收存在困難。。
共七十七頁2024/12/94串行通信(tōngxìn)是將數(shù)據(jù)字節(jié)分成一位一位的形式在一條傳輸線上逐個地傳送。串行通信具有傳輸線少,長距離傳送時成本低,抗干擾能力強等優(yōu)點,對于單片機來說,其所占用的引腳資源少。但串行通信數(shù)據(jù)(shùjù)的傳送控制比并行通信復(fù)雜。共七十七頁2024/12/958.1.2串行通信(tōngxìn)的基本概念1.串行通信(tōngxìn)的方式(1)異步通信異步通信是指通信的發(fā)送與接收設(shè)備使用各自的時鐘控制數(shù)據(jù)的發(fā)送和接收過程。為使雙方的收發(fā)協(xié)調(diào),要求發(fā)送和接收設(shè)備的時鐘盡可能一致。共七十七頁2024/12/96異步通信(tōngxìn)是以字符(構(gòu)成的幀)為單位進行傳輸,字符與字符之間的間隙(時間間隔)是任意的,但每個字符中的各位是以固定的時間傳送的。
為了實現(xiàn)異步傳輸字符的同步,采用的辦法是使傳送的每一個字符都以起始位“0”開始(kāishǐ),以停止位“1”結(jié)束。這樣,傳送的每一個字符都用起始位來進行收發(fā)雙方的同步。停止位和間隙作為時鐘頻率偏差的緩沖,即使雙方時鐘頻率略有偏差,總的數(shù)據(jù)流也不會因偏差的積累而導(dǎo)致數(shù)據(jù)錯位。共七十七頁2024/12/97
異步通信的每幀數(shù)據(jù)由4部分組成:起始位(占1位)、字符代碼(dàimǎ)數(shù)據(jù)位(占5~8位)、奇偶校驗位(占1位,也可以沒有校驗位)和停止位(占1或2位)。圖8-6中給出的是7位數(shù)據(jù)位、1位奇偶校驗位和一位停止位,加上固定的1位起始位,共10位組成一個傳輸幀。傳送時數(shù)據(jù)的低位在前,高位在后。字符之間允許有不定長度的空閑位。起始位“0”作為聯(lián)絡(luò)信號,它告訴接收方傳送的開始,接下來的是數(shù)據(jù)位和奇偶校驗位、停止位、“1”表示一個字符的結(jié)束。異步通信的特點是不要求收發(fā)(shōufā)雙方時鐘的嚴格一致,實現(xiàn)容易,設(shè)備開銷較小,但每個字符要附加起止位、停止位,各幀之間還有間隔,因此傳輸效率不高。共七十七頁2024/12/98(2)同步(tóngbù)通信同步通信時要建立發(fā)送方時鐘對接收方時鐘的直接控制,使雙方(shuāngfāng)達到完全同步。此時,傳輸數(shù)據(jù)的位之間的距離均為“位間隔”的整數(shù)倍,同時傳送的字符間不留間隙,即保持位同步關(guān)系,也保持字符同步關(guān)系。共七十七頁2024/12/992.串行通信的傳輸(chuánshū)方向串行通信根據(jù)數(shù)據(jù)傳輸?shù)姆较蚣皶r間關(guān)系(guānxì)可分為單工、半雙工和全雙工。傳輸方向示意圖如圖8-10所示。(1)單工:是指數(shù)據(jù)傳輸僅能沿一個方向,不能實現(xiàn)反向傳輸。(2)半雙工:是指數(shù)據(jù)傳輸可以沿兩個方向,但需要分時進行。(3)全雙工:是指數(shù)據(jù)可以同時進行雙向傳輸。共七十七頁2024/12/9103.串行通信(tōngxìn)的錯誤校驗在通信過程中往往(wǎngwǎng)要對數(shù)據(jù)傳送的正確與否進行校驗。校驗是保證準確無誤傳輸數(shù)據(jù)的關(guān)鍵。常用的校驗方法有奇偶校驗、代碼和校驗及循環(huán)冗余碼校驗。(1)奇偶校驗在發(fā)送數(shù)據(jù)時,數(shù)據(jù)位尾隨的1位為奇偶校驗位(1或0)。當(dāng)約定為奇校驗時,數(shù)據(jù)位與校驗位中“1”的個數(shù)之和應(yīng)為奇數(shù);當(dāng)約定為偶校驗時,數(shù)據(jù)位與校驗位中“1”的個數(shù)之和應(yīng)為偶數(shù)。接收方與發(fā)送方的校驗方式應(yīng)一致。接收字符時,對“1”的個數(shù)進行校驗,若發(fā)現(xiàn)收、發(fā)雙方不一致,則說明數(shù)據(jù)傳輸過程中出現(xiàn)了差錯。(2)代碼和校驗代碼和校驗是發(fā)送方將所發(fā)數(shù)據(jù)塊求和(或各字節(jié)異或),產(chǎn)生一個字節(jié)的校驗字符(校驗和)附加到數(shù)據(jù)塊末尾。接收方接收數(shù)據(jù)同時對數(shù)據(jù)塊(除校驗字節(jié)外)求和(或各字節(jié)異或),將所得的結(jié)果與發(fā)送方的“校驗和”進行比較,相符則無差錯,否則即認為傳送過程中出現(xiàn)了差錯。(3)循環(huán)冗余校驗這種校驗是通過某種數(shù)學(xué)運算實現(xiàn)有效信息與校驗位之間的循環(huán)校驗,常用于對磁盤信息的傳輸、存儲區(qū)的完整性校驗等。這種校驗方法糾錯能力強,廣泛應(yīng)用于同步通信中。共七十七頁2024/12/9114.信號(xìnhào)的調(diào)制與解調(diào)計算機的通信要求傳送的是數(shù)字信號。在遠程數(shù)據(jù)通信時,通常要借用公用電話網(wǎng)。但是電話網(wǎng)是為300~3400Hz的音頻模擬信號設(shè)計的,對二進制數(shù)據(jù)的傳輸是不合適的。為此,在發(fā)送時需要(xūyào)對二進制數(shù)據(jù)進行調(diào)制,使之適合在電話網(wǎng)上傳輸。在接收時,需要(xūyào)進行解調(diào),以將模擬信號還原成數(shù)字信號。共七十七頁2024/12/912利用調(diào)制器(Modulator)
把數(shù)字信號轉(zhuǎn)換成模擬信號,然后送到通信線路上去,再由解調(diào)器(Demodulator)
把從通信線路上收到的模擬信號轉(zhuǎn)換成數(shù)字信號。由于通信是雙向的,調(diào)制器和解調(diào)器合并在一個(yīɡè)裝置中,這就是調(diào)制解調(diào)器MODEM。如圖8-11所示。圖中,調(diào)制器和解調(diào)器是進行(jìnxíng)數(shù)據(jù)通信所需的設(shè)備,因此把它叫做數(shù)據(jù)通信設(shè)備(DataCommunicationsEquipment,簡稱DCE)。計算機是終端設(shè)備(DataTerminalEquipment,簡稱DTE),通信線路是電話線,也可以是專用線。共七十七頁2024/12/9135.波特率(BaudRade)在異步通信中,發(fā)送方和接收方必須保持(bǎochí)相同的波特率才能實現(xiàn)正確的數(shù)據(jù)傳送。
波特率是指單位時間內(nèi)傳送的信息量,即每秒鐘傳送的二進制位數(shù)(也稱為比特率),單位是bps,即位/秒。波特率越高,數(shù)據(jù)傳輸速度越快,但和字符的實際傳輸速率不同。字符的傳輸速率是指每秒鐘內(nèi)所傳輸字符幀數(shù),和字符格式有關(guān)。常用的標準波特率是:110波特、300波特、600波特、1200波特、2400波特、4800波特、9600波特和19200波特等。例如,在異步通信中使用1位起始位,8位數(shù)據(jù)位,無奇偶校驗位,1位停止位,即一幀數(shù)據(jù)長度位10bit,如果要求數(shù)據(jù)傳送的速率是1秒送120幀字符,則傳送波特率為1200波特。共七十七頁2024/12/9146.串行通信(tōngxìn)的協(xié)議通信協(xié)議是指單片機之間進行信息傳輸時的一些約定,約定的內(nèi)容包括數(shù)據(jù)格式、同步方式、波特率、校驗方式等。為了保證計算機之間能夠準確、可靠(kěkào)地通信,相互之間必須遵循統(tǒng)一的協(xié)議,在通信之前一定要設(shè)置好。共七十七頁2024/12/9158.1.3串行通信接口標準(biāozhǔn)從本質(zhì)說,通信是CPU與外部設(shè)備間交換信息的一種方式。所有的串行通信接口電路都是以并行數(shù)據(jù)形式與CPU連接、而以串行數(shù)據(jù)形式與外部設(shè)備進行數(shù)據(jù)傳送。它們(tāmen)的基本功能都是從外部設(shè)備接收串行數(shù)據(jù),轉(zhuǎn)換為并行數(shù)據(jù)后傳送給CPU;或從CPU接收并行數(shù)據(jù),轉(zhuǎn)換成串行數(shù)據(jù)后輸出給外部設(shè)備。能夠?qū)崿F(xiàn)異步通信的硬件電路稱為通用異步接收器/發(fā)送器
(UniversalAsynchronousReceive/Transmitter,簡稱UART)。能夠?qū)崿F(xiàn)同步通信的硬件電路稱為通用同步接收器/發(fā)送器
(UniversalSynchronousReceive/Transmitter,簡稱USRT)。共七十七頁2024/12/916所謂接口標準,就是明確的定義若干條信號線,使接口電路(diànlù)標準化、通用化。采用標準接口,可以方便地把計算機、外部設(shè)備和測量儀器等有機的聯(lián)系起來,并實現(xiàn)其間的通信。在單片機控制系統(tǒng)中,常用的串行通信接口標準有:RS-232C、RS-422A、RS-485等總線接口標準。共七十七頁2024/12/9171.RS-232C總線(zǒnɡxiàn)
RS-232C標準(協(xié)議)的全稱是EIA-RS-232C標準,其中EIA(ElectronicIndustryAssociation)代表美國電子工業(yè)協(xié)會,RS(RecommendedStandard)代表推薦標準,232是標識號,C代表RS232的最早一次修改(1969)。1969年修訂為RS-232C,1987年修訂為EIA-232D,1991年修訂為EIA-232E,1997年又修訂為EIA-232E。由于修改的不多,所以(suǒyǐ)人們習(xí)慣于早期的名字“RS-232C”。RS-232C定義了數(shù)據(jù)終端設(shè)備(DTE)與數(shù)據(jù)通信設(shè)備(DCE)之間的物理接口標準。接口標準包括機械特性、功能特性和電氣特性幾方面內(nèi)容。共七十七頁2024/12/918(1)機械(jīxiè)特性
RS-232C接口規(guī)定使用25針連接器,連接器的尺寸及每個插針的排列位置都有明確的定義。一般的應(yīng)用中并不一定用到RS-232C標準的全部信號線,所以在實際(shíjì)應(yīng)用中常常使用9針連接器替代25針連接器。計算機的COM1和COM2使用的是9針連接器。連接器引腳定義如圖8-12所示。圖中所示為陽頭定義,通常用于計算機側(cè),對應(yīng)的陰頭用于連接線側(cè)。圖8-12DB-25(陽頭)和DB-9(陽頭)連接器定義共七十七頁2024/12/919(2)功能(gōngnéng)特性
RS-232C接口(jiēkǒu)的主要信號線的功能定義如表8-1所示。表8-1RS-232C接口的主要信號線的功能定義共七十七頁2024/12/920(3)電氣(diànqì)特性
RS-232C采用負邏輯電平(diànpínɡ),規(guī)定邏輯1為DC-3V~-15V,邏輯0為DC+3V~+15V。-3V~+3V為過渡區(qū),不作定義。注意:RS-232C的邏輯電平與通常的TTL和MOS電平不兼容。為了實現(xiàn)與TTL或MOS電路的連接,要外加電平轉(zhuǎn)換電路。RS-232C發(fā)送方和接收方之間的信號線采用多芯信號線,要求多芯信號線的總負載電容不能超過2500pF。
通常,RS-232C的傳輸距離為幾十米,傳輸速率小于20Kbps。共七十七頁2024/12/921(4)過程(guòchéng)特性
過程特性規(guī)定了信號之間的時序關(guān)系,以便正確地接收和發(fā)送數(shù)據(jù)。如果通信雙方均具備RS-232C接口,則二者可以直接連接(liánjiē),不必考慮電平轉(zhuǎn)換問題。但是對于單片機與計算機通過RS-232C的連接,必須考慮電平轉(zhuǎn)換問題,因為80C51系列單片機串行口不是標準RS-232C接口。共七十七頁2024/12/922共七十七頁2024/12/923(5)RS-232C電平與TTL電平轉(zhuǎn)換驅(qū)動(qūdònɡ)電路
80C51單片機串行口與PC機的RS-232C接口不能直接對接,必須進行電平轉(zhuǎn)換,常見的TTL到RS-232C的電平轉(zhuǎn)換器有MC1488、MC1489和MAX232等芯片。MC1488輸入為TTL電平,輸出為RS232電平;MC1489輸入為RS-232電平,輸出為TTL電平。MC1488的供電(ɡònɡdiàn)電壓為±12V,MC1489的供電電壓為+5V。MC1488和MC1489的邏輯功能如圖8-15所示。共七十七頁2024/12/924MC1488和MC1489與RS-232電平(diànpínɡ)轉(zhuǎn)換如圖8-16所示。共七十七頁2024/12/925近來(jìnlái)一些系統(tǒng)中,愈來愈多地采用了自升壓電平轉(zhuǎn)換電路。各廠商生產(chǎn)的此類芯片雖然不同,但原理類似,并可代換。其主要功能是在單+5V電源下,有TTL信號輸入到RS-232C輸出的功能,也有RS-232C輸入到TTL輸出的功能。如RS-232C雙工發(fā)送器/接收器接口電路MAX232,它能滿足RS-232C的電氣規(guī)范,且僅需要+5V電源,內(nèi)置電子泵電壓轉(zhuǎn)換器將+5V轉(zhuǎn)換成-10V~+10V。該芯片與TTL/CMOS電平兼容,片內(nèi)有2個發(fā)送器,2個接收器,使用比較方便。MAX232芯片封裝如圖8-17所示,采用MAX232芯片實現(xiàn)TTL電平和RS232電平轉(zhuǎn)換的電路如圖8-18所示。共七十七頁2024/12/926(6)采用RS-232C接口存在(cúnzài)的問題
1)接口的信號電平值較高,易損壞(sǔnhuài)接口電路的芯片,又因為與TTL電平不兼容,故需使用電平轉(zhuǎn)換電路方能與TTL電路連接;2)傳輸速率較低,在異步傳輸時,波特率為20kbps;3)接口使用一根信號線和一根信號返回線而構(gòu)成共地的傳輸形式,這種共地傳輸容易產(chǎn)生共模干擾,所以抗噪聲干擾性弱,為了提高信噪比,RS-232C總線標準不得不采用比較大的電壓擺幅。4)傳輸距離有限,最大傳輸距離標準值為15m,實際上也只能在50m左右。共七十七頁2024/12/9272.RS-422A接口(jiēkǒu)串行通信標準RS-422A是平衡型電壓數(shù)字(shùzì)接口電路的電氣標準。圖8-19RS-422A平衡驅(qū)動差分接收電路RS-422A電路由發(fā)送器、平衡連接電纜、電纜終端負載、接收器等部分組成。電路中規(guī)定只許有一個發(fā)送器,可有多個接收器。RS-422A與RS-232C的主要區(qū)別是,收發(fā)雙方的信號地不再共用。另外,每個方向用于傳輸數(shù)據(jù)的是兩條平衡導(dǎo)線。所謂“平衡”,是指輸出驅(qū)動器為雙端平衡驅(qū)動器。如果其中一條線為邏輯“1”狀態(tài),另一條線就為邏輯“0”,比采用單端不平衡驅(qū)動對電壓的放大倍數(shù)大一倍。驅(qū)動器輸出允許范圍是±2~±6V。共七十七頁2024/12/928差分電路能從地線干擾中拾取有效信號,差分接收器可以分辨200mV以上的電位差。若傳輸過程(guòchéng)中混入了干擾和噪聲,由于差分放大器的作用,可使干擾和噪聲相互抵消。因此可以避免或大大減弱地線干擾和電磁干擾的影響。RS-422A與RS-232C相比,信號傳輸距離遠,速度快。傳輸距離為120m時,傳輸速率可達l0Mbps。降低傳輸速率(90Kbps)時,傳輸距離可達1200m。
RS-422A與TTL電平轉(zhuǎn)換常用的芯片為傳輸線驅(qū)動器SN75174或MC3487和傳輸線接收器SN75175或MC3486。共七十七頁2024/12/9293.RS-485接口(jiēkǒu)RS-485是RS-422A的變型(biànxínɡ):RS-422A用于全雙工,而RS-485用于半雙工。RS-485接口示意圖如圖8-20所示。RS-485是一種多發(fā)送器標準,在通信線路上最多可以使用32對差分驅(qū)動器接收器。如果在一個網(wǎng)絡(luò)中連接的設(shè)備超過32個,還可以使用中間繼電器。RS-485的信號傳輸采用兩線間的電壓來表示邏輯1和邏輯0。由于發(fā)送方需要兩根傳輸線,接收方也需要兩根傳輸線。傳輸線采用差動信道,所以它的干擾抑制性極好。又因為它的阻抗低,無接地問題,所以傳輸距離可達1200m,傳輸速率可達1Mbps。圖8-20RS-485接口示意圖共七十七頁2024/12/930
RS-485是一點對多點的通信接口,一般采用雙絞線的結(jié)構(gòu)。普通的PC機一般不帶RS485接口,因此要使用RS-232C/RS-485轉(zhuǎn)換器。對于單片機可以通過芯片MAX485來完成TTL/RS-485的電平轉(zhuǎn)換。在計算機和單片機組成的RS-485通信系統(tǒng)中,下位機由單片機系統(tǒng)組成,主要完成工業(yè)現(xiàn)場信號的采集和控制。上位機為普通的PC機,負責(zé)監(jiān)視下位機的運行狀態(tài),并對其狀態(tài)信息進行集中處理,以圖文方式顯示下位機的工作(gōngzuò)狀態(tài)以及工業(yè)現(xiàn)場被控設(shè)備的工作(gōngzuò)狀況。系統(tǒng)中各節(jié)點(包括上位機)的識別是通過設(shè)置不同的站地址來實現(xiàn)的,廣泛使用于集散控制系統(tǒng)中。共七十七頁2024/12/931
RS-485采用一對雙絞線,輸入/輸出信號不能同時進行(半雙工),MAX485芯片的發(fā)送和接收功能轉(zhuǎn)換是由芯片的和DE端控制(kòngzhì)的。
RE=0時,允許接收;RE=1時,接收端R高阻。DE=1時,允許發(fā)送;DE=0時,發(fā)送端A和B高阻。在單片機系統(tǒng)中常把和DE接在一起用單片機的一個I/O線控制收發(fā)。圖8-22中當(dāng)P1.0=1時經(jīng)反相器為0,MAX485處于接收狀態(tài),當(dāng)P1.0=0時經(jīng)反相器為1,MAX485處于發(fā)送狀態(tài)。由于單片機各端口復(fù)位后處于高電平狀態(tài),圖8-22中P1.0=1經(jīng)反相器保證了上電時MAX485處于接收狀態(tài)。RS-232C串口對單片機串口接收和發(fā)送是透明的,無須控制。RS-485串口需由單片機控制收發(fā)。圖8-22中發(fā)送數(shù)據(jù)時P1.0=0,接收數(shù)據(jù)時P1.0=1。共七十七頁2024/12/932
MCS-51單片機內(nèi)部有1個功能很強的全雙工串行口,可同時發(fā)送(fāsònɡ)和接收數(shù)據(jù)。它有4種工作方式,可供不同場合使用。波特率由軟件設(shè)置,通過片內(nèi)的定時/計數(shù)器產(chǎn)生。接收、發(fā)送均可工作在查詢方式或中斷方式,使用十分靈活。8.280C51單片機的串行口共七十七頁2024/12/9338.2.1串行口的結(jié)構(gòu)(jiégòu)串行口內(nèi)部結(jié)構(gòu)如上圖,兩個物理上獨立的接收和發(fā)送(fāsònɡ)緩沖器,可同時收、發(fā)數(shù)據(jù)。兩個緩沖器共用一個特殊功能寄存器字節(jié)地址:SBUF(99H)。
控制寄存器共兩個:特殊功能寄存器SCON和PCON。共七十七頁2024/12/934SBUF是兩個在物理上獨立的接收、發(fā)送緩沖器,可同時發(fā)送、接收數(shù)據(jù)。兩個緩沖器只用一個字節(jié)地址(dìzhǐ)99H,可通過指令對SBUF的讀寫來區(qū)別是對接收緩沖器的操作還是對發(fā)送緩沖器的操作。CPU寫SBUF,就是修改發(fā)送緩沖器;讀SBUF,就是讀接收緩沖器。串行口對外也有兩條獨立的收發(fā)信號線RXD(P3.0)和TXD(P3.1),因此可以同時發(fā)送、接收數(shù)據(jù),實現(xiàn)全雙工傳送。串行口數(shù)據(jù)(shùjù)緩沖器SBUF共七十七頁2024/12/935串行口控制(kòngzhì)寄存器SCONSCON寄存器用來控制串行口的工作方式與狀態(tài),它可以位尋址。在復(fù)位(fùwèi)時所有位被清0,字節(jié)地址為98H。SCON的格式為:共七十七頁2024/12/936SM0、SM1——串行口4種工作方式的選擇(xuǎnzé)位
SM0SM1方式 功能說明
000
移位寄存器方式(用于擴展并行I/O口)
0118位異步收發(fā),波特率可變(由定時器控制)
1029位異步收發(fā),波特率為fosc/64或fosc/321139位異步收發(fā),波特率可變(由定時器控制)共七十七頁2024/12/937SM2——多機通信控制(kòngzhì)位
用于方式2或方式3中。當(dāng)串行口以方式2或方式3接收時,如果SM2=1,只有當(dāng)接收到的第9位數(shù)據(jù)(RB8)為“1”時,才將接收到的前8位數(shù)據(jù)送入SBUF,并置“1”RI,產(chǎn)生中斷請求;當(dāng)接收到的第9位數(shù)據(jù)(RB8)為“0”時,則將接收到的前8位數(shù)據(jù)丟棄。如果SM2=0,則不論第9位數(shù)據(jù)是“1”還是“0”,都將前8位數(shù)據(jù)送入SBUF中,并置“1”RI,產(chǎn)生中斷請求。在方式1時,如果SM2=1,則只有收到停止位時才會激活RI。在方式0時,SM2必須為0。共七十七頁2024/12/938
REN——允許串行接收位由軟件(ruǎnjiàn)置“1”或清“0”。
REN=1
允許串行口接收數(shù)據(jù)。
REN=0
禁止串行口接收數(shù)據(jù)。
TB8——發(fā)送的第9位數(shù)據(jù)方式2和3時,TB8是要發(fā)送的第9位數(shù)據(jù),可作為奇偶校驗位使用,也可作為地址幀或數(shù)據(jù)幀的標志。
=1為地址幀,=0為數(shù)據(jù)幀
RB8——接收到的第9位數(shù)據(jù)方式2和3時,RB8存放接收到的第9位數(shù)據(jù)。在方式1,如果SM2=0,RB8是接收到的停止位。在方式0,不使用RB8。共七十七頁2024/12/939
TI——發(fā)送中斷標志位
串行完一幀信息,由硬件置“1”,TI必須由軟件清“0”。
RI——接收中斷標志位
方式(fāngshì)0時,接收完第8位數(shù)據(jù)時,RI由硬件置1。其它工作方式,串行接收到停止位時,該位置“1”。RI=1,表示一幀數(shù)據(jù)接收完畢,并申請中斷,CPU從接收SBUF取走數(shù)據(jù)。該位狀態(tài)也可軟件查詢。RI必須由軟件清“0”。共七十七頁2024/12/940PCON單元(dānyuán)地址為97H,不能位尋址。其內(nèi)容如下:SMODGF1GF0PDIDL
D7D6D5D4D3D2D1D0
PCON
87H最高位SMOD為串行口波特率選擇位,當(dāng)SMOD=1時,方式(fāngshì)1、2、3的波特率加倍。電源控制寄存器PCON共七十七頁2024/12/9418.2.2
串行口的工作(gōngzuò)方式80C51單片機的串行口有4種工作方式,分別(fēnbié)是方式0、方式1、方式2和方式3。這些工作方式由SCON中的SM0、SMl兩位編碼決定。共七十七頁2024/12/942
1.方式(fāngshì)0同步移位寄存器輸入/輸出方式,常用于外接移位寄存器,以擴展并行I/O口。
8位數(shù)據(jù)為一幀,不設(shè)起始位和停止(tíngzhǐ)位,先發(fā)送或接收最低位。波特率固定為fosc/12。幀格式如下: 圖8-24方式0幀格式共七十七頁2024/12/9431.方式0發(fā)送當(dāng)CPU執(zhí)行一條將數(shù)據(jù)寫入發(fā)送緩沖器SBUF的指令時,產(chǎn)生一個正脈沖,串行口即把SBUF中的8位數(shù)據(jù)以fosc/12的固定波特率從RXD引腳串行輸出(shūchū),低位在先,TXD引腳輸出同步移位脈沖,發(fā)送完8位數(shù)據(jù)置“1”中斷標志位TI。時序如圖8-25所示。圖8-25方式0發(fā)送時序共七十七頁2024/12/944串行口擴展并行輸出口時,要有“串入并出”的移位寄存器配合(如74HC164或CD4094)。74HC164芯片引腳如圖8-26(a)所示。74HC164芯片各引腳功能如下(rúxià):Q0~Q7為并行輸出引腳;DSA、DSB為串行輸入引腳;
CR為清0引腳,低電平時,使74HC164輸出清0;CP為時鐘脈沖輸入引腳,在CP脈沖的上升沿作用下實現(xiàn)移位。在CP=0,CR=1時74HC164保持原來數(shù)據(jù)狀態(tài)不變。
(a)8位串入/并出移位寄存器74HC164(b)串行口與74HC164配合圖8-2674HC164及其與單片機串行口的配合共七十七頁2024/12/945例8-1單片機與74HC164的電路連接如圖8-27所示,在74HC164的并行輸出引腳接了8只發(fā)光二極管,要求(yāoqiú)利用74HC164的串入并出功能,將發(fā)光二極管依次輪流點亮,并不斷循環(huán)。試編程。圖8-27例8-1電路連接圖共七十七頁2024/12/946解:分析:將串行口設(shè)置為方式0(SCON=0x00),利用移位寄存器實現(xiàn)串口數(shù)據(jù)發(fā)送,數(shù)據(jù)發(fā)送通過寫SBUF寄存器完成,寫入SBUF的8位數(shù)據(jù)通過RXD逐位發(fā)送,移位脈沖通過TXD發(fā)送,這些工作全部由硬件完成,而且(érqiě)發(fā)送完畢后,硬件會自動將TI置位,因此,在設(shè)置好工作模式后,將待發(fā)送的字節(jié)寫入SBUF,然后等待TI置位即可。在發(fā)送下一字節(jié)前,TI要用軟件清零。設(shè)待發(fā)送的字節(jié)變量初值為0x80,將其通過_crol_函數(shù)循環(huán)移位并發(fā)送時,寫入SBUF的字節(jié)將會是00000001、00000010、00000100、00001000、00010000、00100000、01000000、10000000,LED將會實現(xiàn)向上滾動的顯示效果。共七十七頁2024/12/947程序設(shè)計(chénɡxùshèjì)如下:#include<reg52.h>#include<intrins.h>#defineuintunsignedint#defineucharunsignedcharvoidDelay(uintx)//延時子程序{uchari;while(x--){for(i=0;i<110;i++);}}voidmain()//主程序{ucharc=0x80;SCON=0x00;//串口為方式0,即移位寄存器輸入/輸出方式while(1){c=_crol_(c,1);//循環(huán)(xúnhuán)左移一位SBUF=c;//串行輸出while(TI==0);//等待發(fā)送結(jié)束TI=0;//TI清零Delay(400);//延時,實現(xiàn)狀態(tài)維持
}}共七十七頁2024/12/9482.方式0接收
REN=1,接收數(shù)據(jù),REN=0,禁止接收。
REN=1,允許接收。向串口的SCON寫入控制字(置為方式0,并置“1”REN位,同時RI=0)時,產(chǎn)生一個正脈沖,串行口即開始接收數(shù)據(jù)。RXD為數(shù)據(jù)輸入端,TXD為移位脈沖信號輸出端,接收器也以fosc/12的固定波特率采樣RXD引腳的數(shù)據(jù)信息,當(dāng)收到8位數(shù)據(jù)時置“1”RI,一幀數(shù)據(jù)接收完,可進行下一幀數(shù)據(jù)的接受(jiēshòu),時序如圖8-28所示。圖8-28方式0接收時序共七十七頁2024/12/949方式0下,SCON中的TB8、RB8位沒有用到,發(fā)送或接收完8位數(shù)據(jù)由硬件置“1”TI或RI,CPU響應(yīng)中斷。TI或RI須由用戶軟件清“0”,可用如下(rúxià)指令:
CLRTI ;TI位清“0” CLRRI ;RI位清“0”方式0時,SM2位必須為0。共七十七頁2024/12/950(a)8位并入/串出移位寄存器74HC165(b)串行口與74HC165配合圖8-2974HC165及其與單片機串行口的配合如果把能實現(xiàn)(shíxiàn)并入串出功能的移位寄存器(如74HC165或CD4014)與串行口配合使用,就可以把串行口變?yōu)椴⑿休斎肟谑褂谩9财呤唔?024/12/951例8-2電路(diànlù)連接如圖8-30所示,在AT89C51單片機串行口外接了一片8位并入/串出移位寄存器74HC165,P2口外接了8只發(fā)光二極管,74HC165并行輸入端連接8位撥碼開關(guān),要求編寫程序?qū)艽a開關(guān)的動作用發(fā)光二極管表示出來,開關(guān)打在ON位置時二極管亮,打在OFF位置時二極管不亮。圖8-30例8-2電路連接圖共七十七頁2024/12/952程序設(shè)計(chénɡxùshèjì)如下:#include<reg51.h>sbitclk=P1^0;voiddelay(intN) //延時子程序{inti,j;for(i=0;i<N;i++)for(j=0;j<i;j++);}voidmain(){intxx; while(1) { clk=0;clk=1;//發(fā)送移位脈沖SCON=0x10;//允許串行口接收數(shù)據(jù)while(RI==0) //等待發(fā)送
{;}xx=SBUF;//讀取數(shù)據(jù)RI=0; //清除接收中斷(zhōngduàn)標志P2=xx;delay(200);}}共七十七頁2024/12/953SM0、SM1=01方式1一幀數(shù)據(jù)為10位,1個起始位(0),8個數(shù)據(jù)位,1個停止位(1),先發(fā)送(fāsònɡ)或接收最低位。幀格式如下:2方式(fāngshì)1
方式1幀格式共七十七頁2024/12/954方式(fāngshì)1波特率=(2SMOD/32)×定時器T1的溢出率
SMOD為PCON寄存器的最高位的值(0或1)。式中,SMOD為PCON寄存器最高位(0或1)。定時器T1的溢出率就是溢出周期的倒數(shù),和所采用的定時器工作方式有關(guān)。當(dāng)定時器T1作為波特率發(fā)生器使用時,通常選用工作方式2,這是由于方式2可以自動(zìdòng)裝入定時時間常數(shù)(也即計數(shù)初值),可避免通過程序反復(fù)裝入初值所引起的定時誤差,使波特率更加穩(wěn)定,因此,這是一種最常用的方法。共七十七頁2024/12/955設(shè)計數(shù)的預(yù)置值(初始值)為x,那么每過256-x個機器周期,定時器溢出一次。為了避免因溢出而產(chǎn)生不必要的中斷,此時(cǐshí)應(yīng)禁止T1中斷。溢出周期為:溢出(yìchū)率為溢出(yìchū)周期的倒數(shù),所以共七十七頁2024/12/956在實際使用時,總是先確定(quèdìng)波特率,再計算定時器T1的計數(shù)初值(常在這種場合稱其為時間常數(shù)),然后進行定時器的初始化。表8-3定時器T1工作于方式2時常用的波特率及計數(shù)初值共七十七頁2024/12/957(1)方式1發(fā)送(fāsònɡ)
數(shù)據(jù)由TXD輸出。一幀信息為10位,1位起始位0,8位數(shù)據(jù)位(先低位)和1位停止位1。當(dāng)執(zhí)行一條數(shù)據(jù)寫發(fā)送緩沖器SBUF的指令,就啟動發(fā)送。圖中TX時鐘的頻率就是發(fā)送的波特率。發(fā)送開始時,內(nèi)部發(fā)送控制信號變?yōu)橛行?。將起始位向TXD輸出,此后,每經(jīng)過一個TX時鐘周期,便產(chǎn)生一個移位脈沖,并由TXD輸出一個數(shù)據(jù)位。8位數(shù)據(jù)位全部發(fā)送完畢后,置“1”TI。方式1發(fā)送數(shù)據(jù)的時序,如下圖所示。方式(fāngshì)1發(fā)送數(shù)據(jù)時的時序共七十七頁2024/12/958
(2)方式1接收
數(shù)據(jù)從RXD(P3.0)腳輸入。當(dāng)檢測到起始位的負跳變時,開始接收數(shù)據(jù)。定時控制信號有兩種:接收移位時鐘(RX時鐘,頻率和波特率相同)和位檢測器采樣脈沖(頻率是RX時鐘的16倍,1位數(shù)據(jù)期間,有16個采樣脈沖),當(dāng)采樣到RXD端從1到0的跳變時就啟動檢測器,接收的值是3次連續(xù)采樣(第7、8、9個脈沖時采樣)進行表決以確認是否是真正的起始位(負跳變)的開始。當(dāng)一幀數(shù)據(jù)接收完,須同時滿足兩個條件,接收才真正有效。⑴RI=0,即上一幀數(shù)據(jù)接收完成時,RI=1發(fā)出的中斷請求已被響應(yīng),SBUF中的數(shù)據(jù)已被取走,說明(shuōmíng)“接收SBUF”已空。⑵SM2=0或收到的停止位=1(方式1時,停止位已進入RB8),則收到的數(shù)據(jù)裝入SBUF和RB8(RB8裝入停止位),且置“1”中斷標志RI。若這兩個條件不同時滿足,收到的數(shù)據(jù)將丟失。共七十七頁2024/12/959圖8-33方式1接收數(shù)據(jù)時的時序共七十七頁2024/12/960例8-3電路連接如圖8-34所示,有兩片AT89C51單片機,要求甲單片機的K1按鍵次數(shù)可向乙單片機發(fā)送(fāsònɡ),并在乙單片機P0口所接的數(shù)碼管上顯示出來,顯示的數(shù)字范圍從0到9循環(huán)。試編程。圖8-34例8-3電路(diànlù)連接圖共七十七頁2024/12/961解:分析:兩單片機的串行口都工作在方式1。甲機負責(zé)(fùzé)對按鍵次數(shù)計數(shù),并將計數(shù)的次數(shù)通過串口發(fā)送給乙機;乙機則負責(zé)(fùzé)接收甲方送來的數(shù)據(jù),并將其在數(shù)碼管上顯示出來,因此兩片單片機的程序要分別編寫。本例中兩單片機均工作在串口方式1(即10位異步通信模式)下,程序需要首先進行串口初始化,主要任務(wù)是設(shè)置產(chǎn)生波特率的定時器1、串口控制和中斷控制,具體步驟如下:
①.設(shè)置串口模式(SCON);②.設(shè)置定時器1的工作方式(TMOD);③.計算定時器1的初值(THl/TLl);④.啟動(qǐdòng)定時器1(TR1);⑤.如果串口工作在中斷方式,還必須設(shè)置IE允許ES中斷,并編寫中斷例程。本例甲機程序中設(shè)SCON=0x40(即01000000),乙機程序則設(shè)SCON=0x50(即01010000),兩者都將串口設(shè)為方式1,但后者還需將REN(允許接收)位設(shè)置為1,因為乙機要接收串口數(shù)據(jù),而甲機不需要接收數(shù)據(jù)。共七十七頁2024/12/962方式1下波特率由定時器1控制,讓定時器1工作在自動重裝初值的方式2,波特率計算公式為:波特率=2SMOD×晶振頻率/[12×(256-THl)×32]設(shè)波特率為9600b/s,若fosc=11.0592MHz,波特率不倍增,即SMOD=0,PCON=0x00(SMOD為PCON的最高位)。由波特率計算公式可求得TH1=TL1=0xFD(即253)。本例中兩片單片機的串口均不工作在中斷方式,而是使用查詢方式,發(fā)送方通過循環(huán)查詢TI標志判斷是否(shìfǒu)發(fā)送完成,接收方通過循環(huán)查詢RI標志判斷是否接收到字節(jié)。因此發(fā)送前要將TI清零,接收前要將RI清零,如果發(fā)送成功,硬件會自動將TI置1,如果接收到新字節(jié),硬件也會將RI置1。在每一次收/發(fā)時都要注意通過程序?qū)I和RI再次清零。共七十七頁2024/12/963甲機程序:#include<reg52.h>#defineuintunsignedint#defineucharunsignedcharsbitK1=P1^0;ucharNumX=0x0a;voidmain(){SCON=0x40;//串口工作(gōngzuò)在方式1TMOD=0x20;//T1工作在方式2,8位自動重裝載方式PCON=0x00;//波特率不倍增TH1=0xfd;//波特率為9600b/sTL1=0xfd;TI=0;TR1=1;//啟動定時器1while(1){if(K1==0)//按鍵按下,計數(shù)次數(shù)(cìshù)加1{while(K1==0);NumX=(NumX+1)%11;SBUF=NumX;//發(fā)送計數(shù)次數(shù)while(TI==0);TI=0;}}}共七十七頁2024/12/964乙機程序:#include<reg52.h>#defineuintunsignedint#defineucharunsignedcharucharcodeDSY_CODE[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};voidmain(){P0=0x00;SCON=0x50;//串口工作在方式(fāngshì)1,允許接收數(shù)據(jù)TMOD=0x20;//T1工作在方式2,8位自動重裝載方式PCON=0x00;//波特率不倍增TH1=0xfd;//波特率為9600b/sTL1=0xfd;RI=0;TR1=1;啟動定時器1 while(1){if(RI){RI=0;if(SBUF>=0&&SBUF<=9)P0=DSY_CODE[SBUF];//顯示(xiǎnshì)接收的數(shù)據(jù)elseP0=0x00;}}}共七十七頁2024/12/9659位異步通信接口。每幀數(shù)據(jù)均為11位,1位起始位0,8位數(shù)據(jù)位(先低位),1位可程控的第9位數(shù)據(jù)和1位停止(tíngzhǐ)位。幀格式如下:3方式(fāngshì)2方式2波特率=(2SMOD/64)×fosc
共七十七頁2024/12/966發(fā)送前,先根據(jù)通訊協(xié)議由軟件設(shè)置TB8(例如,雙機通訊時的奇偶校驗位或多機通訊時的地址(dìzhǐ)/數(shù)據(jù)的標志位)。方式2發(fā)送數(shù)據(jù)波形如圖所示。(1)方式(fāngshì)2發(fā)送方式2、3發(fā)送數(shù)據(jù)時序波形共七十七頁2024/12/967SM0、SM1=10,且REN=1。數(shù)據(jù)由RXD端輸入,接收11位信息。當(dāng)位檢測到RXD從1到0的負跳變,并判斷起始位有效后,開始收一幀信息(xìnxī)。在接收器完第9位數(shù)據(jù)后,需滿足兩個條件,才能將接收到的數(shù)據(jù)送入SBUF。(1)RI=0,意味著接收緩沖器為空。(2)SM2=0或接收到的第9位數(shù)據(jù)位RB8=1時。當(dāng)上述兩個條件滿足時,接收到的數(shù)據(jù)送入SBUF(接收緩沖器),第9位數(shù)據(jù)送入RB8,并置“1”RI。若不滿足兩個條件,接收的信息將被丟棄。方式2接收數(shù)據(jù)的時序如圖所示。
(2)方式(fāngshì)2接收
共七十七頁2024/12/968方式(fāngshì)2接收數(shù)據(jù)的時序共七十七頁2024/12/969
SM0、SM1=11,串口為方式3。波特率可變的9位異步通訊方式,除波特率外,方式3和方式
溫馨提示
- 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)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 玩具租賃合同三篇
- 二零二五年度綠色能源個人承包工程合同范本2篇
- 二零二五年度林業(yè)碳匯項目樹木砍伐與碳交易合同樣本3篇
- 二零二五年度房地產(chǎn)項目合作開發(fā)合同(含配套設(shè)施)2篇
- 二零二五年度綠色節(jié)能型個人住宅裝修合同2篇
- 二零二五年度耐腐蝕水泵購銷與運輸服務(wù)合同3篇
- 教育行業(yè)教師專業(yè)發(fā)展總結(jié)
- 二零二五年度農(nóng)業(yè)灌溉水暖電設(shè)施分包合同范本3篇
- 家電行業(yè)營銷總結(jié)創(chuàng)新科技引領(lǐng)生活潮流
- 2025版私人土地租賃合同(含租賃合同變更)3篇
- 合同簽訂執(zhí)行風(fēng)險管控培訓(xùn)
- DB43-T 3022-2024黃柏栽培技術(shù)規(guī)程
- 成人失禁相關(guān)性皮炎的預(yù)防與護理
- 人教版(2024新版)七年級上冊數(shù)學(xué)第六章《幾何圖形初步》測試卷(含答案)
- 九宮數(shù)獨200題(附答案全)
- JT-T-496-2018公路地下通信管道高密度聚乙烯硅芯塑料管
- 食材配送投標方案技術(shù)標
- 再見深海合唱簡譜【珠海童年樹合唱團】
- 《聚焦客戶創(chuàng)造價值》課件
- PTW-UNIDOS-E-放射劑量儀中文說明書
- 保險學(xué)(第五版)課件全套 魏華林 第0-18章 緒論、風(fēng)險與保險- 保險市場監(jiān)管、附章:社會保險
評論
0/150
提交評論