文章目錄
- 一、先知先會
-
- 1、計算串行通信基礎
- 2、串行通信的基本概念
- (1)、異步通信與同步通信
-
- a.異步通信
- b、同步通信
- (2)、串行通信的傳輸方向
- (3)、串行通信常見的錯誤校驗
- (4)、傳輸速率
- (5)、傳輸距離與傳輸速率的關系
- (6)、串行通信接口标準
-
- a.RS-232C接口
- <1>、機械特性
- <2>、功能特性
- <3>、過程特性
- b.RS-232C電平與TTL電平轉換驅動電路
- c.RS422A接口
- d.RS-485接口
- 二、80C51的串行口
-
- 1、80C51串行口的結構
- 2、寄存器SCON
- 3、寄存器PCON
- 三、串行口的工作方式
-
- 1、方式0
-
- a、輸出
- b、輸入
- 2、方式1
-
- a.輸出
- b.輸入
- 3、方式2和方式3
-
- a.輸出
- b.輸入
- 四、波特率的計算
- 五、序列槽如何使用
- 六、單片機與單片機的通信
-
- 1、點對點的通信_硬體連接配接
- 2、多機通信_硬體連接配接
- 七、單片機序列槽的中斷号
一、先知先會
1、計算串行通信基礎
2、串行通信的基本概念
(1)、異步通信與同步通信
a.異步通信
異步通信是指通信的發送與接收裝置使用各自的時鐘控制資料的發送和接收過程。為使雙方的收發協調,要求發送和接收裝置的時鐘盡可能一緻。
異步通信是以(構成的幀)為
字元
進行傳輸,字元與字元之間的間隙(時間間隔)是
機關
的,但每個字元中的各位是以
任意
傳送的,即
固定的時間
不一定有“位間隔”的整數倍的關系,但
字元之間
的
同一字元内
的距離均為“位間隔”的整數倍。
各位之間
b、同步通信
同步通信時要建立時鐘對
發送方
時鐘的
接收方
,使雙方達到
直接控制
,。此時,傳輸資料的位之間的距離均為“位間隔”的整數倍,同時傳送的字元間不留間隙,即
完全同步
關系,
保持位同步
關系。發送方對接收方的同步可以通過兩種方法實作。
也保持字元同步
(2)、串行通信的傳輸方向
- 單工:資料傳輸僅能沿
,不能實作反向傳輸;一個方向
- 半雙工:資料傳輸可以沿
,但需要分時進行;兩個方向
- 全雙工:資料可以
傳輸。同時進行雙向
(3)、串行通信常見的錯誤校驗
- 奇偶校驗
在發送資料時,資料位尾随的1位為奇偶校驗位(1或0)。奇校驗時,資料中“1”的個數與校驗位“1”的個數之和應為奇數;偶校驗時,資料中“1”的個數與校驗位“1”的個數之和應為偶數。接收字元時,對“1”的個數進行校驗,若發現不一緻,則說明傳輸資料過程中出現了差錯。
- 代碼和校驗
代碼和校驗是發送方将所發資料塊求和(或各位元組異或),産生一個位元組的校驗字元(校驗和)附加到資料塊末尾。接收方接收資料同時對資料塊(除校驗位元組外)求和(或各位元組異或),将所得的結果與發送方的“校驗和”進行比較,相符則無差錯,否則即認為傳送過程中出現了差錯。
- 循環備援校驗
這種校驗是通過某種數學運算實作有效資訊與校驗位之間的循環校驗,常用于對磁盤資訊的傳輸、存儲區的完整性校驗等。這種校驗方法糾錯能力強,廣泛應用于同步通信中。
通常使用
奇偶校驗
,其它的了解即可。
(4)、傳輸速率
比特率
(也稱
波特率
),每秒傳輸
二進制代碼
的
位數
,機關是:位/秒(bps)。
每秒傳送240個字元,而每個字元格式包含10位(1個起始位、1個停止位、8個資料位),這時的比特率為: 10位× 240個/秒 = 2400 bps
(5)、傳輸距離與傳輸速率的關系
串行接口或終端直接傳送串行資訊位流的最大距離與傳輸速率及傳輸線的電氣特性有關。當傳輸線使用每0.3米(約1英尺)有50PF電容的非平衡屏蔽雙絞線時,傳輸距離随傳輸速率的增加而減小。當比特率超過1000bps時,最大傳輸距離迅速下降。
9600bps時,最大距離下降到隻有76m(約250英尺)。
就是說【傳輸
速度越
大,傳輸
距離
越小】。
(6)、串行通信接口标準
a.RS-232C接口
RS-232C是EIA(美國電子工業協會)1969年修訂RS-232C标準。RS-232C定義了資料終端裝置(DTE)與資料通信裝置(DCE)之間的實體接口标準。
<1>、機械特性
RS-232C接口規定使用25針連接配接器,連接配接器的尺寸及每個插針的排 列位置都有明确的定義。(陽頭)
<2>、功能特性
<3>、過程特性
過程特性規定了 信号之間的時序關系
,以便正确地接收和發送資料。
注意:是
發送
與
接收
相接,别連錯了
b.RS-232C電平與TTL電平轉換驅動電路
晶片,将
MC1488
轉換
TTL電平
,即将
RS-232電平
轉換為
5V
進行通信。
12V
晶片,将
MC1489
轉換為
RS-232電平
,即将
TTL電平
轉換為
12V
進行通信。
5V
c.RS422A接口
RS-422A。如果其中一條線為邏輯“1”狀态,另一條線就為邏輯“0”,比采用單端不平衡驅動對電壓的放大倍數大一倍。
輸出驅動器為雙端平衡驅動器
能從地線幹擾中拾取有效信号,差分接收器可以分辨200mV以上電位差。若傳輸過程中混入了幹擾和噪聲,由于差分放大器的作用,可使幹擾和噪聲互相抵消。是以可以避免或大大減弱地線幹擾和電磁幹擾的影響。
差分電路
RS-422A傳輸速率(90Kbps)時,傳輸距離可達1200米。
d.RS-485接口
RS-485是RS-422A的變型:RS-422A用于全雙工,而RS-485則用于半雙工。RS-485是一種
多發送器
标準,在通信線路上最多可以使用32 對差分驅動器/接收器。如果在一個網絡中連接配接的裝置超過32個,還可以使用中繼器。
RS-485的信号傳輸采用兩線間的電壓來表示邏輯1和邏輯0。由于發送方需要
,接收方也需要兩根傳輸線。傳輸線采用差動信道,是以它的幹擾抑制性極好,又因為它的阻抗低,無接地問題,是以
兩根傳輸線
,傳輸速率可達1Mbps。
傳輸距離可達1200米
二、80C51的串行口
1、80C51串行口的結構
有兩個實體上獨立的,它們占用同一位址99H ;接收器是雙緩沖結構 ;發送緩沖器,因為發送時CPU是主動的,不會産生
接收、發送緩沖器SBUF
重疊錯誤。
2、寄存器SCON
SCON 是一個特殊功能寄存器,用以設定串行口的工作方式、接收/發送控制。
其設定狀态标志:
SM0和SM1為工作方式選擇位,可選擇四種工作方式:
通常使用方式1
- SM2,
,主要用于多機通信控制位
和方式2
。方式3
當
接收機的SM2=1時可以利用的RB8來控制是否激活RI
- RB8=0,不激活
,收到的資訊丢棄;RI
- RB8=1,收到的資料進入
,并激活SBUF
,進而在中斷服務中将資料從RI
讀走。SBUF
,不論收到的SM2=0
為0還是1,均可以使收到的資料進入RB8
,并激活SBUF
。(即此時RB8RI
RI的激活)。【通過控制不控制
,可以實作多機通信】。SM2
- RB8=0,不激活
注意:在
方式0
時,
SM2
必須為0;在
方式1
時,如果
SM2=1
,則隻有接收到
有效停止位
時,
RI
才置1。
-
,允許串行接收位。REN
由
置軟體
,則REN=1
啟動
串行口接收資料;
若軟體置
,則REN=0
。進制接收
-
,在方式2或方式3中,是發送資料的TB8
,可以用第九位
。軟體規定其作用
可以用作資料的
或在多機通信中,作為奇偶校驗位
的标志位。(在方式0和方式1中,該位未用)位址幀/資料幀
-
,在方式2或方式3中,是接收到資料的RB8
。第九位
作為
或奇偶校驗位
的标志位。(在方式1時,若位址幀/資料幀
,則SM2=0
是接收到的停止位。RB8
-
,發送中斷标志位。TI
在方式0時,當串行發送第8位資料結束時,或在其它方式,串行發送停止位的開始時,由内部硬體使TI置1,向CPU發中斷申請。在中斷服務程式中,
用必須
,取消中斷申請。軟體清零
-
,接收中斷标志位。RI
在方式0時,當串行接收第8位資料結束時,或在其它方式,串行接收停止位的中間時,由内部硬體使
,向CPU發中斷申請。也RI=1
在中斷服務程式中,用必須
,取消此中斷。軟體清零
3、寄存器PCON
PCON中隻有一位SMOD與串行口工作有關 :
SMOD
(PCON.7) 波特率倍增位。在串行口方式1、方式2、方式3時,波特率與SMOD有關,當SMOD=1時,波特率提高一倍。複位時,SMOD=0。
三、串行口的工作方式
1、方式0
a、輸出
方式0時,串行口為
同步移位
寄存器的輸入輸出方式。主要用于擴充并行輸入或輸出口。
資料由
(P3.0)引腳輸入或輸出,同步移位脈沖由
RXD
(P3.1)引腳輸出。發送和接收均為8位資料,低位在先,高位在後。
TXD
1、方式0輸出
波特率固定為fosc/12。
當發送完最後一位,會産生 中斷标志
。
b、輸入
當接收完最後一位,會産生 中斷标志
。
2、方式1
方式1是。
10位資料的異步通信口
為資料發送引腳,
TXD
為資料接收引腳,傳送一幀資料的格式如圖所示。其中
RXD
。
1位起始位,8位資料位,1位停止位
a.輸出
發送的時候,是
先
位
低
位
後高
b.輸入
從開始接收,直到接收到
起始位
,
停止位
RI
中斷标志置1。
用
将
軟體
置為1時,
REN
所選擇波特率的16倍速率
接收器
采樣
引腳電平,檢測到
RXD
引腳輸入電平發生
RXD
時,則說明
負跳變
,将其移入
起始位有效
中,并開始接收這一幀資訊的其餘位。(一幀資訊包括
輸入移位寄存器
、
起始位
、
資料位(D0~7)
停止位
)。
接收過程中,資料從
輸入移位寄存器
移入,起始位移至
右邊
輸入移位寄存器
時,控制電路進行最後一次移位。當
最左邊
,且
RI=0
(或接收到的停止位為1)時,将接收到的9位資料的前8位資料裝入接收
SM2=0
,第9位(停止位)進入
SBUF
,并且置
RB8
,向CPU請求中斷。
RI=1
3、方式2和方式3
方式2或方式3時為11位資料的異步通信口。TXD為資料發送引腳,RXD為資料接收引腳 。
方式2和方式3時起始位1位,資料9位(含1位附加的第9位,為
發送時
中的
SCON
,
TB8
為
接收時
),停止位1位,一幀資料為11位。
RB8
- 方式2的波特率固定為晶振頻率的1/64或1/32;
- 方式3的波特率由定時器T1的溢出率決定。
a.輸出
****開始時,先把
發送
0輸出到
起始位
引腳,然後
TXD
的
發送移位寄存器
(
輸出位
)到
D0
引腳。每一個
TXD
都使輸出移位寄存器的
移位脈沖
一位,并由
各位右移
TXD
引腳輸出。
第一次移位時,
“1”移入輸出移位寄存器的
停止位
上 ,以後每次移位,
第9位
。當
左邊都移入0
時,左邊其
停止位移至輸出位
,檢測電路檢測到這一條件時,使控制電路進行最後一次移位,并置
餘位全為0
,向CPU請求中斷。
TI=1
b.輸入
時,資料從右邊移入輸入移位寄存器,在起始位0移到最左邊時,控制電路進行最後一次移位。當
接收
,且
RI=0
(或接收到的第9位資料為1)時,接收到的資料裝入
SM2=0
和
接收緩沖器SBUF
(接收資料的第9位),置
RB8
,向CPU請求中斷。如果條件不滿足,則資料丢失,且
RI=1
,繼續搜尋
不置位RI
引腳的負跳變。
RXD
四、波特率的計算
在串行通信中,收發雙方對發送或接收資料的速率要有約定。
通過軟體可對單片機串行口程式設計為四種工作方式,其中方式0和
方式2的波特率是固定的,而方式1和方式3的波特率是可變的,
由定時器T1的溢出率來決定。
串行口的四種工作方式對應三種波特率。由于輸入的移位時鐘的來源不同,是以,各種方式的波特率計算公式也不相同。
- 方式0的波特率 = fosc/12
- 方式2的波特率 =(2SMOD/64)· fosc
- 方式1的波特率 =(2SMOD/32)·(T1溢出率)
- 方式3的波特率 =(2SMOD/32)·(T1溢出率)
方式1和方式3的波特率是的,而我們
固定
的是方式1
常用
初值即為 TH1
五、序列槽如何使用
串行口工作之前,應對其進行初始化,主要是設定産生波特率的定時器1、串行口控制和中斷系統。具體步驟:
- 确定
(程式設計T1的工作方式
寄存器);TMOD
- 計算
,裝載T1的初值
、TH1
;TL1
-
(程式設計啟動T1
中的TCON
位);TR1
- 确定
(程式設計串行口控制
寄存器);SCON
**注意:**串行口在中斷方式工作時,要進行
中斷設定
(程式設計
IE
、
IP
寄存器)。
#include "reg52.h"
typedef unsigned int u16;
typedef unsigned char u8;
void UsartInit()
{/* 此處配置的波特率是為4800,波特率加倍*/
TMOD|=0x20;//選擇工作方式2:8位自動重裝載的定時器
TH1=0xF4;//8位自動重裝,是以上下兩個一樣
TL1=0xF4;
PCON=0x80;//設定SMOD,PCON是不可位尋址,波特率加倍
TR1=1;//啟動定時器1
SCON=0x50;//SM0=0,SM1=1,即為方式1:8位資料、波特率可變;REN=1 允許串行接收位
ES=1;//打開序列槽中斷
EA=1;//打開總中斷
}
void main()
{
UsartInit();
while(1);
}
void Usart() interrupt 4
{
u8 receiveData;
receiveData=SBUF;//讀取接收緩沖器中的資料
RI=0;//接收完成後,硬體自動置1,需要軟體清零
SBUF=receiveData;//傳遞資料時,把資料存入傳輸緩沖器中
while(!TI);
TI=0;//發送完成後,硬體自動置1,需要軟體清零
}
六、單片機與單片機的通信
1、點對點的通信_硬體連接配接
通過2個
MAX232A
晶片。
将單片機1的
電平通過
TTL
轉換為
MAX232A晶片1
電平,再由
RS232
與
MAX232A晶片1
進行通信,再由
MAX232A晶片2
轉為
MAX232A晶片2
電平,來進行
TTL
的通信。
單片機間
2、多機通信_硬體連接配接
單片機構成的多機系統常采用總線型主從式結構。所謂 主從式
,即在數個單片機中,有一個是主機,其餘的是從機,從機要服從主機的排程、支配。
80C51單片機的串行口方式2和方式3适于這種主從式的通信結構。
當然采用
時,還需進行
不同的通信标準
,有時還要對信号進行光電隔離。在實際的多機應用系統中,常采用
相應的電平轉換
串行标準總線進行資料傳輸。
RS-485