




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
會計學1單片機串口通信教學目標
通過本章教學,要求達到以下目標:串行通信的基本概念:了解并行/串行通信的概念;理解串行通信中的異步/同步通信的基本概念;理解波特率的概念,學會計算波特率的方法;4了解串行通信的三種制式及校驗方法。第1頁/共119頁AT89C51串行口:串行接口結構及其功能;理解串行數據緩沖器SBUF的功能和讀寫方法;熟悉SCON的結構、控制作用和設置方法;了解電源控制寄存器PCON,熟悉SMOD位。
串行口的工作方式:理解串行通信4種工作方式的特點和區(qū)別;掌握串行工作方式0的應用;熟悉串行工作方式1、2、3應用程序的編制方法。第2頁/共119頁4.多機通信原理:理解多機通信的原理、過程和編制多機通信應用程序的方法。第3頁/共119頁
計算機與外界的信息交換稱為通信。通信的基本方式可分為并行通信和串行通信兩種。所謂并行通信是指數據的各位同時在多根數據線上發(fā)送或接收。串行通信是數據的各位在同一根數據線上依次逐位發(fā)送或接收。9.1串行通信基礎知識第4頁/共119頁
目前串行通信在單片機雙機、多機以及單片機與PC機之間的通信等方面得到了廣泛應用。圖9.1并行通信示意圖P0.7P0.6P0.5P0.4P0.3P0.2P0.1P0.0P2.7RDWRRDWRCSD7D6D5D4D3D2D1D0825589C51圖9.2串行通信示意圖89C51外設TXDTXDRXDRXD發(fā)送接收第5頁/共119頁9.1.1異步通信和同步通信
串行通信按同步方式可分為異步通信和同步通信兩種基本通信方式。1.同步通信(SynchronousCommunication)
同步通信是一種連續(xù)傳送數據的通信方式,一次通信傳送多個字符數據,稱為一幀信息。數據傳輸速率較高,通??蛇_56000bps或更高。其缺點是要求發(fā)送時鐘和接收時鐘保持嚴格同步。第6頁/共119頁同步字符數據字符1數據字符2…數據字符n-1數據字符n校驗字符(校驗字符)圖9.3同步通信數據傳送格式2.異步通信(AsynchronousCommunication)
在異步通信中,數據通常是以字符或字節(jié)為單位組成數據幀進行傳送的。收、發(fā)端各有一套彼此獨立,互不同步的通信機構,由于收發(fā)數據的幀格式相同,因此可以相互識別接收到的數據信息。同步通信的數據幀格式如圖9.3所示。第7頁/共119頁D0D1D2D3D4
D5
D6
D7
0/11111D70/1100D0D1第n字符幀空閑位停止位奇偶校驗停止位8位數據8位數據起始位起始位奇偶校驗第n-1字符幀第n+1字符幀圖9.4異步通信幀格式8位數據
異步通信信息幀格式如圖9.4所示。第8頁/共119頁(1)起始位:在沒有數據傳送時,通信線上處于邏輯“1”狀態(tài)。當發(fā)送端要發(fā)送1個字符數據時,首先發(fā)送1個邏輯“0”信號,這個低電平便是幀格式的起始位。其作用是向接收端表示發(fā)送端開始發(fā)送一幀數據。接收端檢測到這個低電平后,就準備接收數據信號。第9頁/共119頁(2)數據位:在起始位之后,發(fā)送端發(fā)出(或接收端接收)的是數據位,數據的位數沒有嚴格的限制,5~8位均可。由低位到高位逐位傳送。(3)奇偶校驗位:數據位發(fā)送完(接收完)之后,可發(fā)送一位用來檢驗數據在傳送過程中是否出錯的奇偶校驗位。奇偶校驗是收發(fā)雙方預先約定好的有限差錯檢驗方式之一。有時也可不用奇偶校驗。第10頁/共119頁(4)停止位:字符幀格式的最后部分是停止位,邏輯“1”電平有效,它可占1/2位、1位或2位。停止位表示傳送一幀信息的結束,也為發(fā)送下一幀信息作好準備。第11頁/共119頁9.1.2串行通信的波特率
波特率(BaudRate)是串行通信中一個重要概念,它是指傳輸數據的速率,亦稱比特率。波特率的定義是每秒傳輸二進制數碼的位數。如:波特率為1200bps是指每秒鐘能傳輸1200位二進制數碼。
波特率的倒數即為每位數據傳輸時間。例如:波特率為1200bps,每位的傳輸時間為:1)(833.01200msdT==第12頁/共119頁
波特率和字符的傳輸速率不同,若采用圖9.4的數據幀格式,并且數據幀連續(xù)傳送(無空閑位),則實際的字符傳輸速率為1200/11=109.09幀/秒。
波特率也不同于發(fā)送時鐘和接收時鐘頻率。同步通信的波特率和時鐘頻率相等,而異步通信的波特率通常是可變的。第13頁/共119頁9.1.3串行通信的制式1.單工制式(Simplex)
單工制式是指甲乙雙方通信只能單向傳送數據。單工制式如圖9.5所示。
在串行通信中,數據是在兩個站之間傳送的。按照數據傳送方向,串行通信可分為三種制式。發(fā)送器A接收器B圖9.5單工制式第14頁/共119頁2.半雙工制式(Halfduplex)
半雙工制式是指通信雙方都具有發(fā)送器和接收器,雙方既可發(fā)送也可接收,但接收和發(fā)送不能同時進行,即發(fā)送時就不能接收,接收時就不能發(fā)送。半雙工制式如圖9.6所示。發(fā)送接收發(fā)送接收A端B端圖9.6半雙工制式第15頁/共119頁3.全雙工制式(Fullduplex)
全雙工制式是指通信雙方均設有發(fā)送器和接收器,并且將信道劃分為發(fā)送信道和接收信道,兩端數據允許同時收發(fā),因此通信效率比前兩種高。全雙工制式如圖9.7所示。發(fā)送接收接收發(fā)送A端B端圖9.7全雙工制式第16頁/共119頁9.1.4串行通信的校驗
串行通信的目的不只是傳送數據信息,更重要的是應確保準確無誤地傳送。因此必須考慮在通信過程中對數據差錯進行校驗,因為差錯校驗是保證準確無誤地通信的關鍵。常用差錯校驗方法有奇偶校驗、累加和校驗以及循環(huán)冗余碼校驗等。第17頁/共119頁1.奇偶校驗
奇偶校驗的特點是按字符校驗,即在發(fā)送每個字符數據之后都附加一位奇偶校驗位(1或0),當設置為奇校驗時,數據中1的個數與校驗位1的個數之和應為奇數;反之則為偶校驗。收、發(fā)雙方應具有一致的差錯檢驗設置,當接收1幀字符時,對1的個數進行檢驗,若奇偶性(收、發(fā)雙方)一致則說明傳輸正確。奇偶校驗只能檢測到那種影響奇偶位數的錯誤,比較低級且速度慢,一般只用在異步通信中。第18頁/共119頁2.累加和校驗
累加和校驗是指發(fā)送方將所發(fā)送的數據塊求和,并將“校驗和”附加到數據塊末尾。接收方接收數據時也是先對數據塊求和,將所得結果與發(fā)送方的“校驗和”進行比較,若兩者相同,表示傳送正確,若不同則表示傳送出了差錯?!靶r灪汀钡募臃ㄟ\算可用邏輯加,也可用算術加。累加和校驗的缺點是無法檢驗出字節(jié)或位序的錯誤。第19頁/共119頁3.循環(huán)冗余碼校驗(CRC)
循環(huán)冗余碼校驗的基本原理是將一個數據塊看成一個位數很長的二進制數,然后用一個特定的數去除它,將余數作校驗碼附在數據塊之后一起發(fā)送。接收端收到該數據塊和校驗碼后,進行同樣的運算來校驗傳送是否出錯。目前CRC已廣泛用于數據存儲和數據通信中,并在國際上形成規(guī)范,市面上已有不少現(xiàn)成的CRC軟件算法。第20頁/共119頁9.2AT89C51的串行接口AT89C51內部有一個可編程全雙工串行通信接口。該部件不僅能同時進行數據的發(fā)送和接收,也可作為一個同步移位寄存器使用。下面將對其內部結構、工作方式以及波特率進行介紹。第21頁/共119頁9.2.1串行接口的結構及功能圖9.8AT89C51串行口結構框圖發(fā)送SBUF(99H)接收SBUF(99H)同步時鐘門電路發(fā)送控制器接收控制器輸入移位寄存器串行口控制寄存器(98H)內部總線≥1串行口中斷TIRITXD(P3.1)RXD(P3.0)第22頁/共119頁1.串行數據緩沖器SBUFSBUF是串行口緩沖寄存器,包括發(fā)送寄存器和接收寄存器,以便能以全雙工方式進行通信。此外,在接收寄存器之前還有移位寄存器,從而構成了串行接收的雙緩沖結構,這樣可以避免在數據接收過程中出現(xiàn)幀重疊錯誤。發(fā)送數據時,由于CPU是主動的,不會發(fā)生幀重疊錯誤,因此發(fā)送電路不需要雙重緩沖結構。第23頁/共119頁
在邏輯上,SBUF只有一個,它既表示發(fā)送寄存器,又表示接收寄存器,具有同一個單元地址99H。但在物理結構上,則有兩個完全獨立的SBUF,一個是發(fā)送緩沖寄存器SBUF,另一個是接收緩沖寄存器SBUF。如果CPU寫SBUF,數據就會被送入發(fā)送寄存器準備發(fā)送;如果CPU讀SBUF,則讀入的數據一定來自接收緩沖器。即CPU對SBUF的讀寫,實際上是分別訪問上述兩個不同的寄存器。第24頁/共119頁2.串行控制寄存器SCON
串行控制寄存器SCON用于設置串行口的工作方式、監(jiān)視串行口的工作狀態(tài)、控制發(fā)送與接收的狀態(tài)等。它是一個既可以字節(jié)尋址又可以位尋址的8位特殊功能寄存器。其格式如圖9.9所示。第25頁/共119頁見表9-1圖9.9串行口控制寄存器SCONRITIRB8TB8RENSM2SM1SM0SCON98H99H9AH9BH9CH9DH9EH9FH位地址0:雙機1:多機多機通信0:禁止1:允許接收控制發(fā)送數據第9位接收數據第9位發(fā)送中斷標志接收中斷標志第26頁/共119頁(1)SM0SM1:串行口工作方式選擇位。其狀態(tài)組合所對應的工作方式如表9-1所示。SM0SM1工作方式功能說明000同步移位寄存器輸入/輸出,波特率固定為fosc/1201110位異步收發(fā),波特率可變(T1溢出率/n,n=32或16)10211位異步收發(fā),波特率固定為f0sc/n,n=64或32)11311位異步收發(fā),波特率可變(T1溢出率/n,n=32或16)表9-1串行口工作方式第27頁/共119頁(2)SM2:多機通信控制器位。在方式0中,SM2必須設成0。在方式1中,當處于接收狀態(tài)時,若SM2=1,則只有接收到有效的停止位“1”時,RI才能被激活成“1”(產生中斷請求)。在方式2和方式3中,若SM2=0,串行口以單機發(fā)送或接收方式工作,TI和RI以正常方式被激活并產生中斷請求;若SM2=1,RB8=1時,RI被激活并產生中斷請求。第28頁/共119頁(4)TB8:方式2和方式3中要發(fā)送的第9位數據。該位由軟件置位或復位。在方式2和方式3時,TB8是發(fā)送的第9位數據。在多機通信中,以TB8位的狀態(tài)表示主機發(fā)送的是地址還是數據:TB8=1表示地址,TB8=0表示數據。TB8還可用作奇偶校驗位。(3)REN:串行接受允許控制位。該位由軟件置位或復位。當REN=1,允許接收;當REN=0,禁止接收。第29頁/共119頁(6)TI:發(fā)送中斷標志位。TI=1,表示已結束一幀數據發(fā)送,可由軟件查詢TI位標志,也可以向CPU申請中斷。注意:TI在任何工作方式下都必須由軟件清0。(5)RB8:接收數據第9位。在方式2和方式3時,RB8存放接收到的第9位數據。RB8也可用作奇偶校驗位。在方式1中,若SM2=0,則RB8是接收到的停止位。在方式0中,該位未用。第30頁/共119頁(7)RI:接收中斷標志位。RI=1,表示一幀數據接收結束??捎绍浖樵僐I位標志,也可以向CPU申請中斷。
注意:RI在任何工作方式下也都必須由軟件清0。在AT89C51中,串行發(fā)送中斷TI和接收中斷RI的中斷入口地址是同是0023H,因此在中斷程序中必須由軟件查詢TI和RI的狀態(tài)才能確定究竟是接收還是發(fā)送中斷,進而作出相應的處理。單片機復位時,SCON所有位均清0。第31頁/共119頁
圖9.10電源控制寄存器PCON的格式PCOND7D6D5D4D3D2D1D0位名稱SMOD---GF1GF0PDIDL
SMOD:串行口波特率倍增位。在工作方式1~工作方式3時,若SMOD=1,則串行口波特率增加一倍。若SMOD=0,波特率不加倍。系統(tǒng)復位時,SMOD=0。2.電源控制寄存器PCON第32頁/共119頁9.2.2串行口工作方式AT89C51串行通信共有4種工作方式,它們分別是方式0、方式1、方式2和方式3,由串行控制寄存器SCON中的SM0SM1決定,如表9-1所示。第33頁/共119頁1.工作方式0
在方式0下,串行口作為同步移位寄存器使用。此時SM2、RB8、TB8均應設置為0。
(1)發(fā)送:TI=0時,執(zhí)行“MOVSBUF,A”啟動發(fā)送,8位數據由低位到高位從RXD引腳送出,TXD發(fā)送同步脈沖。發(fā)送完后,由硬件置位TI。
(2)接收:RI=0,REN=1時啟動接收,數據從RXD輸入,TXD輸出同步脈沖。8位數據接收完,由硬件置位RI。可通過“MOVA,SBUF”讀取數據。第34頁/共119頁
方式0的波特率為fosc/12,即一個機器周期發(fā)送或接收一位數據。
應當指出:方式0并非是同步通信方式。它的主要用途是外接同步移位寄存器,以擴展并行I/O口。第35頁/共119頁2.工作方式1
方式1是一幀10位的異步串行通信方式,包括1個起始位(0),8個數據位和一個停止位(1),其幀格式如下:
起始位0D0D1D2D3D4D5D6D7
停止位1
圖9.11方式1數據幀格式第36頁/共119頁(1)數據發(fā)送
當TI=0時,執(zhí)行“MOVSBUF,A”指令后開始發(fā)送,由硬件自動加入起始位和停止位,構成一幀數據,然后由TXD端串行輸出。發(fā)送完后,TXD輸出線維持在“1”狀態(tài)下,并將SCON中的TI置1,表示一幀數據發(fā)送完畢。第37頁/共119頁(2)數據接收
RI=0,REN=1時,接收電路以波特率的16倍速度采樣RXD引腳,如出現(xiàn)由“1”變“0”跳變,認為有數據正在發(fā)送。
在接收到第9位數據(即停止位)時,必須同時滿足以下兩個條件:RI=0和SM2=0或接收到的停止位為“1”,才把接收到的數據存入SBUF中,停止位送RB8,同時置位RI。若上述條件不滿足,接收到的數據不裝入SBUF被舍棄。在方式1下,SM2應設定為0。第38頁/共119頁(3)波特率波特率=2SMOD×(T1溢出率)/32T1溢出率=1/T1定時時間=(M-T初)·T機1波特率=32·12·(M-T初)2SMOD·fosc第39頁/共119頁3.工作方式2和方式3
工作方式2和方式3都是11位異步收發(fā)串行通信方式,兩者的差異僅在波特率上有所不同。方式2:波特率=2SMOD·fosc/64(SMOD=0或1)方式3:(與方式1相同)波特率=32·12·(M-T初)2SMOD·fosc第40頁/共119頁(1)數據發(fā)送
TI=0,發(fā)送數據前,先由軟件設置TB8,可使用如下指令完成:
SETBTB8
;將TB8位置1
CLRTB8
;將TB8位置0
然后再向SBUF寫入8位數據,并以此來啟動串行發(fā)送。一幀數據發(fā)送完畢后,CPU自動將TI置1,其過程與方式1相同。第41頁/共119頁(2)數據接收
REN=1,RI=0時,啟動接收
①若SM2=0,接收到的8位數據送SBUF,第9位數據送RB8。②若SM2=1,接收到的第9位數據為0,數據不送SBUF;接收到的第9位數據為1,數據送SBUF,第9位送RB8。第42頁/共119頁
對波特率需要說明的是,當串行口工作在方式1或方式3,且要求波特率按規(guī)范取1200、2400、4800、9600…時,若采用晶振12MHz和6MHz,按上述公式算出的T1定時初值將不是一個整數,因此會產生波特率誤差而影響串行通信的同步性能。解決的方法只有調整單片機的晶振頻率fosc,為此有一種頻率為11.0592MHz的晶振,這樣可使計算出的T1初值為整數。表9-2列出了串行方式1或方式3在不同晶振時的常用波特率和誤差。第43頁/共119頁表9.2常用波特率和誤差
晶振頻率(MHZ)波特率
(HZ)SMODT1方式2定時初值實際波特率誤差(%)12.0096001F9H8923712.0048000F9H4460712.0024000F3H24040.1612.0012000E6H12020.1611.0592192001FDH19200011.059296000FDH9600011.059248000EAH4800011.059224000F4H2400011.059212000E8H12000第44頁/共119頁9.3.1工作方式0的應用
串行口工作方式0主要用于擴展并行I/O接口。擴展成并行輸出口時,需要外接一片8位串行輸入并行輸出的同步移位寄存器74LS164或CD4094。擴展成并行輸入口時,需要外接一片并行輸入串行輸出的同步移位寄存器74LS165或CD4014。9.3AT89C51串行接口的應用與編程第45頁/共119頁
例9.1利用串行口工作在方式0,外擴一片74LS164構成一個3位LED動態(tài)顯示器,并將片內RAM顯示單元65H、66H和67H單元中的段碼輸出顯示。其硬件電路如圖9.12所示。第46頁/共119頁1118874LS164SASBCLKVCCLR+5VP1.0P1.1P1.289C51TXDRXD圖9.12例9.1電路圖第47頁/共119頁ORG0100HSTPRT:MOVSCON,#00H;串口工作方式0SETBP1.2;消去最高顯示位
SETBP1.1;消去次高顯示位
MOVSBUF,65H;傳送最低顯示位
JNBTI,$;等待發(fā)送
CLRP1.0;最低位顯示
CLRTI;清中斷標志位
LCALLDSSJ;調延時子程序
SETBP1.0;消去最低顯示位
MOVSBUF,66H;傳送中間顯示位第48頁/共119頁JNBTI,$;等待傳送結束
CLRP1.1;顯示中間位
CLRTI;清中斷標志位
LCALLDSSJ;調延時子程序
SETBP1.1;消去中間顯示位
MOVSBUF,67H;傳送最高顯示位
JNBTI,$;等待傳送結束
CLRP1.2;顯示最高位
CLRTI;清中斷標志位
LCALLDSSJSETBP1.2RET點擊觀看仿真演示第49頁/共119頁
例9.2A、B兩臺單片機,均采用11.0592MHz晶振。A機以2400bps波特率將內部RAM中30H至39H的10個字節(jié)及校驗和經串行口發(fā)送給B機,B機正確接收后存入片內RAM的30H至39H單元,并同時顯示其中的前8位數據。A、B兩機的RXD、TXD交叉相連并共地。兩機串行口均設置為方式1,定時器T1定時初值為F4H,兩機采用查詢控制方式程序如下:9.3.2工作方式1的應用第50頁/共119頁;A機發(fā)送程序:
ORG0MOVR0,#30H;R0指向數據塊首址
MOVR7,#0AH;循環(huán)次數為10次
MOVA,#1;初值為1MAIN:MOV@R0,A;設置數據初值為1~AINCR0INCADJNZR7,MAINMOVTMOD,#20H;T1定時方式2第51頁/共119頁MOVTL1,#0F4H;波特率為1200bpsMOVTH1,#0F4HSETBTR1;啟動T1MOVSCON,#40H;串口方式1MOVR0,#30H;R0指向發(fā)送數據塊首址
MOVR1,#0AH;數據塊長度為10MOV70H,#00H;校驗和清0DWFP:MOVA,@R0;數據送AMOVSBUF,A;啟動串口發(fā)送
ADDA,70H;求校驗和第52頁/共119頁MOV70H,AJNBTI,$;等待發(fā)送完畢CLRTI;清發(fā)送中斷標志INCR0;R0指向下一字節(jié)數據DJNZR1,DWFP;10個字節(jié)數據發(fā)送完?MOVSBUF,A;發(fā)送校驗和JNBTI,$;等待發(fā)送完畢CLRTI;清發(fā)送中斷標志SJMP$;停機END第53頁/共119頁;B機接收并顯示程序ORG0;******主程序******MOVTMOD,#20H;T1定時方式2MOVTL1,#0F4H;串口波特率為2400bpsMOVTH1,#0F4HSETBTR1;啟動T1MOVSCON,#50H;串口方式1,允許接收MOVR0,#30H;R0指存放接收數據首地址MOVR1,#0AH;接收數據塊長度為10第54頁/共119頁MOV70H,#00H;校驗和清0DWFP:JNBRI,$;等待接收MOVA,SBUF;讀取接收數據MOV@R0,A;保存至接收數據塊單元ADDA,70H;求校驗和MOV70H,ACLRRI;清接收中斷標志INCR0;R0指向下一單元地址DJNZR1,DWFP;10個數據接收完?JNBRI,$;等待接收校驗和第55頁/共119頁MOVA,SBUF;讀取校驗和
CLRREN;禁止接收數據
CJNEA,70H,PEND;校驗和不正確轉PENDLOP:LCALLDISP;校驗和正確則調顯示
SJMPLOPPEND:SJMP$;******顯示子程序(分兩屏顯示)******DISP:MOVR0,#30HDISP1:MOVR1,#08HMOVR2,#01HMOVDPTR,#TAB第56頁/共119頁LOOP:MOVA,R2MOVP2,ARLAMOVR2,AMOVA,@R0MOVCA,@A+DPTRMOVP1,AINCR0LCALLDELYDJNZR1,LOOPRET第57頁/共119頁;******延時子程序******DELY:MOVR7,#10DEL1:MOVR6,#100DJNZR6,$DJNZR7,DEL1RETTAB:DB0C0H,0F9H,0A4H,0B0H,99H,92H,82HDB0F8H,80H,90H,88H,83H,0C6H,0A1HDB86H,8EH,0BFH,8CH,0CH,0FFHEND點擊觀看仿真演示第58頁/共119頁9.3.3工作方式2與工作方式3的應用
方式2與方式3都是11位異步通信方式,這兩種方式的區(qū)別僅在于波特率不同。方式2的波特率只有固定的兩種,而方式3的波特率則可由用戶自行設定。第59頁/共119頁
例9.3利用串行口方式2編制一發(fā)送程序,將片內RAM中60H~6FH單元的數據串行發(fā)送出去,第9數據位TB8作偶校驗位。根據要求,將串行口設置為方式2、單工發(fā)送,則SCON控制字為80H。波特率選為fosc/64。第60頁/共119頁
采用中斷方式發(fā)送的主程序和中斷程序如下:
ORG0000HAJMPMAIN;轉主程序
ORG0023H;串口中斷服務程序
INCR0;發(fā)送數據地址增1MOVA,@R0;取出待發(fā)數據
MOVC,PSW.0;將奇偶位送TB8MOVTB8,CMOVSBUF,A;發(fā)送數據
DJNZR7,SSJS;判斷數據是否發(fā)送完第61頁/共119頁CLRES;發(fā)送完關中斷SSJS:CLRTI;清中斷標志
RETIMAIN:ORG0100H;主程序
MOVSP,#20H;置堆棧指針
MOVSCON,#80H;串口設置為方式2MOVPCON,#00H;波特率選為fosc/64MOVR0,#60H;數據塊首址送R0MOVR7,#10H;數據塊長度送R7SETBEA;開總中斷
SETBES;開串行口中斷第62頁/共119頁MOVA,@R0;取出待發(fā)數據
MOVC,PSW.0;將奇偶位送TB8MOVTB8,CMOVSBUF,A;發(fā)送數據
SJMP$;等待中斷
END第63頁/共119頁
例9.4試編制串行口在方式3下接收數據塊的程序。設單片機晶振為11.0592MHz,波特率為2400b/s,接收的數據存在片內RAM的40H起始單元的一段區(qū)間內,數據塊長度由發(fā)送方先發(fā)送過來(不超過允許值),每接收一個數據都核對其奇偶校驗位,正確則存儲數據,否則給出出錯標志。解:根據要求,設置T1工作于方式2,當SMOD=0時,T1計數初值為F4H。第64頁/共119頁
查詢法源程序如下:START:MOVTMOD,#20H;T1定時方式2MOVTL1,#0F4H;置T1計數初值
MOVTH1,#0F4HSETBTR1;啟動T1MOVSCON,#0D0H;串口方式3,允許接收
MOVPCON,#00H;設SMOD=0MOVR0,#40H;接收數據區(qū)首址送R0JNBRI,$;等待接收數據塊長度
CLRRI;接收后清RI第65頁/共119頁MOVA,SBUF;數據塊長度存R7中
MOVR7,AMAR0:JNBRI,$;等待接收數據
CLRRI;清RIMOVA,SBUF;將接收字符讀入AJBPSW.0,MAR1;進行奇偶位校驗
JBRB8,MAR3SJMPMAR2MAR1:JNBRB8,MAR3MAR2:MOV@R0,A;校驗正確保存數據第66頁/共119頁INCR0;存儲單元地址增1CLRPSW.5;設置正確的標志
DJNZR7,MAR0;未接收完,繼續(xù)
SJMP$;接收完停機
MAR3:SETBPSW.5;置校驗出錯標志
SJMP$;停機
END第67頁/共119頁9.4多機通信
雙機通信時,兩臺單片機地位是平等的,此時,兩臺單片機的串行口均可工作于方式1。多機通信是指一臺主機和多臺從機之間的通信。而在多機通信中,有主機和從機之分,多機通信時,主機發(fā)送的信息可以傳送到各個從機,而各從機發(fā)送的信息只能被主機接收,其中的主要問題是怎樣識別地址和怎樣維持主機與指定從機之間的通信。第68頁/共119頁1.多機通信連接電路
在串行方式2或方式3條件下,可實現(xiàn)一臺主機和多臺從機之間的通信,其連接電路如圖9.13所示。圖9.13多機通信連接圖TXDRXDTXDRXDTXDRXD89C205189C205189C2051從機1從機2從機nTXDRXD89C51主機…第69頁/共119頁2.多機通信原理
多機通信時,主機向從機發(fā)送的信息分為地址幀和數據幀兩類,以第9位可編程TB8作區(qū)分標志,TB8=0,表示數據;TB8=1,表示地址。多機通信充分利用了89C51串行控制寄存器SCON中的多機通信控制位SM2的特性。當SM2=1時,CPU接收的前8位數據是否送入SBUF取決于接收的第9位RB8的狀態(tài):若RB8=1,將接收到的前8位數據送入SBUF,并置位RI產生中斷請求;若第70頁/共119頁RB8=0,則接收到的前8位數據丟棄。即當從機SM2=1時,從機只能接收主機發(fā)送的地址幀(RB8=1),對數據幀(RB8=0)不予理睬。當從機SM2=0時,從機可接收主機發(fā)送的所有信息。
通信開始時,主機首先發(fā)送地址幀。由于各從機的SM2=1和RB8=1,所以各從機均分別發(fā)出串行接收中斷請求,通過串行中斷服務程序來判斷主機發(fā)送的地址與本從機地址是否相符。如果相符,則把自身的SM2清0,以準備接收隨后傳第71頁/共119頁
送來的數據幀。其余從機由于地址不符,則仍保持SM2=1狀態(tài),因而不能接收主機傳送來的數據幀。這就是多機通信中主、從機一對一的通信情況。這種通信只能在主、從機之間進行,如果想在兩個從機之間進行通信,則要通過主機作中介才能實現(xiàn)。第72頁/共119頁3.多機通信過程主、從機工作于方式2或方式3,主機置SM2=0,REN=1;從機置SM2=1,REN=1。(2)主機置位TB8=1,向從機發(fā)送尋址地址幀,各從機因滿足接收條件(SM2=1,RB8=1),從而接收到主機發(fā)來的地址,并與本機地址進行比較。(3)地址一致的從機(被尋址機)將SM2清0,并向主機返回地址,供主機核對。地址不一致的從機(未被尋址機)保持SM2=1。第73頁/共119頁(4)主機核對返回的地址,若與此前發(fā)出的地址一致則準備發(fā)送數據;若不一致則返回(2)重新發(fā)送地址幀。(5)主機向從機發(fā)送數據,此時主機的TB8=0,只有被選中的那臺從機能接收到該數據。其他從機則舍棄該數據。(6)本次通信結束后,從機重新置SM2=1,等待下次通信。第74頁/共119頁
例9.5按照圖9.13,編寫主機向從機1發(fā)送數據的程序,波特率為1200bps,從機1的地址為01H,晶振fosc為11.0592MHz。
分析:按照波特率的要求,主、從機串行口均應工作于方式3,定時器T1工作于方式2,定時初值為E8H。初始化時,主機置SM2=0,TB8=1,REN=1。從機置SM2=1,REN=1。主機發(fā)送的數據位于30H單元,從機接收后存于30H區(qū)域內。主機程序框圖及源程序如下:第75頁/共119頁開始設置啟動T1串口方式3,SM2=0REN=1,TB8=1R0置30H(首址)R1置01H(從機地址)調發(fā)送子程序停機其他功能主程序框圖TRAN發(fā)送地址接收從機地址發(fā)送返回發(fā)送子程序框圖地址相同?NY圖9.14例9.5程序框圖第76頁/共119頁
;主程序
ORG0000HLJMPSTARTORG0020HSTART:MOVTMOD,#20H;T1定時方式2MOVTH1,#0E8H;波特率為1200bpsMOVTL1,#0E8HSETBTR1;啟動T1MOVSCON,#0D8H;SM2=0,REN=1,TB8=1MOVPCON,#00H;波特率不加倍第77頁/共119頁MOVR0,#30H;發(fā)送數據單元地址送R0MOVR1,#01H;從機地址送R1ACALLTRAN;調發(fā)送數據子程序
……;其他功能程序段
SJMP$;停機;發(fā)送數據子程序
TRAN:MOVA,R1;從機地址送ASETBTB8;TB8置1,發(fā)送地址幀
MOVSBUF,A;啟動發(fā)送
JNBTI,$;等待發(fā)送完
CLRTI;軟件清TI第78頁/共119頁JNBRI,$;等待接收從機發(fā)回確認地址
CLRRI;軟件清RIMOVA,SBUF;讀取地址
XRLA,R1;核對地址是否相同
JZTRA1;相同,轉
SJMPTRAN;地址不同,轉重發(fā)地址TRA1:CLRTB8;TB8清0,發(fā)送數據幀
MOVA,@R0;讀取待發(fā)送數據
MOVSBUF,A;啟動發(fā)送
JNBTI,$;等待數據發(fā)送完
CLRTI;軟件清發(fā)送中斷標志
RET;返回第79頁/共119頁從機源程序如下:
;主程序
ORG0000HLJMPSTARTORG0023H;串口中斷入口地址
LJMPSEVT0ORG0030HSTART:MOVTMOD,#20H;T1定時方式2MOVTH1,#0E8H;波特率為1200bpsMOVTL1,#0E8HSETBTR1;啟動T1第80頁/共119頁MOVSCON,#0F8H;SM2=1,REN=1,TB8=1MOVPCON,#00H;波特率不加倍
MOVR0,#30H;R0指向數據存放單元
SETBEA;開串口中斷
SETBES……SJMP$;停機;串口中斷服務程序SEVT0:JBRI,SEVT1;是接收中斷轉SEVT1CLRTI;是發(fā)送中斷,清TIRETI;返回第81頁/共119頁SEVT1:CLRRI;清RIMOVA,SBUF;讀取數據
JBRB8,SEVT2;是地址幀,轉SEVT2MOV@R0,A;數據存于R0所指單元
SETBSM2;一次通信完成,重置SM2RETI;返回SEVT2:XRLA,#01H;核對是否本機地址
JZSEVT3;是本機地址,轉
SETBSM2;不是本機地址,SM2置1RETI第82頁/共119頁SEVT3:CLRSM2;是本機地址,SM2清0MOVA,#01H;向主機發(fā)確認地址
MOVSBUF,ARETI第83頁/共119頁
在實際應用中,上面介紹的這種多機通信因受單片機功能和通信距離短等的限制,很少被采用。在一些較大的測控系統(tǒng)中,常將單片機作為從機(下位機)直接用于被控對象的數據采集與控制,而把PC機作為主機(上位機)用于數據處理和對從機的管理,它們之間的信息交換主要采用串行通信總線結構。第84頁/共119頁9.5PC機與單片機間的串行通信
近年來,在智能儀器儀表、數據采集、嵌入式自動控制等場合,越來越普遍應用單片機作核心控制部件。但當需要處理較復雜數據或要對多個采集的數據進行綜合處理以及需要進行集散控制時,單片機的算術運算和邏輯運算能力都顯得不足,這時往往需要借助計算機系統(tǒng)。將單片機采集的數據通過串行口傳送給PC機,由PC機高級語言或數據庫語言對數據進行處理,或者實現(xiàn)第85頁/共119頁PC機對遠端單片機進行控制。因此,實現(xiàn)單片機與PC機之間的遠程通信更具有實際意義。單片機中的數據信號電平都是TTL電平,這種電平采用正邏輯標準,即約定≥2.4V表示邏輯1,而≤0.5V表示邏輯0,這種信號只適用于通信距離很短的場合,若用于遠距離傳輸必然會使信號衰減和畸變。因此,在實現(xiàn)PC機與單片機之間通信或單片機與單片機之間遠距離通信時,通常采用標準串行總線通信接口,比如RS-232C、第86頁/共119頁RS-422、RS-423、RS-485等。其中RS-232C原本是美國電子工業(yè)協(xié)會(ElectronicIndustryAssociation,簡稱EIA)的推薦標準,現(xiàn)已在全世界范圍內廣泛采用,RS-232C是在異步串行通信中應用最廣的總線標準,它適用于短距離或帶調制解調器的通信場合。第87頁/共119頁9.4.1RS-232C總線標準RS-232C實際上是串行通信的總線標準。該總線標準定義了25條信號線,使用25個引腳的連接器。各信號引腳的定義見表9.3。第88頁/共119頁表9.3RS-23C引腳信號定義引腳定義(助記符)引腳定義(助記符)1保護地(PG)14輔助通道發(fā)送數據(STXD)2發(fā)送數據(TXD)15發(fā)送時鐘(TXC)3接收數據(RXD)16輔助通道接收數據(SRXD)4請求發(fā)送(RTS)17接收時鐘(RXC)5清除發(fā)送(CTS)18未定義6數據準備好(DSR)19輔助通道請求發(fā)送(SRTS)7信號地(GND)20數據終端準備就緒(DTR)8接收線路信號檢測(DCD)21信號質量檢測9未定義22音響指標(RI)10未定義23數據信號速率選擇11未定義24發(fā)送時鐘12輔助通道接收線路信號檢測(SDCD)25未定義13輔助通道允許發(fā)送(SCTS)第89頁/共119頁
除信號定義外,RS-232C標準的其它規(guī)定還有:
(1)RS-232C是一種電壓型總線標準,它采用負邏輯標準:+3V~+25V表示邏輯0(space);-3V~-25V表示邏輯1(mark)。噪聲容限為2V。
(2)標準數據傳送速率有:50,75,110,150,300,600,1200,2400,4800,9600,19200bit/s。
(3)采用標準的25芯插頭座(DB-25)進行連接,因此該插頭座也稱之為RS-232C連接器。第90頁/共119頁
表9.3RS-232C標準中許多信號是為通信業(yè)務或信息控制而定義的,在計算機串行通信中主要使用了如下信號:
(1)數據傳送信號:發(fā)送數據(TXD);接收數據(RXD)。
(2)調制解調器控制信號:請求發(fā)送(RTS);清除發(fā)送(CTS);數據通信設備準備就緒(DSR);數據終端準備就緒(DTR)。
(3)定位信號:接收時鐘(RXC);發(fā)送時鐘(TXC)。
(4)信號地GND。第91頁/共119頁圖9.15微機9針D形串口連接器第92頁/共119頁9.4.2RS-232C接口電路
由于RS-232C信號電平(EIA)與AT89C51單片機信號電平(TTL)不一致,因此,必須進行信號電平轉換。實現(xiàn)這種電平轉換的電路稱為RS-232C接口電路。一般有兩種形式:一種是采用運算放大器、晶體管、光電隔離器等器件組成的電路來實現(xiàn);另一種是采用專門集成芯片(如MC1488、MC1489、MAX232等)來實現(xiàn)。下面介紹由專門集成芯片MAX232構成的接口電路。第93頁/共119頁1.MAX232接口電路MAX232芯片是MAXIM公司生產的具有兩路接收器和驅動器的IC芯片,其內部有一個電源電壓變換器,可以將輸入+5V的電壓變換成RS-232C輸出電平所需的±12V電壓。所以采用這種芯片來實現(xiàn)接口電路特別方便,只需單一的+5V電源即可。第94頁/共119頁MAX232芯片的引腳結構如圖9.16所示。其中管腳1~6(C1+、V+、C1-、C2+、C2-、V-)用于電源電壓轉換,只要在外部接入相應的電解電容即可;管腳7~10和管腳11~14構成兩組TTL信號電平與RS-232信號電平的轉換電路,對應管腳可直接與單片機串行口的TTL電平引腳和PC機的RS-232電平引腳相連。具體連線如圖9.17所示。第95頁/共119頁圖9.16MAX232引腳圖R2outT1inT2inR1outR1inT1outGND12346587151614131011129C1+V+C1-C2+C2-V-T2outR2inVCC第96頁/共119頁2.PC機與89C51單片機串行通信電路
用MAX232芯片實現(xiàn)PC機與AT89C51單片機串行通信的典型電路如圖9.16所示。圖中外接電解電容C1、C2、C3、C4用于電源電壓變換,可提高抗干擾能力,它們可取相同容量的電容,一般取1.0μF/16V。電容C5的作用是對+5V電源的噪聲干擾進行濾波,一般取0.1μF。選用兩組中的任意一組電平轉換電路實現(xiàn)串行通信,如圖第97頁/共119頁
中選Tlin、Rlout分別與AT89C51的TXD、RXD相連,Tlout、Rlin分別與PC機中R232接口的RXD、TXD相連。這種發(fā)送與接收的對應關系不能接錯,否則將不能正常工作。第98頁/共119頁C1+C1-C2+C2-AT89C51GNDGNDIBM-PCTXDTXDRXDRXDT1outT1inR1inR1outGNDV+V-VCCMAX232C4C1C2C3C5+5V++++圖9.17用MAX232實現(xiàn)串行通信接口電路圖第99頁/共119頁3.PC機與多個單片機間的串行通信
一臺PC機與多個單片機間的串行通信電路如圖9.18所示。這種通信系統(tǒng)一般為主從結構,PC機為主機,單片機為從機。主從機間的信號電平轉換由MAX232芯片實現(xiàn)。這種小型分布式控制系統(tǒng),充分發(fā)揮了單片機體積小、功能強、抗干擾性好、面向被控對象等優(yōu)點,將單片機采集到的數據傳送給PC機。同時也利用了PC機數據處理能力強的特點,可將多第100頁/共119頁
個控制對象的信息加以綜合分析、處理,然后向各單片機發(fā)出控制信息,以實現(xiàn)集中管理和最優(yōu)控制,并還能將各種數據信息顯示和打印出來。第101頁/共119頁圖9.18PC機與多個單片機間的串行通信電路T1outR1inT1outR1inT1outR1inT1outR1inT1inR1outT1inR1outT1inR1outT1inR1outMAX232MAX232MAX232MAX232TXDRXDTXDRXDTXDRXDTXDRXDAT89C51(1#)
AT89C51(2#)
AT89C51(3#)
AT89C51(4#)
TXDRXDIBM-PC第102頁/共119頁4、RS-485總線接口
RS-232接口標準出現(xiàn)較早,難免會有不足之處:(1)接口的信號電平值較高,易損壞接口電路的芯片;(2)傳輸速率較低,在異步傳輸時,波特率最大20kbps;(3)接口使用一根信號線和一根信號返回線而構成共地的傳輸形式,這種共地傳輸容易產生共模干擾;(4)傳輸距離有限,實際最大傳輸距離30m左右。第103頁/共119頁RS-485/422接口采用不同的方式:每個信號都采用雙絞線傳送,兩條線間的電壓差用于表示數字信號。例如,把雙絞線中的一根標為A(正),另一根標為B(負),當A為正電壓(通常為+5V),B為負電壓時(通常為0),表示信號1;反之,A為負電壓,B為正電壓時表示信號0。RS-485/422允許通信距離可達到1.2km,實際上可達3km,采用合適的電壓可達到2.5Mbps的傳輸速率。第104頁/共119頁RS-422與RS-485采用相同的通信協(xié)議,但有所不同。RS-422通常作為RS-232通信的擴展,它采用兩對雙絞線,數據可以同時雙向傳送(全雙工)。RS-485則采用一對雙絞線,輸入輸出不能同時進行(半雙工)。第105頁/共119頁RS-485串行總線接口標準以差分平衡方式傳輸信號,具有很強的抗共模干擾的能力。邏輯“1”以兩線間的電壓差為+2V~+6V表示
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 未來出行新技術考試問題及答案
- 電商平臺用戶分析試題及答案
- 英華書院面試題及答案
- 幼兒園加減法游戲試題及答案
- 基于2025年工業(yè)互聯(lián)網平臺的安全多方計算在智慧園區(qū)安全防護中的應用報告
- 河南高中理綜試題及答案
- 天然氣水合物(可燃冰)開采技術對海洋生態(tài)環(huán)境保護的貢獻報告
- 時尚操控測試題及答案
- 教育培訓機構品牌建設與市場推廣策略在實體教育機構市場的應用研究
- 教育教學反思與能力提升探究試題及答案
- 景區(qū)安全生產管理規(guī)章制度大全
- 2025屆湖北武漢市華中師大一附中高考英語押題試卷含答案
- 釣場出租合同協(xié)議
- 骨科病人術后疼痛護理
- 2025云南省安全員《A證》考試題庫及答案
- 深基坑開挖應急預案1
- 瓷磚委托加工協(xié)議書范本
- 醫(yī)養(yǎng)結合機構內老人在養(yǎng)老區(qū)和醫(yī)療區(qū)之間床位轉換解讀
- 2025年春初中數學七年級下冊蘇科版上課課件 11.2 一元一次不等式的概念
- 大數據與人工智能營銷(南昌大學)知到智慧樹章節(jié)答案
- 2024屆江蘇省蘇錫常鎮(zhèn)四市高三二模地理試題含答案解析
評論
0/150
提交評論