第二章 MCS-51單片機(jī)串行接口.ppt_第1頁(yè)
第二章 MCS-51單片機(jī)串行接口.ppt_第2頁(yè)
第二章 MCS-51單片機(jī)串行接口.ppt_第3頁(yè)
第二章 MCS-51單片機(jī)串行接口.ppt_第4頁(yè)
第二章 MCS-51單片機(jī)串行接口.ppt_第5頁(yè)
已閱讀5頁(yè),還剩42頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、2.7 串行接口,教學(xué)目的: 1、了解單片機(jī)串行通信的基本概念與串行 通訊程序的編制 2、掌握單片機(jī)的串行通信工作及方式字的設(shè)定 3、掌握51單片機(jī)串行口的四種工作方式和對(duì)應(yīng)的波特率的設(shè)定方法 重點(diǎn):?jiǎn)纹瑱C(jī)串行口的四種工作方式和對(duì)應(yīng)的波特率的設(shè)定方法 難點(diǎn):串口的工作及方式字的設(shè)定,實(shí)際應(yīng)用中,計(jì)算機(jī)的CPU與其外部設(shè)備之間常常要進(jìn)行信息的交換,計(jì)算機(jī)之間也需要交換信息,所有這些信息的交換均稱為“通信”。,1、通信的基本方式,并行通信,并行通信:是指數(shù)據(jù)的各位同時(shí)進(jìn)行傳送的方式 特點(diǎn):傳輸速度快,但當(dāng)距離較遠(yuǎn),位數(shù)又多時(shí)導(dǎo)致了通訊線路復(fù)雜且成本高,如圖所示。,2.7.1 串行通信的基本概念,串

2、行通信,串行通信:是指數(shù)據(jù)一位一位地順序傳送 特點(diǎn):通訊線路簡(jiǎn)單,只要一對(duì)傳輸線就可以實(shí)現(xiàn)通訊,并可以利用電話線,從而大大地降低了成本,特別適用于遠(yuǎn)距離通訊,但傳送速度慢,如圖所示。,2、串行通信中數(shù)據(jù)的傳送方向,單工通信方式,半雙工通信方式,全雙工通訊方式,A端為發(fā)送站,B端為接收站,數(shù)據(jù)僅能從A站發(fā)至B站,數(shù)據(jù)可以從A發(fā)送到B,也可以由B發(fā)送到A。不過(guò)同一時(shí)間只能作一個(gè)方向的傳送,其傳送方式由收發(fā)控制開(kāi)關(guān)K來(lái)控制。,每個(gè)站(A、B)既可同時(shí)發(fā)送,又可同時(shí)接收。,3、串行通訊的兩種基本方式,異步通信,同步傳送,數(shù)據(jù),數(shù)據(jù),數(shù)據(jù),數(shù)據(jù),數(shù)據(jù),數(shù)據(jù),在異步數(shù)據(jù)傳送中,CPU與外設(shè)之間事先必須約定

3、兩項(xiàng)事宜:,字符格式。雙方要約好字符的編碼形式,奇偶校驗(yàn)形式、 以及起始位和停止位的規(guī)定。,波特率(Baud rate)。波特率是衡量位傳送速率的指標(biāo),它要求發(fā)送站和接收站都要以相同的數(shù)據(jù)傳送速率工作。,4、波特率,例:假設(shè)傳送速率是120字符/秒,假如每一個(gè)字符為10位,則其傳送的波特率為: 10位/字符120字符/秒=1200位/秒=1200波特,定義:每秒鐘傳送二進(jìn)制代碼的位數(shù)。 單位:波特,b/s(bps)。,注意:波特率和有效數(shù)據(jù)傳送率并不一致。 如上述字符幀的10位中真正有效的數(shù)據(jù)位只有8位;所以,有效數(shù)據(jù)位的傳送速率為: 8120=960位/秒 。,串行通信的基本特征是數(shù)據(jù)逐位順

4、序進(jìn)行傳送 串行通信的格式及約定(如:同步方式、通訊速率、數(shù)據(jù)塊格式、信號(hào)電平等)不同,形成了多種串行通信的協(xié)議與接口標(biāo)準(zhǔn)。 常見(jiàn)的有: 通用異步收發(fā)器(UART) 51系列單片機(jī)的串口形式 通用串行總線(USB) I2C總線 CAN總線 SPI總線 RS-485,RS-232C,RS422A標(biāo)準(zhǔn)等等,2.7.2 串行口的結(jié)構(gòu),1、串行口結(jié)構(gòu),兩個(gè)同名的接收/發(fā)送緩沖寄存器SBUF 指令 MOV SBUF,A 啟動(dòng)一次數(shù)據(jù)發(fā)送,可向SBUF 再發(fā)送下一個(gè)數(shù) 指令 MOV A,SBUF 完成一次數(shù)據(jù)接收,SBUF可再 接收下一個(gè)數(shù),接收/發(fā)送數(shù)據(jù),無(wú)論是否采用中斷方式工作,每接收/發(fā)送一個(gè)數(shù)據(jù)都

5、必須用指令對(duì) RI/TI 清0,以備下一次收/發(fā)。,串行口相關(guān)的SFR(SCON,PCON), SM0,SM1:串行口4種工作方式的選擇位。 0 0 方式0:8位同步移位寄存器,波特率固定為 fosc/12 0 1 方式1:10位UART(1+8+1位), 波特率可變,按公式計(jì)算 1 0 方式2:11位UART(1+8+1+1位), 波特率固定=fosc x(1/32)或(1/64) 1 1 方式3:11位UART(1+8+1+1位), 波特率可變,按公式計(jì)算,2、串行口控制寄存器SCON(98H),SM0,SM1,SM2,TB8,RB8,RI,REN,SCON.7,SCON.0,SCON.6

6、,TI, SM2:串行口多機(jī)通信控制位, 若SM2=1,則允許多機(jī)通信。若第9位數(shù)據(jù)為1,說(shuō)明本幀數(shù)據(jù)為地址;若第9位為0,則本幀為數(shù)據(jù)幀。 SM2=0,即不屬于多機(jī)通信,則接收一幀數(shù)據(jù)后,不管第9位數(shù)值是0還是1,都置RI=1,接收到的數(shù)據(jù)裝入SBUF中。 (作為方式2、方式3的附加控制位),2、串行口控制寄存器SCON(98H),SM0,SM1,SM2,TB8,RB8,RI,REN,SCON.7,SCON.0,TI,SCON.5,SM2, REN:串行口接收允許控制位;REN= 1 表示允許接收;REN= 0 禁止接收。由軟件置“1”或清“0”,2、串行口控制寄存器SCON(98H),SM

7、0,SM1,SM2,TB8,RB8,RI,REN,SCON.7,SCON.0,TI,SCON.3,SM2,SCON.4,SCON.2, TB8:方式2、3中,是要發(fā)送的第9位數(shù)據(jù)。多機(jī)通信中,TB8=0 表示發(fā)送的是數(shù)據(jù);TB8=1 表示發(fā)送的是地址。(奇偶校驗(yàn))根據(jù)需要由軟件置位或復(fù)位, RB8:在方式2、3中,是收到的第9位數(shù)據(jù)。在多機(jī)通信中,用作區(qū)別地址幀/數(shù)據(jù)幀的標(biāo)志。(奇偶校驗(yàn)), TI:發(fā)送中斷標(biāo)志。在一幀數(shù)據(jù)發(fā)送完時(shí)被置位,串行口收/發(fā)數(shù)據(jù)申請(qǐng)中斷標(biāo)志位,在方式0串行發(fā)送到第八位結(jié)束時(shí),或其他方式串行發(fā)送到停止位的開(kāi)始時(shí)由硬件置位,可用軟件查詢,必須由軟件清“0”。 TI1 申請(qǐng)

8、中斷; TI0 不申請(qǐng)中斷,2、串行口控制寄存器SCON(98H),SM0,SM1,SM2,TB8,RB8,RI,REN,SCON.7,SCON.0,TI,SM2,SCON.1, RI:接收中斷標(biāo)志。在接收到一幀有效數(shù)據(jù)后由硬件置位,在方式0中第八位數(shù)據(jù)發(fā)送結(jié)束時(shí),由硬件置位;在其他方式中,則在接收到停止位中間時(shí)由硬件置位,可用軟件查詢,必須由軟件清“0”。 RI1 申請(qǐng)中斷; RI0 不申請(qǐng)中斷, SMOD:在串行口工作方式 1、2、3 中,是波特率倍增位 SMOD=1 時(shí),波特率加倍 SMOD=0 時(shí),波特率不加倍。 (在PCON中只有這一個(gè)位與串口有關(guān)),2、電源控制寄存器PCON(87

9、H),SMOD,PCON.7,PCON.0,2.7.3串行口工作方式,工作方式0:8位移位寄存器I/O方式(SM0 SM1=00),發(fā)送:SBUF中的串行數(shù)據(jù)由RxD逐位移出,低位在前, 高位在后; TxD輸出移位時(shí)鐘,頻率=fosc1/12; 每送出8位數(shù)據(jù) TI就自動(dòng)置1; 需要用軟件清零 TI。,接收:串行數(shù)據(jù)由RxD逐位移入SBUF中; TxD輸出移位時(shí)鐘,頻率=fosc1/12; 每接收 8位數(shù)據(jù)RI就自動(dòng)置1; 需要用軟件清零 RI。,經(jīng)常配合“串入并出”“并入串出”移位 寄存器一起使用擴(kuò)展接口,方式0工作時(shí),多用查詢方式編程: 發(fā)送:MOV SBUF,A 接收:JNB RI,$

10、JNB TI,$ CLR RI CLR TI MOV A, SBUF,工作方式0:8位移位寄存器I/O方式(續(xù)),復(fù)位時(shí),SCON 已經(jīng)被清零,缺省值: 方式0。,接收前,務(wù)必先置位 REN=1 允許接收數(shù)據(jù)。,數(shù)據(jù)輸出:,數(shù)據(jù)輸入:,74LS164是串入并出芯片;74LS165是并入串出芯片,串行口方式0的擴(kuò)展應(yīng)用,CLR用于清0,例1:用并行輸入8位移位寄存器74HC165擴(kuò)展16位并行輸入口。(編程實(shí)現(xiàn)從16位擴(kuò)展口讀入20個(gè)字節(jié)數(shù)據(jù)),S/L負(fù)脈沖將并行數(shù)據(jù)裝入,高電平時(shí)啟動(dòng)單片機(jī)進(jìn)行數(shù)據(jù)輸入。,MOV R7 , #20 MOV R0 , #50H SETB F0 RCV0: CLR

11、P1.0 SETB P1.0 RCV1: MOV SCON , #10 JNB RI , $ CLR RI MOV A , SBUF MOV R0 , A,INC R0 CPL F0 JB F0 , RCV2 DEC R7 SJMP RCV1 RCV2: DJNZ R7 , RCV0 ,常用于串行通訊。除發(fā)/收8位數(shù)據(jù)外,還 在D0位前有一個(gè)起始位“0”; 在D7位后有一個(gè)停止位“1”。,方式1工作時(shí): 發(fā)送端自動(dòng)添加一個(gè)起始位和一個(gè)停止位; 接收端自動(dòng)去掉一個(gè)起始位和一個(gè)停止位。接收時(shí),停止位進(jìn)入SCON的RB8,工作方式1:10位UART(1+8+1位)波特率可變(SM0 SM1=01),

12、波特率可變 用定時(shí)器T1作波特率發(fā)生器: 公式:波特率 =(2SMOD/32)T1的溢出率,TXD與RXD分別用于發(fā)送與接收數(shù)據(jù),波特率=(2SMOD/32)T1的溢出率, 溢出率:T1溢出的頻繁程度 即:T1溢出一次所需時(shí)間的倒數(shù)。, 初值 X = 2n -,2SMOD fosc 32 波特率 12, 波特率 =,2SMOD fosc 32 12(2n - X),其中:X 是定時(shí)器初值, 初值 X = 2n -,2SMOD fosc 32 波特率 12, 例:計(jì)算波特率: 要求用T1工作于方式2來(lái)產(chǎn)生波特率1200, 已知晶振頻率=6MHz。要求出T1的初值:,初值 X = 28 -,20

13、6106 32 1200 12,= 256 - = 256 - 13.02,6106 460800, 243 = 0F3H 結(jié)果后面要用到,串行發(fā)送:(寫SBUF啟動(dòng)發(fā)送過(guò)程),串行接收:(置REN=1啟動(dòng)接收過(guò)程),T1作波特率發(fā)生器時(shí)初始化包括: 選定時(shí)器工作方式2(TMOD選8位自動(dòng)重裝); 將計(jì)算(或查表)出的初值X賦給TH1,TL1; 啟動(dòng)T1 (SETB TR1); 對(duì)T1不要開(kāi)中斷 !,工作方式1的接收/發(fā)送,串行口的初始化包括: 對(duì)SCON選工作方式 對(duì)PCON設(shè)波特率加倍位“SMOD”(缺省值=0) 如果是接收數(shù)據(jù),仍要先置“1”REN位,例:要求T1工作于方式2,使串行口工

14、作在方式1時(shí)產(chǎn)生波特率 1200bps,已知fosc = 6MHz。,SM0 SM1 SM2 REN TB8 RB8 TI R1,SCON,0 1 0 1 0 0 0 0,MAIN: ORG 0023H MOV TMOD,#20H SBR1:JNB RI,SEND MOV TL1,#0F3H LCALL SIN MOV TH1,#0F3H SJMP NEXT SETB TR1 SEND:LCALL SOUT MOV SCON, #50H NEXT:RETI SETB EA SIN: SETB ES RET LCALL SOUT SOUT: SJMP $ RET,發(fā)送子程序 接收子程序 SOUT

15、: SIN: MOV A,R0 MOV A,SBUF INC R0 MOV R1, A MOV SBUF, A INC R1 CLR TI CLR RI RET RET,例 (續(xù)),由于波特率固定,常用于單片機(jī)間通訊。 數(shù)據(jù)由8+1位組成,通常附加的一位 (TB8/RB8)用于“奇偶校驗(yàn)”。,工作方式2:11位UART(1+8+1+1位)兩種波特率,方式2的波特率 = fosc 2SMOD/64 即: fosc 1/32 或 fosc 1/64 兩種,奇偶校驗(yàn)是檢驗(yàn)串行通信雙方傳輸?shù)臄?shù)據(jù)正確與否的一個(gè)措施,并不能保證通信數(shù)據(jù)的傳輸一定正確。 換言之:如果奇偶校驗(yàn)發(fā)生錯(cuò)誤,表明數(shù)據(jù)傳輸一定出錯(cuò)了

16、;如果奇偶校驗(yàn)沒(méi)有出錯(cuò),絕不等于數(shù)據(jù)傳輸完全正確。,奇校驗(yàn):8位有效數(shù)據(jù)連同1位附加位中, 二進(jìn)制“1”的個(gè)數(shù)為奇數(shù) 偶校驗(yàn):8位有效數(shù)據(jù)連同1位附加位中, 二進(jìn)制“1”的個(gè)數(shù)為偶數(shù),約定接收采用奇校驗(yàn) 若接收到的9位數(shù)據(jù)中“1”的個(gè)數(shù)為奇數(shù), 則表明接收正確,取出8位有效數(shù)據(jù)即可; 若接收到的9位數(shù)據(jù)中“1”的個(gè)數(shù)為偶數(shù), 則表明接收出錯(cuò)!應(yīng)當(dāng)進(jìn)行出錯(cuò)處理。,約定發(fā)送采用奇校驗(yàn) 若發(fā)送的8位有效數(shù)據(jù)中“1”的個(gè)數(shù)為偶數(shù), 則要人為添加一個(gè)附加位“1”一起發(fā)送; 若發(fā)送的8位有效數(shù)據(jù)中“1”的個(gè)數(shù)為奇數(shù), 則要人為添加一個(gè)附加位“0”一起發(fā)送。,采用偶校驗(yàn)時(shí),處理方法與奇校驗(yàn)相反,回顧: 程序

17、狀態(tài)字寄存器PSW中有一個(gè)奇偶狀態(tài)位 P,CY,AC,F0,RS0,OV,P,RS1,PSW.7,PSW.0,P (PSW.0):奇偶狀態(tài)位。 P=1 表示目前累加器中 “1”的個(gè)數(shù)為奇數(shù) P=0 表示目前累加器中 “1”的個(gè)數(shù)為偶數(shù) CPU隨時(shí)監(jiān)視著Acc的“1”的個(gè)數(shù)并自動(dòng)反映在 P,工作方式2 的奇偶校驗(yàn)用法, 選用偶校驗(yàn)方式發(fā)送 PIPL: PUSH PSW ;保護(hù)現(xiàn)場(chǎng) PUSH ACC CLR TI ;清發(fā)送中斷標(biāo)志以備下次發(fā)送 MOV A,R0 ;取由R0所指向的單元中的數(shù)據(jù) MOV C, P ;將奇偶標(biāo)志位通過(guò)C放進(jìn)TB8 MOV TB8, C ;一起發(fā)送出去 MOV SBUF,

18、A ;啟動(dòng)發(fā)送 INC R0 ;指針指向下一個(gè)數(shù)據(jù)單元 POP ACC ;恢復(fù)現(xiàn)場(chǎng) POP PSW RETI ;中斷返回,串口方式2 的奇偶校驗(yàn)用法:,選用偶校驗(yàn)方式發(fā)送 如果 A 中1的個(gè)數(shù)是奇數(shù)(P=1), 將TB8寫成“1”一起發(fā)出去; 反之:若(P=0)則寫TB8=“0”發(fā)出去。 選用偶校驗(yàn)方式接收 若收到的數(shù)中P=0,且檢查到RB8=0就可能對(duì)了 若收到的數(shù)中P=1,且檢查到RB8=1就可能對(duì)了 若P=0且RB8=1或P=1且RB8=0就一定出錯(cuò)了!,串口方式2 的奇偶校驗(yàn)用法:,SM0 SM1 SM2 REN TB8 RB8 TI R1,SCON,串行口控制寄存器SCON,TB8

19、RB8, 選用偶校驗(yàn)方式接收: PIPL:PUSH PSW ;保護(hù)現(xiàn)場(chǎng) PUSH ACC CLR RI ;清接收中斷標(biāo)志以備下次接收 MOV A,SBUF;讀進(jìn)收到的數(shù)據(jù) MOV C, P ;奇偶標(biāo)志位C =JNB P,L1 JNC L1 ;C=0時(shí)轉(zhuǎn)到L1 P=0時(shí)轉(zhuǎn)到L1 JNB RB8,ERR;P=1時(shí)轉(zhuǎn)到L2,若RB8=0“出錯(cuò)” SJMP L2 ;RB8=0 則表明接收正確,轉(zhuǎn)L2 L1: JB RB8,ERR;P=0且RB8=1表明“出錯(cuò)” L2: MOV R0, A ;P=0且RB8=0表明接收正確 INC R0 ;指針指向下一個(gè)數(shù)據(jù)單元 POP ACC ;恢復(fù)現(xiàn)場(chǎng) POP PS

20、W RETI ;中斷返回 ERR:出錯(cuò)處理 RETI,工作方式3:當(dāng)SM0,SM1為11時(shí),串行口工作于方式3 11位UART(1+8+1+1位) 波特率可變,串口方式3和方式2唯一的區(qū)別是波特率機(jī)制不同。 方式2的波特率固定為時(shí)鐘周期的32或64分頻,不可變。此工作方式與其他串行通訊設(shè)備連接困難,因此不常用。 方式3的波特率可變,按前面的公式計(jì)算:,波特率=(2SMOD/32)T1的溢出率, 波特率 =,2SMOD fosc 32 12(2n - X),其中:X 是定時(shí)器初值,波特率的設(shè)計(jì)小結(jié),根據(jù)串行口的四種工作方式可知: 方式0為移位寄存器方式,波特率是固定的。其波特率為fosc/12。 方式2為10位UART,波特率為2SMOD/64fosc。波特率僅與PCON中SMOD的值有關(guān),當(dāng)SMOD=0時(shí),波特率為fosc/64,當(dāng)SMOD=1時(shí)

溫馨提示

  • 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ù)網(wǎng)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論