1. 程式人生 > >51微控制器之串列埠通訊(一)

51微控制器之串列埠通訊(一)

一.基礎知識

1.序列通訊和並行通訊:目前用的比較多的是序列通訊。序列通訊優點是連線簡單,傳輸距離遠;缺點是傳輸速度慢。
2.序列通訊:分為同步通訊和非同步通訊;非同步通訊是指傳送和接收裝置利用各自的時鐘控制資料的傳送和接收。
3.序列通訊的傳輸方向:單工,半雙工,全雙工。
4.波特率:每秒鐘傳輸2進位制程式碼的位數,如1個位元組為10位,每秒傳輸240個位元組,則波特率為10*240=2400bps,單位是bps;
5.RS-232C:25個管腳,我們用到的是PGND(保護接地)。TXD(傳送資料),RXD(接收資料)。
6.RS232電平定義:邏輯1=-3到-15V;邏輯0=+3到+15V;
7.微控制器採用TTL電平規範:邏輯1 = 5V;邏輯0 = 0V;
8.RS422為全雙工,RS485是RS422的變型,為半雙工:RS485的訊號傳輸採用兩根線的電壓來表示邏輯0
和邏輯1.,傳輸採用差動訊號,所以它的干擾抑制性好,又因為它阻抗低,無接地問題,所以傳
輸距離可達1200米,傳輸速率可達1Mbps。
9.SBUF:當傳送資料時i = SBUF,接收資料時SBUF = i;i傳送或接收儲存的數值。

二.串列埠通訊進階

1.51串列埠控制暫存器SCON,可以位定址

三.串列埠接收實驗
實驗解說:利用串列埠接收計算機發送的資料,並送人P0口,來控制LED的亮滅
實驗注意事項:傳送資料應選擇HEX模式,如圖
51微控制器之通訊 - 元寶 - 元寶的世界




實驗程式:
/*
專案名稱:串列埠接收實驗
專案內容:串列埠接收電腦傳送的資料控制led的亮滅
時間:2015年12月23日
專案負責人:YUAN
*/
#include <reg52.h>
typedef unsigned char   uChar8;
typedef unsigned int    uInt16;


void
UartInit(void); //串列埠初始化 void ReceiveData(void); //接收資料 void main(void) { /*初始化:包括定時器中斷的設定, 串列埠暫存器設定,波特率設定*/ UartInit(); while(1) { /*接收計算機發送的資料並送給led控制埠*/ ReceiveData(); } } void UartInit(void) { TMOD &= 0x0f; //只改變要改變的 TMOD |= 0x20; //設定定時器0為工作方式2
TL1 = 0xfd; TH1 = 0xfd; //設定波特率為9600bps TR1 = 1; //允許T1開始計數 SCON &= 0x5f; SCON |= 0x50; //設定串列埠工作在方式1,允許接收資料 } void ReceiveData(void) { //如果接收中斷為1,則說明有傳送 if(RI) { RI = 0; P0 = SBUF; //把傳送的資料送給P0控制LED } }