版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第八章 單片機(jī)串行數(shù)據(jù)通信,8.1 串行通信的基礎(chǔ)知識(shí) 串行數(shù)據(jù)通信要解決兩個(gè)關(guān)鍵技術(shù)問(wèn)題,一個(gè)是數(shù)據(jù)傳送,另一個(gè)是數(shù)據(jù)轉(zhuǎn)換。所謂數(shù)據(jù)傳送就是指數(shù)據(jù)以什么形式進(jìn)行傳送。所謂數(shù)據(jù)轉(zhuǎn)換就是指單片機(jī)在接受數(shù)據(jù)時(shí),如何把接收到的串行數(shù)據(jù)轉(zhuǎn)化為并行數(shù)據(jù),單片機(jī)在發(fā)送數(shù)據(jù)時(shí),如何把并行數(shù)據(jù)轉(zhuǎn)換為串行數(shù)據(jù)進(jìn)行發(fā)送。,8.1.1 數(shù)據(jù)傳送 單片機(jī)的串行通信使用的是異步串行通信,所謂異步就是指發(fā)送端和接收端使用的不是同一個(gè)時(shí)鐘。
2、異步串行通信通常以字符(或者字節(jié))為單位組成字符幀傳送。字符幀由發(fā)送端一幀一幀地傳送,接收端通過(guò)傳輸線一幀一幀地接收。 1. 字符幀的幀格式 字符幀由四部分組成,分別是起始位、數(shù)據(jù)位、奇偶校驗(yàn)位、停止位。如圖8.1所示: 1) 起始位:位于字符幀的開(kāi)頭,只占一位,始終位邏輯低電平,表示發(fā)送端開(kāi)始發(fā)送一幀數(shù)據(jù)。 2) 數(shù)據(jù)位:緊跟起始位后,可取5、6、7、8位,
3、低位在前,高位在后。,3)奇偶校驗(yàn)位:占一位,用于對(duì)字符傳送作正確性檢查,因此奇偶校驗(yàn)位是可選擇的,共有三種可能,即奇偶校驗(yàn)、偶校驗(yàn)和無(wú)校驗(yàn),由用戶根據(jù)需要選定。4)停止位:末尾,為邏輯“1”高電平,可取1、1.5、2位,表示一幀字符傳送完畢。,圖8.1 字符幀格式,2. 傳送的速率 串行通信的速率用波特率來(lái)表示,所謂波特率就是指一秒鐘傳送數(shù)據(jù)位的個(gè)數(shù)。每秒鐘傳送一個(gè)數(shù)據(jù)位就是1波特。即:1波特=1bps(位/
4、秒) 。 在串行通信中,數(shù)據(jù)位的發(fā)送和接收分別由發(fā)送時(shí)鐘脈沖和接收時(shí)鐘脈沖進(jìn)行定時(shí)控制。時(shí)鐘頻率高,則波特率高,通信速度就快;反之,時(shí)鐘頻率低,波特率就低,通信速度就慢。,8.1.2 數(shù)據(jù)轉(zhuǎn)換 串行接口電路為用戶提供了兩個(gè)串行口緩沖寄存器(SBUF),一個(gè)稱為發(fā)送緩存器,它的用途是接收片內(nèi)總線送來(lái)的數(shù)據(jù),即發(fā)送緩沖器只能寫不能讀。發(fā)送緩沖器中的數(shù)據(jù)通過(guò)TXD引腳向外傳送。另一個(gè)稱為接收緩沖器,它的用途是向片
5、內(nèi)總線發(fā)送數(shù)據(jù),即接收緩沖器只能讀不能寫。接收緩沖器通過(guò)RXD引腳接收數(shù)據(jù)。因?yàn)檫@兩個(gè)緩沖器一個(gè)只能寫,一個(gè)只能讀,所以共用一個(gè)地址99H。串行接口電路如圖8.2所示。,圖8.2 MCS-51串行口寄存器結(jié)構(gòu),,8.2 MCS-51單片機(jī)串行通信的控制寄存器1. 串行口控制寄存器(SCON) SCON是MCS-51單片機(jī)的一個(gè)可位尋址的專用寄存器,用于串行數(shù)據(jù)通信的控制。單元地址為98H,位地址為98H~
6、9FH。寄存器的內(nèi)容及位地址表示如下:,各位的說(shuō)明如下:1) SM0 、SM1——串行口工作方式選擇位 其狀態(tài)組合和對(duì)應(yīng)工作方式為: SM0 SM1 工作方式 0 0
7、 方式0 0 1 方式1,1 0 方式2 1
8、1 方式32) M2——允許方式2、3的多機(jī)通信控制位 在方式2和3中,若SM2=1且接收到的第九位數(shù)據(jù)(RB8)為1,才將接收到的前8位數(shù)據(jù)送入接收SBUF 中,并置位RI產(chǎn)生中斷請(qǐng)求;否則丟棄前8位數(shù)據(jù)。若 SM2=0,則不論第九位數(shù)據(jù)(RB8)為1還是為0,都將 前8位送入接收SBUF中,并產(chǎn)生中斷請(qǐng)求。 方式0時(shí),SM2必須置0。
9、3) REN——允許接收位 REN=0 禁止接收數(shù)據(jù) REN=1 允許接收數(shù)據(jù)4) TB8——發(fā)送數(shù)據(jù)位8 在方式2、3時(shí),TB8的內(nèi)容是要發(fā)送的第9位數(shù)據(jù),其值由用戶通過(guò)軟件來(lái)設(shè)置。,5) RB8——接收數(shù)據(jù)位8 在方式2、3時(shí),RB8是接收的第9位數(shù)據(jù)。 在方式1時(shí),RB8是接收的停止位 在方式0時(shí),不使用RB
10、86) TI——發(fā)送中斷標(biāo)志位 在方式0時(shí),發(fā)送完第8位數(shù)據(jù)后,該位由硬件置位。 在其它方式下,于發(fā)送停止位之前,由硬件置位。 因此,TI=1表示幀發(fā)送結(jié)束,其狀態(tài)既可供軟件查詢使用,也可請(qǐng)求中斷。 TI由軟件清“0”。7) RI——接收中斷標(biāo)志位 在方式0時(shí),接收完第8位數(shù)據(jù)后,該位由硬件置位。 在其它方式下,于接收到停止位之前,該
11、位由硬件置位。 因此,RI=1表示幀接收結(jié)束,其狀態(tài)既可供軟件查詢使用, 也可請(qǐng)求中斷。 RI由軟件清“0”。,2. 電源控制寄存器(PCON) PCON不可位尋址,字節(jié)地址為87H。它主要是為CHMOS型單片機(jī)80C51的電源控制而設(shè)置的專用寄存器。其內(nèi)容如下:,與串行通信有關(guān)的只有D7位(SMOD),該位為波特率倍增位,當(dāng)SMOD=1時(shí),串行口波特率增加一倍,當(dāng)SMOD=0時(shí),串
12、行口波特率為設(shè)定值。當(dāng)系統(tǒng)復(fù)位時(shí),SMOD=0。,,8.3 MCS-51單片機(jī)串行通信工作方式 串行口的工作方式由SM0和SM1確定,編碼和功能如表8-1所示。,方式0和方式2的波特率是固定的,而方式1和方式3的波特率是可變的,由T1的溢出率決定。,,表8-1 串行口工作方式,8.3.1 串行工作方式01. 數(shù)據(jù)輸出(發(fā)送) 當(dāng)數(shù)據(jù)寫入SBUF后,數(shù)據(jù)從RXD端在移位脈沖(TXD)的 控制下,逐位
13、移入74LS164,74LS164能完成數(shù)據(jù)的串并轉(zhuǎn)換。當(dāng)8位數(shù)據(jù)全部移出后,TI由硬件置位,發(fā)生中斷請(qǐng)求。若CPU響應(yīng)中斷,則從0023H單元開(kāi)始執(zhí)行串行口中斷服務(wù)程序,數(shù)據(jù)由74LS164并行輸出。其接口邏輯如圖8.3所示。,圖8.3接口邏輯,2. 數(shù)據(jù)輸入(接收) 要實(shí)現(xiàn)接收數(shù)據(jù),必須首先把SCON中的允許接收位REN設(shè)置為1。當(dāng)REN設(shè)置為1時(shí),數(shù)據(jù)就在移位脈沖的控制下,從RXD端輸入。當(dāng)接收到8位數(shù)據(jù)時(shí),
14、置位接收中斷標(biāo)志位RI,發(fā)生中斷請(qǐng)求。其接口邏輯如圖8.4所示。由邏輯圖可知,通過(guò)外接74LS165,串行口能夠?qū)崿F(xiàn)數(shù)據(jù)的并行輸入。,圖8.4 外接移位寄存器輸入,【例8-1】使用74LS164的并行輸出端接8支發(fā)光二極管,利用它的串入并出功能,把發(fā)光二極管從左到右依次點(diǎn)亮,并反復(fù)循環(huán)。假定發(fā)光二極管為共陰極接法。,圖8.5 電路設(shè)計(jì),解:電路如圖8.5。軟件部分如下: ORG0000H
15、LJMPMAIN ORG1000HMAIN:MOVSCON,#00H ;串行口工作在方式0 CLRES ;禁止串行中斷 MOVA, #80H ;發(fā)光二極管從左邊亮起DELR:CLRP1.0 ;關(guān)閉并行輸出 MOVSBUF, A ;串行輸出WAINT:JNBTI, W
16、AIT ;狀態(tài)查詢 SETBP1.0 ;開(kāi)啟并行輸出 ACALLDELAY ;調(diào)用延時(shí)子程序 CLRTI ;清發(fā)送中斷標(biāo)志 RRA ;發(fā)光右移 AJMPDELR ;繼續(xù) EDN,8.3.2 串行工作
17、方式1 方式1為10位為一幀的異步串行通信方式。其幀格式為1個(gè)起始位、8個(gè)數(shù)據(jù)位和1個(gè)停止位。如圖8.6所示。,圖8.6 方式1的幀格式,1. 數(shù)據(jù)輸出(發(fā)送) 數(shù)據(jù)寫入SBUF后,開(kāi)始發(fā)送,此時(shí)由硬件加入起始位和 停止位,構(gòu)成一幀數(shù)據(jù),由TXD串行輸出。輸出一幀數(shù)據(jù)后,TXD保持在高電平狀態(tài)下,并將TI置位,通知CPU可以進(jìn)行下一個(gè)字符的發(fā)送。,2. 數(shù)據(jù)輸入(接收)
18、 當(dāng)REN=1且接收到起始位后,在移位脈沖的控制下,把接收到的數(shù)據(jù)移入接收緩沖寄存器(SBUF)中,停止位到來(lái)后,把停止位送入RB8中,并置位RI,通知CPU接收到一個(gè)字符。3. 波特率的設(shè)定 工作在方式1時(shí),其波特率是可變的,波特率的計(jì)算公式為:,其中,SMOD為PCON寄存器最高位的值,其值為1 或0。,當(dāng)定時(shí)器1作波特率發(fā)生器使用時(shí),選用工作方式2(即自動(dòng)加載定時(shí)初值方式)。選擇方式2可以避免通過(guò)
19、程序反復(fù)裝入定時(shí)初值所引起的定時(shí)誤差,使波特率更加穩(wěn)定。假定計(jì)數(shù)初值為X,則計(jì)數(shù)溢出周期為:,溢出率為溢出周期的倒數(shù)。則波特率的計(jì)算公式為:,實(shí)際使用中,波特率是已知的。因此需要根據(jù)波特率的計(jì)算公式求定時(shí)初值X。用戶只需要把定時(shí)初值設(shè)置到定時(shí)器1,就能得到所要求的波特率。,4. 應(yīng)用舉例(用方式1實(shí)現(xiàn)雙機(jī)串行通信)(1)通信雙方的硬件連接 作為應(yīng)用系統(tǒng)首先要研究通信雙方如何連接。一種辦法是把兩片8051的串行口
20、直接相連,一片8051的TXD與另一片的RXD相連,RXD與另一片的TXD相連,地與地連通。由于8051串行口的輸出是TTL電平,兩片相連所允許的距離極短。(2)通信雙方的軟件約定 為實(shí)現(xiàn)雙機(jī)通信,我們規(guī)定如下: 假定A機(jī)為發(fā)送機(jī),B機(jī)為接收機(jī)。 當(dāng)A機(jī)發(fā)送時(shí),先送一個(gè)“AA”信號(hào),B機(jī)收到后回答一個(gè)“BB” 信號(hào),表示同意接收。 當(dāng)A機(jī)接收到“BB”后,開(kāi)始發(fā)送數(shù)據(jù),每發(fā)送一
21、次求一次“檢 查和”,假定數(shù)據(jù)塊長(zhǎng)16個(gè)字節(jié),起始地址為30H,一個(gè)數(shù)據(jù)塊發(fā)送完后再發(fā)出“檢查和”。,B機(jī)接收的數(shù)據(jù)并轉(zhuǎn)存到數(shù)據(jù)區(qū),起始地址也為30H,同時(shí)每接收一次也計(jì)算一次“檢查和”,當(dāng)一個(gè)數(shù)據(jù)塊收齊后,再接收A機(jī)發(fā)來(lái)的“檢查和”,并將它與B機(jī)的“檢查和”進(jìn)行比較。若兩者相等,說(shuō)明接收正確,B機(jī)回答一個(gè)00;若兩者不相等,說(shuō)明接收不正確,B機(jī)回答一個(gè)FF,請(qǐng)求重發(fā)。 A機(jī)收到00的答復(fù)后,結(jié)束發(fā)送。若收到的答復(fù)非0,則重
22、新將數(shù)據(jù)發(fā)送一次。 雙方均以1200波特的速率傳送。假設(shè)晶振頻率為6MHz ,計(jì)算定時(shí)器1的計(jì)數(shù)初值:,為使波特率不倍增,設(shè)定PCON寄存器的SMOD=0,則 PCON=00H ..(3)基本的通信程序 設(shè)計(jì)程序框圖如圖8.7所示。,,圖8.7 雙機(jī)通信程序結(jié)構(gòu)圖,根據(jù)結(jié)構(gòu)圖設(shè)計(jì)出下述通信程序:A機(jī)通信程序:ASTART:MOV TMOD,#20H ;設(shè)定定時(shí)器1工作
23、方式2 MOV TL1,#0F2H ;設(shè)定計(jì)數(shù)初值 MOV TH1,#0F2H ;計(jì)數(shù)重裝值 MOV PCON,#00H ;波特率不倍增 SETB TR1;啟動(dòng)T1
24、 MOV SCON,#50H;設(shè)置串行口方式1ATT1: MOV SBUF, #0AAH;發(fā)送“AA”AWAIT1: JBC TI, ARR1 ;等待一幀發(fā)送完 SJMP AWAIT1ARR1: JBC RI,ARR2 ;等待應(yīng)答信號(hào)
25、 SJMP ARR1,ARR2: MOVA, SBUF XRLA,#0BBH JNZATT1 ;判斷是否是應(yīng)答信號(hào)“00”ATT2: MOVR0, #30H MOVR7,#10 MOVR6
26、,#00HATT3: MOVSBUF, @R0 MOVA,R6 ADDA,@R0 MOVR6,A INCR0AWAIT2: JBCTI,ATT4 SJMPAWAIT2 ;發(fā)送有效數(shù)據(jù)ATT4
27、: DJNZR7, ATT3 ;判斷是否傳送完畢 MOVSBUF, R6,AWAIT3: JBCTI, ARR3 SJMPAWAIT3 ;等待ARR3: JBCRI, ARR4 SJMPARR3 ;等待
28、ARR4: MOVA, SBUF JNZATT2AEND: RETB機(jī)通信程序:BST\ART: MOVTMOD, #20H;設(shè)定定時(shí)器1工作方式2 MOVTH1,#0F2H ;設(shè)定計(jì)數(shù)初值 MOVTL1,#0F2H ;計(jì)數(shù)重裝值
29、 MOVPCON,#00H ;波特率不倍增 SETBTR1 MOVSCON,#50H,BRR1: JBC RI,BRR2 SJMP BRR1 ;等待BRR2: MOV A,SBUF
30、 ;把接收到的數(shù)據(jù)送入A XRL A,#0AAH ;判斷接收到數(shù)據(jù)是否是“AA” JNZ BRR1 ;如果不是繼續(xù)等待BTT11: MOVSBUF,0BBH ;發(fā)送應(yīng)答信號(hào)BWAIT1: JBCTI, BRR3 ;等待 SJMP
31、BWAIT1BRR3: MOVR0,#30H ;接收有效數(shù)據(jù) MOVR7,#10 MOVR6,#00HBRR4: JBCRI,BRR5 SJMPBRR4,BRR6: MOV A, SBUF XRL
32、 A,R6 JZ BEND MOV SBUF,#0FFHBWAIT3:JBC TI, BRR3 SJMP BWAIT3BEND:MOV SBUF, #00H R
33、ET,8.3.3 串行工作方式2 方式2為11位為一幀的異步串行通信方式。其幀格式為1個(gè)起始位、9個(gè)數(shù)據(jù)位和1個(gè)停止位。如圖8.8所示。,圖8.8 方式2的幀格式,在方式2下,字符還是8個(gè)數(shù)據(jù)位,只不過(guò)增加了一個(gè)第9個(gè)數(shù)據(jù)位(D8),而且其功能由用戶確定,是一個(gè)可編程位。 在發(fā)送數(shù)據(jù)時(shí),應(yīng)先在SCON的TB8位中把第9個(gè)數(shù)據(jù)位的內(nèi)容準(zhǔn)備好。這可使用如下指令完成: SETB
34、TB8 ;TB8位置“1” CLR TB8 ;TB8位置“0”,發(fā)送數(shù)據(jù)(D0~D7)由MOV指令向SBUF寫入,而D8位的內(nèi)容則由硬件電路從TB 8中直接送到發(fā)送移位器的第九位,并以此來(lái)啟動(dòng)串行發(fā)送。一個(gè)字符幀發(fā)送完畢后,將TI位置“1”,其他過(guò)程與方式1相同。 方式2的接收過(guò)程也于方式1基本類似,所不同的只在第9數(shù)據(jù)位上,串行口把接收到
35、的前8個(gè)數(shù)據(jù)位送入SBUF,而把第九數(shù)據(jù)位送入RB。 方式2的波特率時(shí)固定的,而且有兩種。一種是晶振頻率的三十二分之一;另一種是晶振頻率的六十四分之一。即fosc/32和fosc/64。如用公式表示則為:,由此公式可知,當(dāng)SMOD為0時(shí),波特率為fosc/64,當(dāng)SMOD為1時(shí),波特率為fosc/32。,8.3.4 串行工作方式3 方式3同方式2幾乎完全一樣,只不過(guò)方式3的波特率是可變的,有用戶來(lái)確定。其波特率的確定
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 第8章 串行數(shù)據(jù)通信
- 單片機(jī)系統(tǒng)數(shù)據(jù)通信技術(shù)從入門到精通
- 一個(gè)單片機(jī)串行數(shù)據(jù)采集
- 雙單片機(jī)串行通信
- 數(shù)據(jù)通信
- 數(shù)據(jù)通信
- 單片機(jī)串行通信_(tái)485
- 基于arm-linux和單片機(jī)系統(tǒng)的數(shù)據(jù)通信系統(tǒng)設(shè)計(jì)
- 數(shù)據(jù)通信題庫(kù)
- 數(shù)據(jù)通信基礎(chǔ)
- 單片機(jī)課程設(shè)計(jì)--串行數(shù)據(jù)接收器3
- 嵌入式串行數(shù)據(jù)通信系統(tǒng)中差錯(cuò)控制技術(shù)的研究與實(shí)現(xiàn).pdf
- 單片機(jī)串行通信發(fā)射機(jī)
- 51單片機(jī)串行通信分析
- 單片機(jī)串行通信發(fā)射機(jī)
- 數(shù)據(jù)通信基礎(chǔ)
- 單片機(jī)串行通信發(fā)射機(jī)
- 單片機(jī)串行通信發(fā)射機(jī)
- 基于單片機(jī)的USB接口電路及其在數(shù)據(jù)通信中的應(yīng)用.pdf
- 單片機(jī)單片機(jī)課程設(shè)計(jì)-雙機(jī)串行通信
評(píng)論
0/150
提交評(píng)論