第七章串行通信及其接口.ppt_第1頁
第七章串行通信及其接口.ppt_第2頁
第七章串行通信及其接口.ppt_第3頁
第七章串行通信及其接口.ppt_第4頁
第七章串行通信及其接口.ppt_第5頁
已閱讀5頁,還剩80頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、單片機(jī)應(yīng)用技術(shù)全校公共選修課辦公室:計(jì)A315-1答疑地點(diǎn):計(jì)A315-1E-mail:第7章 串行通信及其接口7.1串行通信的基本概念7.2 MCS-51的串行口7.3 串行口的控制7.4 串行口的應(yīng)用7.1 串行通信的基本概念返回本章首頁計(jì)算機(jī)與外部的信息交換稱為通信,基本的通信方式有兩種: 并行通信(parallel communication)和串行通信(serial communication)。 并行通信:所傳送數(shù)據(jù)的各位同時(shí)發(fā)送或接收。串行通信:所傳送數(shù)據(jù)的各位按順序一位一位地發(fā)送或接收。并行通信: 速度快,但成本高,傳輸距離受限;串行通信: 通信線少,傳輸距離遠(yuǎn),但速度較慢7.

2、1 串行通信的基本概念返回本章首頁圖7.1 并行通信與串行通信(a) 并行通信; (b) 串行通信 7.1 串行通信的基本概念一、串行通信按數(shù)據(jù)流傳輸方向分1 、單工(Simplex) 兩個(gè)傳輸站點(diǎn)之間一方只能發(fā)送,另一方只能接收TARB數(shù)據(jù)流2 、半雙工(Half Duplex) 兩個(gè)傳輸站點(diǎn)之間任何一方都能發(fā)送數(shù)據(jù),但由于設(shè)備之間只有一條通信線路,在同一時(shí)刻只能在一個(gè)方向上傳輸數(shù)據(jù),如對(duì)講機(jī)。TATB數(shù)據(jù)流RR串行通信的基本概念一、串行通信按數(shù)據(jù)流傳輸方向分兩個(gè)傳輸站點(diǎn)之間雙方使用不同的通信線路,同時(shí)發(fā)送和接收數(shù)據(jù).如電話。3 、全雙工(Full Duplex)TARBRT數(shù)據(jù)流數(shù)據(jù)流串行

3、通信的基本概念二、串行通信的兩種基本工作方式異步方式、同步方式。 所有串行通信都需要一個(gè)時(shí)鐘信號(hào)來作為數(shù)據(jù)的定時(shí)參考。發(fā)送器和接收器用時(shí)鐘來決定何時(shí)發(fā)送和讀取每一位數(shù)據(jù)。 根據(jù)采用統(tǒng)一時(shí)鐘還是本地局部時(shí)鐘,分為同步傳輸和異步傳輸兩種。 同步傳輸用一個(gè)時(shí)鐘確定一個(gè)數(shù)據(jù)位。 異步傳輸用多個(gè)時(shí)鐘確定一個(gè)數(shù)據(jù)位。串行通信的基本概念二、串行通信的兩種基本工作方式 不發(fā)送數(shù)據(jù)時(shí),傳輸線呈現(xiàn)高電平(MARK狀態(tài))。1 、異步方式(Asynchronous) 采用不同的編碼方案,發(fā)送字符可為5,6,7,或8位;采用奇校驗(yàn),保證“1”的個(gè)數(shù)為奇數(shù);采用偶校驗(yàn),保證1的個(gè)數(shù)為偶數(shù); 異步串行通信數(shù)據(jù)格式:串行通信

4、的基本概念二、串行通信的兩種基本工作方式1 、異步方式(Asynchronous)例: 發(fā)送一個(gè)由8位數(shù)據(jù)位構(gòu)成的字符45H,奇校 驗(yàn)、1位停止位。停止位可以是1, 1.5或2位。異步傳輸先發(fā)送低位(LSB)異步傳輸?shù)臅r(shí)鐘定時(shí)方法:數(shù)據(jù)(61H)100011停止位發(fā)送方利用內(nèi)部時(shí)鐘來決定什么時(shí)候發(fā)送每個(gè)位接收方檢測(cè)開始信號(hào)的下降沿,然后利用它的內(nèi)部時(shí)鐘從每一位的中間接收該位00起始位LSBMSB串行通信的基本概念串行通信的基本概念2 、同步方式(Synchronous)格式:同步字符 字符1 字符2 字符n 校驗(yàn)字符數(shù)據(jù)塊 不發(fā)送數(shù)據(jù)時(shí),傳輸線呈現(xiàn)高電平(MARK狀態(tài))。 同步字符可以為1個(gè)或

5、2個(gè)。根據(jù)雙方約定,接收方監(jiān)測(cè)到同步字符后,接收被發(fā)送的字符流;將接收到的字符轉(zhuǎn)換成并行數(shù)據(jù)。內(nèi)同步、外同步。同步傳輸?shù)臅r(shí)鐘定時(shí)方法 : 數(shù)據(jù)(61H)1位1100001先發(fā)送高位(MSB) 發(fā)送方在時(shí)鐘信號(hào)的下降沿發(fā)送字節(jié)接收方在時(shí)鐘信號(hào)的上升沿接收字節(jié)時(shí)鐘串行通信的基本概念0同步通信的幀格式:同步傳輸需要定義一個(gè)幀的開始和結(jié)束。通常用1個(gè)同步字符(標(biāo)志符)來表示。串行通信的基本概念三、串行傳送速率在串行通信中,常用波特率來表示數(shù)據(jù)傳輸?shù)乃俾省2ㄌ芈剩好棵雮魉偷亩M(jìn)制位數(shù)。單位:波特 Bd如串行通信規(guī)定:一個(gè)串行字符包括1個(gè)起始位,7個(gè)數(shù)據(jù)位,1個(gè)奇偶校驗(yàn)位和1個(gè)停止位,共10個(gè)數(shù)據(jù)位構(gòu)成,

6、每秒傳送120個(gè)字符,則波特率為: 10位/字符120字符/秒=1200位/秒 傳送每一位占用的時(shí)間為: 1秒/1200=0.833毫秒 波特率因子:發(fā)送/接收時(shí)鐘與波特率之比。7.2 MCS-51的串行口7.2.1 串行口的結(jié)構(gòu)7.2.2 串行口的工作方式7.2.3 波特率的計(jì)算返回本章首頁MCS-51有一個(gè)可編程的全雙工串行通信接口,可作為通用異步接收/發(fā)送器(UART- Universal Asychronous Receiver/Transmitter),也可作為同步移位寄存器。其幀格式可為8位、10位、11位,并可設(shè)置多種不同的波特率。它通過引腳RXD和TXD與外界進(jìn)行通信。7.2.

7、1 串行口的結(jié)構(gòu)MCS-51內(nèi)部有兩個(gè)物理上獨(dú)立的接收、發(fā)送緩沖器SBUF。SBUF屬于特殊功能寄存器。一個(gè)用于存放接收到的數(shù)據(jù),另一個(gè)用于存放欲發(fā)送的數(shù)據(jù),可同時(shí)發(fā)送和接收數(shù)據(jù)。兩個(gè)緩沖器共用一個(gè)地址99H,通過對(duì)SBUF的讀、寫指令來區(qū)別是對(duì)接收緩沖器還是對(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ù)。串行口的結(jié)構(gòu)如圖7.3所示。7.2.1 串行口的結(jié)構(gòu)圖7.3 串行口結(jié)構(gòu)示意圖7.2.1 串行口的結(jié)構(gòu)7.2.1

8、 串行口的結(jié)構(gòu)1串行口控制寄存器SCON圖7-6 SCON格式SCON位地址SM0SM1SM2RENTB8RB8TIRI9FH9EH9DH9CH9BH9AH99H98H D7D6D5 D4 D3 D2 D1 D0該寄存器的字節(jié)地址為98H,可位尋址。SCON格式如圖7-6所示。其各位的含義如下:SM0、SM1串行口4種工作方式的選擇位。串行口的4種工作方式如表7.1所示。表8.1 串行口的4種工作方式1串行口控制寄存器SCONSM2多機(jī)通信控制位,用于方式2或方式3中。1串行口控制寄存器SCON當(dāng)串行口以方式2或方式3接收時(shí),如果SM2=1,只有當(dāng)接收到的第9位數(shù)據(jù)(RB8)為“1”時(shí),才將接

9、收到的前8位數(shù)據(jù)送入SBUF,并將RI置“1”,產(chǎn)生中斷請(qǐng)求;當(dāng)接收到的第9位數(shù)據(jù)(RB8)為“0”時(shí),則將接收到的前8位數(shù)據(jù)丟棄。如果SM2=0,則不論第9位數(shù)據(jù)是“1”還是“0”,都將前8位數(shù)據(jù)送入SBUF中,并將RI置“1”,產(chǎn)生中斷請(qǐng)求。在方式1時(shí),如果SM2=1,則只有收到停止位時(shí)才會(huì)激活RI。在方式0時(shí),SM2必須為0。REN 允許串行接收位,由軟件置“1”或清“0”。REN=1時(shí),允許串行口接收數(shù)據(jù);REN=0時(shí),禁止串行口接收數(shù)據(jù)。1串行口控制寄存器SCONTB8 發(fā)送的第9位數(shù)據(jù)。方式2和方式3時(shí),TB8是要發(fā)送的第9位數(shù)據(jù),可作為奇偶校驗(yàn)位使用,也可作為地址幀或數(shù)據(jù)幀的標(biāo)志

10、。其中,TB8=1為地址幀,TB8=0為數(shù)據(jù)幀。RB8 接收到的第9位數(shù)據(jù)。方式2和方式3時(shí),RB8存放接收到的第9位數(shù)據(jù)。在方式1,如果SM2=0,RB8是接收到的停止位。在方式0,不使用RB8。TI 發(fā)送中斷標(biāo)志位。發(fā)送中,TI必須保持零電平。方式0時(shí),串行發(fā)送第8位數(shù)據(jù)結(jié)束時(shí)由硬件置“1”。其它工作方式,串行口發(fā)送停止位的開始時(shí)置“1”。TI=1,表示一幀數(shù)據(jù)發(fā)送結(jié)束,可供軟件查詢,也可申請(qǐng)中斷。CPU響應(yīng)中斷后,在中斷服務(wù)程序中向SBUF寫入要發(fā)送的下一幀數(shù)據(jù),TI必須由軟件再清“0”。 1串行口控制寄存器SCONRI 接收中斷標(biāo)志位。接收中RI必須保持零電平。方式0時(shí),接收完第8位數(shù)

11、據(jù)時(shí),RI由硬件置1。其它工作方式,串行口接收到停止位時(shí),該位置“1”。RI=1,表示一幀數(shù)據(jù)接收完畢,并申請(qǐng)中斷,要求CPU從接收SBUF取走數(shù)據(jù)。該位的狀態(tài)也可供軟件查詢。如果再接收,RI必須由軟件再清“0”。2特殊功能寄存器PCON圖7-7 PCON格式返回本節(jié)其字節(jié)地址為87H,沒有位尋址功能。PCON的格式如圖7-7所示,其中與串行接口有關(guān)的只有D7位。SMODD7D6D5D4D3D2D1D0 SMOD:波特率選擇位。當(dāng)SMOD=1時(shí),比SMOD=0時(shí)的波特率加倍,因此也稱SMOD位為波特率倍增位。7.2.2 串行口的工作方式串行口工作方式方式0為同步移位寄存器輸入/輸出方式,常用于

12、外接移位寄存器,以擴(kuò)展并行I/O口。8位數(shù)據(jù)為一幀,不設(shè)起始位和停止位,先發(fā)送或接收最低位。波特率固定為fosc/12。方式0發(fā)送 當(dāng)CPU執(zhí)行一條將數(shù)據(jù)寫入發(fā)送緩沖器SBUF的指令時(shí),產(chǎn)生一個(gè)正脈沖,串行口即把SBUF中的8位數(shù)據(jù)以fosc/12的固定波特率從RXD引腳串行輸出,低位在先,TXD引腳輸出同步移位脈沖,發(fā)送完8位數(shù)據(jù)后將中斷標(biāo)志位TI置“1”。時(shí)序如圖7.8所示。7.2.2 串行口的工作方式1方式0圖7.8 方式0發(fā)、收時(shí)序7.2.2 串行口的工作方式RI方式0接收 方式0接收時(shí),REN為串行口接收允許接收控制位,REN=0,禁止接收。方式0下,SCON中的TB8、RB8位沒有

13、用到,發(fā)送或接收完8位數(shù)據(jù)由硬件將TI或中斷標(biāo)志位RI置“1”,CPU響應(yīng)中斷。TI或RI標(biāo)志位須由用戶軟件清“0”,可采用如下指令:CLR TI;TI位清“0”CLR RI ;RI位清“0”方式0時(shí),SM2位(多機(jī)通信控制位)必須為0。7.2.2 串行口的工作方式2 方式17.2.2 串行口的工作方式方式1用于數(shù)據(jù)的串行發(fā)送和接收。TXD腳和RXD腳分別用于發(fā)送和接收數(shù)據(jù)。方式1收、發(fā)一幀的數(shù)據(jù)為10位,1位起始位(0),8位數(shù)據(jù)位,1位停止位(1),先發(fā)送或接收最低位。波特率由下式確定:方式1波特率=(2SMOD/32)定時(shí)器T1的溢出率SMOD為PCON寄存器的最高位的值(0或1)。方式

14、1發(fā)送 方式1輸出時(shí),數(shù)據(jù)位由TXD端輸出。當(dāng)CPU執(zhí)行一條數(shù)據(jù)寫發(fā)送緩沖器SBUF的指令時(shí),就啟動(dòng)發(fā)送。圖7.9(a)TX時(shí)鐘的頻率就是發(fā)送的波特率。發(fā)送開始時(shí),內(nèi)部發(fā)送控制信號(hào)變?yōu)橛行?,將起始位向TXD輸出。此后,每經(jīng)過一個(gè)TX時(shí)鐘周期,便產(chǎn)生一個(gè)移位脈沖,并由TXD輸出一個(gè)數(shù)據(jù)位。8位數(shù)據(jù)位全部發(fā)送完畢后,中斷標(biāo)志位TI置“1”。TI必須由用戶清0,以便下一次發(fā)送。2 方式17.2.2 串行口的工作方式圖7.9 方式1發(fā)、收時(shí)序(a) 發(fā)送時(shí)序;(b) 接收時(shí)序方式1接收 接收數(shù)據(jù)的時(shí)序如圖7.9(b)所示。當(dāng)CPU采樣到RXD端從1到0的跳變時(shí)(3次采樣中至少2次有效),開始接收數(shù)據(jù)。

15、一幀數(shù)據(jù)接收完畢以后,必須同時(shí)滿足以下兩個(gè)條件,這次接收才真正有效,然后RI自動(dòng)置1。(1) RI=0。(2) SM2=0或收到的停止位=1。若這兩個(gè)條件不滿足,則收到的數(shù)據(jù)不能裝入SBUF,該幀數(shù)據(jù)將丟失。中斷標(biāo)志RI必須由用戶清0,以便下一次接收。通常情況下,串口以方式1工作時(shí),SM2=0。 2 方式17.2.2 串行口的工作方式3 方式27.2.2 串行口的工作方式方式2為9位異步通信方式。每幀數(shù)據(jù)均為11位,1位起始位0,8位數(shù)據(jù)位(先低位),1位可程控的第9位數(shù)據(jù)和1位停止位。方式2的波特率由下式確定:方式2波特率=(2SMOD/64)fosc方式2發(fā)送前,先根據(jù)通信協(xié)議由軟件設(shè)置S

16、CON中的TB8(例如,雙機(jī)通信時(shí)的奇偶校驗(yàn)位或多機(jī)通信時(shí)的地址/數(shù)據(jù)的標(biāo)志位)。方式2發(fā)送數(shù)據(jù)波形如圖7.10所示。圖7.10 方式2發(fā)送時(shí)序方式2接收 SM0、SM1=10,且REN=1。數(shù)據(jù)由RXD端輸入,接收11位信息。當(dāng)位檢測(cè)邏輯采樣到RXD引腳從1到0的負(fù)跳變,并判斷起始位有效后,便開始接收一幀信息。在接收完第9位數(shù)據(jù)后,需滿足以下兩個(gè)條件,才能將接收到的數(shù)據(jù)送入SBUF。 (1) RI=0,意味著接收緩沖器為空。(2) SM2=0或接收到的第9位數(shù)據(jù)位RB8=1。3 方式27.2.2 串行口的工作方式當(dāng)上述兩個(gè)條件滿足時(shí),接收到的數(shù)據(jù)送入SBUF(接收緩沖器),第9位數(shù)據(jù)送入SC

17、ON中的RB8,并將RI置“1”。若不滿足這兩個(gè)條件,則接收的信息將被丟棄。串行口方式2接收數(shù)據(jù)的時(shí)序波形如圖7.11所示。由方式2的TI,RI也必須由用戶清0,才能進(jìn)行下一次的發(fā)送和接收。3 方式27.2.2 串行口的工作方式圖7.11 方式2接收時(shí)序4方式3 當(dāng)SM0SM1=11時(shí),串行口工作在方式3。方式3為波特率可變的9位異步通信方式,除了波特率外,方式3和方式2相同。 方式3的波特率由下式確定: 方式3波特率=(2SMOD/32)定時(shí)器T1的溢出率 返回本節(jié)方式3發(fā)送和接收數(shù)據(jù)的時(shí)序波形見方式2的圖(圖7.10和圖7.11)。7.2.3 波特率的計(jì)算表7-2 波特率計(jì)算公式方式0和方

18、式2的波特率是固定的;方式1和方式3的波特率可由定時(shí)器T1的溢出率來確定。7.2.3 波特率的計(jì)算(1) 方式0時(shí),波特率固定為時(shí)鐘頻率fosc的1/12,且不受SMOD位的值的影響。若fosc=12 MHz,則波特率為fosc/12,即1 Mb/s。(2) 方式2時(shí),波特率與SMOD位的值有關(guān)。方式2波特率=(2SMOD/64)fosc若fosc=12 MHz,則當(dāng)SMOD=0時(shí),波特率=187.5 kb/s;當(dāng)SMOD=1時(shí),波特率=375 kb/s。(3) 串行口工作在方式1或方式3時(shí),常用定時(shí)器T1作為波特率發(fā)生器,其波特率為:波特率=(2SMOD/64)T1的溢出率7.2.3 波特率

19、的計(jì)算實(shí)際設(shè)定波特率時(shí),T1常設(shè)置為方式2定時(shí)(自動(dòng)裝初值),這種方式不僅操作方便,也可避免因軟件重裝初值而帶來的定時(shí)誤差。實(shí)際使用時(shí),經(jīng)常根據(jù)已知波特率和時(shí)鐘頻率來計(jì)算T1的初值。為避免繁雜的初值計(jì)算,常用的波特率和初值間的關(guān)系列成表7.3,以供查用。表7.3 定時(shí)器T1產(chǎn)生的常用波特率7.2.3 波特率的計(jì)算表7.3中有兩點(diǎn)需要注意:7.2.3 波特率的計(jì)算 時(shí)鐘振蕩頻率為12 MHz或6 MHz時(shí),表中初值和相應(yīng)的波特率之間有一定誤差。例如,F(xiàn)DH的對(duì)應(yīng)的理論值是10416波特(時(shí)鐘6 MHz ),與9600波特相差816波特。消除誤差可以通過調(diào)整時(shí)鐘振蕩頻率fosc來實(shí)現(xiàn)。例如采用的時(shí)

20、鐘振蕩頻率為11.0592 MHz。 如果串行通信選用很低的波特率,例如,波特率選為55,可將定時(shí)器T1設(shè)置為方式1定時(shí)。但在這種情況下,T1溢出時(shí),需要在中斷服務(wù)程序中重新裝入初值。中斷響應(yīng)時(shí)間和執(zhí)行指令時(shí)間會(huì)使波特率產(chǎn)生一定的誤差,可用改變初值的方法加以調(diào)整。例:若51單片機(jī)的時(shí)鐘振蕩頻率為11.0592 MHz,選用T1為方式2定時(shí)作為波特率發(fā)生器,波特率為2400 b/s,求初值。 結(jié)果可直接從表7.3中查到,為F4H。這里因時(shí)鐘振蕩頻率選為11.0592 MHz,計(jì)算過程中無余數(shù),可使初值為整數(shù),從而產(chǎn)生精確的波特率。7.2.3 波特率的計(jì)算4. 波特率的自動(dòng)檢測(cè) 在分布式多波特率通

21、信系統(tǒng)中,常常要求從設(shè)備在軟件上能做到波特率隨主設(shè)備自動(dòng)調(diào)整,使系統(tǒng)適應(yīng)性更強(qiáng),智能化程度更高。當(dāng)然,一般情況下,波特率自動(dòng)檢測(cè)的范圍僅限于標(biāo)準(zhǔn)波特率。7.2.3 波特率的計(jì)算常用實(shí)現(xiàn)波特率自動(dòng)檢測(cè)的方法有3種: (1) 從設(shè)備啟動(dòng)通信程序后,逐一選擇標(biāo)準(zhǔn)波特率,向主設(shè)備發(fā)送某個(gè)事先約定的握手代碼,直到收到主設(shè)備發(fā)回的確認(rèn)碼,即可判定通信波特率。 (2) 利用串行異步通信每一幀起始位為低電平、停止位為高電平,用定時(shí)器記錄每幀長度,從而判定系統(tǒng)通信波特率。 (3) 利用主設(shè)備發(fā)送某一特殊碼型,從設(shè)備收到的碼值會(huì)隨主設(shè)備的波特率不同而不同,當(dāng)從機(jī)收到約定的特殊碼型時(shí),便可確認(rèn)系統(tǒng)的通信波特率。7.

22、2.3 波特率的計(jì)算7.3 串行口的控制7.3.1 主從機(jī)間的通信7.3.2 RS-232C串行接口標(biāo)準(zhǔn)及應(yīng)用返回本章首頁7.3.1 主從機(jī)間的通信1雙機(jī)串行異步通信利用串行口可以實(shí)現(xiàn)兩臺(tái)機(jī)器間的全雙工通信。如圖7.12所示。 設(shè)甲乙兩臺(tái)機(jī)器按全雙工方式收發(fā)ASCII碼字符,數(shù)據(jù)位為8位,其中最高一位用來作奇偶校驗(yàn)位,采用偶校驗(yàn)方式,要求傳送的波特率為1200 b/s。假設(shè)發(fā)送緩沖區(qū)OUTBUF首址為片內(nèi)RAM 60H,接收緩沖區(qū)INBUF首址為RAM 70H,時(shí)鐘頻率fosc=6 MHz,試編寫有關(guān)的通信程序。 圖7.12 雙機(jī)通信系統(tǒng) 1) 確定通信方式根據(jù)系統(tǒng)要求,通信雙方要相互約定:

23、7位ASCII碼加1位校驗(yàn)位共8位數(shù)據(jù),故可采用串行口方式1進(jìn)行通信。51單片機(jī)的奇偶校驗(yàn)位P是當(dāng)累加器A中“1”的個(gè)數(shù)為奇數(shù)時(shí)P=1,為偶數(shù)時(shí)P=0。直接把P的值放入ASCII碼的最高位(奇偶校驗(yàn)位),即為偶校驗(yàn)方式。 7.3.1 主從機(jī)間的通信1雙機(jī)串行異步通信2) 計(jì)算定時(shí)器T1的計(jì)數(shù)初值對(duì)于串行口方式1,波特率由定時(shí)器T1的溢出率和SMOD決定,定時(shí)器T1采用工作方式2,可以避免計(jì)數(shù)溢出后用軟件重裝定時(shí)初值。取SMOD=0,按式(5.4)可求得計(jì)數(shù)初值X 為7.3.1 主從機(jī)間的通信1雙機(jī)串行異步通信也可以通過查表7.3確定X=F3H。3) 確定相關(guān)寄存器參數(shù)(1) 串行口控制寄存器S

24、CON。 SM0、SM1=01時(shí)為方式1,在SM2=0和REN=1條件下,允許接收數(shù)據(jù),其余各位均取0, 則SCON)=01010000B=50H。 (2) 電源控制寄存器PCON。 7.3.1 主從機(jī)間的通信1雙機(jī)串行異步通信 由于SMOD=0,因此(PCON)=00H(同系統(tǒng)復(fù)位以后的狀態(tài),可不賦值)。(3) 確定定時(shí)器方式寄存器TMOD。3) 確定相關(guān)寄存器參數(shù)1雙機(jī)串行異步通信 由于只用T1,且為定時(shí)方式2,因此(TMOD)=00100000B=20H。請(qǐng)注意: 串行通信端口的接收中斷RI、發(fā)送中斷TI共用一個(gè)中斷向量(0023H),因此,串行口中斷請(qǐng)求后,中斷服務(wù)程序首先要判斷是RI

25、、TI當(dāng)中的哪個(gè)請(qǐng)求中斷。4) 編寫有關(guān)的通信程序 主程序: ORG 0000H LJMP MAINORG 0023H ; 串行中斷入口LJMP SINOUT 1雙機(jī)串行異步通信ORG 0030H MAIN:MOV TMOD,20H ;定時(shí)器T1設(shè)為方式2 MOV TL1, 0F3H ;裝入定時(shí)器初值MOV TH1, 0F3H ; 8位重裝值SETB TR1 ; 啟動(dòng)定時(shí)器T1MOV SCON,50H ; 串行口設(shè)為方MOV R0,60H ; OUTBUF首址MOV R1,70H ; INBUF首址SETB EA ; 開中斷 SETB ES ; 允許串行口中斷 LCALL SOUT ; 先發(fā)送

26、1個(gè)字符 LJMP $ ; 等待中斷 4) 編寫有關(guān)的通信程序1雙機(jī)串行異步通信 ; 中斷服務(wù)程序SINOUT: JNB RI,SEND ;若不是接收,則轉(zhuǎn)向;發(fā)送 LCALL SIN ; 若是接收,則調(diào)用接;收子程序RETI ; 中斷返回SEND: LCALL SOUT ; 若是發(fā)送,則調(diào)用發(fā);送子程序 RETI ; 中斷返回 ; 發(fā)送子程序 4) 編寫有關(guān)的通信程序1雙機(jī)串行異步通信; 發(fā)送子程序 SOUT: MOV A,R0 ; 取發(fā)送數(shù)據(jù)到A MOV C,P ; 偶校驗(yàn)位賦予C MOV ACC.7,C ; 送入ASCII碼最高 ;位中 INC R0 ; 修改發(fā)送數(shù)據(jù)指針 MOV SBU

27、F,A ; 發(fā)送數(shù)據(jù) CLR TI ; 清發(fā)送中斷標(biāo)志 RET ; 子程序返回 4) 編寫有關(guān)的通信程序1雙機(jī)串行異步通信 ; 接收子程序SIN: MOV A,SUBF ; 讀入接收緩沖區(qū)內(nèi)容 JNB P,EXIT ; 若P=0,則接收正確 ERROR: ; 若P=1,則接收錯(cuò)誤 ; 出錯(cuò)處理EXIT: ANL A,7FH ; 刪去校驗(yàn)位 MOV R1,A ; 存入接收緩沖區(qū) INC R1 ; 修改接收緩沖區(qū)指針 CLR RI ; 清接收中斷標(biāo)志 RET ; 子程序返回 4) 編寫有關(guān)的通信程序1雙機(jī)串行異步通信圖7-16 兩臺(tái)8751互傳數(shù)據(jù)1雙機(jī)串行異步通信2. 主從式多機(jī)通信7.3.1

28、主從機(jī)間的通信51系列單片機(jī)的多機(jī)通信通常采用主從式多機(jī)通信方式。在主從式多機(jī)系統(tǒng)中,有一臺(tái)主機(jī),多臺(tái)從機(jī),利用這種方式可以構(gòu)成各種分布式控制系統(tǒng),其系統(tǒng)結(jié)構(gòu)如圖7.17所示。其中,n個(gè)從機(jī)各有惟一的一個(gè)地址碼,地址碼是識(shí)別從機(jī)身份的標(biāo)志。主機(jī)發(fā)出的信息可以傳送到各個(gè)從機(jī)或傳送到某個(gè)指定的從機(jī),而從機(jī)發(fā)出的信息只能被主機(jī)接收。 圖7.17 主從式多機(jī)通信系統(tǒng) 2. 主從式多機(jī)通信7.3.1 主從機(jī)間的通信多機(jī)通信中,要保證主機(jī)與從機(jī)間進(jìn)行可靠的通信,通信接口必須具有從機(jī)身份的識(shí)別功能。串行口控制寄存器SCON中的SM2位就是為滿足這一要求而設(shè)置的多機(jī)通信控制位。2. 主從式多機(jī)通信7.3.1

29、主從機(jī)間的通信串行口以方式2或方式3實(shí)現(xiàn)多機(jī)通信,主機(jī)發(fā)出的信息有兩類,一類為地址信息,用來確定需要和主機(jī)通信的從機(jī),其特征是主機(jī)串行傳送的第9位信息TB8為1,即主機(jī)令TB8=1呼叫從機(jī); 另一類是數(shù)據(jù)信息,特征是串行傳送的第9位信息TB8為0,實(shí)現(xiàn)主從間的數(shù)據(jù)傳輸。對(duì)從機(jī)來說,也要利用SCON寄存器中的SM2位的控制功能來區(qū)分地址信息和數(shù)據(jù)信息。2. 主從式多機(jī)通信7.3.1 主從機(jī)間的通信在接收時(shí),令RI=0,若SM2為1,則僅當(dāng)接收到的第9位信息RB8為1時(shí),接收到的一幀信息才有效,接收到的數(shù)據(jù)才裝入SBUF,置位RI,請(qǐng)求CPU對(duì)主機(jī)發(fā)出的信息進(jìn)行處理。若SM2為1,接收到的第9位信

30、息RB8為0時(shí),則接收到的一幀信息無效。若從機(jī)令SM2為0,則接收到一個(gè)數(shù)據(jù)后,不管第9位信息RB8是0還是1,都將數(shù)據(jù)裝入接收緩沖器SBUF,并置位中斷標(biāo)志RI,請(qǐng)求CPU處理。因此,對(duì)于從機(jī)來說,在接收地址時(shí),應(yīng)使SM2=1,以便接收到主機(jī)發(fā)來的地址碼,從而確定主機(jī)是否打算和從機(jī)通信。一經(jīng)確認(rèn)后,從機(jī)應(yīng)使SM2=0,以便接收數(shù)據(jù)或識(shí)別下一個(gè)地址碼。 2. 主從式多機(jī)通信7.3.1 主從機(jī)間的通信主從式多機(jī)通信的一般過程如下:2. 主從式多機(jī)通信7.3.1 主從機(jī)間的通信(1) 使所有從機(jī)的SM2位置1(此時(shí),所有的從機(jī)處于監(jiān)聽狀態(tài)),以便接收主機(jī)發(fā)來的地址碼。(2) 主機(jī)發(fā)出一幀地址信息,

31、其中包括8位需要與之通信的從機(jī)地址碼,第9位信息TB8為1。(3) 所有從機(jī)接收到地址幀后,各自將所接收到的地址與本機(jī)地址相比較,若與本機(jī)地址相同,則該從機(jī)便使SM2位清0以接收主機(jī)隨后發(fā)來的數(shù)據(jù)信息; 對(duì)于地址不符合的從機(jī),仍保持SM2=1的狀態(tài)(仍處于監(jiān)聽狀態(tài)),對(duì)主機(jī)隨后發(fā)來的數(shù)據(jù)不予理睬,直至主機(jī)發(fā)送一個(gè)新的地址幀。(4) 主機(jī)給已被尋址的從機(jī)發(fā)送控制指令和數(shù)據(jù)(數(shù)據(jù)幀的第9位為0)。2. 主從式多機(jī)通信7.3.1 主從機(jī)間的通信RS-232C是美國電子工業(yè)協(xié)會(huì)EIA(Electronic Industry Association)于1962年制定的一種串行通信接口標(biāo)準(zhǔn)(1987年1月

32、修改的RS-232C標(biāo)準(zhǔn)稱為RS-232D,不過兩者差別不大,因此仍可用舊標(biāo)準(zhǔn))。RS-232C標(biāo)準(zhǔn)規(guī)定了在串行通信中數(shù)據(jù)終端設(shè)備(簡稱DTE,如個(gè)人計(jì)算機(jī))和數(shù)據(jù)通信設(shè)備(簡稱DCE,如調(diào)制解調(diào)器)間物理連接線路的機(jī)械、電氣特性,以及通信格式和約定,該標(biāo)準(zhǔn)是異步串行通信中應(yīng)用最廣泛的總線標(biāo)準(zhǔn)。7.3.2 RS-232C串行接口標(biāo)準(zhǔn)及應(yīng)用1. RS-232C的引腳功能7.3.2 RS-232C串行接口標(biāo)準(zhǔn)及應(yīng)用完整的RS-232C接口由主信道、輔信道共22根連線組成,不過該標(biāo)準(zhǔn)對(duì)引腳的機(jī)械特性并未做嚴(yán)格規(guī)定,一般采用標(biāo)準(zhǔn)的25芯D型插座(通過25芯D型插頭連接),其接口信號(hào)名稱及主要信號(hào)流向如

33、圖7-18(a)所示。盡管輔信道也可用于串行通信,但速率低,很少用。此外,當(dāng)兩個(gè)設(shè)備以異步方式通信時(shí),也無需使用主信道中所有的聯(lián)絡(luò)信號(hào),因此RS-232C接口也可以采用9芯D型插座(如微機(jī)系統(tǒng)中的串行口),其接口信號(hào)名稱及主要信號(hào)流向如圖7-18(b)所示。1. RS-232C的引腳功能圖7-18 RS-232C接口插座(a)(a) 25芯D型插座RS-232C接口信號(hào)名稱及主要信號(hào)流向;1. RS-232C的引腳功能圖7-18 RS-232C接口插座(b)(b) 9芯D型插座上的RS-232C接口信號(hào)名稱及主要信號(hào)流向7.3.2 RS-232C串行接口標(biāo)準(zhǔn)及應(yīng)用2. RS-232C串行接口標(biāo)

34、準(zhǔn)中主信道重要信號(hào)的含義:7.3.2 RS-232C串行接口標(biāo)準(zhǔn)及應(yīng)用RS-232C串行接口標(biāo)準(zhǔn)中主信道重要信號(hào)的含義如下:TXD:串行數(shù)據(jù)發(fā)送引腳,輸出。RXD:串行數(shù)據(jù)接收引腳,輸入。DSR:數(shù)據(jù)設(shè)備(DCE)準(zhǔn)備就緒信號(hào),輸入,主要用于接收聯(lián)絡(luò)。當(dāng)DSR信號(hào)有效時(shí),表明本地的數(shù)據(jù)設(shè)備(DCE)處于就緒狀態(tài)。DTR:數(shù)據(jù)終端(DTE)準(zhǔn)備就緒信號(hào),輸出,用于DTE向DCE發(fā)送聯(lián)絡(luò)。當(dāng)DTR信號(hào)有效時(shí),表示DTE可以接收來自DCE的數(shù)據(jù)。2. RS-232C串行接口標(biāo)準(zhǔn)中主信道重要信號(hào)的含義:7.3.2 RS-232C串行接口標(biāo)準(zhǔn)及應(yīng)用RTS:發(fā)送請(qǐng)求,輸出。當(dāng)DTE需要向DCE發(fā)送數(shù)據(jù)時(shí),

35、向接收方(DCE)輸出RTS信號(hào)。CTS:發(fā)送允許或清除發(fā)送,輸入。作為“清除發(fā)送”信號(hào)使用時(shí),由DCE輸出,當(dāng)CTS有效時(shí),DTE將終止發(fā)送(如DCE忙或有重要數(shù)據(jù)要回送DTE);而作為“允許發(fā)送”信號(hào)使用時(shí),情況剛好相反:當(dāng)接收方接收到RTS信號(hào)后進(jìn)入接收狀態(tài),接收方準(zhǔn)備就緒后向請(qǐng)求發(fā)送方回送CTS信號(hào),發(fā)送方檢測(cè)到CTS有效后,啟動(dòng)發(fā)送過程。3. 電平轉(zhuǎn)換7.3.2 RS-232C串行接口標(biāo)準(zhǔn)及應(yīng)用為保證數(shù)據(jù)的可靠傳送,RS-232C標(biāo)準(zhǔn)規(guī)定發(fā)送數(shù)據(jù)線TXD和接收數(shù)據(jù)線RXD均采用EIA電平,即傳送數(shù)字“1”時(shí),傳輸線上的電平在3V15V之間;傳送數(shù)字“0”時(shí),傳輸線上的電平在315V之

36、間。但單片機(jī)串行口采用正邏輯的TTL電平,這樣就存在TTL電平與EIA電平之間的轉(zhuǎn)換問題。例如當(dāng)單片機(jī)與PC機(jī)進(jìn)行串行通信時(shí),PC機(jī)的COM1或COM2口發(fā)送引腳TXD信號(hào)是EIA電平,不能直接與單片機(jī)串行口接收端RXD引腳相連;同樣單片機(jī)串行口發(fā)送端TXD引腳輸出信號(hào)采用正邏輯的TTL電平,也不能直接與PC機(jī)串行口COM1或COM2的RXD端相連。3. 電平轉(zhuǎn)換7.3.2 RS-232C串行接口標(biāo)準(zhǔn)及應(yīng)用RS-232C與TTL之間電平轉(zhuǎn)換芯片主要有傳輸線發(fā)送器MC1488(把TTL電平轉(zhuǎn)成EIA電平)、傳輸線接收器MC1489(把EIA電平轉(zhuǎn)成TTL電平)、MAX232以及Sipex202/

37、232系列RS-232電平轉(zhuǎn)換專用芯片。其中MAX232以及Sipex202/232系列芯片集成度高,單5V電源(內(nèi)置了電壓倍增電路及負(fù)電源電路)工作,只需外接5個(gè)容量為0.11F的小電容即可完成兩路RS-232與TTL電平之間的轉(zhuǎn)換,是單片機(jī)應(yīng)用系統(tǒng)中最常用的RS-232電平轉(zhuǎn)換芯片。MAX232電平轉(zhuǎn)換芯片的引腳如圖7-19所示,內(nèi)部結(jié)構(gòu)及典型應(yīng)用電路如圖7-20所示。圖7-19 MAX232管腳圖 3. 電平轉(zhuǎn)換7.3.2 RS-232C串行接口標(biāo)準(zhǔn)及應(yīng)用圖7-20 MAX232芯片的典型應(yīng)用電路 3. 電平轉(zhuǎn)換7.3.2 RS-232C串行接口標(biāo)準(zhǔn)及應(yīng)用MAX232的推薦工作條件見表7

38、.4。 3. 電平轉(zhuǎn)換7.3.2 RS-232C串行接口標(biāo)準(zhǔn)及應(yīng)用表7.4 MAX232的推薦工作條件 MCS-51單片機(jī)利用MAX232與PC機(jī)通信典型電路如圖所示。 4. RS-232C的連接7.3.2 RS-232C串行接口標(biāo)準(zhǔn)及應(yīng)用4. RS-232C的連接實(shí)際上,RS-232C接口聯(lián)絡(luò)信號(hào)沒有嚴(yán)格定義,通過RS-232C接口標(biāo)準(zhǔn)通信的兩個(gè)設(shè)備可能只使用其中的一部分聯(lián)絡(luò)信號(hào),在極端情況下也可能不使用聯(lián)絡(luò)信號(hào),只通過TXD、RXD和GND三根連線實(shí)現(xiàn)串行通信。此外,聯(lián)絡(luò)信號(hào)的含義和連接方式也可能因設(shè)備種類的不同而有差異。正因如此,通過RS-232C接口通信的設(shè)備可能遇到不兼容的問題。7.

39、3.2 RS-232C串行接口標(biāo)準(zhǔn)及應(yīng)用1. 應(yīng)用方式0擴(kuò)展MCS-51 芯片的輸出口在“串入并出”芯片(如74LS164、 74LS165、 74HC595等)的配合下,通過串行口方式0可擴(kuò)展MCS-51 芯片的輸出口。當(dāng)使用74LS164芯片擴(kuò)展輸出口時(shí),MCS-51 芯片的RXD引腳接74LS164芯片的串行數(shù)據(jù)輸入端,TXD引腳接74LS164芯片的移位脈沖輸入端CLK,如圖7-21(a)所示。74HC595芯片功能比74LS164更強(qiáng),采用16引腳封裝,提供串行數(shù)據(jù)輸出端SDO,級(jí)聯(lián)方便(將前一片的串行數(shù)據(jù)輸出端SDO接下一片的串行數(shù)據(jù)輸入端SDI即可),當(dāng)輸出允許為高電平時(shí),并行數(shù)據(jù)輸出端QAQH為高組態(tài)。7.4 串行接口的應(yīng)用圖7-21 利用串行口方式0擴(kuò)展輸出口(a) 通過74LS164“串入并出”芯片擴(kuò)展輸出口;(b) 通過74HC595“串入并出”芯片擴(kuò)展輸出口1. 應(yīng)用方式0擴(kuò)展MCS-51 芯片的輸出口當(dāng)使用74HC595芯片擴(kuò)展輸出口時(shí),MCS-51芯片的R

溫馨提示

  • 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)論