1. 程式人生 > >單片機串行口介紹

單片機串行口介紹

idt 數據傳輸 align 異步 復雜 width 波特率 字符 重裝

介紹


串行口是單片機與外界進行信息交換的工具,8051單片機的通信方式有兩種:

並行通信:數據的各位同時發送或接收。 串行通信:數據一位一位次序發送或接收。

串行通信的方式


異步通信

  • 用一個起始位0表示字符的開始,用停止位1表示字符的結束,中間夾著8個數據位,字符能一個接一個傳送
  • CPU與外設之間必須有字符格式和波特率兩項規定
  1. 字符格式規定能使雙方把0和1串理解成同一種意義,原則上自由制定,通用角度使用標準如ASCII
  2. 波特率即數據傳輸速率,每秒傳送的二進制位數,如120字符/s,每個字符10數位,則傳送波特率為1200波特

同步通信

去掉了開始結束標誌提高速度,但由於數據塊傳遞開始要用同步字符來指示,同時要求由時鐘來實現發送端與接收端之間的同步,故硬件較復雜。

通信方向

在串行通信中,把通信接口只能發送或接收的單向傳送辦法叫單工傳送;把數據能雙向傳遞稱為雙工傳送。半雙工傳送兩機之間不能同時進行發送和接收,任一時該,只能發或者只能收信息。全雙工傳送是能同時發送接收。

串行接口結構


  • 51單片機一個可編程的全雙工串行通信接口。可用作異步通信方式(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 可變

串行口的工作方式


方式0

  • 為移位寄存器輸入/輸出方式。可外接移位寄存器以擴展I/O口,也能外接同步輸入/輸出設備。8位串行數據者是從RXD輸入或輸出,TXD用來輸出同步脈沖。
  • 輸出:發送完畢後終端標誌T1硬件置位。(同其他)
  • 輸入:當 RI =0和REN =1同時滿足開始接收,接收到第八位後數據移至寄存器,硬件置位RI。

方式1

  • 為波特率可變的10位異步通信方式。
  • 輸出:當執行一條指令將數據寫入發送緩沖SBUF時,就啟動發送,發送完一幀硬件置位T1
  • 輸入:檢測1-0跳變,使用前用軟件清零RI和SM2

方式2

  • 為固定波特率的11位UART方式。它比方式1增加了一位可程控為1或0的第9位數據。
  • 輸出:11位,附加第九位是SCON的TB8位,可作為多機通信中地址/數據信息標誌位、奇偶校正位。別的同其他
  • 輸入:123同

方式3

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

波特率選擇


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

方式2:波特率由 PCON 中的SMOD位決定

波特率=2SOMD/64*fosc,SMOD=0或1

方式1和3:

波特率=定時器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位定時器/計數器模式,所以用它來做波特率發生器最恰當。

單片機串行口介紹