單片機課件-第七章 串行通信_第1頁
單片機課件-第七章 串行通信_第2頁
單片機課件-第七章 串行通信_第3頁
單片機課件-第七章 串行通信_第4頁
單片機課件-第七章 串行通信_第5頁
已閱讀5頁,還剩37頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、第七章 8051串行口及串行通信(tng xn)技術下一頁上一頁本章要求:熟悉MCS51串行口的基本結構(jigu)和工作原理,掌握MCS51串行口的四種工作方式及其應用,熟練掌握串行口控制寄存器各位的含義及使用方法,了解單片機多機通信的工作原理,熟悉和掌握單片機通信程序的設計方法。共四十二頁第七章 8051串行口及串行通信(tng xn)技術下一頁上一頁7.3 8051串行口的編程和應用(yngyng)7.2 串行口的結構和控制7.1 串行通信的基本概念共四十二頁 7.1.1 數據通信7.1 串行通信(tng xn)的基本概念(a)并行傳輸(b)串行傳輸圖7.1 兩種通信(tng xn)方式

2、一、通信的基本方式 并行通信:數據的各位同時傳送。傳送距離:小于30米。并行通信串行通信串行通信:數據的各位逐位送出,只需一對傳送線即可完成傳送。傳送距離:幾米幾千公里。共四十二頁7.1.2 串行通信(tng xn)的傳輸方式 (a)單工方式(fngsh) (c)全雙工方式單工半雙工全雙工(b)半雙工方式圖7.2 串行通信的傳輸方式共四十二頁7.1.3串行通信(tng xn)的工作方式圖7.3 串行異步通信的幀格式(g shi)(有空閑位)異步通信同步通信1、異步通信:數據按字符傳送,每一個字符均按固定的字符格式傳送,又被稱為幀。字符的幀格式每一個字符幀包含四部分:起始位:數據位:校驗位:停止

3、位:數據位、校驗位、停止位。用“0” 表示,1位58位,低位在前,高位在后1位或無用“1”表示,1位、1.5位或2位起始位、共四十二頁 3、串行通信(tng xn)的波特率圖7-4 串行同步通信(tng xn)格式2、同步通信:數據按塊傳送,包括同步字符、數據塊。波特率:傳送數據位的速率,表示指每秒種傳送二進制代碼的位數。單位:bps(波特)。例:要求每秒傳送120個字符幀,每幀為10位。(181)解: 波特率=12010=1200波特每位數據傳送時間 有效數據位傳輸速率1/1200 0.83ms1208960位/秒共四十二頁串行通信接口 UART的結構(jigu)示意圖遠距離串行通信(tng

4、 xn)共四十二頁7.2串行口的結構(jigu)和控制 串行口內部結構示意(shy)簡圖一、串行口的結構MCS-8051通過引腳RXD(P3.0,串行數據接收端)和引腳TXD(P3.1,串行數據發送端)與外界進行通信。主要由2個物理上獨立的串行數據緩沖器SBUF、輸入移位寄存器和控制器等組成。共四十二頁 串行口的發送和接收是對SBUF進行讀或寫操作完成的,它們共用一個(y )地址99H(SBUF)。發送(f sn):對于發送緩沖器,只能寫不能讀,MOVSBUF,A對于接收緩沖器,只能讀不能寫,MOV A ,SBUF執行寫發送緩沖器命令:MOV SBUF,A即啟動發送,接收:當RI=“0 ”時,

5、置允許接收位 REN “1”時,即啟動接收, 執行讀命令MOV A,SBUF時,即可從接收SBUF取出信息并由內部總線送CPU。下一頁上一頁圖片發送完一幀,使中斷標志TI置“1”。接收完一幀,使中斷標志RI置“1”。當 TI“0”時:共四十二頁二、串行接口控制(kngzh)寄存器1、串行控制(kngzh)寄存器SCON 98H下一頁上一頁返回共四十二頁1、串行控制(kngzh)寄存器SCON 98H(1)SM0,SM1:串行口工作方式(fngsh)選擇位(2)SM2:多機通信控制位,用于方式2,3SM2 =0 不允許多機通信1 允許多機通信(在方式0,SM20 )表7.1 串行口的工作方式選擇

6、SM0SM1工作方式說明波特率00方式0同步移位方式fosc/1201方式110位異步收發定時器T1控制10方式211位異步收發fosc/32或fosc/6411方式311位異步收發定時器T1控制共四十二頁單片機的多機通訊(tngxn)1.SM20 SM21 SM21 SM21 2. TB81,發送地址(dzh)信號 3.接收地址信號, RB81 5. 選定從機,發送數據信號4.SM20 SM21 SM20 SM21共四十二頁單片機的多機通信(tng xn)(方式2、方式3)(1)主機SM20;所有從機SM21,以便接收主機發來的地址。(2)主機給從機發送地址時,第9位上發1(TB81),以指

7、示從機接收地址。(3)所有從機在SM2=1,RB81,RI0時接收主機發來的從機地址,進入相應的中斷服務程序,并和本機地址比較,確認是否為被尋址從機。(4)被尋址從機通過指令清除SM2,以正常接收數據,并向主機發回接收到的從機地址,供主機核對(h du)。未被尋址的從機保持SM21,并退出各自中斷。(5)完成主機和被尋址從機之間的數據通信,被尋址從機在通信完成后重新使SM21,并退出中斷服務程序,等待下次通信。共四十二頁SCON(3)REN:允許接收(jishu)控制位REN =0 禁止(jnzh)接收1 允許接收(4)TB8:發送的第9位數據位 可用作校驗位或地址/數據標識位(多機通信時)T

8、B8 =0 數據幀1 地址幀(5)RB8:接收的第9位數據位 可以是約定的校驗位或地址/數據標識位(多機通信時)在方式1,RB8中是收到的停止位在方式0,RB8不用串行接收開關共四十二頁SCON(6)TI:串行口發送中斷請求標志位(7)RI:串行口接收中斷請求標志位 硬件置 1 (發送或接收完一幀數據) 軟件清 0 (中斷(zhngdun)方式,查詢方式 ) 2、電源(dinyun)控制寄存器 PCON 87H字節地址為87H,沒有位尋址功能。 SMOD稱為串行口波特率倍增位,在串行口方式1、方式2和方式3時,波特率與 成正比,亦即當SMOD1時,波特率提高一倍。復位時,SMOD=0。共四十二

9、頁三、串行口的四種(s zhn)工作方式方式0:8位數據為一幀,不設起始位和停止(tngzh)位,先發送或接收最低位。幀格式如下:幀格式下一頁上一頁方式1:10位數據為一幀,有1個起始位,8個數據位,1個停止位,先發送或接收最低位。幀格式如下:方式2和方式3:11位為一幀,有1個起始位,8個數據位,1個可編程第9位,1個停止位,先發送或接收最低位。幀格式如下:共四十二頁三、串行口的四種工作(gngzu)方式 同步移位寄存器輸入/輸出方式,常用于外接移位寄存器,以擴展并行I/O口。 波特率固定為fosc/12。(1)方式0發送 當CPU執行一條將數據寫入發送緩沖器SBUF的指令時,產生一個正脈沖

10、(michng),串行口即把SBUF中的8位數據以fosc/12的固定波特率從RXD引腳串行輸出,低位在先,TXD引腳輸出同步移位脈沖,發送完8位數據中斷標志位TI置“1” 。時序如下圖所示。1、方式0下一頁上一頁繼續共四十二頁(2)方式0接收 REN=1,接收數據,REN=0,禁止接收。 REN=1,允許接收。向串口的SCON寫入控制字(置為方式0,并REN位置“1” ,同時(tngsh)RI=0)時,產生一個正脈沖,串行口即開始接收數據。RXD為數據輸入端,TXD為移位脈沖信號輸出端,接收器也以fosc/12的固定波特率采樣RXD引腳的數據信息,當收到8位數據時RI置“1” 。表示一幀數據

11、接收完,時序如下:共四十二頁方式(fngsh)0下,SCON中的TB8、RB8位沒有用到,發送或接收完8位數據由硬件置“1”TI或RI,CPU響應中斷。TI或RI須由用戶軟件清“0”,可用如下指令:CLR TI;TI位清“0”CLR RI ;RI位清“0”方式0時,SM2位必須為0。共四十二頁 串行口方式(fngsh)0的應用 在串行方式0時,通過外接串入并出或并入(bn r)串出的移位寄存器芯片(如74LS164、74LS165 )將串行口轉換成并行口使用。并行I/O口的一種擴展方式下一頁上一頁共四十二頁P3.0P3.1P1.08031D1RXDTXDD2CP74LS164CLR 1 2 8

12、 9并行(bngxng)輸出P3.0P3.1P1.08031QRXDTXDCP74LS1659 152 1圖(b) 方式0擴展(kuzhn)并行輸入口并行輸入P1.1圖(a) 方式0擴展并行輸出口下一頁上一頁共四十二頁 2、 方式(fngsh)1:(1)SM0 SM10 1(2)數據幀格式:一幀10位,1位起始位8位數據位1位停止位。(3)波特率 B=(2SMOD/32)T1溢出(y ch)率(4) RXD:接收數據端。 TXD:發送數據端。(5)發送過程: TI=0,10位異步收/發MOV SBUF,A 指令啟動發送,一幀發送結束,TI置1。接收過程:REN = 1且 RI = 0,啟動接收

13、,一幀接收完畢,下一頁上一頁繼續若滿足 RI0 SM20 或 接收到的停止位為1則本次接收有效,將接收數據裝入SBUF,停止位裝入RB8,并使RI置1;否則丟棄接收數據,不置位RI。(TXD)(RXD)圖片共四十二頁寫入SBUF采樣(a) 發送時序圖TXD數據輸出TID0D1D2D3D4D5D6D7停止位起始位RXD輸入數據(b) 接收時序圖D0D1D2D3D4D5D6D7停止位起始位RI檢測負跳變當REN=1,CPU開始采樣RXD引腳負跳變信號,若出現負跳變,才進入數據(shj)接收狀態,在接收移位脈沖同步下,開始接收一幀數據(shj)。數據采樣在每個數據位中間,連續采樣3次,并3中取2保留

14、采樣值。方式1發送(f sn)、接收時序圖下一頁上一頁共四十二頁(2)波特率 方式2:B=(2SMOD/64)fosc 。 方式3:B=(2SMOD/32)T1溢出率(3) RXD:接收數據端。 TXD:發送數據端。(4)發送(f sn)過程: 3、 方式(fngsh)2和方式3:(1)數據幀格式:一幀11位,1位起始位9位數據位1位停止位。 11位異步收/發TI=0,先裝待發送數據第9位至TB8,一幀發送結束,TI置1。接收過程:REN = 1且 RI = 0,啟動接收,一幀接收完畢,下一頁上一頁繼續若滿足 RI0 SM20 或 接收到的第9位數據為1則本次接收有效,將接收數據裝入SBUF,

15、第9位數據裝入RB8,并使RI=1;否則丟棄接收數據,不置位RI。第9位數據位在TB8/RB8中,常用作校驗位和多機通訊標識位。 由MOV SBUF,A 指令啟動發送,(TXD)(RXD)共四十二頁方式(fngsh)2、3發送/接收時序圖發送時序寫入SBUFTXD輸出TIRXD輸入接收時序RID0D1D2D3D4D5D6TB8停止位起始位D7D0D1D2D3D4D5D6RB8停止位起始位D7檢測負跳變下一頁上一頁共四十二頁串行口四種工作方式中斷(zhngdun)條件在TI0時,發送完一幀數據(shj),TI置1,響應后軟件清0接收:發送:在 REN1,同時 RI0 時,方式0方式1方式2、3接

16、收完一幀數據,若滿足:接收完一幀數據RI 置 1響應后軟件清0 RI0 SM20 或接收到的停止位為1接收有效,RI置1響應后軟件清0 RI0 SM20 或接收到的第9位數據為1接收有效,RI置1響應后軟件清0下一頁上一頁共四十二頁四、波特率的設定(sh dn)置波特率固定(gdng),方式2:方式0:B fosc/12可選的兩種波特率,B (2SMOD /64)fosc 方式1、3:波特率可變,用定時器T1作波特率發生器。B = (2SMOD/32) T1溢出率。T1溢出率即T1每秒鐘溢出幾次1/T1的溢出周期T1的溢出周期T1的定時時間設T1工作在方式2,計數器初值為X;(2 - 初值)T

17、PnB =2SMOD32(2 - 初值)TPn1=2SMOD32fosc12(256X)共四十二頁例1. 8051單片機時鐘振蕩頻率(pnl)為11.0592MHz,選用定時器T1工作模式2作為波特率發生器,波特率為2400b/s,求初值。并編寫初始化程序。解:設置波特率控制位(SMOD)0初始化程序為:INI:MOVTMOD,#20H;T1定時(dn sh)方式,模式2 MOVPCON,#00H;SMOD=0 MOVTH1,#0F4H MOVTL1,#0F4H SETB TR1 MOVSCON,#50H;串行口方式1,允許接收=2SMOD32fosc12(256X)B=13211.05912

18、(256TH1)2400TH1244F4H所以:(TH1)=(TL1)=F4H共四十二頁波特率(方式1、3)fosc=6Mfosc=12M fosc = 11.059MSMODT1方式初值SMODT1方式初值SMODT1方式初值62.5k12FFH19.2k12FEH12FDH9.6k12FDH02FDH4.8k 02FDH12F3H02FAH2.4k 02FAH12F3H02F4H1.2k02F3H02E6H02E8H60002E6H02CCH02D0H30002CCH0298H02A0H1100272H01FEEBH01FEFFH55H01FFEBH 常用(chn yn)波特率和定時器T1

19、初值關系表共四十二頁MOV THx,#X MOV TLx,#X 寫PCON,設置波特率倍數(bish)關系7.3 8051串行口的編程與應用(yngyng) 串行口初始化步驟:寫TMOD,設定定時器工作方式設置計數器初值,選定串口波特率寫IE,開放相應中斷寫TCON,啟動定時器MOV TMOD,# 方式字 SETB EASETB ESSETB TRx寫SCON,設定串口工作方式MOV SCON,# 方式字 MOV PCON,# 00(80H) 共四十二頁(方式0)例2用8031串行口外接CD4049或164串入并出移位寄存器擴展8位并行口;8位并行口的每位都接一個發光二極管,要求發光二極管從左

20、到右以一定延遲輪流顯示(xinsh),并不斷循環。解:設數據串行發送(f sn)采用中斷方式,顯示的延遲通過調用延遲程序DELAY實現.程序清單: ORG 0023H ;串行口中斷入口 AJMP SBR ;轉入串行口中斷服務程序 0RG 2000H ;主程序起始地 MOV SCON,#00H ;串行口方式0初始化 MOV A,#80H ;最左一位發光二極管先亮 CLR P1.0 ;關閉并行輸出 MOV SBUF,A ;啟動串口串行輸出LOOP: SJMP $ ;等待中斷SBR: SETB P1.0 ;啟動寄存器并行輸出 ACALL DELAY ;顯示延遲一段時間 CLR TI ;清發送中斷標志

21、RR A ;準備右邊一位顯示 CLR P1.0 ;關閉并行輸出 MOV SBUF,A ;再一次串行輸出 RETI ;中斷返回圖7-13串入并出電路 共四十二頁雙機通信。甲機發送,乙機接收,進行(jnxng)單工串行異步通訊。(方式(fngsh)1)例3甲機從片內RAM 30H39H單元逐個取出共10個ASCII碼數據,在D7位補奇后由串行口發送出去,乙機每接收一個數據都有奇偶校驗,然后存入30H39H單元。若奇偶校驗有錯,則將FFH存入相應單元,設波特率為1200b/s,fosc=6MHZ。0RG 0000HLJMP MAINTORG 0100HMAINT: MOV SCON,#40H ;方式

22、1串行發送MOV TMOD,#20H ;(TMOD)20H,T1方式2MOV TH1, #0F3H ;(T1)F3F3H,T1初值MOV TL1, #0F3HSETB TR1 ;啟動T11.甲機發送程序 把片內RAM 30H39H中的數據塊通過串行口TXD引腳輸出。參考程序如下: 圖6-15雙機通信電路共四十二頁 CLR ET1 ;禁止T1中斷 MOV R0, #30H ;R0:發送數據首址,(R0)30HL1: MOV A,R0MOV C,P ;設置奇偶校驗位(補奇)CPL CMOV ACC7,CMOV SBUF, A ;啟動發送L2: JBC TI,L3 ;若TI=1,則轉L3執行且(T1

23、)0SJMP L2 ;TI=0,一幀未完,連續發送L3: INC R0 ;取下(q xi)一數據CJNE R0,#3AH,L1 ;若10個數據未完,轉L1執行SJMP $END共四十二頁 ORG 0000H LJMP MAINR 0RG 0200HMAINR:MOV SCON, #50H ;啟動接收(jishu) MOV TMOD, #20H ;(TMOD)=20H,T1方式2 MOV TH1, #0F3H ;(T1)=F3F3H,Tl初值 MOV TL1, #0F3H SETB TR1 ;啟動T1 CLR ET1 ;禁止T1中斷2. 乙機接收程序 乙機通過RXD引腳接收甲機發送的串行字節(z

24、 ji),波特率必須與甲機相同,乙機fosc=6MHZ,波特率為1200b/s,采用定時器T1方式2,初值同為0F3H。參考程序如下:共四十二頁MOV R0, #30H ;R0:接收數據首址,(R0)30HL4:JBC RI,L5 ;若RI=1,則轉L5執行且(RI)0SJMP L4 ;RI=0,一幀未接收完,繼續接收L5:MOV A, SBUF ;接收到數據送AMOV C,P ;檢查奇校驗位CPL CJC ERROR ;(CY)=l,接收數據出錯,轉ERROR執行ANL A, #7FH ;消去(xio q)奇校驗位MOV R0, A ;(R0)(A)L6:INC R0 ;取下一接收緩沖區地址

25、 CJNE R0, #3AH,L4 ;未接收完,轉L4執行 SJMP $ERROR:MOV R0, #0FFH SJMP L6 END共四十二頁 編制一個發送程序,將片內RAM中50H5FH的數據串行發送,串行口設定(sh dn)為工作方式2,TB8作奇偶校驗位。 (方式(fngsh)2)例4(1) 中斷方式ORG0000HAJMPMAINORG0023HAJMPSERORG0100HMAIN:MOVSCON,80HMOVPCON,80HMOVR0,50HMOVR7,0FH;數據長度SETBESSETBEAMOVA,R0MOVC,PSW.0;奇偶校驗位PMOVTB8,CMOVSBUF,ASJM

26、P$SER:CLRTIINCR0MOVA,R0MOVC,PSW.0MOVTB8,CMOVSBUF,ADJNZR7,ENDTCLRESENDT:RETIEND共四十二頁 編制一個發送(f sn)程序,將片內RAM中50H5FH的數據串行發送,串行口設定為工作方式2,TB8作奇偶校驗位。 (2)查詢方式 ORG 0000H AJMP MAIN ORG 0100HMAIN: MOV SCON,80H MOV PCON,80H MOV R0,50H MOV R7,10H;數據(shj)長度LOOP: MOV A,R0 MOV C,PSW.0 MOV TB8,C MOV SBUF,AWAIT: JBC

27、TI,CONT AJMP WAITCONT:INCR0DJNZR7,LOOPSJMP$END(方式2)例4共四十二頁 編制一個接收程序,將接收到的16字節數據送入片內RAM的50H5FH單元中,設串行口工作(gngzu)于方式3,波特率為2400bps。(設fosc11.059MHZ) ORG0000H MAIN:MOVTMOD,20H;設T1工作于方式2MOVTH1,0F4HMOVTL1,0F4H;置計數初值SETBTR1;啟動定時器T1MOVR0,50H;首地址(dzh)送R0MOVR7,10H;數據長度送R7MOVSCON,0D0H;串行口工作于方式3,可接收MOVPCON,00H;設SMOD0 WAIT:JBCRI,PR1;接收完一幀數據,清RI,轉PR1SJMPWAIT(方式3)例5共四十二頁PR1:MOVA,SBUF;讀入數據(shj)JNBP,PNP下一頁上一頁;P=0,轉PNPPNP:JBRB8,PER;P=0,RB8=1,轉出錯(ch cu)處理RIGHT:JNBRB8,PER;P=1,RB8=0,轉出錯處理SJMPRIGHTMOVR0,A;數據送內存INCR0;修改地址指針DJNZR7,WAIT;數據未收

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論