『壹』 請問RS232和RS485串口電路一樣嗎 ,怎麼接線的啊
都是 串口通信,應用場合不同:
RS232 -3線全雙工,點對點通信,傳輸距離 25米以內。
RS485 -2線半雙工,點對多主從通信,傳輸距離可達 1200米以上
RS485 -4線全雙工,主從通信,傳輸距離可達 1200米以上
由於工業現場通信節點多,位置分散,通信距離遠,要求使用最少的線材完成相應的通信任務。根據相關的要求,人們開發出利用兩根導線實現多節點互聯的EIA RS-485匯流排標准。RS-485匯流排採用差分平衡電路,即一條導線上的電壓是另外一條導線的電壓的取反值,接收器輸入電壓為兩根導線電壓的差值。由於其在兩條線路上傳遞的是大小相同,方向相反的電流,而雜訊電壓對於線路的影響都是同時出現,兩條線路的雜訊電壓相互抵消,極大的削弱雜訊的影響。差分平衡電路不受節點之間的地平電壓差的影響,EIA 485沒有規定引腳定義,信號功能,只需保持兩根信號線相鄰,在同一個雙絞線中,引腳A,B不能互換就可以了,所以在工業現場使用過程中,RS-485介面沒有標準的規范,有可能是DB9,也有可能是RJ45/RJ11,但是用的最多的還是工業接線端子。由於RS-485匯流排採用差分平衡電路,極大的抑制雜訊干擾,有極強的抗共模干擾能力,輸入電壓檢測靈敏度為200毫伏(電壓信號可以在極遠距離進行恢復),使得RS-485的傳輸距離可以達到1200米(傳輸速率在110Kbps情況下)。最大傳輸速率10Mbps(傳輸距離12米)。RS-485支持多點通信,多個驅動器和接收器共享一條信號通道,在半雙工連接模式下,只能有一個驅動器工作,多個驅動器同時啟用,會產生線競爭(導致通信失敗),同時容易產生大電流,可能導致晶元燒毀。一般485晶元建議使用限流和過熱關閉功能保護晶元。
RS-485看:
http://ke..com/view/542681.htm
RS-232介面有DB25介面和DB9介面兩種,現在普通使用的基本上都是DB9介面,DB25介面基本上不再使用,DB9介面定義如下(1.載波檢測,2.接收數據,3.發送數據,4.數據終端准備就緒,5.信號地,6.數據機就緒,7.請求發送,8.允許發送,9.振鈴提示),RS-232串口相互連接分為通過Modem連接和無Modem連接,由於乙太網,RS-485匯流排,CAN匯流排等匯流排的普及,通過Modem連接做較長距離通信已經基本上不再使用。無Modem連接即直接連接則分為握手連接和無握手連接,無握手連接直接使用2,3,5三個針腳就可以使用,而握手連接則是必須使用請求發送,允許發送,准備就緒等信號,握手連接又稱全信號連接。由於RS-232使用單端非差分電路,多條線路共用一個接地線,長距離傳輸時,不同節點的接地線電平差異可能會達到幾伏,有可能導致信號的誤讀,從而導致RS-232傳輸距離不能超過15米,傳輸速率不能超過110Kbps.
RS-232看:
http://ke..com/view/112004.ht
『貳』 串口監視硬體電路
個人覺得PC需要有兩個串口分別來監視AB間的收和發.因為232是全雙工,有兩條數據線,要監視兩條數據線便需要將兩個串口RXD分別接入到這兩條線.
具體操作方式:PC串口1的RXD接到A的TXD,PC串口2的RXD接到A的RXD,PC串口1和2的GND跟AB的GND短接。
以上只提供了一個思路,未經過測試,有條件的話可以測試一下
『叄』 什麼是串口通信
串列介面是一種可以將接受來自CPU的並行數據字元轉換為連續的串列數據流發送出去,同時可將接受的串列數據流轉換為並行的數據字元供給CPU的器件。
一般完成這種功能的電路,我們稱為串列介面電路。
串口按位(bit)發送和接收位元組。盡管比按位元組(byte)的並行通信慢,但是串口可以在使用一根線發送數據的同時用另一根線接收數據。它很簡單並且能夠實現遠距離通信。
(3)串口通信電路擴展閱讀:
串口通信的結構:
串口通信是指外設和計算機間,通過數據信號線 、地線、控制線等,按位進行傳輸數據的一種通訊方式。
這種通信方式使用的數據線少,在遠距離通信中可以節約通信成本,但其傳輸速度比並行傳輸低。
串口是計算機上一種非常通用的設備通信協議。大多數計算機(不包括筆記本電腦)包含兩個基於RS-232的串口。串口同時也是儀器儀表設備通用的通信協議;
很多GPIB兼容的設備也帶有RS-232口。同時,串口通信協議也可以用於獲取遠程採集設備的數據。
『肆』 51單片機和計算機之間實現串口通信的電路圖
串口通訊參考程序如下:
來源:深入淺出AVR單片機
#include<reg51.h>
unsignedcharUART_RX;//定義串口接收數據變數
unsignedcharRX_flag;//定義穿行接收標記
/*********************************************************************************************
函數名:UART串口初始化函數
調用:UART_init();
參數:無
返回值:無
結果:啟動UART串口接收中斷,允許串口接收,啟動T/C1產生波特率(佔用)
備註:振盪晶體為12MHz,PC串口端設置[4800,8,無,1,無]
/**********************************************************************************************/
voidUART_init(void){
EA=1;//允許總中斷(如不使用中斷,可用//屏蔽)
ES=1;//允許UART串口的中斷
TMOD=0x20;//定時器T/C1工作方式2
SCON=0x50;//串口工作方式1,允許串口接收(SCON=0x40時禁止串口接收)
TH1=0xF3;//定時器初值高8位設置
TL1=0xF3;//定時器初值低8位設置
PCON=0x80;//波特率倍頻(屏蔽本句波特率為2400)
TR1=1;//定時器啟動
}
/**********************************************************************************************/
/*********************************************************************************************
函數名:UART串口接收中斷處理函數
調用:[SBUF收到數據後中斷處理]
參數:無
返回值:無
結果:UART串口接收到數據時產生中斷,用戶對數據進行處理(並發送回去)
備註:過長的處理程序會影響後面數據的接收
/**********************************************************************************************/
voidUART_R(void)interrupt4using1{//切換寄存器組到1
RI=0;//令接收中斷標志位為0(軟體清零)
UART_RX=SBUF;//將接收到的數據送入變數UART_data
RX_flag=1;//標記接收
//用戶函數內容(用戶可使用UART_data做數據處理)
//SBUF=UART_data;//將接收的數據發送回去(刪除//即生效)
//while(TI==0);//檢查發送中斷標志位
//TI=0;//令發送中斷標志位為0(軟體清零)
}
/**********************************************************************************************/
/*********************************************************************************************
函數名:UART串口發送函數
調用:UART_T(?);
參數:需要UART串口發送的數據(8位/1位元組)
返回值:無
結果:將參數中的數據發送給UART串口,確認發送完成後退出,採用非中斷方式
備註:
/**********************************************************************************************/
voidUART_T(unsignedcharUART_data){//定義串口發送數據變數
ES=0;//禁止穿行中斷
SBUF=UART_data;//將接收的數據發送回去
while(TI==0);//檢查發送中斷標志位
TI=0;//令發送中斷標志位為0(軟體清零)
ES=1;//打開穿行中斷
}
/*********************************************************************************************
函數名:UART串口發送字元串函數
調用:UART_S(?);
參數:需要UART串口發送的數據(8位/1位元組)
返回值:無
結果:將參數中的數據發送給UART串口,確認發送完成後退出,採用非中斷方式
備註:
/**********************************************************************************************/
voidUART_S(unsignedchar*str)
{
while(1)
{
if(*str=='