版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
5.1基本概念5.251系列單片機串行通信接口5.3串行口應用實例5.4RS-232C串行總線及應用習題5計算機數(shù)據(jù)通信是計算機科學與通信技術的有機結合,是現(xiàn)代控制系統(tǒng)的重要組成部分。就通信技術的實際應用而言,常見的通信方式有以下幾類:
(1)按通信對象數(shù)量的不同,通信方式可分為點到點通信、一點到多點通信和多點到多點通信3種方式。
5.1基本概念
(2)按通信終端之間的連接方式可劃分為兩點間直通方式和交換方式。直通方式是通信雙方直接用專線連接;而交換方式是通信雙方必須經(jīng)過交換機才能連接起來的一種通信方式,如電話系統(tǒng)。
(3)按數(shù)字信號傳輸?shù)捻樞?,在?shù)據(jù)通信中(主要指計算機通信),通信方式又有串行通信與并行通信之分。
1.并行通信
并行通信中的數(shù)據(jù)在整個傳輸過程中并排前進,有多少個數(shù)據(jù)線就能同時傳送多少位數(shù)據(jù)。
并行通信的特點是硬件連線多、傳輸速率高,一般適用于近距離、高速率的通信領域。
例如,計算機主板與硬盤、計算機與打印機等之間的通信。圖5.1(a)是并行通信示意圖。
2.串行通信
串行通信中的數(shù)據(jù)在傳輸過程中一位一位地串行傳輸,硬件連接比較簡單。最簡單時只需3根連線即可實現(xiàn)串行通信,相對于并行通信來講,其通信速率低,一般適用于短距離數(shù)據(jù)通信。在單片機應用系統(tǒng)中常采用串行通信方式。圖5.1(b)是串行通信示意圖。
在串行通信中,按同步方式的不同,又分為同步通信和異步通信。圖5.1并行通信與串行通信(a)并行通信;(b)串行通信
3.異步通信
異步通信(AsynchronousCommunication)中的數(shù)據(jù)通常是以字符為單位組成字符幀傳送的。字符幀由發(fā)送端一幀一幀地發(fā)送,一幀數(shù)據(jù)低位在前,高位在后,通過傳輸線被接收端一幀一幀地接收。發(fā)送端和接收端可以由各自獨立的時鐘來控制數(shù)據(jù)的發(fā)送和接收,這兩個時鐘彼此獨立,互不同步。接收端是依靠字符幀格式來判斷發(fā)送端是何時開始發(fā)送,何時結束發(fā)送的,其基本特征是每個字符必須用起始位和停止位作為字符開始和結束的標志。字符幀格式是異步通信的一個重要指標。
1)字符幀
字符幀(CharacterFrame)也叫字符格式或數(shù)據(jù)幀。它由起始位、數(shù)據(jù)位、奇偶校驗位和停止位等4部分組成,如圖5.2所示。圖5.2串行異步傳送的字符格式(a)無空閑位的字符格式;(b)有空閑位的字符格式
(1)起始位:位于字符幀開頭,只占一位,為邏輯0,低電平。用起始位表示發(fā)送端開始發(fā)送一幀數(shù)據(jù)信號,它是字符幀的起始標志。
(2)數(shù)據(jù)位:緊跟起始位之后,用戶根據(jù)情況可設置數(shù)據(jù)位為5位、6位、7位或8位,低位在前高位在后。
(3)奇偶校驗位:位于數(shù)據(jù)位之后,僅占1位,用來作為一幀數(shù)據(jù)的奇/偶校驗位。
(4)停止位:位于字符幀最后,為邏輯1,高電平。通??稍O置停止位為1位、1.5位或2位,用于向接收端表示一幀字符信息已經(jīng)發(fā)送完畢,是字符幀的結束標志。
例如,設定串行傳送的字符格式為:1位起始位、8位數(shù)據(jù)位、1位偶校驗位和1位停止位。用該格式分別串行傳送字符“B”和“C”的字符幀結構如圖5.3所示。圖5.3“B”和“C”的字符幀結構(a)“B”的字符幀結構;(b)“C”的字符幀結構字符“B”的ASCII碼為1000010B,發(fā)送的8位數(shù)據(jù)位為01000010B,采用偶校驗,所以校驗位為0。
字符“C”的ASCII碼為1000011B,發(fā)送的8位數(shù)據(jù)位為01000011B,采用偶校驗,由于1的個數(shù)為奇數(shù),所以校驗位為1。
2)波特率
波特率(BaudRate)是指信號傳輸?shù)乃俾剩菙?shù)據(jù)通信的一個重要指標。波特率指每秒傳送二進制碼元的位數(shù),單位為b/s,即位/秒。波特率用于表征數(shù)據(jù)傳輸?shù)乃俾?,波特率越高,?shù)據(jù)傳輸速率也越高。
單片機應用系統(tǒng)通常采用串行異步通信方式。通信時要求發(fā)送端與接收端的波特率必須一致,波特率一般為50~9600b/s。
4.同步通信
同步通信(SynchronousCommunication)是將一大批數(shù)據(jù)分成若干個數(shù)據(jù)塊,數(shù)據(jù)塊之間用同步字符隔開,而傳輸?shù)母魑欢M制碼之間都沒有間隔。其基本特征是發(fā)送端與接收端通信時保持嚴格同步,即同步通信是一種連續(xù)串行傳送數(shù)據(jù)的通信方式,一次通信只傳輸一幀信息。這里的信息幀和異步通信的字符幀不同,其數(shù)據(jù)塊通常由若干個數(shù)據(jù)字符組成,如圖5.4所示。圖5.4(a)為單同步字符幀結構,圖5.4(b)
為雙同步字符幀結構。其一幀由同步字符、數(shù)據(jù)字符和校驗字符3部分組成。在同步通信中,同步字符可以采用統(tǒng)一的標準格式,也可以由用戶約定。圖5.4同步通信的格式(a)單同步字符幀結構;(b)雙同步字符幀結構
5.串行通信數(shù)據(jù)傳送的3種方式
根據(jù)信號傳輸方向與傳輸時間的不同,串行通信有3種通信方式:單工通信、半雙工通信和全雙工通信,如圖5.5所示。圖5.5串行通信數(shù)據(jù)傳送的3種方式單工通信(SimplexCommunication):在任何一個時刻,信號只能從甲方向乙方單向傳輸,甲方只能發(fā)信,乙方只能收信。比如廣播電臺與收音機、電視臺與電視機的通信(點到多點)、遙控玩具、航模(點到點)、尋呼系統(tǒng)等均屬此類。
半雙工通信(HalfDuplexCommunication):在任何一個時刻,信號只能單向傳輸,或從甲方傳向乙方,或從乙方傳向甲方,但不能同時雙向傳送。比如對講機、收發(fā)報機以及問詢、檢索等之間的通信。
全雙工通信(FullDuplexCommunication):在任一時刻,信號能夠雙向傳輸,每一方都能同時進行收信與發(fā)信。比如普通電話、手機、RS-232C通信接口等。5.2.1串行口組成及相關寄存器
51單片機串行接口主要由串行口數(shù)據(jù)緩沖器SBUF、串行口控制寄存器SCON、對外接口TXD、RXD及相關控制電路等組成,其內部結構如圖5.6所示。串行通信時,不僅與SBUF和SCON寄存器有關,還會涉及到電源控制寄存器PCON、定時器控制寄存器TCON及中斷允許寄存器IE等相關寄存器。5.251系列單片機串行通信接口
圖5.6串行通信口內部結構框圖
1.串行口數(shù)據(jù)緩沖器SBUF
SBUF是兩個在物理上獨立的接收、發(fā)送寄存器,一個用于存放接收到的數(shù)據(jù),另一個用于存放欲發(fā)送的數(shù)據(jù),可同時發(fā)送和接收數(shù)據(jù)。兩個緩沖器共用一個地址99H,通過對SBUF的讀、寫指令來區(qū)別是對接收緩沖器還是發(fā)送緩沖器操作。CPU在寫SBUF時,就是修改發(fā)送緩沖器;讀SBUF就是讀接收緩沖器的內容。接收或發(fā)送數(shù)據(jù),是通過串行口對外的兩條獨立收發(fā)信號線RXD(P3.0)、TXD(P3.1)來實現(xiàn)的,因此可以同時發(fā)送、接收數(shù)據(jù),其工作方式為全雙工方式。
2.串行口控制寄存器SCON
串行口控制寄存器SCON用來控制串行口的工作方式和狀態(tài),其地址為98H,可進行位尋址。單片機復位時,SCON的所有位全為0。串行口控制寄存器SCON的格式如下:
SM0、SM1:由軟件設置,用于選擇串行口的工作方式,可以設置4種工作方式(見表5.1,具體內容將在5.2.2節(jié)詳細介紹)。表5.1串行口的工作方式
SM2:多機通信控制位。在方式2和方式3中,若SM2=1,則接收到的第9位數(shù)據(jù)(RB8)為0時不啟動接收中斷標志RI(即RI=0),并且將接收到的前8位數(shù)據(jù)丟棄;RB8為1時,才將接收到的前8位數(shù)據(jù)送入SBUF,并置位RI,產(chǎn)生中斷請求。若SM2=0,則不論第9位數(shù)據(jù)為0或1,都將接收到的前8位數(shù)據(jù)裝入SBUF中,并產(chǎn)生中斷請求。在方式0時,SM2必須為0。
REN:串行接收允許控制位。若REN=0,則禁止接收;若REN=1,則允許接收,該位由軟件設置。
TB8:發(fā)送數(shù)據(jù)D8位。在方式2和方式3時,TB8為所要發(fā)送的第9位信息。在多機通信中,以TB8位的狀態(tài)表示主機發(fā)送的是地址還是數(shù)據(jù):若TB8=1,表示主機發(fā)送的是地址信息。若TB8=0,表示主機發(fā)送的是數(shù)據(jù)信息;也可用TB8作為數(shù)據(jù)的奇偶校驗位。在通信規(guī)約中應明確約定。
RB8:接收數(shù)據(jù)D8位。在方式2和方式3時,接收到的第9位信息。RB8可作為地址信息或數(shù)據(jù)信息的標志或奇偶校驗位。方式1時,若SM2=0,則RB8為接收到的停止位。在方式0時,不使用RB8位。
TI:發(fā)送中斷標志位。方式0時,當發(fā)送數(shù)據(jù)第8位結束后,或其他方式發(fā)送停止位后,即將一幀數(shù)據(jù)發(fā)送完畢,由內部硬件置位TI,向CPU請求中斷。CPU響應中斷后,必須用軟件把TI清0。此外,TI也可供程序查詢。
RI:接收中斷標志位。方式0時,當接收數(shù)據(jù)的第8位結束后,或其他方式接收到停止位,即已完成一幀數(shù)據(jù)的接收,由內部硬件置位RI,向CPU請求中斷。同樣,CPU響應中斷后,也必須用軟件把RI清0。RI也可供程序查詢。
3.電源控制寄存器PCON
PCON主要是為CHMOS型單片機的電源控制而設置的專用寄存器,不可以位尋址,字節(jié)地址為87H。在CHMOS的8051單片機中,PCON除了最高位以外,其他位都是虛設的。
電源控制寄存器的格式如下:5.2.2串行口的工作方式
51系列單片機的串行口有4種工作方式,通過SCON中的SM0、SM1位來設置。
1.方式0──同步移位寄存器方式
若SM0SM1=00B,則串行口工作于方式0,這時串行口作同步移位寄存器使用。這種方式常用于擴展I/O端口,一般外接移位寄存器,實現(xiàn)數(shù)據(jù)串/并轉換。串行數(shù)據(jù)從RXD(P3.0)端輸入或輸出,同步移位脈沖由TXD(P3.1)送出,其波特率固定為fosc/12。
1)方式0發(fā)送
當一個數(shù)據(jù)寫入串行口發(fā)送緩沖器SBUF時,串行口將8位數(shù)據(jù)以fosc/12的波特率從RXD引腳輸出(低位在前,高位在后),發(fā)送完置中斷標志TI為1,請求中斷。
再次發(fā)送數(shù)據(jù)之前,必須由軟件將TI清0。方式0移位輸出電路圖如圖5.7所示。其中,74LS164為串入并出移位寄存器。圖5.7方式0移位輸出電路圖
2)方式0接收
在滿足REN=1和RI=0的條件下,串行口即開始從RXD端以fosc/12的波特率輸入數(shù)據(jù)(低位在前),當接收完8位數(shù)據(jù)后,置中斷標志RI為1,請求中斷。再次接收數(shù)據(jù)之前,必須由軟件將RI清0。方式0移位輸入電路圖如圖5.8所示。其中,74LS165為并入串出移位寄存器。圖5.8方式0移位輸入電路圖串行口控制寄存器SCON中的TB8和RB8在方式0中未用。值得注意的是,每當發(fā)送或接收完8位數(shù)據(jù)后,硬件會自動置TI或RI為1,CPU響應發(fā)送或接收中斷后,
必須由用戶用指令將TI或RI清0。方式0時,SM2必須為0。
2.方式1──8位異步串行通信方式
若SM0SM1=01B,則串行口工作于方式1。方式1是波特率可變的10位通用異步串行通信方式。發(fā)送或接收一幀信息為10位,其中包括1個起始位0,8個數(shù)據(jù)位和1個停止位1。其幀格式如圖5.9所示。圖5.9串行通信10位幀結構
1)方式1發(fā)送
當CPU執(zhí)行一條數(shù)據(jù)寫入發(fā)送緩沖器SBUF的指令時,便啟動發(fā)送器發(fā)送。發(fā)送時,數(shù)據(jù)從TXD端輸出,當發(fā)送完一幀數(shù)據(jù)后,置中斷標志TI為1。方式1所傳送的波特率取決于定時器T1的溢出率和PCON中的SMOD位。
2)方式1接收
若REN=1,RI=0時,允許串口接收數(shù)據(jù)。串行口采樣RXD,當采樣到由1到0跳變時,確認是起始位“0”,便開始接收一幀信息。方式1接收時,必須同時滿足以下兩個條件:
(1)RI=0;(2)停止位為1或SM2=0。
則接收到的一幀信息有效,一幀信息中的8位數(shù)據(jù)送入接收緩沖器SBUF,停止位送入串行口控制寄存器SCON的RB8位,同時置中斷標志RI為1;若不滿足上述兩個條件,則信息將丟失(無效)。所以,方式1接收時,應先用指令清除RI,并設置SM2=0。
3.方式2──9位異步通信接口
若SM0SM1=10B,則串行口工作于方式2。方式2為波特率固定的11位異步串行通信方式,傳送波特率與SMOD有關。發(fā)送或接收一幀信息為11位,其中包括1位起始位0,8位數(shù)據(jù)位,1位可編程位(用于奇偶校驗或多機通信)和1位停止位1,其幀格式如圖5.10所示。(波特率設置將在5.2.3節(jié)介紹)圖5.10串行通信11位幀結構
1)方式2發(fā)送
發(fā)送時,根據(jù)通信協(xié)議由軟件設置TB8,然后用指令將要發(fā)送的數(shù)據(jù)寫入SBUF,啟動發(fā)送器。寫SBUF的指令,除了將8位數(shù)據(jù)送入SBUF外,同時還將TB8裝入發(fā)送移位寄存器的第9位,并啟動發(fā)送控制器進行一次發(fā)送。一幀信息即從TXD發(fā)送出去,在送完一幀信息后,TI被自動置1,在發(fā)送下一幀信息之前,TI必須由中斷服務程序或查詢程序清0。
2)方式2接收
當REN=1時,允許串行口接收數(shù)據(jù)。數(shù)據(jù)由RXD端輸入,當接收器采樣到RXD端的負跳變,并判斷起始位有效后,開始接收一幀信息,每幀接收11位信息。方式2接收時,若同時滿足以下兩個條件:
(1)RI=0;
(2)SM2=0或接收到的第9位數(shù)據(jù)為1。
則接收數(shù)據(jù)有效,8位數(shù)據(jù)送入SBUF,第9位送入RB8,并置RI=1;若不滿足上述兩個條件,則信息丟棄。
4.方式3──波特率可變的9位異步通信接口
若SM0SM1=11B,串行口工作于方式3,為波特率可變的11位異步串行通信方式。
除了波特率以外,方式3和方式2完全相同。
5.2.3波特率設置
在串行通信中,收發(fā)雙方對傳送的數(shù)據(jù)速率,即波特率必須事先約定。通過前面的論述,我們已經(jīng)知道,51單片機的串行口通過編程可以有4種工作方式。其中,方式0和方式2的波特率是固定的,方式1和方式3的波特率是可變的。
1.方式0和方式2的波特率
方式0的波特率是固定的,波特率是振蕩頻率fosc的12分頻。即
波特率B=
(5.1)
方式2的波特率由振蕩頻率fosc和SMOD(PCON.7)所決定,其對應公式為
波特率B=fosc×
(5.2)
當SMOD=0時,波特率為fosc/64;當SMOD=1時,波特率為fosc/32。
2.方式1和方式3的波特率
方式1和方式3的波特率由定時器T1的溢出率和SMOD決定,即由下式確定:
波特率B=定時器T1的溢出率×
實際上,當定時器T1作波特率發(fā)生器使用時,通常是工作在方式2,即自動重裝載的8位定時器方式,此時TL1作計數(shù)用,自動重裝載的值保存在TH1內。設計數(shù)的預置值(計數(shù)初值)為X,那么每過(256-X)個機器周期,定時器溢出一次。為了避免因溢出而產(chǎn)生不必要的中斷,此時應禁止T1中斷。T1的溢出率為fosc/(12×(256-X)),其波特率為
波特率B=
(5.3)通常在系統(tǒng)設計時,大多數(shù)情況是先確定了系統(tǒng)的波特率B,而我們則要根據(jù)系統(tǒng)的波特率B計算定時器T1的計數(shù)初值,由式(5.3)可求出計數(shù)初值X為
X=256-
(5.4)由式(5.4)可求出不同波特率所對應的定時器T1的計數(shù)初值,如表5.2所示。表5.2定時器T1產(chǎn)生的常用波特率(fosc=6MHz)
例如,設串行通信口工作于方式1,波特率B=9.6Kb/s,SMOD=1,fosc
=6MHz,求T1的初值X。
只要將以上值代入式(5.4)即可求得X=252.75≈253=FDH。其中,253-252.75=0.25就是初值誤差,會引起波特率誤差。實際應用時,若誤差影響到通信效果,則可通過
精選晶振頻率來減小誤差。
3.波特率誤差及選擇
波特率是串行通信中的一個重要參數(shù),理想情況下,通信雙方的波特率應該完全一致,波特率的一致性直接影響數(shù)據(jù)傳輸?shù)恼_性。但在實際情況下,由于時鐘振蕩頻率、系統(tǒng)參數(shù)設置等不會完全一致,因此通信雙方的波特率也就不可能達到完全一致。
一般情況下,對于11位的串行數(shù)據(jù)幀(帶奇偶校驗位),通信雙方波特率的最大誤差不應超過4.5%。由波特率的計算方法可知,當系統(tǒng)時鐘為6MHz時,通信口采用方式1要產(chǎn)生的波特率為B=4800b/s,定時器T1為方式2,SMOD=0,此時T1的初值X為
X=28
–
≈252.75
由于X必須是整數(shù),四舍五入后初值取X=253(FDH),實際的波特率為
B=
≈5208b/s波特率誤差為
ΔB=
當用6MHz晶振設定1200b/s的波特率時,其誤差僅為0.1%。而使用11.059MHz晶振時,設定各標準波特率誤差都很小。這也是在系統(tǒng)設計時,對于要和其他系統(tǒng)(設備)通信的單片機應用系統(tǒng),選用晶體振蕩器時要考慮的一個重要因素。
在51系列單片機之間進行串行通信時,若各單片機的晶振和定時常數(shù)相同,盡管實際波特率可能與設定值有一定誤差,但通信雙方之間的誤差很小。這只是由于晶振頻率誤
差引起的,并不影響正常通信。當單片機之間的晶振頻率和定時常數(shù)不同或單片機與其他設備(DSP處理器、PC機等)之間進行串行通信時,就必須考慮波特率誤差問題了。為了滿足通信波特率的要求,可能要選用特殊晶振頻率,或者采用非標準波特率。表5.3列出了使用6MHz晶振時,誤差較小的波特率。表5.3供選擇的部分非標準波特率(SMOD=0)
4.波特率的自動檢測
在分布式多波特率通信系統(tǒng)中,常常要求從設備在軟件上能做到波特率隨主設備自動調整,使系統(tǒng)適應性更強,智能化程度更高。當然,一般情況下,波特率自動檢測的范圍僅限于標準波特率。常用實現(xiàn)波特率自動檢測的方法有3種:
(1)從設備啟動通信程序后,逐一選擇標準波特率,向主設備發(fā)送某個事先約定的握手代碼,直到收到主設備發(fā)回的確認碼,即可判定通信波特率。
(2)利用串行異步通信每一幀起始位為低電平、停止位為高電平,用定時器記錄每幀長度,從而判定系統(tǒng)通信波特率。
(3)利用主設備發(fā)送某一特殊碼型,從設備收到的碼值會隨主設備的波特率不同而不同,當從機收到約定的特殊碼型時,便可確認系統(tǒng)的通信波特率。5.2.4多機通信
51系列單片機的多機通信通常采用主從式多機通信方式。在主從式多機系統(tǒng)中,有一臺主機,多臺從機,利用這種方式可以構成各種分布式控制系統(tǒng),其系統(tǒng)結構如圖5.11所示。其中,n個從機各有惟一的一個地址碼,地址碼是識別從機身份的標志。主機發(fā)出的信息可以傳送到各個從機或傳送到某個指定的從機,而從機發(fā)出的信息只能被主機接收。圖5.11主從式多機通信系統(tǒng)多機通信中,要保證主機與從機間進行可靠的通信,通信接口必須具有從機身份的識別功能。串行口控制寄存器SCON中的SM2位就是為滿足這一要求而設置的多機通信控制位。串行口以方式2或方式3實現(xiàn)多機通信,主機發(fā)出的信息有兩類,一類為地址信息,用來確定需要和主機通信的從機,其特征是主機串行傳送的第9位信息TB8為1,即主機令TB8=1呼叫從機;另一類是數(shù)據(jù)信息,特征是串行傳送的第9位信息TB8為0,實現(xiàn)主從間的數(shù)據(jù)傳輸。對從機來說,也要利用SCON寄存器中的SM2位的控制功能來區(qū)分地址信息和數(shù)據(jù)信息。在接收時,令RI=0,若SM2為1,則僅當接收到的第9位信息RB8為1時,接收到的一幀信息才有效,接收到的數(shù)據(jù)才裝入SBUF,置位RI,請求CPU對主機發(fā)出的信息進行處理。若SM2為1,接收到的第9位信息RB8為0時,則接收到的一幀信息無效。若從機令SM2為0,則接收到一個數(shù)據(jù)后,不管第9位信息RB8是0還是1,都將數(shù)據(jù)裝入接收緩沖器SBUF,并置位中斷標志RI,請求CPU處理。因此,對于從機來說,在接收地址時,應使SM2=1,以便接收到主機發(fā)來的地址碼,從而確定主機是否打算和從機通信。一經(jīng)確認后,從機應使SM2=0,以便接收數(shù)據(jù)或識別下一個地址碼。主從式多機通信的一般過程如下:
(1)使所有從機的SM2位置1(此時,所有的從機處于監(jiān)聽狀態(tài)),以便接收主機發(fā)來的地址碼。
(2)主機發(fā)出一幀地址信息,其中包括8位需要與之通信的從機地址碼,第9位信息TB8為1。
(3)所有從機接收到地址幀后,各自將所接收到的地址與本機地址相比較,若與本機地址相同,則該從機便使SM2位清0以接收主機隨后發(fā)來的數(shù)據(jù)信息;對于地址不符合的從機,仍保持SM2=1的狀態(tài)(仍處于監(jiān)聽狀態(tài)),對主機隨后發(fā)來的數(shù)據(jù)不予理睬,直至主機發(fā)送一個新的地址幀。
(4)主機給已被尋址的從機發(fā)送控制指令和數(shù)據(jù)(數(shù)據(jù)幀的第9位為0)。前面介紹了串行通信口的基礎知識,為了讀者對串行通信口應用有一個全面了解,在此對串行通信口的應用過程中要做的工作進行簡要歸納。
5.3串行口應用實例
(1)確定通信規(guī)約,通信雙方要明確約定以下內容:
通信方式——明確采用何種通信方式、幀結構、各位含義等。
通信速率——通常規(guī)定通信波特率。
校驗方式——確定傳輸數(shù)據(jù)的校驗方式。通常采用奇/偶校驗,同步傳輸時有縱校驗、橫校驗等。
回送信息——傳輸信息被確認后,向對方回送何種信
代碼含義——傳輸1幀數(shù)據(jù)中各個代碼的含義。
(2)確定相關器寄存器的值(各寄存器的具體設定方法在前面已作了詳細介紹)。
①串行口控制寄存器SCON。
②電源控制寄存器PCON的PCON.7,波特率加倍系數(shù)位SMOD。
③對于方式1、方式3要設置波特率,實際上就是設置定時器T1為方式2,相關的寄存器有:定時器/計數(shù)器方式寄存器TMOD、定時器/計數(shù)器控制寄存器TCON及初值寄存器TH1、TL1。定時器T1初值X可用式(5.4)計算。
(3)編寫程序,按照以上確定的各寄存器的值對串行口初始化。并編寫中斷服務程序。5.3.1利用串行口擴展LED顯示器
單片機中并行口總是有限的,根據(jù)需要可用串行口擴展并行口。在此,利用串行口擴展一個8位LED顯示器,硬件電路如圖5.12所示。圖中串行口工作在方式0,串行數(shù)據(jù)從RXD(P3.0)端輸出。74LS164是一個串行輸入并行輸出的8位移位寄存器,其引腳1和2是串行數(shù)據(jù)輸入端;引腳3~6和10~13是并行數(shù)據(jù)的輸出端,每個74LS164的輸出端Q7~Q0各驅動一個共陰極LED顯示器;CLR是74LS164的清0端,
由P1.6提供清0信號,當CLR為0時,Q7~Q0輸出為0,8個LED顯示空白字符;同步移位脈沖由TXD(P3.1)送出,P1.7=1時允許74LS164串行接收數(shù)據(jù),其波特率固定為fosc/12。圖5.12擴展一個8位LED顯示器
ORG0000
LJMPSTART
ORG0100
START:MOVSCON,#00H;串行口工作在方式0
MOVR7,#08H ;R7為計數(shù)器,顯示8個字符MOVR0,#77H ;R0指向DISBUF的末地址
LCALLDISP ;調用顯示子程序DISP:CLRP1.6 ;清顯示器 SETBP1.6 SETBP1.7;允許74LS164串行接收數(shù)據(jù)
DISP1:MOVA,@R0;取顯示字符
MOVDPTR,#TABL
MOVCA,@A+DPTR;查表獲得顯示碼
MOVSBUF,A ;串行發(fā)送DISP2:JNBTI,DISP2;等待發(fā)送完畢
CLRTI ;發(fā)送完畢則清中斷標志
DECR0 ;R0指向下一字符
DJNZR7,DISP1
CLRP1.7 ;禁止74LS164接收數(shù)據(jù)
RET
TABL:DB3FH,06H,5BH,4FH,66H,6DH,7DH,
07H;0~F的顯示碼
DB7FH,6FH,77H,7CH,39H,5EH,79H,71H5.3.2利用串行口輸入開關量
用AT89C51的串行口外接74LS165移位寄存器擴展8位開關量輸入端口,輸入數(shù)據(jù)由8個開關S7~S0提供,電路如圖5.13所示。74LS165是8位并入/串入移位寄存器,當控制端SHIFT/LOAD為0時,165并行裝入S0~S7提供的數(shù)據(jù);當SHIFT/LOAD為1時,在時鐘CK的作用下H~A依次由QH端移位輸出。CP為時鐘禁止控制端,高電平禁止,DS為數(shù)據(jù)串輸入端,在此未用。圖5.13用串行口輸入開關量當CPU需要輸入S7~S0提供的數(shù)據(jù)時,將串行口設置為方式0(SM0SM1=00B)啟動串行口,串行輸入8位開關量,然后根據(jù)開關S7~S0的功能轉向不同的處理程序,參考程序如下:
START:;必要時啟動串行口
CLRP1.0;SHIFT/LOAD=0,74LS165并行裝入
;數(shù)據(jù)S0~S7
STEBP1.0 ;SHIFT/LOAD=1,允許74LS165串行
;移位
MOVSCON,#10H;設置串行口方式0,REN=1允
;許接收
JNBRI,$ ;查詢RI
CLRRI ;查詢結束,清RI
MOVA,SBUF ;輸入數(shù)據(jù)
;S7~S0的功能處理程序
JBACC.0,KEY0 ;轉向S0的處理程序
JBACC.1,KEY1;轉向S1的處理程序
5.3.3雙機通信系統(tǒng)
利用串行口可以實現(xiàn)兩臺機器間的全雙工通信。如圖5.14所示,設甲乙兩臺機器按全雙工方式收發(fā)ASCII碼字符,數(shù)據(jù)位為8位,其中最高一位用來作奇偶校驗位,采用偶校驗方式,要求傳送的波特率為1200b/s。假設發(fā)送緩沖區(qū)OUTBUF首址為片內RAM60H,接收緩沖區(qū)INBUF首址為RAM70H,時鐘頻率fosc=6MHz,試編寫有關的通信程序。圖5.14雙機通信系統(tǒng)
1.確定通信方式
根據(jù)系統(tǒng)要求,通信雙方要相互約定:7位ASCII碼加1位校驗位共8位數(shù)據(jù),故可采用串行口方式1進行通信。51單片機的奇偶校驗位P是當累加器A中“1”的個數(shù)為奇數(shù)時P=1,為偶數(shù)時P=0。直接把P的值放入ASCII碼的最高位(奇偶校驗位),即為偶校驗方式。
2.計算定時器T1的計數(shù)初值
對于串行口方式1,波特率由定時器T1的溢出率和SMOD決定,定時器T1采用工作方式2,可以避免計數(shù)溢出后用軟件重裝定時初值。取SMOD=0,按式(5.4)可求得
計數(shù)初值X為
X=256-
=256-
=243
=F3H
也可以通過查表5.2確定X=F3H。
3.確定相關寄存器參數(shù)
(1)串行口控制寄存器SCON。
SM0、SM1=01時為方式1,在SM2=0和REN=1條件下,允許接收數(shù)據(jù),其余各位均取0,則SCON)=01010000B=50H。
(2)電源控制寄存器PCON。由于SMOD=0,因此(PCON)=00H(同系統(tǒng)復位以后的狀態(tài),可不賦值)。
(3)確定定時器方式寄存器TMOD。由于只用T1,且為定時方式2,因此(TMOD)=
00100000B=20H。
請注意:串行通信端口的接收中斷RI、發(fā)送中斷TI共用一個中斷向量(0023H),因此,串行口中斷請求后,中斷服務程序首先要判斷是RI、TI當中的哪個請求中斷。
4.編寫有關的通信程序
主程序:ORG0000H
LJMPMAIN
ORG0023H;串行中斷入口
LJMPSINOUT
ORG0040HMAIN:MOVTMOD,#20H;定時器T1設為方式2
MOVTL1,#0F3H;裝入定時器初值
MOVTH1,#0F3H;8位重裝值
SETBTR1;啟動定時器T1
MOVSCON,#50H;串行口設為方
MOVR0,#60H;OUTBUF首址
MOVR1,#70H;INBUF首址
SETBEA;開中斷
SETBES;允許串行口中斷
LCALLSOUT;先發(fā)送1個字符
LJMP$;等待中斷
;中斷服務程序
SINOUT:JNBRI,SEND;若不是接收,則轉向發(fā)送
LCALLSIN;若是接收,則調用接收子程序RETI;中斷返回
SEND:LCALLSOUT;若是發(fā)送,則調用發(fā)送子程序RETI;中斷返回
;發(fā)送子程序SOUT:MOVA,@R0;取發(fā)送數(shù)據(jù)到A
MOVC,P;偶校驗位賦予C
MOVACC.7,C;送入ASCII碼最高位中
INCR0;修改發(fā)送數(shù)據(jù)指針
MOVSBUF,A;發(fā)送數(shù)據(jù)
CLRTI;清發(fā)送中斷標志
RET;子程序返回
;接收子程序SIN:MOVA,SUBF;讀入接收緩沖區(qū)內容
JNBP,EXIT;若P=0,則接收正確
ERROR:…
;若P=1,則接收錯誤
…
;出錯處理
EXIT:ANLA,#7FH;刪去校驗位
MOV@R1,A;存入接收緩沖區(qū)
INCR1;修改接收緩沖區(qū)指針
CLRRI;清接收中斷標志
RET;子程序返回對圖5.14所示的系統(tǒng)也可以用方式2實現(xiàn)兩臺機器間的全雙工通信。在方式2下,串行口為9位UART,發(fā)送或接收一幀數(shù)據(jù)包括1位起始位0,8位數(shù)據(jù)位,1位可編程位(TB8)和1位停止位1。此時,可編程位TB8用于奇偶校驗位,發(fā)送子程序直接把PSW中的P標志送入串行口控制寄存器SCON的TB8位,作為一幀信息的第9位數(shù)據(jù)一起發(fā)送,接收子程序對接收到的RB8進行再次校驗,若接收錯誤,則進行出錯處理。方式2的編程方法與上述過程相似,主程序完成對相關寄存器和中斷系統(tǒng)的初始化后,先調用發(fā)送子程序,發(fā)完一幀信息后TI被置1,向CPU請求中斷,CPU響應中斷后再發(fā)送下一幀信息或接收一幀信息。請讀者完成主程序的編寫,下面給出的發(fā)送子程序和接收子程序僅供參考:
;發(fā)送子程序
SOUT2:PUSH PSW
PUSH ACC
CLR TI ;清發(fā)送中斷標志
MOV A,@R0;取發(fā)送數(shù)據(jù)
MOV C,PMOV TB8,C ;標志P送入TB8位
MOV SBUF,A ;發(fā)送數(shù)據(jù)
INC R0 ;修改發(fā)送數(shù)據(jù)指針R0
POP ACC
POP PSW
RET ;子程序返回
;接收子程序SIN2: PUSH PSW
PUSH ACC
CLR RI;清接收中斷標志
MOV A,SBUF;讀入接收緩沖區(qū)內容
MOV C,P ;取奇偶校驗位
JNC S1;P為0,偶校驗正確
JNB RB8,ERROR;若兩次校驗位不一致,則
;出錯
LJMP S2S1:JBRB8,ERROR;若雙方的校驗位不一致,則出錯
S2:MOV@R1,A ;存入接收緩沖區(qū)
INC R1 ;修改接收緩沖區(qū)指針R1
POP ACC
POP PSW
RET ;子程序返回
;誤碼處理子程序
ERROR:…
…
;出錯處理
RET 5.3.4電流環(huán)在通信系統(tǒng)中的應用
在串行通信中,一般用傳輸線上的高低電平表示“1”和“0”,用TTL電平進行通信時,有效通信距離短,往往滿足不了工程中的實際需求。工程應用中,為了實現(xiàn)遠距離通信,或連接干擾較大的設備,常常采用20mA的電流環(huán)進行串行通信。圖5.15給出了用20mA的電流環(huán)進行遠距離通信的接口電路。圖中,甲方發(fā)送數(shù)據(jù),經(jīng)SN75452進行功率放大送往接收方的光電隔離器4N25進行光電隔離轉換。當發(fā)送端數(shù)據(jù)為“1”時,SN75452導通,傳輸線上約有20mA的電流流過,光電隔離器4N25中的發(fā)光管發(fā)光,光敏三極管導通,使得7404輸入為低電平,反相后RXD接收端數(shù)據(jù)為“1”;當發(fā)送端數(shù)據(jù)為“0”時,SN75452截止,傳輸線上無電流流過,光電隔離器4N25中的發(fā)光管不發(fā)光,使得7404輸入為高電平,反相后RXD接收端數(shù)據(jù)為“0”。圖5.15用電流環(huán)進行遠距離通信圖5.15電路中,利用傳輸線上有無電流流過表示“1”和“0”,20mA電流環(huán)傳輸線的低阻特性使其對電氣噪聲不敏感,信號不易受干擾,不但提高了系統(tǒng)的抗干擾能力,而且能實現(xiàn)遠距離通信,是控制系統(tǒng)中常用的電路形式。若對圖5.15中的電路進行適當?shù)臄U展便可實現(xiàn)甲乙雙方的雙向通信。需要注意的是,電流環(huán)電路在信號傳輸過程中,信號要進行電壓→電流→光→電壓的一連串物理量的轉換。這些轉換是需要時間的,因此,在電流環(huán)電路中,一般數(shù)據(jù)的傳輸速率不宜過高。5.4.1RS-232C總線
RS-232C標準是美國電子工業(yè)協(xié)會(EIA)在1969年頒布的一種推薦標準,RS是RecommendedStandard的縮寫。RS-232C總線的誕生是人們普遍采用公用電話網(wǎng)為媒體進行數(shù)據(jù)通信的結果,也是調制解調器商品化的產(chǎn)物。5.4RS-232C串行總線及應用
RS-232C總線是一種DTE和DCE間的信號傳輸線,DTE(DataTerminalEquipment)是數(shù)據(jù)終端設備的簡稱,
DCE(DataCommunicationEquipment)是數(shù)據(jù)通信設備的簡稱。RS-232C在當代微型計算機系統(tǒng)中得到了廣泛使用。PC機通過25線或9線的D型連接器實現(xiàn)主機與RS-232C的連接,連接器的引腳定義如圖5.16所示。圖5.16DB-25/DB-9連接器
RS-232C的標準定義為25條信號線,引腳定義見表5.4。每條引腳在“符號”一欄中按第一個字母分為5類:A表示地線或公共回線;B表示數(shù)據(jù)線;C表示控制線;
D表示定時線;S表示次級信道線。
RS-232C的25條信號引腳功能如下。表5.4RS-232C各信號引腳定義
1.本地通信線(6條)
AA和AB:AA為保護地線,常與機殼相連,以構成屏蔽地;AB為信號地線,是除保護地外其他信號線的測量基準點。
BA和BB:BA為發(fā)送數(shù)據(jù)線TXD,數(shù)據(jù)由DTE發(fā)送DCE接收;BB為接收數(shù)據(jù)線RXD,信號由DCE發(fā)送DTE接收。平時,TXD線始終保持邏輯1(傳號)狀態(tài),只有在發(fā)送數(shù)
據(jù)時才有可能變?yōu)檫壿?(空號)狀態(tài)。RXD線在不發(fā)送數(shù)據(jù)的全部時間里以及發(fā)送數(shù)據(jù)的間隔期內,也始終保持邏輯1(傳號)狀態(tài)。
CA和CB:CA為請求發(fā)送線RTS,由DTE發(fā)送DCE接收;CB為允許發(fā)送線CTS,由DCE發(fā)送DTE接收。這一對線主要用于DTE詢問DCE對信道的連接狀況。當DTE需要發(fā)送數(shù)據(jù)時,它就使RTS變?yōu)檫壿?有效,用于請求DCE去接通通信鏈路。一旦DCE和通信鏈路接通,DCE就使CTS變?yōu)檫壿?有效,通知DTE可以在TXD線上發(fā)送數(shù)據(jù)了。
上述6條線通常可以實現(xiàn)本地微型計算機系統(tǒng)間的串行通信,故常稱之為本地通信線。這類通信的距離短,DCE可以采用零調制解調器或一般的Modem,不需另附數(shù)據(jù)通信設備。
2.遠程通信線(7條)
CD:為數(shù)據(jù)終端就緒線DTR。DTR由DTE發(fā)出DCE接收,用于表示數(shù)據(jù)終端(DTE)的狀態(tài)。若DTR=1,則表示DTE準備就緒;若DTR=0,表示DTE尚未準備就緒。通常,
DTE在加電啟動后就準備就緒了。
CC:為數(shù)據(jù)裝置就緒線DSR,由DCE發(fā)出DTE接收,是DTE的應答線,用于表示DCE中數(shù)據(jù)裝置的狀態(tài)。若DSR=1,則表示DCE的數(shù)據(jù)設備已準備好(如自動呼叫成功),但DCE是否和信道接通應由CTS指示;若DSR=0,則表示DCE中數(shù)據(jù)裝置尚未準備好。
CE:為振鈴指示器線RI,由DCE發(fā)出DTE接收,用于表示通信的另一方有無振鈴。若RI=1,則表示DCE正在接收對方DCE發(fā)來的振鈴信號。RI在DCE沒有收到振鈴信號的所有其他時間內都維持在邏輯0電平狀態(tài)。
CF:為數(shù)據(jù)載波檢測線DCD,又稱為接收線路信號檢測線。DCD信號由DCE發(fā)出DTE接收。當本地DCE正接收來自遠程的DCE載波信號時,DCE變?yōu)檫壿?。在調制解調器中,DCD常接到標有載波(Carrier)的發(fā)光二極管指示器上。
DA/DB:在同步通信方式必須使用的兩條線,但兩個信號不能同時使用,只能使用其中一個。DA是DTE為源的發(fā)送信號碼元定時線,該信號是由DTE產(chǎn)生的同步時鐘,用于使Modem能和DTE同步地發(fā)送數(shù)據(jù);DB是DCE為源的發(fā)送信號碼元定時線,同步時鐘由DCE產(chǎn)生,用于使Modem和DTE同步發(fā)送數(shù)據(jù)。
DD:接收信號的碼元定時線,該信號由DCE產(chǎn)生,用作同步接收時鐘,接收時必須把此信號從解調器發(fā)送給DTE。以上7條通信線配合6條本地通信線,常在以公用電話網(wǎng)為媒體的遠程通信中使用,以協(xié)調DTE和DCE間的數(shù)據(jù)傳輸。應當指出:在以公用電話網(wǎng)為媒體的遠程通信中,TXD線上發(fā)送數(shù)據(jù)的條件是RTS、CTS、DTR和DSR皆應為邏輯1有效狀態(tài),但在沒有專用數(shù)據(jù)裝置的本地通信中DTR和DSR兩條線是可以不用的。
3.其他引線(12條)
這些引線的定義和名稱已在表5.3中列出。其中,5條留作用戶定義,其余7條在大多數(shù)微型計算機系統(tǒng)中都空出不用,故在此從略。5.4.2RS-232C在工程中的應用
為了提高數(shù)據(jù)通信的可靠性和抗干擾能力,RS-232C標準中規(guī)定,發(fā)送端信號邏輯“0”(空號)電平范圍為+5~+15V,邏輯“1”(傳號)電平范圍為-5~-15V;接收端邏輯“0”為+3~+15V,邏輯“1”為-3~-15V。噪聲容限為2V。-5~+5V以及-3~+3V之間分別為發(fā)送端和接收端點信號的不確定區(qū)。通常,RS-232C總線邏輯電平采用+12V表示“0”,-12V表示“1”。為了實現(xiàn)上述電平轉換,RS-232C可采用運算放大器、晶體管和光電隔離器電路來完成電平轉換,或采用
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 洛陽職業(yè)技術學院《大學生就業(yè)指導》2023-2024學年第一學期期末試卷
- 2025年肇慶考貨運從業(yè)資格證
- 2025年鄂州貨運從業(yè)資格證考試題庫答案
- 2025年廣東貨運叢業(yè)資格證考試題庫答案
- 2024年某物流公司關于運輸000噸貨物的運輸合同
- 物聯(lián)網(wǎng)應用招投標合同操作規(guī)程
- 皮革制品庫房施工合同
- 咨詢服務租賃合同模板
- 合租影視制作室合同樣本
- 沙灘休閑區(qū)遮陽棚工程合同
- 2024合作房地產(chǎn)開發(fā)協(xié)議
- 農(nóng)貿(mào)市場通風與空調設計方案
- 第25課《周亞夫軍細柳》復習課教學設計+2024-2025學年統(tǒng)編版語文八年級上冊
- 2024年廣東省深圳市中考英語試題含解析
- 金蛇納瑞2025年公司年會通知模板
- GB/T 16288-2024塑料制品的標志
- 四年級英語上冊 【月考卷】第三次月考卷(Unit 5-Unit 6) (含答案)(人教PEP)
- 某某市“鄉(xiāng)村振興”行動項目-可行性研究報告
- 中國航空協(xié)會:2024低空經(jīng)濟場景白皮書
- 第七單元 條形統(tǒng)計圖 條形統(tǒng)計圖(一) (同步練習)-2024-2025學年人教版數(shù)學四年級上冊
- 行政主管崗位招聘筆試題及解答(某大型央企)2024年
評論
0/150
提交評論