51微控制器RS232序列通訊實現方法
上位機和下位機如何通訊
RS-232應用範圍廣泛、價格便宜、程式設計容易並且可以比其它介面使用更長的導線,隨著USB埠的越來越普遍,將會出現更多的把USB轉換成RS-232或其它介面的轉換裝置。但是RS-232和類似的介面仍將在諸如
監視
和
控制系統
這樣的應用中得到普遍的應用。
喜歡請點 關注,您的支援是我繼續分享的動力。
RS232標準採用的介面是9針或25針的D型插頭,常用的一般是9針插頭。
圖1 序列通訊
本文是STC89C52序列口經RS232電平轉換後,與PC機序列口相連。PC機可使用串列埠除錯應用軟體如: “WINDOWS 超級終端”、“串列埠除錯助手”、“串列埠精靈”等,實現上位機與下位機的通訊。
01
電路原理圖
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值。
序列通訊
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;
資料線