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

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1第7章

AT89S51單片機的串行口12AT89S51單片機片內串行口的基本工作原理與串行口有關的特殊功能寄存器串行口的4種工作方式串行口多機通信的工作原理串行通信中的各種接口標準雙機串行通信的軟件編程設計

內容概要3AT89S51單片機片內的串行口為全雙工的通用異步收發(fā)(UART)的串行口。

所謂全雙工就是兩個單片機之間串行數(shù)據(jù)可同時雙向傳輸。所謂異步通信,就是收、發(fā)雙方使用各自的時鐘控制發(fā)送和接收過程,這樣可省去連接收、發(fā)雙方的一條同步時鐘信號線,使得異步串行通信連接更加簡單且容易實現(xiàn)。47.1串行口的結構內部結構如圖7-1。有兩個物理上獨立的接收、發(fā)送緩沖器SBUF(屬于特殊功能寄存器),可同時發(fā)送、接收數(shù)據(jù)。

發(fā)送緩沖器只能寫入不能讀出,接收緩沖器只能讀出不能寫入,兩個緩沖器共用一個特殊功能寄存器字節(jié)地址(99H)??刂萍拇嫫鞴灿袃蓚€:特殊功能寄存器SCON和PCON。455圖7-1串行口的內部結構圖67.1.1串行口控制寄存器SCON字節(jié)地址98H,可位尋址,位地址為98H~9FH。格式如圖7-2所示。

圖7-2串行口控制寄存器SCON的格式介紹SCON中各位的功能。67(1)SM0、SM1——串行口4種工作方式選擇位SM0、SM1兩位編碼所對應的4種工作方式見表7-1。8(2)SM2——多機通信控制位多機通信是在方式2和方式3下進行。當串口以方式2或方式3接收時:當SM2

=

1,則只有當接收到的第9位數(shù)據(jù)(RB8)為“1”時,才使RI置“1”,產生中斷請求,并將接收到的前8位數(shù)據(jù)送入SBUF。當接收到的第9位數(shù)據(jù)(RB8)為“0”時,則將接收到的前8位數(shù)據(jù)丟棄。當SM2

=

0時,則不論第9位數(shù)據(jù)是1還是0,都將前8位數(shù)據(jù)送入SBUF中,并使RI置1,產生中斷請求。在方式1時,如果SM2

=

1,則只有收到有效的停止位時才會激活RI。在方式0時,SM2必須為0。89(3)REN——允許串行接收位由軟件置“1”或清“0”。REN=1,允許串行口接收數(shù)據(jù)。REN=0,禁止串行口接收數(shù)據(jù)。(4)TB8——發(fā)送的第9位數(shù)據(jù)方式2和方式3,TB8是要發(fā)送的第9位數(shù)據(jù),其值由軟件置“1”或清“0”。在雙機串行通信時,一般作為奇偶校驗位使用;在多機串行通信中用來表示主機發(fā)送的是地址幀還是數(shù)據(jù)幀,TB8=1為地址幀,TB8=0為數(shù)據(jù)幀。910(5)RB8——接收的第9位數(shù)據(jù)方式2和方式3,RB8存放接收到的第9位數(shù)據(jù)。在方式1,如SM2

=

0,RB8是接收到的停止位。在方式0,不使用RB8。(6)TI——發(fā)送中斷標志位方式0,串行發(fā)送的第8位數(shù)據(jù)結束時TI由硬件置“1”,在其他方式中,串行口發(fā)送停止位的開始時置TI為“1”。TI

=1,表示一幀數(shù)據(jù)發(fā)送結束。TI的狀態(tài)可供軟件查詢,也可申請中斷。CPU響應中斷后,在中斷服務程序中向SBUF寫入要發(fā)送的下一幀數(shù)據(jù)。TI必須由軟件清“0”1011(7)RI——接收中斷標志位

方式0時,接收完第8位數(shù)據(jù)時,RI由硬件置“1”。在其他工作方式中,串行接收到停止位時,該位置“1”。RI

=

1,表示一幀數(shù)據(jù)接收完畢,并申請中斷,要求CPU從接收SBUF取走數(shù)據(jù)。該位的狀態(tài)也可供軟件查詢。RI必須由軟件清“0”。SCON的所有位都可進行位操作清“0”或置“1”。127.1.2特殊功能寄存器PCON字節(jié)地址為87H,不能位尋址。格式如圖7-3所示。

12圖7-3特殊功能寄存器PCON的格式13下面介紹PCON中各位功能。僅最高位SMOD與串口有關,其他各位的功能已在第2章的節(jié)電工作方式一節(jié)中作過介紹。SMOD:波特率選擇位例如,方式1的波特率計算公式為 方式1波特率

=

×

定時器T1的溢出率當SMOD

=

1時,要比SMOD

=

0時的波特率加倍,所以也稱SMOD位為波特率倍增位。13147.2串行口的4種工作方式4種工作方式由特殊功能寄存器SCON中SM0、SM1位定義。7.2.1方式0方式0為同步移位寄存器輸入/輸出方式。該方式并不用于兩個AT89S51單片機之間的異步串行通信,而用于串行口外接移位寄存器,擴展并行I/O口。8位數(shù)據(jù)為一幀,無起始位和停止位,先發(fā)送或接收最低位。波特率固定,為fosc/12。幀格式如圖7-4所示。圖7-4方式0的幀格式14151.方式0發(fā)送(1)方式0發(fā)送過程當CPU執(zhí)行一條將數(shù)據(jù)寫入發(fā)送緩沖器SBUF的指令時,產生一個正脈沖,串行口開始把SBUF中的8位數(shù)據(jù)以fosc/12的固定波特率從RXD引腳串行輸出,低位在先,TXD引腳輸出同步移位脈沖,發(fā)送完8位數(shù)據(jù),中斷標志位TI置“1”。發(fā)送時序如圖7-5所示。151616圖7-5方式0發(fā)送時序17(2)方式0發(fā)送應用舉例圖7-6所示為方式0發(fā)送的一個具體應用,通過串行口外接8位串行輸入并行輸出移位寄存器74LS164,擴展兩個8位并行輸出口的具體電路。方式0發(fā)送時,串行數(shù)據(jù)由P3.0(RXD端)送出,移位脈沖由P3.1(TXD端)送出。在移位脈沖的作用下,串行口發(fā)送緩沖器的數(shù)據(jù)逐位地從P3.0串行移入74LS164中。1718圖7-6外接串入并出移位寄存器74LS164擴展的并行輸出口18192.方式0接收(1)方式0接收過程方式0接收,REN為串行口允許接收控制位,REN=0,禁止接收;REN

=

1,允許接收。當向SCON寄存器寫入控制字(設置為方式0,并使REN位置1,同時RI

=

0)時,產生一個正脈沖,串行口開始接收數(shù)據(jù)。引腳RXD為數(shù)據(jù)輸入端,TXD為移位脈沖信號輸出端,接收器以fosc/12的固定波特率采樣RXD引腳的數(shù)據(jù)信息,當接收完8位數(shù)據(jù)時,中斷標志RI置1,表示一幀數(shù)據(jù)接收完畢,可進行下一幀數(shù)據(jù)的接收,時序如圖7-7所示。1920圖7-7方式0接收時序21(2)方式0接收應用舉例圖7-8為串行口外接兩片8位并行輸入串行輸出的寄存器74LS165擴展兩個8位并行輸入口的電路。當74LS165的S/L*端由高到低跳變時,并行輸入端的數(shù)據(jù)被置入寄存器;當S/L*=

1,且時鐘禁止端(第15腳)為低電平時,允許TXD(P3.1)串行移位脈沖輸入,這時在移位脈沖作用下,數(shù)據(jù)由右向左方向移動,以串行方式進入串行口的接收緩沖器中。212222圖7-8擴展74LS165作為并行輸入口23在圖7-8中:TXD(P3.1)作為移位脈沖輸出與所有75LS165的移位脈沖輸入端CP相連;RXD(P3.0)作為串行數(shù)據(jù)輸入端與74LS165的串行輸出端QH相連;P1.0與S/L*相連,用來控制74LS165的串行移位或并行輸入;74LS165的時鐘禁止端(第15腳)接地,表示允許時鐘輸入。當擴展多個8位輸入口時,相鄰兩芯片的首尾(QH與SIN)相連。2324在方式0,SCON中的TB8、RB8位沒有用到,發(fā)送或接收完8位數(shù)據(jù)由硬件使TI或RI中斷標志位置“1”,CPU響應TI或RI中斷,在中斷服務程序中向發(fā)送SBUF中送入下一個要發(fā)送的數(shù)據(jù)或從接收SBUF中把接收到的1B存入內部RAM中。注意,TI或RI標志位必須由軟件清“0”,采用如下指令: CLR TI ;TI位清“0” CLR RI ;RI位清“0”方式0時,SM2位(多機通信控制位)必須為0。24257.2.2方式1方式1為雙機串行通信方式,如圖7-9所示。當SM0、SM1=01時,串行口設為方式1的雙機串行通信。TXD腳和RXD腳分別用于發(fā)送和接收數(shù)據(jù)。

25圖7-9方式1雙機串行通信的連接電路26方式1一幀數(shù)據(jù)為10位,1個起始位(0),8個數(shù)據(jù)位,1個停止位(1),先發(fā)送或接收最低位。幀格式如圖7-10所示。

圖7-10方式1的幀格式方式1為波特率可變的8位異步通信接口。波特率由下式確定:

方式1波特率

=

×定時器T1的溢出率式中,SMOD為PCON寄存器的最高位的值(0或1)。26271.方式1發(fā)送方式1輸出時,數(shù)據(jù)位由TXD端輸出,發(fā)送一幀信息為10位:1位起始位0,8位數(shù)據(jù)位(先低位)和1位停止位1。當CPU執(zhí)行一條數(shù)據(jù)寫SBUF的指令,就啟動發(fā)送。發(fā)送時序見圖7-11。圖7-11中TX時鐘的頻率就是發(fā)送的波特率。發(fā)送開始時,內部發(fā)送控制信號變?yōu)橛行?,將起始位向TXD腳(P3.1)輸出,此后每經過一個TX時鐘周期,便產生一個移位脈沖,并由TXD引腳輸出一個數(shù)據(jù)位。8位數(shù)據(jù)位全部發(fā)送完畢后,中斷標志位TI置1。2728

28圖7-11方式1發(fā)送時序292.方式1接收方式1接收時(REN

=

1),數(shù)據(jù)從RXD(P3.0)引腳輸入。當檢測到起始位的負跳變,則開始接收。接收時序見圖7-12。接收時,定時控制信號有兩種,一種是接收移位時鐘(RX時鐘),它的頻率和傳送的波特率相同,另一種是位檢測器采樣脈沖,頻率是RX時鐘的16倍。以波特率的16倍速率采樣RXD腳狀態(tài)。當采樣到RXD端從1到0的負跳變時就啟動檢測器,接收的值是3次連續(xù)采樣(第7、8、9個脈沖時采樣)取兩次相同的值,以確認起始位(負跳變)的開始,較好地消除干擾引起的影響。2930圖7-12方式1接收時序3131當確認起始位有效時,開始接收一幀信息。每一位數(shù)據(jù),也都進行3次連續(xù)采樣(第7、8、9個脈沖采樣),接收的值是3次采樣中至少兩次相同的值。當一幀數(shù)據(jù)接收完畢后,同時滿足以下兩個條件,接收才有效。(1)RI

=

0,即上一幀數(shù)據(jù)接收完成時,RI

=

1發(fā)出的中斷請求已被響應,SBUF中的數(shù)據(jù)已被取走,說明“接收SBUF”已空。(2)SM2

=

0或收到的停止位

=

1(方式1時,停止位已進入RB8),則將接收到的數(shù)據(jù)裝入SBUF和RB8(裝入的是停止位),且中斷標志RI置“1”。若不同時滿足兩個條件,收的數(shù)據(jù)不能裝入SBUF,該幀數(shù)據(jù)將丟棄。327.2.3方式2方式2和方式3,為9位異步通信接口。每幀數(shù)據(jù)為11位,1位起始位0,8位數(shù)據(jù)位(先低位),1位可程控為1或0的第9位數(shù)據(jù)和1位停止位。方式2、方式3幀格式如圖7-13所示。

3233圖7-13方式2、方式3的幀格式341.方式2發(fā)送發(fā)送前,先根據(jù)通信協(xié)議由軟件設置TB8(如奇偶校驗位或多機通信的地址/數(shù)據(jù)標志位),然后將要發(fā)送的數(shù)據(jù)寫入SBUF,即啟動發(fā)送。TB8自動裝入第9位數(shù)據(jù)位,逐一發(fā)送。發(fā)送完畢,使TI位置“1”。發(fā)送時序如圖7-14所示。

3435圖7-14方式2和方式3發(fā)送時序36【例7-1】方式2發(fā)送在雙機串行通信中的應用下面的發(fā)送中斷服務程序,以TB8作為奇偶校驗位,偶校驗發(fā)送。數(shù)據(jù)寫入SBUF之前,先將數(shù)據(jù)的偶校驗位寫入TB8(設第2組的工作寄存器區(qū)的R0作為發(fā)送數(shù)據(jù)區(qū)地址指針)。36372.方式2接收SM0、SM1=10,且REN

=

1時,以方式2接收數(shù)據(jù)。數(shù)據(jù)由RXD端輸入,接收11位信息。當位檢測邏輯采樣到RXD的負跳變,判斷起始位有效,便開始接收一幀信息。在接收完第9位數(shù)據(jù)后,需滿足以下兩個條件,才能將接收到的數(shù)據(jù)送入SBUF(接收緩沖器)。(1)RI

=

0,意味著接收緩沖器為空。(2)SM2

=

0或接收到的第9位數(shù)據(jù)位RB8

=

1。當滿足上述兩個條件時,收到的數(shù)據(jù)送SBUF(接收緩沖器),第9位數(shù)據(jù)送入RB8,且RI置“1”。若不滿足這兩個條件,接收的信息將被丟棄。串行口方式2和方式3接收時序如圖7-15所示。373838圖7-15方式2和方式3接收時序39【例7-2】方式2接收在雙機通信中的應用。本例對例7-1發(fā)送的數(shù)據(jù)進行偶校驗接收,程序如下(設1組寄存器區(qū)的R0為數(shù)據(jù)緩沖區(qū)指針)。394040417.2.4方式3SM0、SM1=11時,方式3。為波特率可變的9位異步通信方式,除了波特率外,方式3和方式2相同。方式3發(fā)送和接收時序如圖7-14和圖7-15所示。方式3的波特率由下式確定:41427.3多機通信多個單片機可利用串行口進行多機通信,經常采用如圖7-16所示的主從式結構。系統(tǒng)中有1個主機(單片機或其他有串行接口的微機)和多個單片機組成的從機系統(tǒng)。主機的RXD與所有從機的TXD端相連,TXD與所有從機的RXD端相連。從機地址分別為01H、02H和03H。42圖7-16多機通信系統(tǒng)示意圖43主從式是指多機系統(tǒng)中,只有一個主機,其余全是從機。主機發(fā)送的信息可以被所有從機接收,任何一個從機發(fā)送的信息,只能由主機接收。從機和從機之間不能進行直接通信,只能經主機才能實現(xiàn)。多機通信的工作原理:要保證主機與所選擇的從機通信,須保證串口有識別功能。SCON中的SM2位就是為滿足這一條件設置的多機通信控制位。其工作原理是在串行口以方式2(或方式3)接收時,若SM2

=

1,則表示進行多機通信,可能以下兩種情況:4344(1)從機接收到的主機發(fā)來的第9位數(shù)據(jù)RB8=1時,前8位數(shù)據(jù)才裝入SBUF,并置中斷標志RI

=

1,向CPU發(fā)出中斷請求。在中斷服務程序中,從機把接收到的SBUF中的數(shù)據(jù)存入數(shù)據(jù)緩沖區(qū)中。(2)從機接收到的第9位數(shù)據(jù)RB8=0時,則不產生中斷標志RI=1,不引起中斷,從機不接收主機發(fā)來的數(shù)據(jù)。若SM2

=

0,則接收的第9位數(shù)據(jù)不論是0還是1,從機都將產生RI

=

1中斷標志,接收到的數(shù)據(jù)裝入SBUF中。45應用這一特性,可實現(xiàn)AT89S51單片機的多機通信。多機通信的工作過程:(1)各從機初始化程序允許從機的串行口中斷,將串行口編程為方式2或方式3接收,即9位異步通信方式,且SM2和REN位置“1”,使從機處于多機通信且只接收地址幀的狀態(tài)。4546(2)在主機和某個從機通信之前,先將從機地址(即準備接收數(shù)據(jù)的從機)發(fā)送給各個從機,接著才傳送數(shù)據(jù)(或命令),主機發(fā)出的地址幀信息的第9位為1,數(shù)據(jù)(或命令)幀的第9位為0。當主機向各從機發(fā)送地址幀時,各從機的串行口接收到的第9位信息RB8為1,且由于各從機的SM2=1,則RI置“1”,各從機響應中斷,在中斷服務子程序中,判斷主機送來的地址是否和本機地址相符合,若為本機地址,則該從機SM2位清“0”,準備接收主機的數(shù)據(jù)或命令;若地址不相符,則保持SM2

=

1。47(3)接著主機發(fā)送數(shù)據(jù)(或命令)幀,數(shù)據(jù)幀的第9位為0。此時各從機接收到的RB8

=

0。只有與前面地址相符合的從機(即SM2位已清“0”的從機)才能激活中斷標志位RI,從而進入中斷服務程序,接收主機發(fā)來的數(shù)據(jù)(或命令);與主機發(fā)來的地址不相符的從機,由于SM2保持為1,又RB8

=

0,因此不能激活中斷標志RI,就不能接受主機發(fā)來的數(shù)據(jù)幀。4748從而保證主機與從機間通信的正確性。此時主機與建立聯(lián)系的從機已經設置為單機通信模式,即在整個通信中,通信的雙方都要保持發(fā)送數(shù)據(jù)的第9位(即TB8位)為0,防止其他的從機誤接收數(shù)據(jù)。(4)結束數(shù)據(jù)通信并為下一次的多機通信做好準備。在多機系統(tǒng),每個從機都被賦予唯一的地址。例如,圖7-16三個從機的地址可設為:01H、02H、03H。還要預留1~2個“廣播地址”,它是所有從機共有的地址,例如將“廣播地址”設為00H。當主機與從機的數(shù)據(jù)通信結束后,一定要將從機再設置為多機通信模式,以便進行下一次的多機通信。49這時要求與主機正在進行數(shù)據(jù)傳輸?shù)膹臋C必須隨時注意,一旦接收的數(shù)據(jù)第9位(RB8)為“1”,說明主機傳送的不再是數(shù)據(jù),而是地址,這個地址就有可能是“廣播地址”。當收到“廣播地址”后,便將從機的通信模式再設置成多機模式,為下一次的多機通信做好準備。49507.4波特率的制定方法串行通信,收、發(fā)雙方發(fā)送或接收的波特率必須一致。4種工作方式。方式0和方式2的波特率是固定的;方式1和方式3的波特率是可變的,由T1溢出率確定。7.4.1波特率的定義波特率的定義:串行口每秒發(fā)送(或接收)的位數(shù)。設發(fā)送一位所需要的時間為T,則波特率為1/T。定時器的不同工作方式,得到的波特率的范圍不一樣,這是由T1在不同工作方式下計數(shù)位數(shù)的不同所決定。50517.4.2定時器T1產生波特率的計算與串行口的工作方式有關。(1)方式0時,波特率固定為時鐘頻率fosc的1/12,不受SMOD位值的影響。若fosc

=

12MHz,波特率為1Mbit/s。(2)方式2時,波特率僅與SMOD位的值有關。

若fosc

=

12MHz:

SMOD

=

0,波特率

=

187.5kbit/s;SMOD

=

1,波特率

為375kbit/s。(3)方式1或方式3定時,常用T1作為波特率發(fā)生器,其關系式為5152由式(7-1)見,T1溢出率和SMOD的值共同決定波特率。在實際設定波特率時,T1常設置為方式2定時(自動裝初值),即TL1作為8位計數(shù)器,TH1存放備用初值。這種方式操作方便,也避免因軟件重裝初值帶來的定時誤差。設定時器T1方式2的初值為X,則有

52(7-1)(7-2)53將式(7-2)代入式(7-1),則有(7-3)由式(7-3)可見,波特率隨fosc、SMOD和初值X而變化。實際使用時,經常根據(jù)已知波特率和時鐘頻率fosc來計算T1的初值X。為避免繁雜的初值計算,常用的波特率和初值X間的關系常列成表7-2的形式,以供查用。5354

表7-2 用定時器T1產生的常用波特率5455對表7-2有兩點需要注意:(1)在使用的時鐘振蕩頻率fosc為12MHz或6MHz時,將初值X和fosc帶入式(7-3)中計算出的波特率有一定誤差。消除誤差可采用時鐘頻率11.0592MHz。(2)如果選用很低的波特率,如波特率選為55,可將定時器T1設置為方式1定時。但在這種情況下,T1溢出時,需在中斷服務程序中重新裝入初值。中斷響應時間和執(zhí)行指令時間會使波特率產生一定的誤差,可用改變初值的方法加以調整。5556【例7-3】

若時鐘頻率為11.0592MHz,選用T1的方式2定時作為波特率發(fā)生器,波特率為2

400bit/s,求初值。設T1為方式2定時,選SMOD

=

0。將已知條件帶入式(7-3)中

從中解得X

=

244

=

F4H。只要把F4H裝入TH1和TL1,則T1產生的波特率為2400bit/s。該結果也可直接從表7-2中查到。這里時鐘振蕩頻率選為11.0592MHz,就可使初值為整數(shù),從而產生精確的波特率。56577.5串行口的應用利用AT89S51單片機的串行口可以實現(xiàn)AT89S51單片機之間的點對點串行通信、多機通信以及AT89S51單片機與PC機間的單機或多機通信。限于篇幅,本節(jié)僅介紹AT89S51單片機之間的雙機串行通信的硬件接口和軟件設計。7.5.1串行通信接口標準AT89S51串行口的輸入、輸出均為TTL電平??垢蓴_性差,傳輸距離短,傳輸速率低。為提高串行通信的可靠性,增大串行通信的距離和提高傳輸速率,都采用標準串行接口,如RS-232、RS-422A、RS-485等。根據(jù)通信距離和抗干擾性要求,可選擇TTL電平傳輸、RS-232C、RS-422A、RS-485串口進行串行數(shù)據(jù)傳輸。57581.TTL電平通信接口如果兩個單片機相距在1.5m之內,它們的串行口可直接相連,接口如圖7-9所示。甲機RXD與乙機TXD端相連,乙機RXD與甲機TXD端相連。2.RS-232C雙機通信接口RS-232C標準規(guī)定電纜長度限定在≤15m,如果雙機通信距離在1.5m~15m之間時,可利用RS-232C標準接口實現(xiàn)點對點的雙機通信,接口電路如圖7-17所示。RS-232C的最高數(shù)傳速率為20kbit/s。足以覆蓋個人計算機使用的50~9600bit/s范圍。傳送的數(shù)字量采用負邏輯,且與地對稱。其中:邏輯“1”:-3~-15V;邏輯“0”:+3~+15V。

5859圖7-17RS-232C雙機通信接口電路60由于單片機的引腳為TTL電平,與RS-232C標準的電平互不兼容,所以單片機使用RS-232C標準串行通信時,必須進行TTL電平與RS-232C標準電平之間的轉換。電平轉換常采用美國MAXIM(美信)公司的MAX232A,它是串行全雙工發(fā)送器/接收器接口電路芯片,可實現(xiàn)TTL電平到RS-232C電平、RS-232C電平到TTL電平的轉換。MAX232A的引腳見圖7-18,內部結構及外部元件如圖7-19所示。芯片內部有自升壓的電平倍增電路,可將+5V轉換成-10V~+10V,滿足了RS-232C標準對邏輯“1”和邏輯“0”的電平要求。工作時僅需單一的+5V電源。其片內有2個發(fā)送器,2個接收器,有TTL信號輸入/RS-232C輸出的功能,以及RS-232C輸入/TTL輸出的功能。

61圖7-18MAX232A的引腳62圖7-19MAX232的內部結構及外部元件633.RS-422A雙機通信接口RS-232C有明顯缺點:傳輸速率低、通信距離短、接口處信號容易產生串擾等。國際上又推出了RS-422A標準。與RS-232C的主要區(qū)別是,收發(fā)雙方的信號地不再共地,RS-422A采用了平衡驅動和差分接收的方法。用于數(shù)據(jù)傳輸?shù)氖莾蓷l平衡導線,這相當于兩個單端驅動器。兩條線上傳輸?shù)男盘栯娖?,當一個表示邏輯“1”時,另一條一定為邏輯“0”。若傳輸中,信號中混入干擾和噪聲(共模形式),由于差分接收器的作用,就能識別有用信號并正確接收傳輸?shù)男畔ⅲ⑹垢蓴_和噪聲相互抵消。643.RS-422A雙機通信接口RS-232C有明顯缺點:傳輸速率低、通信距離短、接口處信號容易產生串擾等。國際上又推出了RS-422A標準。與RS-232C的主要區(qū)別是,收發(fā)雙方的信號地不再共地,RS-422A采用了平衡驅動和差分接收的方法。用于數(shù)據(jù)傳輸?shù)氖莾蓷l平衡導線,這相當于兩個單端驅動器。兩條線上傳輸?shù)男盘栯娖?,當一個表示邏輯“1”時,另一條一定為邏輯“0”。若傳輸中,信號中混入干擾和噪聲(共模形式),由于差分接收器的作用,就能識別有用信號并正確接收傳輸?shù)男畔?,并使干擾和噪聲相互抵消。6465RS-422A能在長距離、高速率下傳輸數(shù)據(jù)。它的最大傳輸率為10Mbit/s,電纜允許長度為12m,如果采用較低傳輸速率時,最大傳輸距離可達1219m。為了增加通信距離,可采用光電隔離,利用RS-422A標準進行雙機通信的接口電路如圖7-20所示。圖中,每個通道的接收端都接有3個電阻R1、R2和R3,其中R1為傳輸線的匹配電阻,取值范圍在50Ω~1kΩ,其他兩個電阻是為了解決第一個數(shù)據(jù)的誤碼而設置的匹配電阻。為了起到隔離、抗干擾的作用,圖7-20中必須使用兩組獨立的電源。圖中的SN75174、SN75175是TTL電平到RS-422A電平與RS-422A電平到TTL電平的電平轉換芯片。656666圖7-20RS-422A雙機通信接口電路674.RS-485雙機通信接口RS-422A雙機通信需四芯傳輸線,這對長距離通信很不經濟,故在工業(yè)現(xiàn)場,通常采用雙絞線傳輸?shù)腞S-485串行通信接口,很容易實現(xiàn)多機通信。RS-485是RS-422A的變型,它與RS-422A的區(qū)別:RS-422A為全雙工,采用兩對平衡差分信號線;RS-485為半雙工,采用一對平衡差分信號線。RS-485對于多站互連是十分方便的,很容易實現(xiàn)多機通信。RS-485允許最多并聯(lián)32臺驅動器和32臺接收器。圖7-21為RS-485通信接口電路。與RS-422A一樣,最大傳輸距離約為1219m,最大傳輸速率為10Mbit/s。676868圖7-21RS-485雙機通信接口電路69通信線路要采用平衡雙絞線。平衡雙絞線的長度與傳輸速率成反比,在100kbit/s速率以下,才可能使用規(guī)定的最長電纜。只有在很短的距離下才能獲得最大傳輸速率。一般100m長雙絞線最大傳輸速率僅為1Mbit/s。圖7-21中,RS-485以雙向、半雙工的方式來實現(xiàn)雙機通信。在AT89S51單片機系統(tǒng)發(fā)送或接收數(shù)據(jù)前,應先將SN75176的發(fā)送門或接收門打開,當P1.0=1時,發(fā)送門打開,接收門關閉;當P1.0=0時,接收門打開,發(fā)送門關閉。70圖7-21中的SN75176芯片內集成了一個差分驅動器和一個差分接收器,且兼有TTL電平到RS-485電平、RS-485電平到TTL電平的轉換功能。此外常用的RS-485接口芯片還有MAX485。7.5.2串行通信設計需要考慮的問題單片機的串行通信接口設計時,需考慮如下問題。(1)首先確定通信雙方的數(shù)據(jù)傳輸速率。(2)由數(shù)據(jù)傳輸速率確定采用的串行通信接口標準。(3)在通信接口標準允許的范圍內確定通信的波特率。為減小波特率的誤差,通常選用11.0592MHz的晶振頻率。7071(4)根據(jù)任務需要,確定收發(fā)雙方使用的通信協(xié)議。(5)通信線的選擇,這是要考慮的一個很重要的因素。通信線一般選用雙絞線較好,并根據(jù)傳輸?shù)木嚯x選擇纖芯的直徑。如果空間的干擾較多,還要選擇帶有屏蔽層的雙絞線。(6)通信協(xié)議確定后,進行通信軟件編程,請見下面介紹。7.5.3雙機串行通信軟件編程串行口的方式1~3是用于串行通信的,下面介紹雙機串行通信軟件編程。應當說明的是,下面介紹的雙機串行通信的編程實際上與上面介紹的各種串行標準的硬件接口電路無關,因為采用不同的標準串行通信接口僅僅是由雙機串行通信距離、傳輸速率以及抗干擾性能來決定的。71721.串行口方式1應用編程【例7-

4】

本例采用方式1進行雙機串行通信,收、發(fā)雙方均采用11.0592MHz晶振,波特率為2

400bit/s,一幀信息為10位,第0位為起始位,第1~8位為數(shù)據(jù)位,最后1位為停止位。發(fā)送方(甲機)把以78H、77H單元的內容為首地址,以76H、75H單元內容減1為末地址的數(shù)據(jù)塊通過串行口發(fā)送給接收方(乙機)。下面介紹收發(fā)雙方串行發(fā)送、接收程序的設計。73(1)甲機發(fā)送程序甲機要發(fā)送的數(shù)據(jù)塊的地址為片外RAM的2000H~201FH。發(fā)送時先發(fā)數(shù)據(jù)塊的首末地址,然后再發(fā)送數(shù)據(jù)塊。甲機先采用查詢方式發(fā)4個字節(jié)的首末地址,然后再采用中斷方式發(fā)送數(shù)據(jù)塊,并采用比較末地址的方法,判斷數(shù)據(jù)塊是否發(fā)送結束。程序中用到了一個數(shù)據(jù)塊發(fā)送完畢標志位F0,數(shù)據(jù)塊如發(fā)送完畢,則標志位F0=1。中斷方式的發(fā)送程序如下:74747575767677(2)乙機接收程序乙機采用中斷方式接收,先接收甲機發(fā)送的4個字節(jié)的首末地址,然后存于片內RAM的78H~75H單元中。接著再接收甲機發(fā)送的數(shù)據(jù)塊,乙機把接收到的數(shù)據(jù)塊存于片外RAM的2000H~201FH單元中。程序中使用了兩個標志位F0和7FH:①標志位F0=0,表示接收地址,F(xiàn)0=1接收數(shù)據(jù);②標志位7FH=0,表示數(shù)據(jù)未接收完;7FH=1表示數(shù)據(jù)接收完畢。乙機接收程序如下:7778787979808081 INC 77H ;地址加1 MOV A,77H ;判當前接收數(shù)據(jù)的地址是否向高8位進位 JNZ END2 ;

INC 78HEND2: MOV A,76H CJNE A,78H,RETN;判是否最后一幀,不是則繼續(xù) MOV A,75H CJNE A,77H,RETN;是最后一幀則各種標志位清0 CLR ES CLR EA SETB 7FH SJMP RETN ;跳入返回子程序區(qū) END

81822.串行口方式2應用編程方式2和方式1有兩點不同之處。接收/發(fā)送11位信息,多出第9位程控位,該位可由用戶置TB8決定,這是一個不同點。另一不同點是方式2波特率變化范圍比方式1小, 方式2的波特率

=

振蕩器頻率/n。當SMOD=0時,n=64。當SMOD=1時,n=32。鑒于方式2的使用和方式3基本一樣(只是波特率不同),所以方式2的應用,可參照下面的方式3編程。82833.串行口方式3應用編程【例7-5】本例為AT89S51單片機用串行通信方式3進行發(fā)送和接收的應用實例。發(fā)送方(甲機)采用查詢方式發(fā)送地址幀,采用中斷或查詢方式發(fā)送數(shù)據(jù),接收方(乙機)采用中斷或查詢方式接收數(shù)據(jù)。發(fā)送和接收雙方均采用11.0592MHz的晶振,波特率為4800bit/s。甲機首先將存放在78H和77H單元中的地址發(fā)送給乙機,然后發(fā)送256個數(shù)據(jù):00H~FFH。(1)甲機發(fā)送程序中斷方式的發(fā)送程序如下:

838484858586(2)乙機接收程序乙機把最先接收到的兩個字節(jié)數(shù)據(jù)(實質是存放數(shù)據(jù)的首地址)送給數(shù)據(jù)指針DPTR,作為數(shù)據(jù)存放的首地址,然后將后續(xù)接收到的數(shù)據(jù)存放到以先前接收的數(shù)據(jù)為首地址的單元中去。乙機采用中斷方式的接收程序如下:868787888889

溫馨提示

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

評論

0/150

提交評論