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