|
什么是計(jì)算機(jī)通信
通信是指通過某種媒體將信息從一地傳送到另一地。古代飛鴿傳書和今天電話、手機(jī),都是人與人之間的通信。
計(jì)算機(jī)通信是將計(jì)算機(jī)技術(shù)和通信技術(shù)的相結(jié)合,完成計(jì)算機(jī)與外部設(shè)備或計(jì)算機(jī)與計(jì)算機(jī)之間的信息交換。 上面所說的計(jì)算機(jī)與計(jì)算機(jī)之間的通信分下面3種情況:
PC機(jī)與PC機(jī)通信; PC機(jī)與單片機(jī)通信(本講只講這一種); 單片機(jī)與單片機(jī)通信。
為什么要進(jìn)行計(jì)算機(jī)通信
計(jì)算機(jī)通信的出現(xiàn),大大拓展了計(jì)算機(jī)的應(yīng)用范圍。 PC機(jī)與單片機(jī)通信,可以實(shí)現(xiàn):
1、實(shí)現(xiàn)遠(yuǎn)程測控。
2、組成計(jì)算機(jī)網(wǎng)絡(luò)。
并行通信的特點(diǎn):傳輸速度快,由于需要多根傳輸線,長距離傳輸時(shí)成本高,只適用于短距離傳輸。
串行通信的特點(diǎn):傳輸速度慢,但傳輸線少,長 距離傳傳輸時(shí)成本低,適用于長距離傳輸。
異步通信與同步通信
異步通信 收發(fā)設(shè)備使用各自的時(shí)鐘。異步通信在發(fā)送字符時(shí),所發(fā)送的字符之間的時(shí)間間隔可以是任意的。接收端必須時(shí)刻做好接收的準(zhǔn)備。發(fā)送端可
以在任意時(shí)刻開始發(fā)送字符,為保證收發(fā)雙方同步, 每個(gè)字符的開始和結(jié)束的地方必須加上標(biāo)志,即加上起始位和停止位,以便使接收端能夠正 確地將每一個(gè)字符接收下來。
特點(diǎn):由于不要求收發(fā)雙方時(shí)鐘嚴(yán)格一致,因此容易實(shí)現(xiàn),通信設(shè)備簡 單、便宜。但為保證收發(fā)雙方同步,每個(gè)字符均需附加起始位、停止位, 因此傳輸效率不高。
同步通信 發(fā)送與接收設(shè)備使用同一個(gè)時(shí)鐘,雙方本身完全同步,從理論上說,不 需要人為增加同步措施,但實(shí)際上還是要增加一些同步措施的(同步通信把幾十到幾千個(gè)字符組成一個(gè)幀,每幀的開始要附加同步字符)。異 步通信在發(fā)送字符時(shí),所發(fā)送的字符之間沒有時(shí)間間隔。
特點(diǎn):收發(fā)雙方不停地發(fā)送和接收連續(xù)的字符,傳輸效率高,特別適合 批量數(shù)據(jù)的傳送;但它要求在通信中保持精確的同步,實(shí)現(xiàn)較異步通信 復(fù)雜。
串行通信的傳輸方向
1、單工 單工是指數(shù)據(jù)傳輸僅能沿一個(gè)方向進(jìn)行。
2、半雙工 半雙工是指數(shù)據(jù)傳輸可以沿兩個(gè)方向,但需要分時(shí)進(jìn)行。
3、全雙工 全雙工是指數(shù)據(jù)可以同時(shí)進(jìn)行雙向傳輸。
本講沒有用到奇偶校驗(yàn),因此這里我們只要了解就可以了。 收發(fā)雙方事先約定采用奇校驗(yàn)還是偶校驗(yàn)。 如約定采用奇校驗(yàn):發(fā)送數(shù)據(jù)時(shí),數(shù)據(jù)位尾隨1位奇校驗(yàn)位,奇校驗(yàn) 位可以取0或1,但要保證,數(shù)據(jù)中“1”的個(gè)數(shù)與校驗(yàn)位“1”的個(gè)數(shù)之和 應(yīng)為奇數(shù);接收數(shù)據(jù)時(shí),檢查數(shù)據(jù)中“1”的個(gè)數(shù)與校驗(yàn)位“1”的個(gè)數(shù)之 和是否仍應(yīng)為奇數(shù),如不是,則說明數(shù)據(jù)在傳輸過程中出現(xiàn)了差錯(cuò)。 如約定采用偶校驗(yàn):發(fā)送數(shù)據(jù)時(shí),數(shù)據(jù)位尾隨1位偶校驗(yàn)位,偶校驗(yàn) 位可以取0或1,但要保證,數(shù)據(jù)中“1”的個(gè)數(shù)與校驗(yàn)位“1”的個(gè)數(shù)之和 應(yīng)為偶數(shù);接收數(shù)據(jù)時(shí),檢查數(shù)據(jù)中“1”的個(gè)數(shù)與校驗(yàn)位“1”的個(gè)數(shù)之 和是否仍應(yīng)為偶數(shù),如不是,則說明數(shù)據(jù)在傳輸過程中出現(xiàn)了差錯(cuò)。
串行通信的數(shù)傳率
數(shù)據(jù)傳輸率 簡稱數(shù)傳率,指單位時(shí)間內(nèi)傳輸?shù)男畔⒘浚捎帽忍芈屎筒ㄌ芈蕘肀硎尽?/font>
⑴比特率:是數(shù)字信號的傳輸速率,它用單位時(shí)間內(nèi)傳輸?shù)亩M(jìn)制代碼的有 效位(bit)數(shù)來表示,其單位為每秒比特?cái)?shù)bit/s(bps) 。
⑵波特率:波特率指數(shù)據(jù)信號對載波的調(diào)制速率,它用單位時(shí)間內(nèi)載波調(diào)制 狀態(tài)改變次數(shù)來表示,其單位為波特(Baud)。 對于串行通信來說,或者說是對于普通的數(shù)字電路來說,都是兩相調(diào)制,也就 是單個(gè)調(diào)制狀態(tài)對應(yīng)1個(gè)二進(jìn)制位,因此:
比特率= 波特率
1bps=1 Baud
計(jì)算機(jī)中常用的波特率是:110、300、600、1200、2400、4800、9600、19200、28800、33600,目前最高可達(dá)56Kbps.
CH340轉(zhuǎn)出的虛擬串口的波特率突破了傳統(tǒng)串口的56Kbps限制,最高可達(dá)2Mbps
串行通信的傳輸距離
RS232為全雙工,最大傳輸距離15米。 RS485為半雙工,最大傳輸距離1200米,最多可 加8只中繼器,可延伸到10800米 。
串行通信接口標(biāo)準(zhǔn)
RS-232是美國電子工業(yè)協(xié)會(huì)EIA在1962年發(fā)布的一種 串行通信接口標(biāo)準(zhǔn),后有不少改進(jìn)版本,其中最常用的 是RS-232-C版。 RS是英文“推薦標(biāo)準(zhǔn)”的縮寫,232為 標(biāo)識(shí)號,C表示修改次數(shù)。RS-232-C總線標(biāo)準(zhǔn)設(shè)有25 條信號線,包括一個(gè)主通道和一個(gè)輔助通道,在多數(shù)情 況下主要使用主通道,對于一般雙工通信,僅需幾條信 號線就可實(shí)現(xiàn),如一條發(fā)送線、一條接收線及一條地線。
筆記本電腦如何進(jìn)行串口實(shí)驗(yàn)
大部分筆記本電腦,甚至部分新出的臺(tái)式機(jī)沒有 串口,我們可以用USB轉(zhuǎn)換的方式,轉(zhuǎn)出一個(gè)甚 至多個(gè)虛擬的串口,同樣可以完成串口實(shí)驗(yàn)。
此時(shí),單片機(jī)端要用CH340(或其他的USB- COM芯片,如PL2303)替代MAX232,單片機(jī)端 與PC端改用USB電纜連接, PC機(jī)安裝驅(qū)動(dòng)程 序。上下位機(jī)編程和其他操作和原來完全一致。
筆記本電腦(包括臺(tái)式機(jī))可使用USB口轉(zhuǎn)出的虛擬串口進(jìn)行串行通信,框圖如上
MAX232是TTL和RS232電平轉(zhuǎn)換芯片,CH340是USB-COM轉(zhuǎn)換芯片。 單片機(jī)叫下位機(jī),PC機(jī)叫上位機(jī)。
在串口傳輸電纜上,采用 RS232電平規(guī)范:
邏輯1=-3V~-15V
邏輯0=+3V~+15V
而單片機(jī)的串口模塊采用TTL電平規(guī)范: 邏輯1=5V
邏輯0=0V
因此單片機(jī)的串口模塊和串口傳輸電纜之間要進(jìn) 行電平轉(zhuǎn)換,這個(gè)任務(wù)由MAX232完成。
STC89C52 有1個(gè)串口模塊----串口1,有兩個(gè)物理上獨(dú)立的接收、發(fā)送緩沖器,但是它們都叫SBUF。單片機(jī) 操作的時(shí)候是否會(huì)產(chǎn)生混亂?不會(huì)。執(zhí)行讀操作時(shí),訪問接收緩沖器; 執(zhí)行寫操作時(shí),訪問發(fā)送緩沖器。
串行口的控制寄存器
SCON 是一個(gè)特殊功能寄存器,用以設(shè)定串行口的工作方式、接收/發(fā) 送控制以及設(shè)置狀態(tài)標(biāo)志,可以按位操作:(復(fù)位值:0x00000000)
SM0和SM1為工作方式選擇位,可選擇四種工作方式,一般選方式1:
●REN,允許串行接收位。由軟件置REN=1,則啟動(dòng)串行口接收數(shù)據(jù);若軟件置REN=0,則禁止接收。
●TI,發(fā)送中斷標(biāo)志位。在方式0時(shí),當(dāng)串行發(fā)送第8位數(shù) 據(jù)結(jié)束時(shí),或在其它方式,串行發(fā)送停止位的開始時(shí),由 內(nèi)部硬件使TI置1,向CPU發(fā)中斷申請。在中斷服務(wù)程序 中,必須用軟件將其清0,取消此中斷申請。
●RI,接收中斷標(biāo)志位。在方式0時(shí),當(dāng)串行接收第8位數(shù) 據(jù)結(jié)束時(shí),或在其它方式,串行接收停止位的中間時(shí),由 內(nèi)部硬件使RI置1,向CPU發(fā)中斷申請。也必須在中斷服 務(wù)程序中,用軟件將其清0,取消此中斷申請。
下列位本講未用,采用上電默認(rèn)值0:
●SM2:多機(jī)通信控制位
●TB8:發(fā)送數(shù)據(jù)的第九位
●RB8:接收到數(shù)據(jù)的第九位
獨(dú)立波特率發(fā)生器的相關(guān)位
BRTR(獨(dú)立波特率發(fā)生器啟停位): =1, 允許獨(dú)立波特率發(fā)生器 運(yùn)行;=0, 不允許獨(dú)立波特率發(fā)生器運(yùn)行。
BRTx12:=0, 獨(dú)立波特率發(fā)生器每12 個(gè)時(shí)鐘計(jì)數(shù)一次(和傳 統(tǒng)51兼容),=1, 獨(dú)立波特率發(fā)生器每1 個(gè)時(shí)鐘計(jì)數(shù)一次
S1BRS: =1, 獨(dú)立波特率發(fā)生器作為串口1 的波特率發(fā)生 器,此時(shí)定時(shí)器1 得到釋放; =0, 串口1 波特率發(fā)生器選 擇定時(shí)器1。
PCON中只有一位SMOD與串行口工作有關(guān) :
SMOD(PCON.7) 波特率倍增位。在串行口方式1、方式2、方式3時(shí),波特率與SMOD有關(guān),當(dāng)SMOD=1時(shí),波特率提高一倍。復(fù)位時(shí),SMOD=0。
該位本講未用,采用上電默認(rèn)值0即可。
串行口的工作方式
本講只講最常用的方式1;方式0、2、3很少用到,不需掌握。
方式1是10位數(shù)據(jù)的異步通信口。TXD為數(shù)據(jù)發(fā)送引腳, RXD為數(shù)據(jù)接收引腳,傳送一幀數(shù)據(jù)的格式如圖所示。其中1 位起始位,8位數(shù)據(jù)位,1位停止位。
波特率和BRT值的計(jì)算
在串行通信中,收發(fā)雙方對發(fā)送或接收數(shù)據(jù)的速率要有約定。
方式1的波特率=(2SMOD/32)•( 獨(dú)立波特率發(fā)生器的溢 出率)
當(dāng)BRTx12 = 0時(shí):獨(dú)立波特率發(fā)生器的溢出率 =Fosc/12/( 256 - BRT )
實(shí)例:波特率9600,計(jì)算BRT的值。
波特率 =(1/32)•(fosc /12/(256 -BRT))
BRT=256- fosc /(384*波特率)=256-11059200/
(384*9600)=253
也可以用“51串口通信計(jì)算器”快速完成BRT設(shè)置值的計(jì)算。
串行口初始化步驟
1、TX設(shè)置為輸出、RX設(shè)置為輸入,也可不設(shè)置,采用默認(rèn)的準(zhǔn)雙向 口模式。
2、設(shè)置串口1 的工作模式,SCON 寄存器中的SM0 和SM1 兩位決定 了串口1 的4 種工作模式。
3、如要串口1 接收,將SCON 寄存器中的REN 位置1 即可。
4、計(jì)算BRT的值, 并置數(shù);
5、設(shè)置獨(dú)立波特率發(fā)生器相關(guān)位:BRTx12:=0, S1BRS: =1, SMOD
6、啟動(dòng)獨(dú)立波特率發(fā)生器( BRTR =1);
7、串行口工作在中斷方式時(shí),還要設(shè)置串口1 的中斷優(yōu)先級
( PS,PSH ),如果不設(shè)置的話,默認(rèn)是低優(yōu)先級;打開中斷相應(yīng)的 控制位(ES,EA)。接收完成標(biāo)志RI,發(fā)送完成標(biāo)志TI,要由軟件清
如何通過串口收發(fā)數(shù)據(jù)
串口1接收到的數(shù), 從SBUF中讀取;如要從串口1 發(fā)送,將數(shù)據(jù)送入SBUF 即可。
完整的pdf格式課件文檔51黑下載地址:
35、慧凈51單片機(jī)視頻教程 51單片機(jī)串口通信原理.pdf
(1.03 MB, 下載次數(shù): 0)
2018-9-22 03:19 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
|
|