版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
《單片機控制系統(tǒng)開發(fā)訓練》授課對象:電氣自動化技術1801/02主講教師:劉旭東電氣工程系
第8章串行口的工作原理及應用
8.1串行通信基礎隨著單片機的廣泛應用與計算機網(wǎng)絡技術的普及,單片機與個人計算機或單片機與單片機之間的通信使用較多。8.1.1并行通信和串行通信并行通信是指數(shù)據(jù)的各位同時進行傳送(發(fā)送或接收)的通信方式。其優(yōu)點是傳遞速度快;缺點是數(shù)據(jù)有多少位,就需要多少根傳送線。并行通信在位數(shù)多、傳送距離又遠時就不太適宜。串行通信指數(shù)據(jù)是一位一位按順序傳送的通信方式,它的突出優(yōu)點是只需一對傳送線(利用雙絞線就可作為傳送線),這樣就大大降低了傳送成本,特別適用于遠距離通信。其缺點是傳送速度較低。8.1.2同步通信與異步通信串行通信又有2種方式:同步串行通信與異步串行通信。同步串行通信是采用一個同步時鐘,通過一條同步時鐘線,加到收發(fā)雙方,使收、發(fā)雙方達到完全同步,此時,傳輸數(shù)據(jù)的位之間的距離“位間隔”的整數(shù)倍,同時傳送的字符間不留間隙,即保持同步關系。異步串行通信是指收、發(fā)雙方使用各自的時鐘控制數(shù)據(jù)的發(fā)送和接收,這樣可省去連接收、發(fā)雙方的一條同步時鐘信號線,使得異步串行通信連接更加簡單且容易實現(xiàn),為使收發(fā)雙方協(xié)調(diào),要求收發(fā)雙方的時鐘盡可能一致。8.1.3串行通信的傳輸模式串行通信按照數(shù)據(jù)傳輸?shù)姆较蚣皶r間關系可分為單工、半雙工和全雙工。(l)單工方式●信息只能沿一個方向傳輸,而不能沿相反方向傳輸。(2)半雙工方式●信息可以沿著兩個方向傳輸,但在指定時刻,信息只能沿一個方向傳輸。(3)全雙工方式●信息可以同時沿著兩個方向傳輸。8.1.4串行通信的錯誤校驗在串行通信過程中,往往要對數(shù)據(jù)傳送的正確與否進行校驗,校驗是保證數(shù)據(jù)準確無誤的關鍵。常用的校驗方法有奇偶校驗與循環(huán)冗余碼校驗等方法。1.奇偶校驗是一種校驗代碼傳輸正確性的方法。根據(jù)被傳輸?shù)囊唤M二進制代碼的數(shù)位中“1”的個數(shù)是奇數(shù)或偶數(shù)來進行校驗。采用奇數(shù)的稱為奇校驗,反之,稱為偶校驗。采用何種校驗是事先規(guī)定好的。通常專門設置一個奇偶校驗位,用它使這組代碼中“1”的個數(shù)為奇數(shù)或偶數(shù)。若用奇校驗,則當接收端收到這組代碼時,校驗“1”的個數(shù)是否為奇數(shù),從而確定傳輸代碼的正確性。2.代碼和校驗代碼和和校驗是發(fā)送方將所發(fā)數(shù)據(jù)塊求和或各字節(jié)異或,然后將產(chǎn)生一個字節(jié)的校驗字符附加到數(shù)據(jù)塊末尾。接收方接受數(shù)據(jù)時同時對數(shù)據(jù)塊求和或各字節(jié)異或,將所得結果與發(fā)方的“校驗和”進行比較,則無差錯,否則即認為在輸出過程中出現(xiàn)了差錯。3.循環(huán)冗余碼校驗循環(huán)冗余碼校驗糾錯能力強,容易實現(xiàn)。該校驗是通過某種數(shù)學運算實現(xiàn)有效信息與校驗位之間的循環(huán)校驗,常用于對磁盤信息的傳輸、存儲區(qū)的完整性校驗等。它是目前應用最廣的檢錯碼編碼方式之一,廣泛用于同步通信。8.2串行口結構AT89S51集成一個全雙工通用異步收發(fā)(UART)串行口。全雙工:兩個單片機之間串行數(shù)據(jù)可同時雙向傳輸。異步通信:收、發(fā)雙方使用各自時鐘控制發(fā)送和接收,省去收、發(fā)雙方的1條同步時鐘信號線,使異步串行通信連接更簡單且易實現(xiàn)。AT89S51串行口內(nèi)部結構見圖8-1。有兩個物理上獨立的接收、發(fā)送緩沖器SBUF(特殊功能寄存器),可同時收發(fā)數(shù)據(jù)。發(fā)送緩沖器只寫不讀,接收緩沖器只讀不寫,兩個緩沖器共用一個特殊功能寄存器字節(jié)地址(99H)??刂萍拇嫫鞴灿?個:特殊功能寄存器SCON和PCON。下面詳細介紹各位功能。
圖8-6
串行口的內(nèi)部結構8.2.1串行口控制寄存器SCON串行口控制寄存器SCON,字節(jié)地址98H,可位尋址,位地址為98H~9FH,即SCON的所有位都可用軟件來進行位操作清“0”或置“1”。SCON格式見圖8-2。圖8-2
串口控制寄存器SCON格式寄存器SCON各位功能:(1)SM0、SM1—串口4種工作方式選擇
SM0、SM12位編碼對應4種工作方式見表8-1。(2)SM2—多機通信控制位多機通信是在方式2和方式3下進行,因此SM2位主要用于方式2或方式3。當串口以方式2或方式3接收時,如SM2=1,則只有當接收到的第9位數(shù)據(jù)(RB8)為“1”時,才使RI置“1”,產(chǎn)生中斷請求,并將收到的前8位數(shù)據(jù)送入SBUF;當收到的第9位數(shù)據(jù)(RB8)為“0”時,則將收到的前8位數(shù)據(jù)丟棄。當SM2=0時,則不論第9位數(shù)據(jù)是“1”還是“0”,都將接收的前8位數(shù)據(jù)送入SBUF中,并使RI置“1”,產(chǎn)生中斷請求。方式1時,如果SM2=1,則只有收到有效的停止位時才會激活RI。方式0時,SM2必須為0。(3)REN—允許串行接收位,由軟件置“1”或清“0”。
REN=1,允許串行口接收數(shù)據(jù)。
REN=0,禁止串行口接收數(shù)據(jù)。 (4)TB8—發(fā)送的第9位數(shù)據(jù)在方式2和方式3時,TB8是要發(fā)送的第9位數(shù)據(jù),其值由軟件置“1”或清“0”。
在雙機串行通信時,TB8一般作為奇偶校驗位使用;也可在多機串行通信中表示主機發(fā)送的是地址幀還是數(shù)據(jù)幀,TB8=1為地址幀,TB8=0為數(shù)據(jù)幀。(5)RB8—接收的第9位數(shù)據(jù)在方式2和方式3時,RB8存放接收到的第9位數(shù)據(jù)。在方式1,如果SM2=0,RB8是接收到的停止位。在方式0,不使用RB8。(6)TI—發(fā)送中斷標志位方式0時,串行發(fā)送的第8位數(shù)據(jù)結束時,TI由硬件置“1”,在其他工作方式中,串行口發(fā)送停止位的開始時,置TI為“1”。TI=1,表示1幀數(shù)據(jù)發(fā)送結束。TI位狀態(tài)可供軟件查詢,也可申請中斷。CPU響應中斷后,在中斷服務程序向SBUF寫入要發(fā)送的下一幀數(shù)據(jù)。注意:TI必須由軟件清“0”。(7)RI—接收中斷標志位串口在方式0時,接收完第8位數(shù)據(jù)時,RI由硬件置“1”。在其他工作方式中,串行接收到停止位時,該位置“1”。RI=1,表示一幀數(shù)據(jù)接收完畢,并申請中斷,要求CPU從接收SBUF取走數(shù)據(jù)。該位狀態(tài)也可供軟件查詢。注意:RI必須由軟件清“0”。8.2.2特殊功能寄存器PCON字節(jié)地址為87H,不能位尋址。格式見圖8-3。僅最高位SMOD與串口有關,低4位功能在第2章中已介紹。
SMOD位:波特率選擇位。
圖8-3特殊功能寄存器PCON的格式例如,方式1的波特率計算公式為
當SMOD=1時,比SMOD=0時波特率加倍,所以也稱SMOD位為波特率倍增位。8.3串行口的4種工作方式
4種工作方式由特殊功能寄存器SCON中SM0、SM1位定義,編碼見表8-1。8.3.1方式0方式0為同步移位寄存器輸入/輸出方式。該方式并不用于兩個AT89S51單片機間的異步串行通信,而是用于外接移位寄存器,用來擴展并行I/O口。
方式0以8位數(shù)據(jù)為1幀,沒有起始位和停止位,先發(fā)送或接收最低位。波特率是固定的,為fosc/12。幀格式見圖8-4。圖8-4方式0幀格式1.方式0輸出(1)方式0輸出的工作原理當單片機執(zhí)行將數(shù)據(jù)寫入發(fā)送緩沖器SBUF指令時,產(chǎn)生一個正脈沖,串口把8位數(shù)據(jù)以fosc/12固定波特率從RXD腳串行輸出,低位在先,TXD腳輸出同步移位脈沖,當8位數(shù)據(jù)發(fā)送完,中斷標志位TI置“1”。方式0的發(fā)送時序見圖8-5。圖8-5方式0發(fā)送時序(2)方式0輸出的應用案例典型應用是串口外接串行輸入/并行輸出的同步移位寄存器74LS164,實現(xiàn)并行端口的擴展。圖8-6為串口方式0,通過74LS164輸出控制8個外接LED發(fā)光二極管亮滅的接口電路。當串口設置在方式0輸出時,串行數(shù)據(jù)由RXD端(P3.0)送出,移位脈沖由TXD端(P3.1)送出。在移位脈沖的作用下,串行口發(fā)送緩沖器的數(shù)據(jù)逐位地從RXD端串行地移入74LS164中。
圖8-6方式0輸出外接8個LED發(fā)光二極管接口電路【例8-1】如圖8-6,控制8個發(fā)光二極管流水點亮。圖中74LS164的8腳(CLK端)為同步脈沖輸入端,9腳為控制端,9腳電平由單片機的P1.0控制,當9腳為0時,允許串行數(shù)據(jù)由RXD端(P3.0)向74LS164的串行數(shù)據(jù)輸入端A和B(1腳和2腳)輸入,但是74LS164的8位并行輸出端關閉;當9腳為1時,A和B輸入端關閉,但是允許74LS164中的8位數(shù)據(jù)并行輸出。當串行口將8位串行數(shù)據(jù)發(fā)送完畢后,申請中斷,在中斷服務程序中,單片機向通過串行口輸出下一個8位數(shù)據(jù)。參考程序:
#include<reg51.h>
#include<stdio.h>
sbitP1_0=0x90;
unsignedcharnSendByte;
voiddelay(unsignedinti)//延時子程序
{
unsignedcharj;
for(;i>0;i--)//變量i由實際參數(shù)傳入一個值,因此i不能賦初值
for(j=0;j<125;j++);
}
main()//主程序
{
SCON=0x00;//設置串行口為方式0
EA=1; //全局中斷允許
ES=1;//允許串行口中斷
nSendByte=1;//點亮數(shù)據(jù)初始為00000001送入nSendByte
SBUF=nSendByte;//向SBUF寫入點亮數(shù)據(jù),啟動串行發(fā)送
P1_0=0;//允許串口向74LS164串行發(fā)送數(shù)據(jù)
while(1)
{;}
}voidSerial_Port()interrupt4using0//串行口中斷服務程序
{
if(TI) //如果TI=1,1個字節(jié)串行發(fā)送完畢
{P1_0=1;//P1_0=1,允許74LS164并行輸出,流水點亮二極管SBUF=nSendByte;//向SBUF寫入數(shù)據(jù),啟動串行發(fā)送delay(500);//延時,點亮二極管持續(xù)一段時間P1_0=0;//P1_0=0,允許向74LS164串行寫入nSendByte=nSendByte<<1;//點亮數(shù)據(jù)左移1位if(nSendByte==0)nSendByte=1;//點亮數(shù)據(jù)是否左移8次?是,重新送點亮數(shù)據(jù)SBUF=nSendByte; //向74LS164串行發(fā)送點亮數(shù)據(jù)
}
TI=0;
RI=0;
} 程序說明:(1)程序中定義了全局變量nSendByte,以便在中斷服務程序中能訪問該變量。nSendByte用于存放從串行口發(fā)出的點亮數(shù)據(jù),在程序中使用左移1位操作符“<<”對nSendByte變量進行移位,使得從串口發(fā)出的數(shù)據(jù)為0x01、0x02、0x04、0x08、0x10、0x20、0x40、0x80,從而流水點亮各個發(fā)光二極管。(2)程序中if語句的作用是當nSendByte左移1位由0x80變?yōu)?x00后,需對變量nSendByte重新賦值為1。(3)主程序中SBUF=nSendByte語句必不可少,如果沒有該語句,主程序并不從串行口發(fā)送數(shù)據(jù),也就不會產(chǎn)生隨后的發(fā)送完成中斷。(4)兩條語句“while(1){;}”實現(xiàn)反復循環(huán)的功能。2.方式0輸入
(1)方式0輸入的工作原理:方式0輸入時,REN為串行口允許接收控制位,REN=0,禁止接收;REN=1,允許接收。當CPU向串行口SCON寄存器寫入控制字(設置為方式0,并使REN位置“1”,同時RI=0)時,產(chǎn)生一正脈沖,串口開始接收數(shù)據(jù)。引腳RXD為數(shù)據(jù)輸入端,TXD為移位脈沖信號輸出端,接收器以fosc/12固定波特率采樣RXD引腳數(shù)據(jù)信息,當接收器接收完8位數(shù)據(jù)時,中斷標志RI置“1”,表示一幀接收完畢,可進行下一幀接收,時序見圖8-7。圖8-7方式0接收時序(2)方式0輸入應用舉例
【例8-2】圖8-8為串口外接一片8位并行輸入、串行輸出同步移位寄存器74LS165,擴展一個8位并行輸入口的電路,可將接在74LS165的8個開關S0~S7的狀態(tài)通過串行口的方式0讀入到單片機內(nèi)。74LS165的SH/LD*端(1腳)為控制端,由單片機的P1.1腳控制。若SH/LD*=0,則74LS165可以并行輸入數(shù)據(jù),且串行輸出端關閉;當SH/LD*=1,則并行輸入關斷,可以向單片機串行傳送。當P1.0連接的開關K合上時,可進行開關S0~S7狀態(tài)數(shù)字量的并行讀入。由圖8-8,采用中斷方式來對S0~S7狀態(tài)讀取,并由單片機P2口驅(qū)動二極管點亮(開關S0~S7中的任何一個按下,則對應的二極管點亮)。圖8-8串口方式0外接并行輸入、串行輸出的同步移位寄存器參考程序如下:
#include<reg51.h>
#include"intrins.h"
#include<stdio.h>
sbitP1_0=0x90;
sbitP1_1=0x91;
unsignedcharnRxByte;
voiddelay(unsignedinti)//延時子程序
{
unsignedcharj;
for(;i>0;i--)//變量i由實際參數(shù)傳入一個值,因此i不能賦初值
for(j=0;j<125;j++);
}
main()
{
SCON=0x10;//串行口初始化為方式0
ES=1; //允許串行口中斷
EA=1; //允許全局中斷 for(;;);
}
voidSeri
溫馨提示
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- (2024版)中西醫(yī)結合診治子宮腺肌病惡變專家共識解讀
- 2026秋招:利群集團筆試題及答案
- 2026秋招:金澳科技筆試題及答案
- 2026秋招:江西國際經(jīng)濟技術合作公司面試題及答案
- 2026年4月自考《資產(chǎn)評估》真題及答案
- 2026年大學(工商管理)企業(yè)組織架構設計階段測試題及答案
- 2026年大學(測繪地理信息技術)期末階段測試試題及答案
- 2025年健康教育工作試題及答案
- 2026美團校招面筆試題及答案
- 2026鉚接工招聘試題及答案
- 2026長治日報社工作人員招聘勞務派遣人員5人參考題庫及答案1套
- 2026年菏澤學院單招職業(yè)傾向性考試題庫附答案解析
- 實際問題與一次函數(shù)課件2025-2026學年人教版八年級數(shù)學下冊
- 2025年天津科技大學毛澤東思想和中國特色社會主義理論體系概論期末考試模擬題及答案1套
- 2024年鹽城市體育局直屬事業(yè)單位招聘真題
- 南方航空安全員培訓
- 2025-2026學年嶺南美版(新教材)初中美術七年級上冊期末綜合測試卷及答案
- DB11∕T 2398-2025 水利工程巡視檢查作業(yè)規(guī)范
- 2025秋國家開放大學《政府經(jīng)濟學》期末機考精準復習題庫
- PCB設計規(guī)范-MD元器件封裝庫尺寸要求
- 番茄的營養(yǎng)及施肥
評論
0/150
提交評論