RS232作為標準的計算機串行接口已被廣泛使用,與此同時,隨著現場總線技術的飛速發展,具有實時性好、可靠性高、結構簡單等優點的CAN總線在測控系統中也越來越多地被采用,但由于兩者的總線結構、通信協議及傳輸特點各不相同,因而給不同設備之間的連接帶來諸多不便。因此,如何以最簡單的方式實現CAN節點與RS232串行口的通信就成為工程實踐中一個不可回避的問題。
本文主要就是說at89c51接max232方法和程序,具體的我們一起來了解一下吧。
at89c51接max232方法
MAX232與51單片機之間的通信連接很簡單,因為所謂的MAX232通信標準,就是對插件樣式、信號名稱和意義以及所謂的驅動器/接收器的電氣模式這種硬件作出規定。一般的都是9針的接口,其中包括CD接口:數據通道接收載波的檢測;RD接口:接收數據;SD接口:發送數據;ER接口:數據終端就緒;SG接口:信號用接地;DR接口:數據集就緒;RS接口:請求發送;CS接口:允許發送;CI接口:被呼表示。
用以上接口進行數據通信,還有對電平的要求。所以與51單片機進行通信連接的方式很簡單,首先要解決的是電平標準,51的I/O口最大輸出5V電壓,而RS-232要求電壓在±10V,為達到電平匹配,需用到MAX232CPF電平轉換芯片,將0~5V電平轉換為±10V電平,從而實現電平匹配;然后,數據接口只用到了數據發送與接收2個端口,還有數據的請求發送與允許發送,共4個端口,MAX232CPF還有其他一些外圍電路接口,但比較簡單,都是些電容接口,從而實現單片機與RS232接口的通信。
51單片機串口max232通信程序
//工作晶振為11.0592MHz,否則出現返回值錯誤,一個字節的發送
//工作晶振為11.0592MHz,否則出現返回值錯誤,一個字節的發送
#include《regx52.h》
#define uchar unsigned char
#define uint unsigned int
uchar a,flag;
uchar table[]={“very good ”};
//-----------初始化定時器和串口-
void inital_timer1()
{
TMOD=0X20; //必須使用定時器1,串口使用規定
TH1=0Xfd; //定時器1,工作方式2,8位 自動重裝
TL1=0Xfd; //高8位與低8位數值必須相同
TR1=1; //定時器1允許位
REN=1; //串口使能
SM0=0; //串口 工作方式設置,工作方式1
SM1=1; ES=1; //串口中斷使能
EA=1; // 總中斷使能
}
//----------串口中斷---------
void gorpe() interrupt 4
{
RI=0; //接受中斷標志位,硬件置1,必須軟件置0
a=SBUF; // 特殊功能寄存器
flag=1; // 檢測標志位
}
//-----接收數據,并向上位機作出反應(即發送返回數據)---
void display()
{
uchar i;
if(flag==1)
{
ES=0; //關閉串口中斷,接下來要發送數據,否則發送完一個數據仍會產生中斷,產生死循環
for(i=0;i《10;i++)
{
SBUF=table[i];
while(!TI); //判斷是否發送完成
TI=0; //發送中斷標志位
}
SBUF=a;
while(!TI);
TI=0;
ES=1;
flag=0;
}
}
評論
查看更多