版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
第七章80C51的串行口7.2
80C51的串行口7.1
計算機串行通信基礎7.3
單片機串行口應用舉例
7.1
計算機串行通信基礎
隨著多微機系統(tǒng)的廣泛應用和計算機網(wǎng)絡技術的普及,計算機的通信功能愈來愈顯得重要。計算機通信是指計算機與外部設備或計算機與計算機之間的信息交換。通信有并行通信和串行通信兩種方式。在多微機系統(tǒng)以及現(xiàn)代測控系統(tǒng)中信息的交換多采用串行通信方式。計算機通信可以分為兩大類:并行通信與串行通信。
1、并行通信:通常是將數(shù)據(jù)字節(jié)的各位用多條數(shù)據(jù)線同時進行傳送。優(yōu)點:控制簡單、傳輸速度快;缺點:由于傳輸線較多,長距離傳送時成本高且接收方的各位同時接收存在困難。
2、串行通信:是將數(shù)據(jù)字節(jié)分成一位一位的形式在一條傳輸線上逐個地傳送。優(yōu)點:傳輸線少,長距離傳送時成本低,且可以利用電話網(wǎng)等現(xiàn)成的設備;缺點:數(shù)據(jù)的傳送控制比并行通信復雜,傳輸速度慢。
7.1.1
串行通信的基本概念
一、異步通信與同步通信
1、異步通信
異步通信是指通信的發(fā)送與接收設備使用各自的時鐘控制數(shù)據(jù)的發(fā)送和接收過程。為使雙方的收發(fā)協(xié)調(diào),要求發(fā)送和接收設備的時鐘盡可能一致。
異步通信是以字符(構成的幀)為單位進行傳輸,字符與字符之間的間隙(時間間隔)是任意的,但每個字符中的各位是以固定的時間傳送的,即字符之間是異步的(字符之間不一定有“位間隔”的整數(shù)倍的關系),但同一字符內(nèi)的各位是同步的(各位之間的距離均為“位間隔”的整數(shù)倍)。異步通信的數(shù)據(jù)格式:異步通信的特點:不要求收發(fā)雙方時鐘的嚴格一致,實現(xiàn)容易,設備開銷較小,但每個字符要附加2~3位用于起止位,各幀之間還有間隔,因此傳輸效率不高。
2、同步通信同步通信時要建立發(fā)送方時鐘對接收方時鐘的直接控制,使雙方達到完全同步。傳輸數(shù)據(jù)的位之間的距離均為“位間隔”的整數(shù)倍,同時傳送的字符間不留間隙,即保持位同步關系,也保持字符同步關系。發(fā)送方對接收方的同步可以通過兩種方法實現(xiàn)。
外同步自同步面向字符的同步格式:
此時,傳送的數(shù)據(jù)和控制信息都必須由規(guī)定的字符集(如ASCII碼)中的字符所組成。圖中幀頭為1個或2個同步字符SYN(ASCII碼為16H)。SOH為序始字符(ASCII碼為01H),表示標題的開始,標題中包含源地址、目標地址和路由指示等信息。STX為文始字符(ASCII碼為02H),表示傳送的數(shù)據(jù)塊開始。數(shù)據(jù)塊是傳送的正文內(nèi)容,由多個字符組成。數(shù)據(jù)塊后面是組終字符ETB(ASCII碼為17H)或文終字符ETX(ASCII碼為03H)。然后是校驗碼。典型的面向字符的同步規(guī)程如IBM的二進制同步規(guī)程BSC。
面向位的同步格式:此時,將數(shù)據(jù)塊看作數(shù)據(jù)流,并用序列01111110作為開始和結束標志。為了避免在數(shù)據(jù)流中出現(xiàn)序列01111110時引起的混亂,發(fā)送方總是在其發(fā)送的數(shù)據(jù)流中每出現(xiàn)5個連續(xù)的1就插入一個附加的0;接收方則每檢測到5個連續(xù)的1并且其后有一個0時,就刪除該0。
典型的面向位的同步協(xié)議如ISO的高級數(shù)據(jù)鏈路控制規(guī)程HDLC和IBM的同步數(shù)據(jù)鏈路控制規(guī)程SDLC。同步通信的特點是以特定的位組合“01111110”作為幀的開始和結束標志,所傳輸?shù)囊粠瑪?shù)據(jù)可以是任意位。所以傳輸?shù)男瘦^高,但實現(xiàn)的硬件設備比異步通信復雜。
二、串行通信的傳輸方向1、單工是指數(shù)據(jù)傳輸僅能沿一個方向,不能實現(xiàn)反向傳輸。2、半雙工是指數(shù)據(jù)傳輸可以沿兩個方向,但需要分時進行。3、全雙工全雙工是指數(shù)據(jù)可以同時進行雙向傳輸。
單工半雙工全雙工
三、信號的調(diào)制與解調(diào)
利用調(diào)制器(Modulator)把數(shù)字信號轉換成模擬信號,然后送到通信線路上去,再由解調(diào)器(Demodulator)把從通信線路上收到的模擬信號轉換成數(shù)字信號。由于通信是雙向的,調(diào)制器和解調(diào)器合并在一個裝置中,這就是調(diào)制解調(diào)器MODEM。
四、串行通信的錯誤校驗
1、奇偶校驗
在發(fā)送數(shù)據(jù)時,數(shù)據(jù)位尾隨的1位為奇偶校驗位(1或0)。奇校驗時,數(shù)據(jù)中“1”的個數(shù)與校驗位“1”的個數(shù)之和應為奇數(shù);偶校驗時,數(shù)據(jù)中“1”的個數(shù)與校驗位“1”的個數(shù)之和應為偶數(shù)。接收字符時,對“1”的個數(shù)進行校驗,若發(fā)現(xiàn)不一致,則說明傳輸數(shù)據(jù)過程中出現(xiàn)了差錯。
2、代碼和校驗代碼和校驗是發(fā)送方將所發(fā)數(shù)據(jù)塊求和(或各字節(jié)異或),產(chǎn)生一個字節(jié)的校驗字符(校驗和)附加到數(shù)據(jù)塊末尾。接收方接收數(shù)據(jù)同時對數(shù)據(jù)塊(除校驗字節(jié)外)求和(或各字節(jié)異或),將所得的結果與發(fā)送方的“校驗和”進行比較,相符則無差錯,否則即認為傳送過程中出現(xiàn)了差錯。
3、循環(huán)冗余校驗
這種校驗是通過某種數(shù)學運算實現(xiàn)有效信息與校驗位之間的循環(huán)校驗,常用于對磁盤信息的傳輸、存儲區(qū)的完整性校驗等。這種校驗方法糾錯能力強。
五、傳輸速率與傳輸距離
1、傳輸速率比特率是每秒鐘傳輸二進制代碼的位數(shù),單位是:位/秒(bps)。如每秒鐘傳送240個字符,而每個字符格式包含10位(1個起始位、1個停止位、8個數(shù)據(jù)位),這時的比特率為:
10位×240個/秒=2400bps
波特率表示每秒鐘調(diào)制信號變化的次數(shù),單位是:波特(Baud)。
波特率和比特率不總是相同的,對于將數(shù)字信號1或0直接用兩種不同電壓表示的所謂基帶傳輸,比特率和波特率是相同的。所以,我們也經(jīng)常用波特率表示數(shù)據(jù)的傳輸速率。
2、傳輸距離與傳輸速率的關系串行接口或終端直接傳送串行信息位流的最大距離與傳輸速率及傳輸線的電氣特性有關。當傳輸線使用每0.3m(約1英尺)有50PF電容的非平衡屏蔽雙絞線時,傳輸距離隨傳輸速率的增加而減小。當比特率超過1000bps時,最大傳輸距離迅速下降,如9600bps時最大距離下降到只有76m(約250英尺)。
7.1.2
串行通信接口標準
一、RS-232C接口
RS-232C是EIA(美國電子工業(yè)協(xié)會)1969年修訂的標準。RS-232C定義了數(shù)據(jù)終端設備(DTE)與數(shù)據(jù)通信設備(DCE)之間的物理接口標準。
1、機械特性
RS-232C接口規(guī)定使用25針連接器,連接器的尺寸及每個插針的排列位置都有明確的定義。(陽頭)
2、功能特性
3、電氣特性
RS-232采用負邏輯電平:-3--15V為邏輯1,+3-+15V為邏輯0。由于與TTL和MOS電平不兼容,連接時必須外加電平轉換電路。發(fā)送和接受信號線建議采用多芯電纜,總負載電容不能超過2500μF。
4、過程特性過程特性規(guī)定了信號之間的時序關系,以便正確地接收和發(fā)送數(shù)據(jù)
。遠程通信連接近程通信連接
5、RS-232C電平與TTL電平轉換驅動電路
6、采用RS-232C接口存在的問題
1、傳輸距離短,傳輸速率低
RS-232C總線標準受電容允許值的約束,使用時傳輸距離一般不要超過15米(線路條件好時也不超過幾十米)。最高傳送速率為20Kbps。
2、有電平偏移
RS-232C總線標準要求收發(fā)雙方共地。通信距離較大時,收發(fā)雙方的地電位差別較大,在信號地上將有比較大的地電流并產(chǎn)生壓降。
3、抗干擾能力差
RS-232C在電平轉換時采用單端輸入輸出,在傳輸過程中當干擾和噪聲混在正常的信號中。為了提高信噪比,RS-232C總線標準不得不采用比較大的電壓擺幅。二、RS-422A接口
RS-422A輸出驅動器為雙端平衡驅動器。如果其中一條線為邏輯“1”狀態(tài),另一條線就為邏輯“0”,比采用單端不平衡驅動對電壓的放大倍數(shù)大一倍。差分電路能從地線干擾中拾取有效信號,差分接收器可以分辨200mV以上電位差。若傳輸過程中混入了干擾和噪聲,由于差分放大器的作用,可使干擾和噪聲相互抵消。因此可以避免或大大減弱地線干擾和電磁干擾的影響。RS-422A傳輸速率(90Kbps)時,傳輸距離可達1200米。
三、RS-485接口
RS-485是RS-422A的變型:RS-422A用于全雙工,而RS-485則用于半雙工。RS-485是一種多發(fā)送器標準,在通信線路上最多可以使用32對差分驅動器/接收器。如果在一個網(wǎng)絡中連接的設備超過32個,還可以使用中繼器。
RS-485的信號傳輸采用兩線間的電壓來表示邏輯1和邏輯0。由于發(fā)送方需要兩根傳輸線,接收方也需要兩根傳輸線。傳輸線采用差動信道,所以它的干擾抑制性極好,又因為它的阻抗低,無接地問題,所以傳輸距離可達1200米,傳輸速率可達1Mbps。
RS-485是一點對多點的通信接口,一般采用雙絞線的結構。普通的PC機一般不帶RS485接口,因此要使用RS-232C/RS-485轉換器。對于單片機可以通過芯片MAX485來完成TTL/RS-485的電平轉換。在計算機和單片機組成的RS-485通信系統(tǒng)中,下位機由單片機系統(tǒng)組成,上位機為普通的PC機,負責監(jiān)視下位機的運行狀態(tài),并對其狀態(tài)信息進行集中處理,以圖文方式顯示下位機的工作狀態(tài)以及工業(yè)現(xiàn)場被控設備的工作狀況。系統(tǒng)中各節(jié)點(包括上位機)的識別是通過設置不同的站地址來實現(xiàn)的。7.2
AT89S51的串行口
7.2.1
89S51串行口的結構
圖7-1AT89S51單片機串行口內(nèi)部結構如圖7-1。1、兩個物理上獨立的接收、發(fā)送緩沖器SBUF(屬于特殊功能寄存器),可同時發(fā)送、接收數(shù)據(jù)。發(fā)送緩沖器只寫不能讀。接收緩沖器只讀不能寫。2、兩個緩沖器共用一個特殊功能寄存器字節(jié)地址(99H)。3、控制寄存器兩個:特殊功能寄存器SCON和PCON。31
SCON
是一個特殊功能寄存器,用以設定串行口的工作方式、接收/發(fā)送控制以及設置狀態(tài)標志:
7.2.280C51串行口的控制寄存器
SM0和SM1為工作方式選擇位,可選擇四種工作方式:
●
SM2:多機通信控制位,主要用于方式2和方式3。
1、當串口以方式2或方式3接收時:(1)當SM2
=
1,只有當接收到的第9位數(shù)據(jù)(RB8)為“1”時,才使RI置“1”,產(chǎn)生中斷請求,并將接收到的前8位數(shù)據(jù)送入SBUF。當接收到的第9位數(shù)據(jù)(RB8)為“0”時,則將接收到的前8位數(shù)據(jù)丟棄。
(2)當SM2
=
0時,則不論第9位數(shù)據(jù)是“1”還是“0”,都將前8位數(shù)據(jù)送入SBUF中,并使RI置“1”,產(chǎn)生中斷請求。
2、其它方式方式1時如果SM2
=
1,只有收到有效的停止位時才會激活RI。方式0時,SM2必須為0●REN:允許串行接收位。由軟件置REN=1,則啟動串行口接收數(shù)據(jù);若軟件置REN=0,則禁止接收?!?/p>
TB8:在方式2或方式3中,是發(fā)送數(shù)據(jù)的第九位,可以用軟件規(guī)定其作用。可以用作數(shù)據(jù)的奇偶校驗位,或在多機通信中,作為地址幀/數(shù)據(jù)幀的標志位。在方式0和方式1中,該位未用。●RB8:在方式2或方式3中,是接收到數(shù)據(jù)的第九位,作為奇偶校驗位或地址幀/數(shù)據(jù)幀的標志位。在方式1時,若SM2=0,則RB8是接收到的停止位?!?/p>
TI:發(fā)送中斷標志位。在方式0時,當串行發(fā)送第8位數(shù)據(jù)結束時,或在其它方式,串行發(fā)送停止位的開始時,由內(nèi)部硬件使TI置1,向CPU發(fā)中斷申請。在中斷服務程序中,必須用軟件將其清0,取消此中斷申請。●RI:接收中斷標志位。在方式0時,當串行接收第8位數(shù)據(jù)結束時,或在其它方式,串行接收停止位的中間時,由內(nèi)部硬件使RI置1,向CPU發(fā)中斷申請。也必須在中斷服務程序中,用軟件將其清0,取消此中斷申請。SCON的設置方法:
例1:將串行口設置為工作方式1,發(fā)送解:MOVSCON,#01000000B
例2:將串行口設置為工作方式1,接收解:MOVSCON,#01010000B
例3:將串行口設置為工作方式3,接收解:MOVSCON,#11110000B7.1.2特殊功能寄存器PCON
字節(jié)地址為87H,不能位尋址。如圖,PCON中只有一位SMOD與串行口工作有關
:
SMOD(PCON.7)波特率倍增位。在串行口方式1、方式2、方式3時,波特率與SMOD有關,當SMOD=1時,波特率提高一倍。復位時,SMOD=0。
7.2.380C51串行口的工作方式
一、方式0
方式0時,串行口為同步移位寄存器的輸入輸出方式。主要用于擴展并行輸入或輸出口。數(shù)據(jù)由RXD(P3.0)引腳輸入或輸出,同步移位脈沖由TXD(P3.1)引腳輸出。發(fā)送和接收均為8位數(shù)據(jù),低位在先,高位在后。波特率固定為fosc/12。
1、方式0輸出
2、方式0輸入
方式0接收和發(fā)送電路
3、方式0輸出的應用例1:如圖7-2為串行口工作在方式0,通過74LS164的輸出來控制8個外接LED發(fā)光二極管亮滅的接口電路。當串行口被設置在方式0輸出時,串行數(shù)據(jù)由RXD端(P3.0)送出,移位脈沖由TXD端(P3.1)送出。在移位脈沖的作用下,串行口發(fā)送緩沖器的數(shù)據(jù)逐位地從RXD端串行地移入74LS164中。編寫程序控制8個發(fā)光二極管輪流點亮。40圖7-2
【例7-1】如圖7-2所示,編寫程序控制8個發(fā)光二極管輪流點亮。
圖中74LS164的CLK端為同步脈沖輸入端,CLR為控制端,當CLR=0時,允許串行數(shù)據(jù)從A和B端輸入但是8位并行輸出端關閉;當CLR=1時,A和B輸入端關閉,但是允許74LS164中的8位數(shù)據(jù)并行輸出。當8位串行數(shù)據(jù)發(fā)送完畢后,引起中斷,在中斷服務程序中,單片機通過串行口輸出下一個8位數(shù)據(jù)。采用中斷方式的參考程序如下。采用中斷方式的參考程序
#include<reg51.h>#include<stdio.h>sbitP1_0=0x90;
xdatacharnSendByte;
delay();
main(){SCON=0x00;
EA=1;
ES=1; SBUF=nSendByte;
P1_0=0;
for(;;) {}}voidSerial_Port()interrupt4using0{if(TI==1){P1_0=1;
delay();
P1_0=0;
nSendByte<<=1;
if(nSendByte==0)nSendByte=1;
SBUF=nSendByte;}TI=0;
RI=0;}delay(){intnCounter;
for(nCounter=0;
nCounter<128;
nCounter++);}程序說明:(1)定義了全局變量nSendByte,以便在中斷服務程序中能訪問該變量。nSendByte用于存放從串口發(fā)出的字符,在程序中使用操作符對nSendByte變量進行移位,使得從串口發(fā)出的數(shù)據(jù)為0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80,從而逐個點亮不同的發(fā)光二極管。(2)if語句的作用是當nSendByte左移一位由0x80變?yōu)?x00后,需對變量nIndex重新賦值為1。(3)主程序中的SBUF=nSendByte語句必不可少,如沒有該語句,主程序并不從串行口發(fā)送數(shù)據(jù),也就不會有發(fā)送完成中斷。(4)循環(huán)語句for(;;)的循環(huán)條件為空,表示for循環(huán)為一個無限循環(huán),與while(1)實現(xiàn)同樣的功能。二、方式1方式1為雙機串行通信方式,如圖7-3所示。當SM0、SM1=01時,串行口設為方式1的雙機串行通信。TXD腳和RXD腳分別用于發(fā)送和接收數(shù)據(jù)。
圖7-3
方式1雙機串行通信的連接電路方式1一幀數(shù)據(jù)為10位,1個起始位(0),8個數(shù)據(jù)位,1個停止位(1),先發(fā)送或接收最低位。幀格式如圖7-4。
圖7-4
方式1的幀格式方式1為波特率可變的8位異步通信接口。波特率由下式確定:
方式1波特率
=
定時器T1的溢出率SMOD為PCON寄存器的最高位的值(0或1)。451.方式1發(fā)送方式1輸出時,數(shù)據(jù)位由TXD端輸出,發(fā)送一幀信息為10位:1位起始位0,8位數(shù)據(jù)位(先低位)和1位停止位1。當CPU執(zhí)行一條數(shù)據(jù)寫SBUF的指令,就啟動發(fā)送。發(fā)送時序見圖7-5。圖7-5中TX時鐘的頻率就是發(fā)送的波特率。發(fā)送開始時,內(nèi)部發(fā)送控制信號變?yōu)橛行?,將起始位向TXD腳(P3.0)輸出,此后每經(jīng)過一個TX時鐘周期,產(chǎn)生一個移位脈沖,并由TXD引腳輸出一個數(shù)據(jù)位。8位數(shù)據(jù)位全部發(fā)送完畢后,中斷標志位TI置“1。46
圖7-5
方式1發(fā)送時序47圖7-6
方式1接收時序2.方式1接收方式1接收時(REN
=
1),數(shù)據(jù)從RXD(P3.1)引腳輸入。當檢測到起始位的負跳變,則開始接收。接收時序見圖7-6。接收時,定時控制信號有兩種,一種是接收移位時鐘(RX時鐘),它的頻率和傳送的波特率相同。另一種是位檢測器采樣脈沖,頻率是RX時鐘的16倍。以波特率的16倍速率采樣RXD腳狀態(tài)。當采樣到RXD端從1到0的負跳變時就啟動檢測器,接收的值是3次連續(xù)采樣(第7、8、9個脈沖時采樣)取兩次相同的值,以確認起始位(負跳變)的開始,較好地消除干擾引起的影響。48
圖7-6
方式1接收時序49
當起始位有效時,開始接收一幀信息。每一位數(shù)據(jù)都進行3次連續(xù)采樣(第7、8、9個脈沖采樣),接收的值是3次采樣中至少兩次相同的值。當一幀數(shù)據(jù)接收完畢后,同時當起始位有效時,開始接收一幀信息。每一位數(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ù)將丟棄。50
三、方式2和方式3
方式2或方式3時為11位數(shù)據(jù)的異步通信口。TXD為數(shù)據(jù)發(fā)送引腳,RXD為數(shù)據(jù)接收引腳。
方式2和方式3時起始位1位,數(shù)據(jù)9位(含1位附加的第9位,發(fā)送時為SCON中的TB8,接收時為RB8),停止位1位,一幀數(shù)據(jù)為11位。方式2的波特率固定為晶振頻率的1/64或1/32,方式3的波特率由定時器T1的溢出率決定。
1、方式2和方式3輸出
發(fā)送開始時,先把起始位0輸出到TXD引腳,然后發(fā)送移位寄存器的輸出位(D0)到TXD引腳。每一個移位脈沖都使輸出移位寄存器的各位右移一位,并由TXD引腳輸出。第一次移位時,停止位“1”移入輸出移位寄存器的第9位上,以后每次移位,左邊都移入0。當停止位移至輸出位時,左邊其余位全為0,檢測電路檢測到這一條件時,使控制電路進行最后一次移位,并置TI=1,向CPU請求中斷。
2、方式2和方式3輸入
接收時,數(shù)據(jù)從右邊移入輸入移位寄存器,在起始位0移到最左邊時,控制電路進行最后一次移位。當RI=0,且SM2=0(或接收到的第9位數(shù)據(jù)為1)時,接收到的數(shù)據(jù)裝入接收緩沖器SBUF和RB8(接收數(shù)據(jù)的第9位),置RI=1,向CPU請求中斷。如果條件不滿足,則數(shù)據(jù)丟失,且不置位RI,繼續(xù)搜索RXD引腳的負跳變。四、波特率的計算
在串行通信中,收發(fā)雙方對發(fā)送或接收數(shù)據(jù)的速率要有約定。通過軟件可對單片機串行口編程為四種工作方式,其中方式0和方式2的波特率是固定的,而方式1和方式3的波特率是可變的,由定時器T1的溢出率來決定。串行口的四種工作方式對應三種波特率。由于輸入的移位時鐘的來源不同,所以,各種方式的波特率計算公式也不相同。方式0的波特率=fosc/12
方式2的波特率=(2SMOD/64)·fosc
方式1的波特率=(2SMOD/32)·(T1溢出率)方式3的波特率=(2SMOD/32)·(T1溢出率)
方式1的波特率可變,由下式?jīng)Q定
方式3的波特率可變,T1采用方式2時由下式?jīng)Q定當T1作為波特率發(fā)生器時,最典型的用法是使T1工作在自動再裝入的8位定時器方式(即方式2,且TCON的TR1=1,以啟動定時器)。這時溢出率取決于TH1中的計數(shù)值。
T1溢出率=fosc/{12×[256-(TH1)]}
在單片機的應用中,常用的晶振頻率為:12MHz和11.0592MHz。所以,選用的波特率也相對固定。常用的串行口波特率以及各參數(shù)的關系如表所示。
串行口工作之前,應對其進行初始化,主要是設置產(chǎn)生波特率的定時器1、串行口控制和中斷控制。具體步驟如下:確定T1的工作方式(編程TMOD寄存器);計算T1的初值,裝載TH1、TL1;啟動T1(編程TCON中的TR1位);確定串行口控制(編程SCON寄存器);串行口在中斷方式工作時,要進行中斷設置(編程IE、IP寄存器)。
7.3
串行口的應用
一、單片機與單片機通信例7-4:如圖7-7所示,甲、乙雙機串行通信,雙機的RXD和TXD相互交叉相連,甲機的P1口接8個開關,乙機的P1口接8個發(fā)光二極管。59
圖7-7
甲機設置為只發(fā)不收的單工方式。要求甲機讀入P1口的8個開關的狀態(tài)后,通過串行口發(fā)送到乙機,乙機將接收到的甲機的8個開關的狀態(tài)數(shù)據(jù)送入P1口。初始化步驟:1、確定T1的工作方式:TMOD=0x20;/*定時器T1方式2*/2、計算T1的初值,裝載TH1、TL1:0xfd;/*波特率9600*/3、啟動T1(編程TCON中的TR1位):TR1=1;4、確定串行口控制(編程SCON寄存器):
SCON=0x40;/*方式1發(fā)送*/SCON=0x50;/*方式1接收*/
參考程序如下。/*甲機串行發(fā)送*/#include<reg51.h>#defineucharunsignedchar #defineuintunsignedintvoidmain(){uchar
temp=0;TMOD=0x20;/*定時器T1方式2*/TH1=0xfd; /*波特率9600*/TL1=0xfd;SCON=0x40;/*方式1發(fā)送*/PCON=0x00;/*串行口方式0*/
61TR1=1; P1=0xff;while(1){temp=P1;
/*讀入P1口開關數(shù)據(jù)*/SBUF=temp;
/*數(shù)據(jù)送串行口發(fā)送*/while(TI==0);/*TI=0未發(fā)送完,循環(huán)等待*/TI=0; /*已發(fā)送完,再把TI清0*/}}
#include<reg51.h> /*乙機串行接收*/ #defineucharunsignedchar #defineuintunsignedint voidmain() { uchartemp=0; TMOD=0x20; /*設置定時器T1為方式2*/ TH1=0xfd; /*波特率9600*/
TL1=0xfd;
SCON=0x50; /*設置串口為方式1接收,REN=1*/ PCON=0x00; /*SMOD=0*/ TR1=1; /*啟動T1*/ while(1) {while(RI==0); /*若RI為0,未接收到數(shù)據(jù)*/ RI=0; /*接收到數(shù)據(jù),則把RI清0*/ temp=SBUF; /*讀取數(shù)據(jù)存入temp中*/ P1=temp;} /*接收的數(shù)據(jù)送P1口控制8個LED的亮與滅*/ }
二、單片機與PC機的串行通信測控系統(tǒng)中,常使用單片機進行數(shù)據(jù)采集,但由于單片機的數(shù)據(jù)存儲容量和數(shù)據(jù)處理能力都較低,所以一般情況下單片機通過串口與PC機串口相連,把采集到的數(shù)據(jù)傳送到PC機上,再在PC機上進行數(shù)據(jù)處理。由于單片機的輸入輸出是TTL電平,而PC機配置的都是RS-232標準串行接口,為9針“D”型連接器(插座),如圖7-8所示?!癉”型9針插頭引腳定義圖7-8單片機與PC機的串行通信接口
由于兩者的電平不匹配,因此必須把單片機輸出的TTL電平轉換為RS-232電平。單片機與PC機的接口方案如圖7-8。圖中所用的電平轉換芯片為MAX232,接口連接只用3條線,即RS-232插座中的2腳、3腳與5腳。(一)單片機向計算機發(fā)送數(shù)據(jù)
例7-5:單片機向計算機發(fā)送數(shù)據(jù)的接口電路如圖。要求單片機通過串行口的TXD腳向計算機串行發(fā)送8個數(shù)據(jù)字節(jié)。實際上單片機向計算機與單片機向單片機發(fā)送數(shù)據(jù)的方法是完全一樣的。單片機向計算機發(fā)送數(shù)據(jù)的參考程序如下。#include<reg51.h>codeTab[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f} /*欲發(fā)送的流水燈控制碼數(shù)組,定義為全局變量*/ voidsend(unsignedchardat){ SBUF=dat; /*待發(fā)送數(shù)據(jù)寫入發(fā)送緩沖寄存器*/
while(TI==0); /*串口未發(fā)送完,等待*/ ; /*空操作*/ TI=0; /*一個字節(jié)發(fā)送完畢,軟件將TI標志
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- TZJCFO 0002-2024 數(shù)據(jù)資產(chǎn)財務登記業(yè)務指南
- 2017年中國共產(chǎn)黨執(zhí)政歷史和人民的選擇
- 超級經(jīng)典21個哲理啟示寓言故事
- 《講課腦血管病》課件
- 江蘇省連云港市灌云縣2025屆高考數(shù)學倒計時模擬卷含解析
- 北京市朝陽區(qū)市級名校2025屆高考英語四模試卷含解析
- 2025屆遼寧省普通高中學高考臨考沖刺語文試卷含解析
- 山東省寧陽市2025屆高考沖刺押題(最后一卷)英語試卷含解析
- 廣東珠海二中、斗門一中2025屆高三考前熱身語文試卷含解析
- 新疆阿克蘇地區(qū)沙雅縣第二中學2025屆高考數(shù)學一模試卷含解析
- 介紹北京英文
- GB/T 27800-2011靜密封橡膠制品使用壽命的快速預測方法
- 醫(yī)生、護士工作服技術參數(shù)要求
- GB 29518-2013柴油發(fā)動機氮氧化物還原劑尿素水溶液(AUS 32)
- 《經(jīng)濟學基礎》試題庫(附答案)
- 中學生法制教育主題班會課件《預防未成年人犯罪》
- 雙氧水工藝培訓課件
- 醫(yī)師臨床三基訓練綜合試卷
- 激光雷達測風技術完整版課件
- 2023年江蘇省環(huán)保集團有限公司校園招聘筆試題庫及答案解析
- 繪畫心理測試與治療課件
評論
0/150
提交評論