隨著多微機系統的廣泛應用和電腦網路技術的普及,電腦的通訊功能愈來愈顯得重要。電腦通訊是指電腦與外部裝置或電腦與電腦之間的資訊交換。
通訊有並行通訊和串列通訊兩種方式。在多微機系統以及現代測控系統中資訊的交換多採用串列通訊方式。
電腦通訊是將電腦技術和通訊技術的相結合,完成電腦與外部裝置或電腦與電腦之間的資訊交換 。可以分為兩大類:並行通訊與串列通訊。
並行通訊通常是將資料位元組的各位用多條資料線同時進行傳送 。
並行通訊控制簡單、傳輸速度快;由於傳輸線較多,長距離傳送時成本高且接收方的各位同時接收存在困難。
串列通訊是將資料位元組分成一位一位的形式在一條傳輸線上逐個地傳送。
串列通訊的特點:傳輸線少,長距離傳送時成本低,且可以利用電話網等現成的裝置,但資料的傳送控制比並行通訊複雜。
串列通訊的基本概念
一、非同步通訊與同步通訊
1、非同步通訊
非同步通訊是指通訊的發送與接收裝置使用各自的時鐘控制資料的發送和接收過程。為使雙方的收發協調,要求發送和接收裝置的時鐘儘可能一致。
非同步通訊是以字元(構成的幀)為單位進行傳輸,字元與字元之間的間隙(時間間隔)是任意的,但每個字元中的各位是以固定的時間傳送的,即字元之間不一定有“位間隔”的整數倍的關係,但同一字元內的各位之間的距離均為“位間隔”的整數倍。
非同步通訊的資料格式 :
非同步通訊的特點:不要求收發雙方時鐘的嚴格一致,實現容易,裝置開銷較小,但每個字元要附加2~3位用於起止位,各幀之間還有間隔,因此傳輸效率不高。
2、同步通訊
同步通訊時要建立發送方時鐘對接收方時鐘的直接控制,使雙方達到完全同步。此時,傳輸資料的位之間的距離均為“位間隔”的整數倍,同時傳送的字元間不留間隙,即保持位同步關係,也保持字元同步關係。發送方對接收方的同步可以通過兩種方法實現。
此時,將資料區塊看作資料流,並用序列01111110作為開始和結束標誌。為了避免在資料流中出現序列01111110時引起的混亂,發送方總是在其發送的資料流中每出現5個連續的1就插入一個附加的0;接收方則每檢測到5個連續的1並且其後有一個0時,就刪除該0。
典型的面向位的同步協議如ISO的高階資料連結控制規程HDLC和IBM的同步資料連結控制規程SDLC。
同步通訊的特點是以特定的位組合“01111110”作為幀的開始和結束標誌,所傳輸的一幀資料可以是任意位。所以傳輸的效率較高,但實現的硬體裝置比非同步通訊複雜。
二、串列通訊的傳輸方向
1、單工
單工是指資料轉送僅能沿一個方向,不能實現反向傳輸。
2、半雙工
半雙工是指資料轉送可以沿兩個方向,但需要分時進行。
3、全雙工系統
全雙工系統是指資料可以同時進行雙向傳輸。
三、訊號的調製與解調
利用調製器(Modulator)把數字訊號轉換成類比訊號,然後送到通訊線路上去,再由解調器(Demodulator)把從通訊線路上收到的類比訊號轉換成數字訊號。由於通訊是雙向的,調製器和解調器合并在一個裝置中,這就是數據機MODEM。
四、串列通訊的錯誤校正
1、同位
在發送資料時,資料位元尾隨的1位為同位位元(1或0)。奇數同位時,資料中“1”的個數與校正位“1”的個數之和應為奇數;偶校正時,資料中“1”的個數與校正位“1”的個數之和應為偶數。接收字元時,對“1”的個數進行校正,若發現不一致,則說明傳輸資料過程中出現了差錯。
2、代碼和校正
代碼和校正是發送方將所發資料區塊求和(或各位元組異或),產生一個位元組的校正字元(校正和)附加到資料區塊末尾。接收方接收資料同時對資料區塊(除校正位元組外)求和(或各位元組異或),將所得的結果與發送方的“校正和”進行比較,相符則無差錯,否則即認為傳送過程中出現了差錯。
3、迴圈冗餘校正
這種校正是通過某種數學運算實現有效資訊與校正位之間的迴圈校正,常用於對磁碟資訊的傳輸、儲存區的完整性校正等。這種校正方法錯誤修正能力強,廣泛應用於同步通訊中。
五、傳輸速率與傳輸距離
1、傳輸速率
位元速率是每秒鐘傳輸二進位代碼的位元,單位是:位/秒(bps)。如每秒鐘傳送240個字元,而每個字元格式設定包含10位(1個起始位、1個停止位、8個資料位元),這時的位元速率為:
10位×240個/秒 = 2400 bps
2、傳輸距離與傳輸速率的關係
串列介面或終端直接傳送串列資訊位流的最大距離與傳輸速率及傳輸線的電氣特性有關。當傳輸線使用每0.3m(約1英尺)有50PF電容的非平衡屏蔽雙絞線時,傳輸距離隨傳輸速率的增加而減小。當位元速率超過1000 bps 時,最大傳輸距離迅速下降,如9600 bps 時最大距離下降到只有76m(約250英尺)。
串列通訊介面標準
一、RS-232C介面
RS-232C是EIA(美國電子工業協會)1969年修訂RS-232C標準。RS-232C定義了資料終端設備(DTE)與資料通信設備(DCE)之間的物理介面標準。
1、機械特性
RS-232C介面規定使用25針連接器,連接器的尺寸及每個插針的排列位置都有明確的定義。(陽頭)
6、採用RS-232C介面存在的問題
1、傳輸距離短,傳輸速率低
RS-232C匯流排標準受電容允許值的約束,使用時傳輸距離一般不要超過15米(線路條件好時也不超過幾十米)。最高傳送速率為20Kbps。
2、有電平位移
RS-232C匯流排標準要求收發雙方共地。通訊距離較大時,收發雙方的地電位差別較大,在訊號地上將有比較大的地電流併產生壓降。
3、抗幹擾能力差
RS-232C在電平轉換時採用單端輸入輸出,在傳輸過程中當幹擾和雜訊混在正常的訊號中。為了提高信噪比,RS-232C匯流排標準不得不採用比較大的電壓擺幅。
二、RS-422A介面
RS-422A輸出磁碟機為雙端平衡磁碟機。如果其中一條線為邏輯“1”狀態,另一條線就為邏輯“0”,比採用單端不平衡驅動對電壓的放大倍數大一倍。差分電路能從地線幹擾中拾取有效訊號,差分接收器可以分辨200mV以上電位差。若傳輸過程中混入了幹擾和雜訊,由於差分放大器的作用,可使幹擾和雜訊相互抵消。因此可以避免或大大減弱地線幹擾和電磁幹擾的影響。RS-422A傳輸速率(90Kbps)時,傳輸距離可達1200米。
RS-485是一點對多點的通訊介面,一般採用雙絞線的結構。普通的PC機一般不帶RS485介面,因此要使用RS-232C/RS-485轉換器。對於單片機可以通過晶片MAX485來完成TTL/RS-485的電平轉換。在電腦和單片機組成的RS-485通訊系統中,下位機由單片機系統組成,上位機為普通的PC機,負責監視下位機的運行狀態,並對其狀態資訊進行集中處理,以圖文方式顯示下位機的工作狀態以及工業現場被控裝置的工作狀況。系統中各節點(包括上位機)的識別是通過設定不同的站地址來實現的。
80C51的串列口
80C51串列口的結構
有兩個物理上獨立的接收、發送緩衝器SBUF,它們佔用同一地址99H ;接收器是雙緩衝結構 ;發送緩衝器,因為發送時CPU是主動的,不會產生重疊錯誤。
80C51串列口的控制寄存器
●SM2,多機通訊控制位,主要用於方式2和方式3。當接收機的SM2=1時可以利用收到的RB8來控制是否啟用RI(RB8=0時不啟用RI,收到的資訊丟棄;RB8=1時收到的資料進入SBUF,並啟用RI,進而在中斷服務中將資料從SBUF讀走)。當SM2=0時,不論收到的RB8為0和1,均可以使收到的資料進入SBUF,並啟用RI(即此時RB8不具有控制RI啟用的功能)。通過控制SM2,可以實現多機通訊。
在方式0時,SM2必須是0。在方式1時,若SM2=1,則只有接收到有效停止位時,RI才置1。
●REN,允許串列接收位。由軟體置REN=1,則啟動串列口接收資料;若軟體置REN=0,則禁止接收。
●TB8,在方式2或方式3中,是發送資料的第九位,可以用軟體規定其作用。可以用作資料的同位位元,或在多機通訊中,作為地址幀/資料幀的標誌位。
在方式0和方式1中,該位未用。
●RB8,在方式2或方式3中,是接收到資料的第九位,作為同位位元或地址幀/資料幀的標誌位。在方式1時,若SM2=0,則RB8是接收到的停止位。
●TI,發送中斷標誌位。在方式0時,當串列發送第8位元據結束時,或在其它方式,串列發送停止位的開始時,由內部硬體使TI置1,向CPU發中斷申請。在中斷服務程式中,必須用軟體將其清0,取消此中斷申請。
●RI,接收中斷標誌位。在方式0時,當串列接收第8位元據結束時,或在其它方式,串列接收停止位的中間時,由內部硬體使RI置1,向CPU發中斷申請。也必須在中斷服務程式中,用軟體將其清0,取消此中斷申請。
PCON中只有一位SMOD與串列口工作有關 :
SMOD(PCON.7) 傳輸速率倍增位。在串列口方式1、方式2、方式3時,傳輸速率與SMOD有關,當SMOD=1時,傳輸速率提高一倍。複位時,SMOD=0。
80C51串列口的工作方式
二、方式1
方式1是10位元據的非同步通訊口。TXD為資料發送引腳,RXD為資料接收引腳,傳送一幀資料的格式。其中1位起始位,8位元據位,1位停止位。
2、方式1輸入
用軟體置REN為1時,接收器以所選擇傳輸速率的16倍速率採樣RXD引腳電平,檢測到RXD引腳輸入電平發生負跳變時,則說明起始位有效,將其移入輸入移位寄存器,並開始接收這一幀資訊的其餘位。接收過程中,資料從輸入移位寄存器右邊移入,起始位移至輸入移位寄存器最左邊時,控制電路進行最後一次移位。當RI=0,且SM2=0(或接收到的停止位為1)時,將接收到的9位元據的前8位元據裝入接收SBUF,第9位(停止位)進入RB8,共置RI=1,向CPU請求中斷。
三、方式2和方式3
方式2或方式3時為11位元據的非同步通訊口。TXD為資料發送引腳,RXD為資料接收引腳 。
方式2和方式3時起始位1位,資料9位(含1位附加的第9位,發送時為SCON中的TB8,接收時為RB8),停止位1位,一幀資料為11位。方式2的傳輸速率固定為晶振頻率的1/64或1/32,方式3的傳輸速率由定時器T1的溢出率決定。
四、傳輸速率的計算
在串列通訊中,收發雙方對發送或接收資料的速率要有約定。通過軟體可對單片機串列口編程為四種工作方式,其中方式0和方式2的傳輸速率是固定的,而方式1和方式3的傳輸速率是可變的,由定時器T1的溢出率來決定。
串列口的四種工作方式對應三種傳輸速率。由於輸入的移位時鐘的來源不同,所以,各種方式的傳輸速率計算公式也不相同。
方式0的傳輸速率 = fosc/12
方式2的傳輸速率 =(2SMOD/64)· fosc
方式1的傳輸速率 =(2SMOD/32)·(T1溢出率)
方式3的傳輸速率 =(2SMOD/32)·(T1溢出率)
當T1作為傳輸速率發生器時,最典型的用法是使T1工作在自動再裝入的8位定時器方式(即方式2,且TCON的TR1=1,以啟動定時器)。這時溢出率取決於TH1中的計數值。
T1 溢出率 = fosc /{12×[256 -(TH1)]}
在單片機的應用中,常用的晶振頻率為:12MHz和11.0592MHz。所以,選用的傳輸速率也相對固定。常用的串列口傳輸速率以及各參數的關係如表所示。
串列口工作之前,應對其進行初始化,主要是設定產生傳輸速率的定時器1、串列口控制和中斷控制。具體步驟如下:
A、確定T1的工作方式(編程TMOD寄存器);
B、計算T1的初值,裝載TH1、TL1;
C、啟動T1(編程TCON中的TR1位);
D、確定串列口控制(編程SCON寄存器);
串列口在中斷方式工作時,要進行中斷設定(編程IE、IP寄存器)。
單片機串列口應用舉例
在電腦群組成的測控系統中,經常要利用串列通訊方式進行資料轉送。80C51單片機的串列口為電腦間的通訊提供了極為便利的條件。利用單片機的串列口還可以方便地擴充鍵盤和顯示器,對於簡單的應用非常便利。這裡僅介紹單片機串列口在通訊方面的應用。
一、點對點的通訊
1、硬體串連
二、多機通訊
1、硬體串連
單片機構成的多機系統常採用匯流排型主從式結構。所謂主從式,即在數個單片機中,有一個是主機,其餘的是從機,從機要服從主機的調度、支配。80C51單片機的串列口方式2和方式3適於這種主從式的通訊結構。當然採用不同的通訊標準時,還需進行相應的電平轉換,有時還要對訊號進行光電隔離。在實際的多機應用系統中,常採用RS-485串列標準匯流排進行資料轉送。
2、通訊協定
A、所有從機的SM2位置1,處於接收地址幀狀態。
B、主機發送一地址幀,其中8位是地址,第9位為地址/資料的區分標誌,該位置1表示該幀為地址幀。
C、所有從機收到地址幀後,都將接收的地址與原生地址比較。對於地址相符的從機,使自己的SM2位置0(以接收主機隨後發來的資料幀),並把本站地址發回主機作為應答;對於地址不符的從機,仍保持SM2=1,對主機隨後發來的資料幀不予理睬。
D、從機發送資料結束後,要發送一幀校正和,共置第9位(TB8)為1,作為從機資料傳送結束的標誌。
E、主機接收資料時先判斷資料接收標誌(RB8),若RB8=1,表示資料傳送結束,並比較此幀校正和,若正確則回送正確訊號00H,此訊號命令該從機複位(即重新等待地址幀);若校正和出錯,則發送0FFH,命令該從機重發資料。若接收幀的RB8=0,則存資料到緩衝區,並準備接收下幀資訊。
F、主機收到從機應答地址後,確認地址是否相符,如果地址不符,發複位訊號(資料幀中TB8=1);如果地址相符,則清TB8,開始發送資料。
G、從機收到複位命令後回到監聽地址狀態(SM2=1)。否則開始接收資料和命令。
3、應用程式
A、主機發送的地址聯絡訊號為:00H,01H,02H ,… …(即從機裝置地址),地址FFH為命令各從機複位,即恢複SM2=1。
B、主機命令編碼為:01H,主機命令從機接收資料;02H,主機命令從機發送資料。其它都按02H對待。
RRDY=1:表示從機準備好接收。
TRDY=1:表示從機準備好發送。
ERR=1: 表示從機接收的命令是非法的。
程式分為主機程式和從機程式。約定一次傳遞資料為16個位元組,以01H地址的從機為例。
練習一下:
1.由上位機發送1給單片機時,蜂鳴器以400ms頻率發聲,發2時以200ms頻率發聲,發3時以100ms頻率發聲,發4時關閑蜂鳴器。
2.以2400bps從電腦發送任一位元組資料,當單片機收到該資料後,在此資料前加上一序號然後連同此資料一起發送至電腦,當序號超過255時歸零。
3.以16進位發送一個0-65536之間的任一數,當單片機收到後在數位管上動態顯示出來,傳輸速率自定。
4. 用AD以1HZ的頻率採集類比訊號,然後轉換成數字量,再將其以1200bps發送到電腦,在電腦上顯示。
5.按下矩陣鍵盤第一行時以1200bps發送,1,2,3,4,第二行時以2400bps發送5,6,7,8,第三行以4800bps發送,9,10,11,12,第四行以9600pbs 發送,13,14,15,16.