《單片機原理》第五章
《《單片機原理》第五章》由會員分享,可在線閱讀,更多相關(guān)《《單片機原理》第五章(56頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、目錄 單片機課程 大連理工大學(xué)電氣系 第 5章 MCS-51單片機的串行口及其應(yīng)用 5.1 串行數(shù)據(jù)通信概述 5.2 單片機系統(tǒng)中的串行接口及特點 5.3 MCS-51單片機串行口的控制 5.4 MCS-51單片機串行口的四種工作方式 5.5 串行口波特率的設(shè)定 5.6 串行口應(yīng)用舉例 目錄 單片機課程 大連理工大學(xué)電氣系 打印機 計算機 網(wǎng)絡(luò) 鼠標(biāo) 掃描儀 硬盤 2、串行通信接口的應(yīng)用 I2C SPI RS232 USB 5.1.1 常見的串行通信接口 5.1 串行數(shù)據(jù)通信概述 1、串行通訊是實現(xiàn)遠距離低成本數(shù)據(jù)傳輸?shù)挠行Х椒ā?從機 從機 從機 從機 主機 通用機 單片機 照片 目錄 單片
2、機課程 大連理工大學(xué)電氣系 5.1.2 串行通信的分類 1、同步傳輸和異步傳輸(按照數(shù)據(jù)傳輸方式劃分) 5.1 串行數(shù)據(jù)通信概述 ( 1)同步方式: 以 數(shù)據(jù)塊 為單位進行數(shù)據(jù)傳送 ,包括同步 字符、數(shù)據(jù)塊和校驗字符 CRC。 同步 字符 數(shù)據(jù) 字符 1 數(shù)據(jù) 字符 2 數(shù)據(jù) 字符 3 數(shù)據(jù) 字符 n CRC1 CRC2 ( a)單同步字符幀結(jié)構(gòu) 同步 字符 1 同步 字符 2 數(shù)據(jù) 字符 1 數(shù)據(jù) 字符 2 數(shù)據(jù) 字符 n CRC1 CRC2 ( b)雙同步字符幀結(jié)構(gòu) 【 特點 】 優(yōu)點是數(shù)據(jù)傳輸速率較高,缺點是要求發(fā)送時 鐘和接收時鐘保持嚴(yán)格同步。 目錄 單片機課程 大連理工大學(xué)電氣系 5
3、.1.2 串行通信的分類 1、同步傳輸和異步傳輸(按照數(shù)據(jù)傳輸方式劃分) 5.1 串行數(shù)據(jù)通信概述 ( 2) 異步方式:以 字符 為單位進行數(shù)據(jù)傳送, 每一個字符 均按固定的字符格式傳送,又被稱為 幀 。 【 特點 】 優(yōu)點是不需要傳送同步脈沖,可靠性高,所需設(shè) 備簡單,發(fā)送與接收相互獨立,互不同步,但雙方必須 使 用相同的波特率和字符幀格式 ;缺點是字符幀中因包含有 起始位和停止位而降低了有效數(shù)據(jù)的傳輸速率。 D7 0/1 D6 D5 D4 D3 D2 D1 D0 D7 0/1 D1 D0 0 0 1 1 8位數(shù)據(jù) 奇偶 校驗 奇偶 校驗 起 始 位 起 始 位 停 止 位 停 止 位 第
4、n 幀字符 第 n+1 幀 第 n-1 幀 目錄 單片機課程 大連理工大學(xué)電氣系 5.1.2 串行通信的分類 1、同步傳輸和異步傳輸(按照數(shù)據(jù)傳輸方式劃分) 5.1 串行數(shù)據(jù)通信概述 ( 2) 異步方式:以 字符 為單位進行數(shù)據(jù)傳送, 每一個字符 均按固定的字符格式傳送,又被稱為 幀 。 D7 0/1 D6 D5 D4 D3 D2 D1 D0 D7 0/1 D1 D0 0 0 1 1 8位數(shù)據(jù) 奇偶 校驗 奇偶 校驗 起 始 位 起 始 位 停 止 位 停 止 位 第 n 幀字符 第 n+1 幀 第 n-1 幀 異步通信協(xié)議: 沒有數(shù)據(jù)發(fā)送時 , 數(shù)據(jù)線保持 “ 1”狀態(tài); 發(fā)送數(shù)據(jù)時 , 先
5、發(fā)起始位 “ 0”, 其后是數(shù)據(jù); 數(shù)據(jù)后再發(fā)一位停止位 “ 1”。 目錄 單片機課程 大連理工大學(xué)電氣系 單工: 廣播 雙工: 電話 半雙工: 對講機 5.1.2 串行通信的分類 2、單工、雙工、半雙工傳輸(按照數(shù)據(jù)傳輸方向劃分) 5.1 串行數(shù)據(jù)通信概述 目錄 單片機課程 大連理工大學(xué)電氣系 5.1.3 串行通信速率 波特率 5.1 串行數(shù)據(jù)通信概述 波特率是指每秒鐘傳送信號的數(shù)量 , 單位為波特 ( Baud) 。 而每秒鐘傳送二進制數(shù)的位數(shù)定義為比特率 , 單位是 bps( bit per second) 或?qū)懗?b/s( 位 /秒 ) 。 在單片機串行通信中 , 傳送的信號是二進制信
6、號 , 波 特率與比特率數(shù)值上相等 。 單位采用 bps。 【 例 】 若比特率為 9600bps,則每秒傳輸 960幀,即 960字 符 /秒,而每位傳輸時間: T=1/96000.104(ms) 目錄 單片機課程 大連理工大學(xué)電氣系 5.2 單片機系統(tǒng)中的串行接口及特點 在嵌入式系統(tǒng)中,與并行接口的總線形式相比:串 行通訊成為簡化電路結(jié)構(gòu)的新的接口形式而越來越多的 被采用。 MCS-51內(nèi)部含有一個可編程全雙工串行通信口,具 有 UART的全部功能。 UART ( Universal Asynchronous Receiver/Transmitter) 通用異步接收器 /發(fā)送器 8 串并
7、8 并串 發(fā)送 接收 1 時鐘 時鐘 目錄 單片機課程 大連理工大學(xué)電氣系 MCS51單片機串行(異步)通訊應(yīng)用示意圖 MCS-51 (甲) MCS-51 (乙) TXD RXD RXD TXD RS-232 或 485 RS-232 或 485 TXD RXD RS-232 PC機 COM1,COM2 單片機甲 、 乙之間近距 離 的直接通訊 單片機甲乙兩地之間遠距離通訊 單片機與 PC機之間的數(shù)據(jù)通訊 返回前一次 TXD RXD TXD RXD 返回 5.2 單片機系統(tǒng)中的串行接口及特點 目錄 單片機課程 大連理工大學(xué)電氣系 5.3.1 數(shù)據(jù)緩沖寄存器 SBUF( 99H) 在 MCS-5
8、1的串行口電路中, SBUF是用來存放 發(fā)送 和 接 收 數(shù)據(jù)的兩個獨立的緩沖寄存器,在 SFR的地址都是 99H。 CPU執(zhí)行寫 SBUF指令便 開始引發(fā)串口的發(fā)送 。 MOV SBUF, A 當(dāng)串口接收緩沖器接收到一幀數(shù)據(jù)時,可以執(zhí)行下面指令 進行讀?。?MOV A, SBUF 5.3 MCS-51單片機串行口的控制 MCS51通過數(shù)據(jù)緩沖寄存器 SBUF和控制寄存器 SCON、 PCON實現(xiàn)對串行口的控制 目錄 單片機課程 大連理工大學(xué)電氣系 SBUF實際上是一個能夠 獨立完成 數(shù)據(jù)接收 和 數(shù)據(jù)發(fā)送 操作的 復(fù)雜的硬件電路; CPU只要將數(shù)據(jù)送到發(fā)送 SBUF( MOV SBUF, A
9、)后, SBUF便一位一位地發(fā)送數(shù)據(jù),發(fā)送完成后標(biāo)志 TI=1; 在 CPU允許接收串行數(shù)據(jù)的前提下,外部串行數(shù)據(jù)經(jīng) RXD 送入 SBUF時,電路便自動啟動接收,直至完成一幀數(shù)據(jù)后標(biāo) 志 RI=1。 由于發(fā)送 SBUF與接收 SBUF是兩個獨立的緩沖器,所以 51 串行口是一個可以同時發(fā)送與接收的 “ 全雙工 ” 接口。 5.3 MCS-51單片機串行口的控制 接收 SBUF 移位寄存器 發(fā)送 SBUF 移位寄存器 內(nèi)部總線 CPU RXD P3.0 TXD P3.1 目錄 單片機課程 大連理工大學(xué)電氣系 SM0 SM1: 串行口工作模式選擇位。 SM0 SM1 SM2 REN TB8 RB
10、8 TI RI SM0 SM1 模式 功 能 波特率 0 0 0 同步移位寄存器模式 fosc/12 0 1 1 10位異步通信 UART 可變 1 0 2 11位異步通信 UART fosc/64或 /32 1 1 3 11位異步通信 UART 可變 5.3.2 串行口控制寄存器 SCON( SFR地址 98H) 返回 5.3 MCS-51單片機串行口的控制 目錄 單片機課程 大連理工大學(xué)電氣系 RI :完成一幀數(shù)據(jù)接收 標(biāo)志 ,必須由 軟件清零, 接收完成 RI=1并申請中斷(如果中斷開放,則引發(fā)中斷); TI :完成一幀數(shù)據(jù)發(fā)送 標(biāo)志 ,必須由 軟件清零, 發(fā)送完成 TI=1同時申請中斷
11、(如果中斷開放,則引發(fā)中斷); RB8 :在 9位有效數(shù)據(jù)傳送的模式 2、 3時, 接收到的 第 9位數(shù)據(jù) ; TB8 :在 9位有效數(shù)據(jù)傳送的模式 2、 3時, 將要發(fā)送的 第 9位數(shù)據(jù) ; REN :允許接收位, REN=1時允許接收。 由軟件置位或清零。 SM2 : 多機通信使能位。 跳過 中斷撤消 返回 5.3 MCS-51單片機串行口的控制 SM0 SM1 SM2 REN TB8 RB8 TI RI 5.3.2 串行口控制寄存器 SCON( SFR地址 98H) 目錄 單片機課程 大連理工大學(xué)電氣系 SM2 :多機通信使能位 . ( 1)模式 0、 1時: SM2不用,應(yīng)設(shè)為 0。
12、( 2)模式 2、 3時 : 若 SM2=0,無論 RB8如何, RI都能被激活( RI=1)。 但 RI=1不能引發(fā)中斷!只能用查詢的方式接收數(shù)據(jù)。 若 SM2=1,收到的第 9位 (RB8)=0時,則 RI不會被激活; 若 SM2=1且 RB8=1時, RI才能被激活 =1并可引發(fā)中斷。 5.3 MCS-51單片機串行口的控制 SM0 SM1 SM2 REN TB8 RB8 TI RI 5.3.2 串行口控制寄存器 SCON( SFR地址 98H) 返回 目錄 單片機課程 大連理工大學(xué)電氣系 使用 RI、 TI標(biāo)志完成數(shù)據(jù)的發(fā)送與接收 RI( SCON.0):接收完成標(biāo)志 當(dāng) SUBF從
13、RXD接收完一個完整的數(shù)據(jù)幀時 RI=1, 如果 中斷是開放的,則 RI=1時會自動引發(fā)中斷。用戶可以通過 中斷服務(wù)程序?qū)?SBUF中的數(shù)據(jù)取出送累加器 A。 MOV A, SBUF 在中服程序中 接收數(shù)據(jù); 也可以使用查詢的方式對 RI進行檢測: JNB RI, $ ;如果 RI1 則等待 MOV A, SBUF ; RI=1時,取 SBUF中數(shù)據(jù)送 A 由于 SBUF與 CPU之間各自獨立工作,那么: 接收數(shù)據(jù)時 CPU何時讀取 SBUF中的數(shù)據(jù)? 發(fā)送數(shù)據(jù)時, CPU何時再向 SBUF發(fā)送下一個數(shù)據(jù)? 雙方只能通過 標(biāo)志 進行協(xié)調(diào) 5.3 MCS-51單片機串行口的控制 目錄 單片機課程
14、 大連理工大學(xué)電氣系 TI ( SCON.1): 發(fā)送完成標(biāo)志。 當(dāng) CPU執(zhí)行 MOV SBUF, A 指令后,便引發(fā)一次串行 通信的過程。 SBUF開始通過 TXD向外按位發(fā)送數(shù)據(jù)。當(dāng)完 成一幀數(shù)據(jù)的發(fā)送后, TI=1。 如果系統(tǒng)中斷是開放的,則 TI=1會自動引發(fā)中斷。 用戶可以通過中斷服務(wù)程序向 SBUF輸送下一個數(shù)據(jù): CLR TI ;軟件清除標(biāo)志,準(zhǔn)備引發(fā)下次中斷 MOV SBUF, A ;在 中斷程序中發(fā)送下一個數(shù)據(jù); 也可以使用查詢的方式對 TI進行檢測: JNB TI, $ ;如果 TI1 則等待 CLR TI ;軟件清除標(biāo)志,準(zhǔn)備下次發(fā)送 MOV SBUF, A ;TI=1
15、時發(fā)送下一個數(shù)據(jù) 5.3 MCS-51單片機串行口的控制 目錄 單片機課程 大連理工大學(xué)電氣系 使用查詢 RI、 TI標(biāo)志的方式進行發(fā)送與接收 N個數(shù)據(jù) CLR SCON .TI 數(shù)據(jù)送累加器 A mov sbuf,a TI=1? N個數(shù)據(jù)發(fā)送完? YES NO YES NO 發(fā)送數(shù)據(jù)的程序框圖 SETB SCON .REN mov a, sbuf RI=1? N個數(shù)據(jù)接收完? YES NO YES NO CLR SCON .RI A送數(shù)據(jù)區(qū) 接 收 數(shù) 據(jù) 程 序 框 圖 5.3 MCS-51單片機串行口的控制 目錄 單片機課程 大連理工大學(xué)電氣系 SMOD: 串行口波特率 倍率 控制位 S
16、MOD=1時,方式 1、 2、 3的波特率加倍 SMOD GF1 GF0 PD IDL 5.3.3 控制寄存器 PCON( SFR地址 87H) 5.3 MCS-51單片機串行口的控制 返回 波特率 = 2 SMOD 32 ( T1溢出率) 方式 1、 3下波特率可變: 模式 2的波特率固定為: 波特率 = 2 SMOD 64 fosc 目錄 單片機課程 大連理工大學(xué)電氣系 5.4 MCS-51串行口的四種工作方式 【 特點 】 做 同步移位寄存器 用。其波特率固定為 fosc/12。 在這種模式下 RXD( P3.0)做數(shù)據(jù)口; TXD( P3.1) 做移位脈沖輸出端。在移位過程中,先移數(shù)據(jù)
17、的低 位 D0( 移位脈沖的頻率就是模式 0的波特率 )。 【 主要功能 】 使用串行口擴展并行口 MCS-51 RXD TXD Data 外部移位寄存器 cp 移位脈沖 串行數(shù)據(jù) 并行的數(shù)據(jù) (8位 ) 5.4.1 模式 0 【 注意 】 方式 0并不是一種同步通信方式 寄存器 目錄 單片機課程 大連理工大學(xué)電氣系 模式 0的時序信號(發(fā)送) S1S6 S1S6 S1S6 S1S6 S1S6 S1S6 S1S6 S1S6 S1S6 S1S6 S1S6 寫 SBUF SEND D1 D0 D2 D3 D4 D5 D6 D7 RXD端數(shù)據(jù) SHIFT TXD端同步脈沖 TI中斷標(biāo)志 mov sb
18、uf,a 指令從發(fā)送到結(jié)束的 10個機器周期 5.4 MCS-51串行口的四種工作方式 5.4.1 模式 0 目錄 單片機課程 大連理工大學(xué)電氣系 【 特點 】 10位傳輸格式 (1個起始位 +8個數(shù)據(jù)位 +1個停止位 ); 用于真正遠距離的異步通訊方式; 波特率可變(定時器 T1的溢出率來確定,所以首先要 對 T1進行初始化以確定串行口的波特率)。 ( 1)發(fā)送操作: 在 TI=0,執(zhí)行 mov sbuf ,a 指令后開始, 自動在 8位字符前后分別添加 1個起始位和停止位,并從 TXD端開始依次發(fā)送一幀數(shù)據(jù)。當(dāng)發(fā)送完后將 TI置位。 TI 5.4.2 模式 1 5.4 MCS-51串行口的
19、四種工作方式 D7 D6 D5 D4 D3 D2 D1 D0 8位數(shù)據(jù) 0 起始位 1 停止位 TXD 目錄 單片機課程 大連理工大學(xué)電氣系 ( 2)接收操作: 在 REN=1且 RI=0的條件下進行。 串行口的接收電路對 RXD線進行采樣,其采樣頻率是接收 時鐘的 16倍。當(dāng)連續(xù) 8次采集到 RXD線上為低電平時,檢測電 路便認(rèn)定 RXD線上有了“起始位”,此后,便開始在每個采樣 周期中的第 7 、 8 、 9三個脈沖時進行 RXD采樣,采取“三中 取二”的原則來確定接收的數(shù)據(jù)。 D0 D1 D2 D3 D4 D5 D6 D7 起始位 8位數(shù)據(jù) 停止位 7.8.9 RI RXD 當(dāng)連續(xù) 8次
20、采集到低電 平時,便確認(rèn)起始位到來 在每個第 7,8,9個脈沖對 RXD采樣 并采用“以三取二”來確定采集的數(shù)據(jù) 5.4 MCS-51串行口的四種工作方式 5.4.2 模式 1 目錄 單片機課程 大連理工大學(xué)電氣系 當(dāng)接收到停止位時,必須滿足: RI=0且 SM2=0,才能 把接收的數(shù)據(jù)送到 SBUF中( 停止位送 SCON的 RB8中 ,并 使 RI=1),否則數(shù)據(jù)丟失。 上面的條件意味著:要想得到接收的數(shù)據(jù), 在接收前必 須事先清零 RI。 波特率 = 2 SMOD 32 ( T1溢出率) 方式 1下波特率可變: 5.4 MCS-51串行口的四種工作方式 D7 D6 D5 D4 D3 D2
21、 D1 D0 起始位 8位數(shù)據(jù) 停止位 7.8.9 RI RXD 5.4.2 模式 1 目錄 單片機課程 大連理工大學(xué)電氣系 【 特點 】 模式 2、 3都是 11位 傳輸格式 : 1個起始位 + 9個數(shù)據(jù)位 + 1個停止位。 模式 2與模式 3的區(qū)別僅在波特率上 模式 2:固定為 fosc/64或 fosc/32。(具體由 PCON中的 SMOD位來確定)。 模式 3:可變,由定時器 T1的溢出波特率來確定(同 方式 1一樣,為 1/32或 1/16倍的 T1溢出率)。 D0 D1 D2 D3 D4 D5 D6 D7 D8 起始位 8+1位數(shù)據(jù) 停止位 第 9位 0 1 5.4.3 模式 2
22、、 3 第 9 位數(shù)據(jù)由用戶安排,可以是奇偶校驗位,可以是其他控制位 5.4 MCS-51串行口的四種工作方式 目錄 單片機課程 大連理工大學(xué)電氣系 5.4 MCS-51串行口的四種工作方式 模式 2、 3的發(fā)送過程類似于模式 1,唯一的區(qū)別在于數(shù)據(jù) 幀中數(shù)據(jù)是 9位。這樣,在發(fā)送一幀數(shù)據(jù)時, CPU除了要 把 8位數(shù)據(jù)送 SBUF外( mov sbuf, a),還要 事先 將第 9 位數(shù)據(jù)送到 SCON.TB8中 。 SETB SCON.TB8 或: CLR SCON.TB8 例如: SETB SCON.TB8 或: CLR SCON.TB8 MOV SBUF, A MOV SBUF, A
23、SCON( 98H) ( 1)發(fā)送 5.4.3 模式 2、 3 SM0 SM1 SM2 REN TB8 RB8 TI RI 目錄 單片機課程 大連理工大學(xué)電氣系 RI=0是保證下一個數(shù)據(jù)的正常接收的重要條件。每 次當(dāng) SBUF收到數(shù)據(jù)時, RI自動置 1。當(dāng)取走數(shù)據(jù)時 必須通過軟件復(fù)位 RI(指令 CLR RI),否則外部 發(fā)來的數(shù)據(jù)將丟失! 模式 2、 3的接收過程類似于模式 1,不同的是:模 式 1時, SCON中的 RB8是接收到的停止位“ 1”;而 模式 2、 3時, RB8是接收到的第 9位( D8) 。 5.4 MCS-51串行口的四種工作方式 ( 2)接收 5.4.3 模式 2、
24、 3 目錄 單片機課程 大連理工大學(xué)電氣系 串行口模式 2、 3時數(shù)據(jù)幀格式 發(fā)送時: 將 SCON中的 TB8作為第 9位數(shù)據(jù)發(fā)送; 接收時: 將接收來的第 9位送到 SCON中的 RB8中。 5.4 MCS-51串行口的四種工作方式 5.4.3 模式 2、 3 D0 D1 D2 D3 D4 D5 D6 D7 D8 起始位 8+1位數(shù)據(jù) 停止位 0 1 SM0 SM1 SM2 REN TB8 RB8 TI RI 返回 目錄 單片機課程 大連理工大學(xué)電氣系 在串行口的異步通訊中,發(fā)送方與接收方是兩個 互相獨立的系統(tǒng),它們的系統(tǒng)時鐘可以各不相同 ( 如圖所示 )。在這種條件下使通訊正確的條件是:
25、 ( 1)要有相同的字符幀格式; ( 2)要有相同的波特率。 5.5 串行口波特率的設(shè)定 目錄 單片機課程 大連理工大學(xué)電氣系 SM0 SM1 模式 功 能 波特率 0 0 0 同步移位寄存器模式 fosc/12 0 1 1 10位異步通信 UART 可變,由 T1初值確定 1 0 2 11位異步通信 UART fosc/64或 /32 * 1 1 3 11位異步通信 UART 可變,由 T1初值確定 * 當(dāng) SMOD=1時, B=fosc/32;當(dāng) SMOD=0時, B=fosc/64。 3、模式 1、 3的波特率 由 T1的溢出率 來決定的( SMOD=1使波特率加倍)。 MCS-51單片
26、機的串行口 4種模式其波特率各不相同 1、模式 0的波特率 無需用戶干預(yù),其固定值為 fosc/12 2、模式 2的波特率 為 fosc/64或 fosc/32,用戶通過設(shè)置 SMOD來選擇其一。 5.5 串行口波特率的設(shè)定 目錄 單片機課程 大連理工大學(xué)電氣系 模式 1、 3的波特率設(shè)定 模式 1、 3下的波特率計算公式: 在編制串行口通訊(模式 1、 3)程序時,在初始化程序中, 通過 T1進行波特率的設(shè)定,即對 T1進行初始化。 T1初始化的主要任務(wù): ( 1)設(shè)置 T1為 定時( C/T=0)、模式 2(自動重裝)方式 。 ( 2)計算定時常數(shù)并分別送給 TH1、 TL1。 T1溢出率
27、: =(計數(shù)速率) / 256-( TH1) = (fosc/12) / 256-( TH1) 波特率 = 2 SMOD 32 ( T1溢出率) T=(M-TC) Tosc 12 其中, T: 定時時間 ; Tosc: 時鐘周期 ; M:模 ; TC: 計數(shù)初值 。 5.5 串行口波特率的設(shè)定 目錄 單片機課程 大連理工大學(xué)電氣系 根據(jù)波特率求初值 TH的計算公式 B= fosc / 384 ( 256-TH) ; ( SMOD=0時) 或 B= fosc / 192 ( 256-TH) ; ( SMOD=1時) 其中: fosc為系統(tǒng)時鐘頻率, TH為定時器 T1的初值。 所以可以推出: T
28、H=256- fosc/( 384*B) ; ( SMOD=0時) 或: TH=256- fosc/( 192*B) ; ( SMOD=1時) 【 例 】 設(shè)系統(tǒng)時鐘為 11.0592MHz,要求波特率為 1200Hz, 求 TH。 【 解 】 用上述公式有(設(shè) SMOD=0): TH=256-11.0592MHz /( 384 1200) =232=0E8H 5.5 串行口波特率的設(shè)定 返回 目錄 單片機課程 大連理工大學(xué)電氣系 為什么 51系列單片機常用 11.0592MHz的晶振 ? 因為它能夠準(zhǔn)確地劃分成時鐘頻率,與 UART(通 用異步接收器 /發(fā)送器)常見的波特率相關(guān)。 常用波特率
29、通常按規(guī)范取 1200、 2400、 4800、 9600、 , 特別是較高的波特率( 9600, 19200),用 11.0592MHz可以得到準(zhǔn)確的數(shù)值,而用 12MHz或 6MHz就不能得到整數(shù)數(shù)值。通信是一定要準(zhǔn)確發(fā)送和 接受的,否則積累誤差就會產(chǎn)生。 5.5 串行口波特率的設(shè)定 目錄 單片機課程 大連理工大學(xué)電氣系 5.6 串行口的應(yīng)用舉例 在編制串行通訊程序時,通訊雙方必須保證: ( 1)相同的“ 波特率 ” ; ( 2)相同的“ 字符幀格式 ”格式。 MCS-51串口的 4種模式中: 0、 2模式的波特率是固定的; 1和 3模式時波特率是可變且 由定時器 T1來作波特率發(fā)生 器(
30、以模式 2的方式工作) 。 根據(jù)波特率計算 T1的初值 TC,串口程序初始化任務(wù)之一。 在通訊過程中, 對標(biāo)志( RI、 TI)的判斷 是控制通訊全過 程的關(guān)鍵環(huán)節(jié)。 目錄 單片機課程 大連理工大學(xué)電氣系 四種模式的接收、發(fā)送條件 模式 發(fā)送條件 接收條件 收發(fā)方式 主要應(yīng)用 0 TI=0 RI=0,REN=1 查詢、中斷 同步移位 ,系統(tǒng)擴并口 1 TI=0 RI=0,REN=1 查詢、中斷 8位數(shù)據(jù)異步傳送 2、 3 TI=0 RI=0, REN=1, SM2=0 查詢 (無中斷) 8位數(shù)據(jù) + 奇偶位的 異步收發(fā) UART RI=0, REN=1, SM2=1 若 RB8=0時接 收無效
31、; 若 RB8=1時引 發(fā)中斷。 8位數(shù)據(jù) + 控制位的 異步收發(fā) UART 5.6 串行口的應(yīng)用舉例 目錄 單片機課程 大連理工大學(xué)電氣系 【 例 】 使用串入 /并出移位寄存器 CD4094(也可用 74LS164) 擴展 8位并行輸出口, 8位輸出端的各位都接一個發(fā)光二極 管。要求編程實現(xiàn):發(fā)光二極管從左到右以一定延遲輪流 點亮,并不斷循環(huán)。 8051 Data CD4094 CLK 移位脈沖 串行數(shù)據(jù) STB P1.0 RXD TXD STB:輸出允許控制端, STB=1時,允許并行輸出 5.6.1 模式 0舉例 串并變換 5.6 串行口的應(yīng)用舉例 目錄 單片機課程 大連理工大學(xué)電氣系
32、 8051 Data CD4094 CLK STB P1.0 RXD TXD ORG 0200H BFS0: MOV SCON, #00H ;模式 0 CLR ES ;禁止串行中斷 MOV A, #80H LOOP: CLR P1.0 MOV SBUF, A JNB TI, $ SETB P1.0 ACALL DELAY CLR TI RR A SJMP LOOP RET 編程(查詢方式) 5.6 串行口的應(yīng)用舉例 SM0 SM1 SM2 REN TB8 RB8 TI RI 目錄 單片機課程 大連理工大學(xué)電氣系 【 例 2】 利用串行模式 0構(gòu)成的 2位 LED數(shù)碼管驅(qū)動電路 MCS-51 P
33、3.0 P3.1 P1.0 QA QH A,B 74LS164 /CLR CLK QA QH A,B 74LS164 /CLR CLK RXD TXD 共陰極 LED數(shù)碼管 . g f e d c b a 共陰極 LED數(shù)碼管 . g f e d c b a 5.6 串行口的應(yīng)用舉例 目錄 單片機課程 大連理工大學(xué)電氣系 5.6.2 模式 1舉例 雙機通信 要求實現(xiàn)如下功能 : 單片機甲將 P1口輸入的數(shù)據(jù)通過串 行口發(fā)送給單片機乙,單片機乙將收到的數(shù)據(jù)在 P1口輸出, 并用指示燈顯示當(dāng)前收到的數(shù)據(jù)。 (設(shè)系統(tǒng)時鐘為 11.0592MHz,要求波特率為 1200bps) MCS-51 TXD
34、P1.7 P1.0 MCS-51 RXD P1.7 P1.0 8路開關(guān)量輸入 8路開關(guān)量輸出 串行口 傳輸線 乙 甲 GND GND 思考:可否用模式 0或模式 2? 5.6 串行口的應(yīng)用舉例 目錄 單片機課程 大連理工大學(xué)電氣系 編程 發(fā)送方(單片機甲) SM0 SM1 SM2 REN TB8 RB8 TI RI GATE C/T M1 M0 GATE C/T M1 M0 TMOD為 00100000B=20H SCON為 01000000B= 40H T1初始化 啟動 T1 串行口初始化 輸入數(shù)據(jù)到 A 發(fā)送一幀數(shù)據(jù) MOV SBUF, A TI=1? 軟件清 TI Y N 1、串行口工作
35、在模式 1 2、定時器 T1用作波特率發(fā)生器, 工作于模式 2(自動重裝初值) 3、采用查詢方式發(fā)送數(shù)據(jù) 5.6 串行口的應(yīng)用舉例 目錄 單片機課程 大連理工大學(xué)電氣系 發(fā)送方程序清單 org 0000h ljmp 0100h org 0100h start: mov tmod, #20h ;設(shè)定時器 T1定時方式、模式 2 mov TL1, #0E8h ;送定時初值( fosc=11.0592) mov TH1, #0E8h ;波特率 B=1200 mov pcon, #00h ;PCON中的 SMOD=0 setb TR1 ;啟動定時器 T1 mov scon, #40h ;設(shè)定串行口為模
36、式 1 loop2: mov p1, #0ffh mov a, p1 ;從 P1口輸入數(shù)據(jù) mov sbuf, a ;數(shù)據(jù)送 SBUF發(fā)送 loop1: jnb ti, loop1 ;判斷數(shù)據(jù)是否發(fā)送完畢? clr ti ;發(fā)送完一幀后清標(biāo)志 sjmp loop2 ;返回繼續(xù) 波特率計算 5.6 串行口的應(yīng)用舉例 目錄 單片機課程 大連理工大學(xué)電氣系 定時器 TMOD為 00100000B=20H SCON( 98H)為 01010000B = 50H 編程 接收方(單片機乙) 1、串行口工作在模式 1 2、定時器 T1用作波特率發(fā)生器, 工作于模式 2(自動重裝初值) 3、采用 查詢方式接收
37、 數(shù)據(jù) 5.6 串行口的應(yīng)用舉例 T1初始化 啟動 T1 串行口初始化 輸出數(shù)據(jù)到 P1 RI=1? 軟件清 RI Y N 數(shù)據(jù)送 A MOV A, SBUF SM0 SM1 SM2 REN TB8 RB8 TI RI GATE C/T M1 M0 GATE C/T M1 M0 目錄 單片機課程 大連理工大學(xué)電氣系 org 0000h ljmp start org 0100h start: mov tmod, #20h ;選定 T1為模式 2(自動重裝) mov tl1, #0E8h ;設(shè)定初值 mov th1, #0E8h ;同上 mov pcon, #00h ;PCON的 SMOD=0 s
38、etb tr1 ;啟動 T1定時器 clr ri ;清接收標(biāo)志 mov scon, #50h ;設(shè)定串行口為方式 1 loop1: jnb ri, loop1 ;判斷是否接收到數(shù)據(jù)? clr ri ;接收到數(shù)據(jù)后清接收標(biāo)志 mov a, sbuf ;數(shù)據(jù)送累加器 A mov p1, a ;從 P1口輸出 sjmp loop1 ;回繼續(xù) 接收方程序清單 5.6 串行口的應(yīng)用舉例 目錄 單片機課程 大連理工大學(xué)電氣系 用中斷的方式接收數(shù)據(jù) org 0000h ljmp start org 0023h ljmp txd1 org 0100h start: mov tmod,#20h ;選定 T1為模
39、式 2(自動重裝) mov tl1,#0E8h ;設(shè)定初值 mov th1,#0E8h ;同上 mov pcon,#00h ;PCON的 SMOD=0 setb tr1 ;啟動 T1定時器 clr ri ;清接收標(biāo)志 mov scon,#50h ;設(shè)定串行口為方式 1,接收 mov ie,#90h ;開串行口中斷 sjmp $ ;等待一幀數(shù)據(jù)接收完成(中斷) org 0200h rxd1: clr ri ;接收到數(shù)據(jù)后清接收標(biāo)志 mov a,sbuf ;數(shù)據(jù)送累加器 A mov p1,a ;從 P1口輸出 reti LJMP 01H 00H LJMP 02H 00H MOV CLR 0000H
40、 0023H 0100H 0200H 5.6 串行口的應(yīng)用舉例 目錄 單片機課程 大連理工大學(xué)電氣系 中斷方式接收程序框圖 EA X X ES ET1 EX1 ET0 EX0 中斷允許寄存器 IE為 10010000B = 90H 5.6 串行口的應(yīng)用舉例 輸出數(shù)據(jù)到 P1 接收一幀數(shù)據(jù) MOV A, SBUF 軟件清 RI RETI 中斷服務(wù)程序框圖 T1初始化并啟動 T1 串行口初始化 開串行口中斷 等待 RI中斷 主程序框圖 目錄 單片機課程 大連理工大學(xué)電氣系 5.6.3 模式 2、 3應(yīng)用舉例 與模式 1相比,模式 2、 3的主要特點: ( 1) 9位數(shù)據(jù)的傳送格式 :發(fā)送時第 9位
41、在 TB8中; 接收時第 9位在 RB8中。 ( 2) SM2: 多機通訊位: 模式 0、 1中 : 設(shè) SM2=0, RI可以正常的激活并引發(fā)中斷。 模式 2、 3中 : SM2=0時 , RI 能被激活,但不能引發(fā)中斷 ; SM2=1時 , 當(dāng) RB8=1, RI可以激活且引發(fā)中斷 ; 若 RB8=0則不能激活 RI,不能引發(fā)中斷! 根據(jù)上面特點,模式 2、 3可以 : ( 1)利用第 9位數(shù)據(jù)來傳送、接收數(shù)據(jù)的“奇偶校驗位” ( SM2=0)。 ( 2)利用 SM2、 RB8 實現(xiàn)多機通訊功能( SM2=1)。 5.6 串行口的應(yīng)用舉例 返回 目錄 單片機課程 大連理工大學(xué)電氣系 【 例
42、 】 收發(fā)雙方約定為 奇校驗 ( 9位數(shù)據(jù)中 1的個數(shù)為奇), 如何編程實現(xiàn)? 【 分析 】 發(fā)送方的 第 9位 (存于 TB8中)要根據(jù)前 8位數(shù)據(jù)來 確定。 若發(fā)送的 8位數(shù)據(jù)是: 00011010 , 則 TB8為 0。這樣當(dāng) 接收方將 SBUF的數(shù)據(jù)送 A時( MOV A, SBUF), A中數(shù) 據(jù)是: 00011010。這時 PSW.P=1,且 RB8=0 ; 若發(fā)送的 8位數(shù)據(jù)是: 00011011 , 則 TB8為 1。這樣當(dāng) 接收方將 SBUF的數(shù)據(jù)送 A時( MOV A, SBUF), A中數(shù) 據(jù)是: 00011011。這時 PSW.P=0,且 RB8=1; 接收方進行 P
43、RB8運算,僅當(dāng)結(jié)果為 1時通信才正確。 用第 9位數(shù)據(jù)作為奇校驗位 , 使通信數(shù)據(jù)的正確性得以提高。 1、帶奇偶校驗位的數(shù)據(jù)傳送 5.6 串行口的應(yīng)用舉例 5.6.3 模式 2、 3應(yīng)用舉例 目錄 單片機課程 大連理工大學(xué)電氣系 利用模式 2、 3進行帶奇校驗的串行通訊程序流程圖 發(fā)送端程序(原始 TI=0) 接收端程序(原始 RI=0) 5.6 串行口的應(yīng)用舉例 數(shù)據(jù)送累加器 A PSW.P=1 ? SET SCON.TB8 CLR SCON.TB8 MOV SBUF,A TI=1 ? CLR SCON.TI Y N N Y RI=1 ? MOV A, SBUF PSW.P RB8=1?
44、出錯處理 CLR SCON.RI Y N N Y 數(shù)據(jù)送內(nèi)存 目錄 單片機課程 大連理工大學(xué)電氣系 模式 2、 3使用時要注意的問題 在模式 2、 3中,可以實現(xiàn)較為特殊的通訊方式,如帶校驗 位的 9位傳送、多機通訊。 注意:當(dāng) SM2=0時,只能采用 查詢方式。 功能 SM2 第 9位 工作方式 帶校驗位的 9位 數(shù)傳送 SM2=0 校驗位 以查詢( RI)的方式 接收數(shù)據(jù) 多機 通訊 主 機 SM2=0 地址碼: TB8=1 數(shù)據(jù)、命令時 =0 以查詢的方式工作 從 機 SM2=1 未選中時 SM2不變 以中斷的方式接收地址 選中后 SM2=0 以查詢的方式與主機通訊 轉(zhuǎn)至多機通信例子 5
45、.6 串行口的應(yīng)用舉例 目錄 單片機課程 大連理工大學(xué)電氣系 關(guān)于 SM2的設(shè)定 對于接收操作: 模式 1: SM2無用, 令其 =0即可 。此時接收數(shù)據(jù)條件是: RI=0 且 REN=1。單片機可以利用查詢或中斷方式為串口服 務(wù)。 模式 2、 3的接收條件是:( 除了 RI=0、 REN=1外) 當(dāng) SM2=0時 : RI 可以被激活(但不能引發(fā)中斷); 當(dāng) SM2=1時 :接收到 RB8=1時 , RI不僅能激活,還能 引發(fā)中斷。 可見:當(dāng) SM2=1時,單片機是否能接收到數(shù)據(jù)取決于外部 數(shù)據(jù)的第 9位 RB8。這樣外部可以通過第九位數(shù)據(jù)是“ 0”還 是“ 1”來控制、決定單片機的接收狀況
46、。 5.6 串行口的應(yīng)用舉例 目錄 單片機課程 大連理工大學(xué)電氣系 當(dāng)數(shù)據(jù)是帶奇偶校驗位的 9位數(shù)據(jù)時(校驗位是 RB8) , 必須令 SM2=0,這樣才能保證所有數(shù)據(jù)的正確接收(無論 RB8如何); 在“ 多機通訊 ”時,所有的 從機都將其 SM2=1,這樣作 為主機在向從機發(fā)送數(shù)據(jù) /命令時,可以通過所發(fā)數(shù)據(jù)的第 9 位 TB8(對于從機來說是 RB8)來決定從機是否可以接收到 此數(shù)據(jù) /命令(取決于 RB8)。 即 RB8=1時接收有效; RB8=0時接收無效。 所以, SM2也稱“ 多機通訊位 ”,用于多機通訊。 5.6 串行口的應(yīng)用舉例 在模式 2、 3中:如何利用和設(shè)置 SM2和
47、RB8來控制接收? 目錄 單片機課程 大連理工大學(xué)電氣系 2、多機通信 5.6 串行口的應(yīng)用舉例 5.6.3 模式 2、 3應(yīng)用舉例 ( 1)硬件連接 單片機構(gòu)成的多機系統(tǒng)常采用總線型主從式結(jié)構(gòu)。 所謂主從式,即在數(shù)個單片機中,有一個是主機,其余的 是從機,從機要服從主機的調(diào)度、支配。 80C31單片機的 串行口方式 2和方式 3適于這種主從式的通信結(jié)構(gòu)。當(dāng)然 采用不同的通信標(biāo)準(zhǔn)時,還需進行相應(yīng)的電平轉(zhuǎn)換,有時 還要對信號進行光電隔離。在實際的多機應(yīng)用系統(tǒng)中,常 采用 RS-485串行標(biāo)準(zhǔn)總線進行數(shù)據(jù)傳輸。 目錄 單片機課程 大連理工大學(xué)電氣系 主從結(jié)構(gòu)的多機通信系統(tǒng) 主 機 從機 N 從機
48、4 從機 3 從機 2 從機 1 串行數(shù)據(jù)線( 2條) RXD TXD TXD RXD 轉(zhuǎn)至作業(yè) 5.6 串行口的應(yīng)用舉例 2、多機通信 5.6.3 模式 2、 3應(yīng)用舉例 ( 1)硬件連接 目錄 單片機課程 大連理工大學(xué)電氣系 參見 SM2位 5.6 串行口的應(yīng)用舉例 ( 2)通信協(xié)議 所有從機的 SM2位置 1,處于接收地址幀狀態(tài)。 主機發(fā)送一地址幀,其中 8位是地址,第 9位為地址 / 數(shù)據(jù)的區(qū)分標(biāo)志,該位置 1表示該幀為地址幀。 所有從機收到地址幀后,都將接收的地址與本機的 地址比較。對于地址相符的從機,使自己的 SM2位置 0 (以接收主機隨后發(fā)來的數(shù)據(jù)幀),并把本站地址發(fā)回主 機作
49、為應(yīng)答;對于地址不符的從機,仍保持 SM2=1,對 主機隨后發(fā)來的數(shù)據(jù)幀不予理睬。 2、多機通信 5.6.3 模式 2、 3應(yīng)用舉例 目錄 單片機課程 大連理工大學(xué)電氣系 參見 SM2位 5.6 串行口的應(yīng)用舉例 ( 2)通信協(xié)議 當(dāng)主機找到從機后,開始向從機發(fā)數(shù)據(jù)(其特征為 第 9位 =0)。由于從機 SM2=0,所以盡管接收到的 RB8=0, 同樣可以激活從機的 RI,使其以 查詢的方式 接收主機發(fā)出 的數(shù)據(jù)或命令。當(dāng)主機與從機的通訊完成后,從機再將其 SM2=1,并退出中斷服務(wù)程序。主機重新發(fā)出另一個從 機的地址,所有從機可以馬上響應(yīng)并接收地址信息 。 2、多機通信 5.6.3 模式 2
50、、 3應(yīng)用舉例 ( 3)程序(略) 目錄 單片機課程 大連理工大學(xué)電氣系 多機通訊小結(jié) 1、主機的 SM2=0,從機的 SM2=1; 2、主機向從機發(fā)送的地址碼(第 9位為“ 1”); 3、所有的從機( SM2=1、 RB8=1、 RI=0)都能接收主機 的地址進入中斷服務(wù)程序。在服務(wù)程序中比較、確認(rèn)是 否為被尋從機。 4、被尋從機將 SM2清零,以保證能以查詢的方式接收主機 的數(shù)據(jù)、命令。同時向主機返回地址供主機核實。沒有 被選中的從機保持 SM2=1并退出服務(wù)程序。 5、被尋中的從機以查詢 RI的方式與主機之間進行數(shù)據(jù)交 換(注意:因為 SM2=0時, RI雖然能被激活,但不能引 發(fā)中斷),主機發(fā)送的數(shù)據(jù) 的特征為第 9位 =0,以使該 數(shù)據(jù)對其它從機無效。被尋中的從機與主機 完成數(shù)據(jù)交 換后,重新將 SM2置 1。 5.6 串行口的應(yīng)用舉例 目錄 單片機課程 大連理工大學(xué)電氣系 作 業(yè) 1. MOV SBUF,A 指令意味著什么? 2. 如何判斷 SBUF中的數(shù)據(jù)發(fā)送完或接收完成? 3. 串行口的波特率如何確定? 4. 在計算波特率時, PCON中的 SMOD位的作用是 什么?它對波特率由何影響?
- 溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2023年六年級數(shù)學(xué)下冊6整理和復(fù)習(xí)2圖形與幾何第7課時圖形的位置練習(xí)課件新人教版
- 2023年六年級數(shù)學(xué)下冊6整理和復(fù)習(xí)2圖形與幾何第1課時圖形的認(rèn)識與測量1平面圖形的認(rèn)識練習(xí)課件新人教版
- 2023年六年級數(shù)學(xué)下冊6整理和復(fù)習(xí)1數(shù)與代數(shù)第10課時比和比例2作業(yè)課件新人教版
- 2023年六年級數(shù)學(xué)下冊4比例1比例的意義和基本性質(zhì)第3課時解比例練習(xí)課件新人教版
- 2023年六年級數(shù)學(xué)下冊3圓柱與圓錐1圓柱第7課時圓柱的體積3作業(yè)課件新人教版
- 2023年六年級數(shù)學(xué)下冊3圓柱與圓錐1圓柱第1節(jié)圓柱的認(rèn)識作業(yè)課件新人教版
- 2023年六年級數(shù)學(xué)下冊2百分?jǐn)?shù)(二)第1節(jié)折扣和成數(shù)作業(yè)課件新人教版
- 2023年六年級數(shù)學(xué)下冊1負(fù)數(shù)第1課時負(fù)數(shù)的初步認(rèn)識作業(yè)課件新人教版
- 2023年六年級數(shù)學(xué)上冊期末復(fù)習(xí)考前模擬期末模擬訓(xùn)練二作業(yè)課件蘇教版
- 2023年六年級數(shù)學(xué)上冊期末豐收園作業(yè)課件蘇教版
- 2023年六年級數(shù)學(xué)上冊易錯清單十二課件新人教版
- 標(biāo)準(zhǔn)工時講義
- 2021年一年級語文上冊第六單元知識要點習(xí)題課件新人教版
- 2022春一年級語文下冊課文5識字測評習(xí)題課件新人教版
- 2023年六年級數(shù)學(xué)下冊6整理和復(fù)習(xí)4數(shù)學(xué)思考第1課時數(shù)學(xué)思考1練習(xí)課件新人教版