新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 單片機串行接口的控制與應用

        單片機串行接口的控制與應用

        作者: 時間:2016-11-26 來源:網絡 收藏
        1. 概述

          本文引用地址:http://www.104case.com/article/201611/322018.htm

          21世紀是信息的社會,而信息的傳遞和交換,要有一定的途徑和方法,你現在在網上就是在獲取信息,對不對?如果你是使用電話撥號上網的話,就是在使用計算機的串行接口在通信的啦!!!

        2.  
        3. 串行接口的一般概念 計算機與外界進行信息交換稱之為通訊。
          MCS-51單片機內部有一個全雙工的串行接口,在物理結構上是由獨立的接收和發送數據緩沖器(SBUF)組成,可同時發送、接收數據。

        8051單片機的通訊方式有兩種:

        并行通訊:數據的各位同時發送或接收。

        串行通訊:數據一位一位順序發送或接收。

        串行通訊的方式: 在一幀格式中,包括:一個起始位0,然后是8個數據位,規定低位在前,高位在后,接下來是奇偶校驗位(可以省略),最后是停止位1。用這種格式表示字符后,則字符可以一個接一個地傳送。

        1. 異步通訊:
          它是用一幀來表示一個字符。

        從上可知CPU與外設之間必須有兩項規定,即字符格式和波特率(傳送的字符速度)。字符格式的規定是雙方能夠在對同一種0和1的字符串時能理解成同一種意義。原則上字符格式可以由通訊的雙方自由制定,但從通用、方便的角度出發,一般還是使用一些標準為好,如采用ASCII標準。

        波特率:即數據傳送的速率,其定義是每秒鐘傳送的二進制數的位數。單位:位/秒,例如,數據傳送的速率是120字符/s,即每秒傳送120個字符,而每個字符如上述規定包含10數位,則傳送波特率為10*120=1200波特。

         

        1. 通訊方向:在串行通訊中,把通訊接口只能發送或接收的單向傳送方法叫單工傳送;而把數據在甲乙兩機之間的雙向傳遞,稱之為雙工傳送。在雙工傳送方式中又分為半雙工傳送和全雙工傳送。半雙工傳送是兩機之間不能同時進行發送和接收,任一時該,只能發或者只能收信息。而全雙工傳送則發送和接收可同時進行。
        2. 同步通訊:在同步通訊中,每個字符要用起始位和停止位作為字符開始和結束的標志,占用了時間;所以在數據塊傳遞時,為了提高速度,常去掉這些標志,采用同步傳送。由于數據塊傳遞開始要用同步字符來指示,同時要求由時鐘來實現發送端與接收端之間的同步,故硬件較復雜。

          常用于計算機之間的通信。

        3. 2.8051單片機的串行接口結構

        8051串行接口是一個可編程的全雙工串行通訊接口。它可用作異步通訊方式(UART),與串行傳送信息的外部設備相連接,或用于通過標準異步通訊協議進行全雙工的8051多機系統也可以通過同步方式,使用TTL或CMOS移位寄存器來擴充I/O口。

        8051單片機通過引腳RXD(P3.0,串行數據接收端)和引腳TXD(P3.1,串行數據發送端)與外界通訊。SBUF是串行口緩沖寄存器,包括發送寄存器和接收寄存器。它們有相同名字和地址空間,但不會出現沖突,因為它們兩個一個只能被CPU讀出數據,一個只能被CPU寫入數據,可對SBUF直接進行讀/寫。

        1.  

        2. 串行口的控制是由對專用的特殊功能寄存器進行設置來完成的。包括:SCON、PCON。

           

        1. 串行口控制寄存器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:在方式2或方式3中,要發送的第9位數據位,根據需要由軟件置1或清0。例如,可約定作為奇偶校驗位,或在多機通訊中作為區別地址幀或數據幀的標志位。

          RB8:接收到的數據的第9位。在方式0中不使用RB8。在方式1中,若(SM2)=0,RB8為接收到的停止位。在方式2或方式3中,RB8為接收到的第9位數據。

          TI:發送中斷標志。在方式0中,第8位發送結束時,由硬件置位。在其它方式的發送停止位前,由硬件置位。TI置位既表示一幀信息發送結束,同時也是申請中斷,可根據需要,用軟件查詢的方法獲得數據已發送完畢的信息,或用中斷的方式來發送下一個數據。TI必須用軟件清0(如CLR TI)。

          RI:接收中斷標志位。在方式0,當接收完第8位數據后,由硬件置位。在其它方式中,在接收到停止位的中間時刻由硬件置位(例外情況見于SM2的說明)。RI置位表示一幀數據接收完畢,可用查詢的方法獲知或者用中斷的方法獲知。RI也必須用軟件清0(如CLR RI)。

        2. 特殊功能寄存器PCON

           

        PCON是為了在CHMOS的80C51單片機上實現電源控制而附加的。其中最高位是SMOD,為串行口波特率系數控制位,SMOD=1時,使波特率加倍,一般不用。

        1.  

        2. 串行口的工作方式

           

        8051單片機的全雙工串行口可編程為4種工作方式,現分述如下:

        1. 方式0為移位寄存器輸入/輸出方式。可外接移位寄存器以擴展I/O口,也可以外接同步輸入/輸出設備。8位串行數據者是從RXD輸入或輸出,TXD用來輸出同步脈沖。

           

        1. 輸出串行數據從RXD引腳輸出,TXD引腳輸出移位脈沖。CPU將數據寫入發送寄存器時,立即啟動發送,將8位數據以fos/12的固定波特率從RXD輸出,低位在前,高位在后。發送完一幀數據后,發送中斷標志TI由硬件置位。

           

        2. 輸入當串行口以方式0接收時,先置位允許接收控制位REN。此時,RXD為串行數據輸入端,TXD仍為同步脈沖移位輸出端。當(RI)=0和(REN)=1同時滿足時,開始接收。當接收到第8位數據時,將數據移入接收寄存器,并由硬件置位RI。

           

        下面兩圖分別是方式0擴展輸出和輸入的接線圖。

        1. 波特率選擇
        2. 如前所述,在串行通訊中,收發雙方的數據傳送率(波特率)要有一定的約定。在8051串行口的四種工作方式中,方式0和2的波特率是固定的,而方式1和3的波特率是可變的,由定時器T1的溢出率控制。

        3. 方式0方式0的波特率固定為主振頻率的1/12。

        4. 方式2
        5. 方式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

         方式3為波特率可變的11位UART方式。除波特率外,其余與方式2相同。


        評論


        技術專區

        關閉
        主站蜘蛛池模板: 许昌县| 三河市| 保亭| 敖汉旗| 遵化市| 秭归县| 芷江| 彩票| 山阴县| 宜兴市| 康平县| 仪征市| 虹口区| 泉州市| 邳州市| 前郭尔| 城口县| 曲阜市| 资溪县| 延庆县| 冷水江市| 尤溪县| 修水县| 承德市| 沈丘县| 金平| 阳新县| 靖边县| 绥滨县| 渭源县| 克东县| 吉首市| 罗平县| 西乌珠穆沁旗| 万荣县| 永康市| 广昌县| 海门市| 铁岭县| 时尚| 杂多县|