51微控制器RS232序列通訊實現方法

上位機和下位機如何通訊

RS-232應用範圍廣泛、價格便宜、程式設計容易並且可以比其它介面使用更長的導線,隨著USB埠的越來越普遍,將會出現更多的把USB轉換成RS-232或其它介面的轉換裝置。但是RS-232和類似的介面仍將在諸如

監視

控制系統

這樣的應用中得到普遍的應用。

喜歡請點 關注,您的支援是我繼續分享的動力。

RS232標準採用的介面是9針或25針的D型插頭,常用的一般是9針插頭。

51微控制器RS232序列通訊實現方法

圖1 序列通訊

本文是STC89C52序列口經RS232電平轉換後,與PC機序列口相連。PC機可使用串列埠除錯應用軟體如: “WINDOWS 超級終端”、“串列埠除錯助手”、“串列埠精靈”等,實現上位機與下位機的通訊。

01

電路原理圖

RS232串列埠通訊電路如下所示:

51微控制器RS232序列通訊實現方法

圖2 電路原理圖

圖2中COM1E8為DB9針接頭,中間晶片為MAX232,TXD、RXD與51微控制器的TXD、RXD引腳相連線。其它器件如圖2中所示,其值具體標註。

02

RS232序列口工作原理

當PC機與微控制器進行通訊時,PC機的RS232介面的邏輯電平為:邏輯

1

=

-3

~

-15

V;邏輯

0

=

3

~

15

V。51微控制器的邏輯電平(TTL電平標準)為:邏輯1>2。0V,邏輯0<0。8V 。為了能夠使PC機和微控制器正常通訊,需要電平轉換晶片MAX232(如上圖)。

MAX232晶片的作用:是將微控制器輸出的TTL電平轉換成PC機能接收的232電平或將PC機輸出的232電平轉換成微控制器能接受的TTL電平。

MAX232晶片是美信(MAXIM)公司專為RS-232標準串列埠設計的單電源電平轉換晶片,使用+5v單電源供電。晶片內部包含3部分電路:雙路電荷泵電路(DC-DC電壓轉化器)、RS232驅動電路、RS232接收器電路。

第一部分是電荷泵電路。由1、2、3、4、5、6腳和4個電容構成。功能是產生+12v和-12v兩個電源,提供給RS-232串列埠電平的需要。

第二部分是資料轉換通道。由7、8、9、10、11、12、13、14腳構成兩個資料通道。7、10、11、14組成驅動器電路。8、9、12、13組成接收器電路。其中13腳(R1IN)、12腳(R1OUT)、11腳(T1IN)、14腳(T1OUT)為第一資料通道。8腳(R2IN)、9腳(R2OUT)、10腳(T2IN)、7腳(T2OUT)為第二資料通道。

TTL資料從11引腳(T1IN)、10引腳(T2IN)輸入轉換成RS-232資料從14腳(T1OUT)、7腳(T2OUT)送到電腦DB9插頭;DB9插頭的RS-232資料從13引腳(R1IN)、8引腳(R2IN)輸入轉換成TTL/CMOS資料後從12引腳(R1OUT)、9引腳(R2OUT)輸出。

第三部分是供電。15腳GND、16腳VCC(+5v)。

微控制器串列埠通訊設定步驟可參考

51微控制器序列通訊,你需要知道這幾件事

串列埠初始化設定後,當接收或者傳送完成,即可讀取SBUF的值或者寫入SBUF值。

51微控制器RS232序列通訊實現方法

序列通訊

03

程式設計

#include

#define uchar unsigned char

void inituart();

uchar read_byte();

void inituart(){

ES=0;

PCON|=0x80;

TMOD=0x20;

TH1=TL1=0xF3;

SCON=0x50;

EA=1;

ES=1;

TR1=1;

}

void main(){

inituart();

while(1);

uchar read_byte(){

uchar character;

character = SBUF;

return character;

void uart() interrupt 4 {

if(RI){ RI=0;

SBUF=read_byte() + 1; while(!TI);

}

else{

TI=0;

}

ES=1;

51微控制器RS232序列通訊實現方法

資料線