久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 19854|回復: 26
打印 上一主題 下一主題
收起左側

21課:單片機串行口介紹

  [復制鏈接]
跳轉到指定樓層
#
ID:1 發表于 2013-5-21 05:09 | 只看該作者 回帖獎勵 |正序瀏覽 |閱讀模式
介紹:串行口是單片機與外界進行信息交換的工具。
8051單片機的通信方式有兩種:
并行通信:數據的各位同時發送或接收。  串行通信:數據一位一位次序發送或接收。參看下圖:

串行通信的方式:
異步通信:它用一個起始位表示字符的開始,用停止位表示字符的結束。其每幀的格式如下:
在一幀格式中,先是一個起始位0,然后是8個數據位,規定低位在前,高位在后,接下來是奇偶校驗位(能省略),最后是停止位1。用這種格式表示字符,則字符能一個接一個地傳送。
在異步通信中,CPU與外設之間必須有兩項規定,即字符格式和波特率。字符格式的規定是雙方能夠在對同一種0和1的串理解成同一種意義。原則上字符格式能由通信的雙方自由制定,但從通用、方便的角度出發,一般還是使用一些標準為好,如采用ASCII標準。
波特率即數據傳送的速率,其定義是每秒鐘傳送的二進制數的位數。例如,數據傳送的速率是120字符/s,而每個字符如上述規定包含10數位,則傳送波特率為1200波特。
同步通信:在同步通信中,每個字符要用起始位和停止位作為字符開始和結束的標志,占用了時間;所以在數據塊傳遞時,為了提高速度,常去掉這些標志,采用同步傳送。由于數據塊傳遞開始要用同步字符來指示,同時要求由時鐘來實現發送端與接收端之間的同步,故硬件較復雜。
通信方向:在串行通信中,把通信接口只能發送或接收的單向傳送辦法叫單工傳送;而把數據在甲乙兩機之間的雙向傳遞,稱之為雙工傳送。在雙工傳送方式中又分為半雙工傳送和全雙工傳送。半雙工傳送是兩機之間不能同時進行發送和接收,任一時該,只能發或者只能收信息。
2.8051單片機的串行接口結構
8051單片機串行接口是一個可編程的全雙工串行通信接口。它可用作異步通信方式(UART),與串行傳送信息的外部設備相連接,或用于通過標準異步通信協議進行全雙工的8051多機系統也能通過同步方式,使用TTL或CMOS移位寄存器來擴充I/O口。
8051單片機通過管腳RXD(P3.0,串行數據接收端)和管腳TXD(P3.1,串行數據發送端)與外界通信。SBUF是串行口緩沖寄存器,包括發送寄存器和接收寄存器。它們有相同名字和地址空間,但不會出現沖突,因為它們兩個一個只能被CPU讀出數據,一個只能被CPU寫入數據。
串行口的控制與狀態寄存器
串行口控制寄存器SCON
它用于定義串行口的工作方式及實施接收和發送控制。字節地址為98H,其各位定義如下表:

            D7
            
            D6
            
            D5
            
            D4
            
            D3
            
            D2
            
            D1
            
            D0
            
            SM0
            
            SM1
            
            SM2
            
            REN
            
            TB8
            
            RB8
            
            TI
            
            RI
            
SM0、SM1:串行口工作方式選擇位,其定義如下:

            SM0、SM1
            
            工作方式
            
            功能描述
            
            波特率
            
            0 0
            
            方式0
            
            8位移位寄存器
            
            Fosc/12
            
            0 1
            
            方式1
            
            10位UART
            
            可變
            
            1 0
            
            方式2
            
            11位UART
            
            Fosc/64或fosc/32
            
            1 1
            
            方式3
            
            11位UART
            
            可變
            

其中fosc為晶體震蕩器頻率SM2:多機通信控制位。在方式0時,SM2一定要等于0。在方式1中,當(SM2)=1則只有接收到有效停止位時,RI才置1。在方式2或方式3當(SM2)=1且接收到的第九位數據RB8=0時,RI才置1。
REN:接收允許控制位。由軟件置位以允許接收,又由軟件清0來禁止接收。
TB8: 是要發送數據的第9位。在方式2或方式3中,要發送的第9位數據,根據需要由軟件置1或清0。例如,可約定作為奇偶校驗位,或在多機通信中作為區別地址幀或數據幀的標志位。
RB8:接收到的數據的第9位。在方式0中不使用RB8。在方式1中,若(SM2)=0,RB8為接收到的停止位。在方式2或方式3中,RB8為接收到的第9位數據。
TI:發送中斷標志。在方式0中,第8位發送結束時,由硬件置位。在其它方式的發送停止位前,由硬件置位。TI置位既表示一幀信息發送結束,同時也是申請中斷,可根據需要,用軟件查詢的辦法獲得數據已發送完畢的信息,或用中斷的方式來發送下一個數據。TI必須用軟件清0。
RI:接收中斷標志位。在方式0,當接收完第8位數據后,由硬件置位。在其它方式中,在接收到停止位的中間時刻由硬件置位(例外情況見于SM2的說明)。RI置位表示一幀數據接收完畢,可用查詢的辦法獲知或者用中斷的辦法獲知。RI也必須用軟件清0。
特殊功能寄存器PCON
PCON是為了在CHMOS的80C51單片機上實現電源控制而附加的。其中最高位是SMOD。
串行口的工作方式
8051單片機的全雙工串行口可編程為4種工作方式,現分述如下:
方式0為移位寄存器輸入/輸出方式。可外接移位寄存器以擴展I/O口,也能外接同步輸入/輸出設備。8位串行數據者是從RXD輸入或輸出,TXD用來輸出同步脈沖。
輸出 串行數據從RXD管腳輸出,TXD管腳輸出移位脈沖。CPU將數據寫入發送寄存器時,立即啟動發送,將8位數據以fos/12的固定波特率從RXD輸出,低位在前,高位在后。發送完一幀數據后,發送中斷標志TI由硬件置位。
輸入 當串行口以方式0接收時,先置位允許接收控制位REN。此時,RXD為串行數據輸入端,TXD仍為同步脈沖移位輸出端。當(RI)=0和(REN)=1同時滿足時,開始接收。當接收到第8位數據時,將數據移入接收寄存器,并由硬件置位RI。
下面兩圖分別是方式0擴展輸出和輸入的接線圖。

<單片機串行口接線圖>
方式1為波特率可變的10位異步通信接口方式。發送或接收一幀信息,包括1個起始位0,8個數據位和1個停止位1。
輸出 當CPU執行一條指令將數據寫入發送緩沖SBUF時,就啟動發送。串行數據從TXD管腳輸出,發送完一幀數據后,就由硬件置位TI。
輸入 在(REN)=1時,串行口采樣RXD管腳,當采樣到1至0的跳變時,確認是開始位0,就開始接收一幀數據。只有當(RI)=0且停止位為1或者(SM2)=0時,停止位才進入RB8,8位數據才能進入接收寄存器,并由硬件置位中斷標志RI;不然信息丟失。所以在方式1接收時,應先用軟件清零RI和SM2標志。
方式2
方式月為固定波特率的11位UART方式。它比方式1增加了一位可程控為1或0的第9位數據。
輸出: 發送的串行數據由TXD端輸出一幀信息為11位,附加的第9位來自SCON寄存器的TB8位,用軟件置位或復位。它可作為多機通信中地址/數據信息的標志位,也能作為數據的奇偶校驗位。當CPU執行一條數據寫入SUBF的指令時,就啟動發送器發送。發送一幀信息后,置位中斷標志TI。
輸入: 在(REN)=1時,串行口采樣RXD管腳,當采樣到1至0的跳變時,確認是開始位0,就開始接收一幀數據。在接收到附加的第9位數據后,當(RI)=0或者(SM2)=0時,第9位數據才進入RB8,8位數據才能進入接收寄存器,并由硬件置位中斷標志RI;不然信息丟失。且不置位RI。再過一位時間后,不管上述條件時否滿足,接收電路即行復位,并重新檢測RXD上從1到0的跳變。
工作方式3
方式3為波特率可變的11位UART方式。除波特率外,其余與方式2相同。
波特率選擇
如前所述,在串行通信中,收發雙方的數據傳送率(波特率)要有一定的約定。在8051串行口的四種工作方式中,方式0和2的波特率是固定的,而方式1和3的波特率是可變的,由定時器T1的溢出率控制。
方式0
方式0的波特率固定為主振頻率的1/12。
方式2
方式2的波特率由PCON中的選擇位SMOD來決定,可由下式表示:
波特率=2的SMOD次方除以64再乘一個fosc,也就是當SMOD=1時,波特率為1/32fosc,當SMOD=0時,波特率為1/64fosc
3.方式1和方式3
定時器T1作為波特率發生器,其公式如下:
波特率=定時器T1溢出率
T1溢出率= T1計數率/產生溢出所需的周期數
式中T1計數率取決于它工作在定時器狀態還是計數器狀態。當工作于定時器狀態時,T1計數率為fosc/12;當工作于計數器狀態時,T1計數率為外部輸入頻率,此頻率應小于fosc/24。產生溢出所需周期與定時器T1的工作方式、T1的預置值有關。
定時器T1工作于方式0:溢出所需周期數=8192-x
定時器T1工作于方式1:溢出所需周期數=65536-x
定時器T1工作于方式2:溢出所需周期數=256-x
因為方式2為自動重裝入初值的8位定時器/計數器模式,所以用它來做波特率發生器最恰當。
當時鐘頻率選用11.0592MHZ時,取易獲得標準的波特率,所以很多單片機系統選用這個看起來“怪”的晶體震蕩器就是這個道理。
下表列出了定時器T1工作于方式2常用波特率及初值。

            常用波特率
            
            Fosc(MHZ)
            
            SMOD
            
            TH1初值
            
            19200
            
            11.0592
            
            1
            
            FDH
            
            9600
            
            11.0592
            
            0
            
            FDH
            
            4800
            
            11.0592
            
            0
            
            FAH
            
            2400
            
            11.0592
            
            0
            
            F4h
            
            1200
            
            11.0592
            
            0
            
            E8h
            


評分

參與人數 1黑幣 +1 收起 理由
kyo123 + 1 很給力!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏6 分享淘帖 頂6 踩
回復

使用道具 舉報

26#
ID:673647 發表于 2022-5-17 23:04 | 只看該作者
可惜很多圖都沒了!
回復

使用道具 舉報

25#
ID:93625 發表于 2018-6-26 14:17 | 只看該作者
感謝分享,繼續學習。
回復

使用道具 舉報

24#
ID:349717 發表于 2018-6-11 20:55 | 只看該作者
看得我頭暈暈,怎么感覺學單片機這么難
回復

使用道具 舉報

23#
ID:340690 發表于 2018-6-2 20:14 | 只看該作者
講得詳細,感謝分享
回復

使用道具 舉報

22#
ID:336325 發表于 2018-5-23 10:54 | 只看該作者
努力學習,感謝!
回復

使用道具 舉報

21#
ID:333316 發表于 2018-5-18 22:15 | 只看該作者
感謝樓主
回復

使用道具 舉報

20#
ID:229981 發表于 2018-3-14 16:12 | 只看該作者
個人感覺本課思路有點亂,不太好理解。本課是借助了其他資料理解了之后又回來捋了一遍。至于其他資料是什么,是我瞎找的。。。理解完各個點又理順的
回復

使用道具 舉報

19#
ID:286423 發表于 2018-3-1 21:09 | 只看該作者
感謝樓主
回復

使用道具 舉報

18#
ID:121384 發表于 2017-12-3 15:49 來自手機 | 只看該作者
真心贊一個,很好,很詳細
回復

使用道具 舉報

17#
ID:253942 發表于 2017-11-26 22:08 | 只看該作者
贊!贊!贊!
回復

使用道具 舉報

16#
ID:225396 發表于 2017-9-4 10:17 | 只看該作者
樓主 真牛
回復

使用道具 舉報

15#
ID:211920 發表于 2017-6-16 18:02 | 只看該作者
感謝樓主分享!!!
回復

使用道具 舉報

14#
ID:188203 發表于 2017-4-12 11:24 | 只看該作者
謝謝樓主分享!
回復

使用道具 舉報

13#
ID:167870 發表于 2017-3-3 14:30 | 只看該作者

謝謝樓主辛苦分享
回復

使用道具 舉報

12#
ID:74982 發表于 2015-3-23 20:04 | 只看該作者
感謝樓主!
回復

使用道具 舉報

11#
ID:73372 發表于 2015-2-8 15:37 | 只看該作者
有點難啊,我擦
回復

使用道具 舉報

10#
ID:73372 發表于 2015-2-8 15:19 | 只看該作者
勁爆雞米花,厲害
回復

使用道具 舉報

9#
ID:67125 發表于 2014-10-13 14:41 | 只看該作者
多謝樓主,學習了
回復

使用道具 舉報

8#
ID:65438 發表于 2014-8-25 13:28 | 只看該作者
謝謝樓主分享啊!!@@@!
回復

使用道具 舉報

7#
ID:64206 發表于 2014-7-23 16:34 | 只看該作者
謝謝樓主辛苦分享
回復

使用道具 舉報

6#
ID:61875 發表于 2014-7-5 06:34 | 只看該作者
謝謝樓主好文章拜讀了。
回復

使用道具 舉報

5#
ID:55497 發表于 2013-9-29 21:38 | 只看該作者
很受用啊
回復

使用道具 舉報

地板
ID:51900 發表于 2013-7-25 14:53 | 只看該作者
很詳細哦
回復

使用道具 舉報

板凳
ID:51962 發表于 2013-7-22 16:04 | 只看該作者
e ,辛苦了。。不過沒看大明白
回復

使用道具 舉報

沙發
ID:51400 發表于 2013-6-30 14:45 | 只看該作者
贊一個,立刻 it
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 成人免费精品视频 | 久久黄网 | 狠狠色综合久久婷婷 | 亚洲在线一区二区三区 | 在线观看免费观看在线91 | 欧美jizzhd精品欧美巨大免费 | 精品成人一区二区 | 97人人超碰 | 伊人成人免费视频 | 午夜精品视频 | 国产精品免费一区二区三区四区 | 成人精品鲁一区一区二区 | 蜜桃av人人夜夜澡人人爽 | 精品久久久久久久久久久院品网 | 欧美xxxx在线 | 超碰在线影院 | 丝袜 亚洲 另类 欧美 综合 | 一级黄色录像片子 | 婷婷久久精品一区二区 | 亚洲视频在线一区 | 久久久久99 | 午夜视频在线观看视频 | 日本在线视频一区二区 | 成人亚洲片 | 一级视频在线免费观看 | 国产精品成人av | 久久里面有精品 | 亚洲精品乱码久久久久久9色 | 国产精品亚洲综合 | 欧美精品一区二区三区四区五区 | 麻豆亚洲 | 91免费视频 | 国产精品福利在线观看 | 亚洲一区 | 伊人成人免费视频 | 射欧美| 国产成人免费网站 | 成人免费黄视频 | 欧美日一区 | 99精品99久久久久久宅男 | 日韩在线观看中文字幕 |