❶ 51單片機怎樣和PC通過RS485進行通信
你已經用USB轉成RS485,再將RS485轉成TTL了,剩下的事就簡單了,就把RS485TTL的RXD接到單片機RXD,把485TTL的TXD接到單片機的TXD上就行了。然後就要寫程序了。電腦的USB轉485線要安驅動程序,虛擬出一個串口來,電腦就可以用串口調試助手與單片機通信了。
❷ 51單片機485通訊實驗
void send(unsigned char dat)
{
DE=1; //485發送程序多了個DE控制,其他不變
SBUF=dat;
while(TI==0);
TI=0;
DE=0;
}
❸ 急急急!!!51單片機問題!用485通信,接受字元串!!
不是你代碼的問題,硬體協議的問題
485是
半雙工
匯流排協議,232是全雙工匯流排協議,直接使用會出問題。
兩種解決辦法:
1,485有一條線是匯流排忙判斷(置位)線,把這條線的控制編到你的程序裡面控制一下。
2,買232轉422的轉換模塊,232調好後,422可以直接用,不用改程序
❹ 51單片機使用485匯流排怎樣控制單片機的雙向通訊
485介面晶元上都有一個方向控制引腳,直接接單片機的I/O口控制即可。485匯流排是主從式,必須有一個主機,由主機巡檢其它子機,巡到誰誰獲得匯流排使用權。
❺ 關於51單片機RS485通信問題
/*******************************************************************************
* 標題: RS485串口通信試驗(接受與發送) *
* *
* 1.通過本常式了解串口的基本原理及使用 ,理解並掌握對串口進行初始化 *
* *
* 2.請使用串口調試助手(Baud 4800、數據位8、停止位1、效驗位無)做為上位機(發送)數據和(接受)數據,
* 請在字元串輸入框中輸入字元和數字(HEX),按發送按鈕。觀看接受窗顯示情況.也可以用自動循環發送。
*
* 3.試驗RS485需要用RS232轉485的轉換頭。RS485的A對應串口頭的9針 B對應4針.接法大家可以參考原理圖。
* *
* 請學員認真消化本常式,學會用C語言操作串口和485的實現 *
********************************************************************************/
#include <REG52.H>
#include <stdio.h>
sbit RS485E=P3^7; //定義485的使能腳
bit SendFlag;
unsigned int ReData,SenData;
/**************************************
延時程序
**************************************/
void delay(unsigned char i)
{
unsigned char j;
for(i; i > 0; i--)
for(j = 200; j > 0; j--);
}
void main (void) {
SCON = 0x50; //REN=1允許串列接受狀態,串口工作模式1
TMOD|= 0x20; //定時器工作方式2
PCON|= 0x80;
//TH1 = 0xFD; //baud*2 /* reload value 19200、數據位8、停止位1。效驗位無 (11.0592)
TH1 = 0xF3; // //baud*2 /* 波特率4800、數據位8、停止位1。效驗位無 (12M)
TL1 = 0xF3;
TR1 = 1;
ES = 1; //開串口中斷
EA = 1; // 開總中斷
// IE = 0x0;
while(1)
{
if (SendFlag==1) // max485(半雙工通信) RE/DE定義 RE=0為接受狀態 DE=1為發送狀態(參考MAX485晶元管腳)
{ RS485E=1; // RS5485E=0為接收狀態 RS5485E=1為發送狀態
SBUF=SenData; //發送數據
delay(50);
}
else
{
RS485E=0; //接收狀態
}
}
}
/****************************************************
串口中斷程序
******************************************************/
void ser_int (void) interrupt 4 using 1
{
if(TI == 1)
{
TI = 0;
SendFlag = 0;
}
if(RI == 1) //RI接受中斷標志
{
RI = 0; //清除RI接受中斷標志
ReData = SBUF; //SUBF接受/發送緩沖器
SenData=ReData;
SendFlag = 1;
}
}
❻ 51單片機能直接接收RS485信號嗎
51單片機能直接接收RS485信號嗎
不行,要用RS485轉換的。RS485有8個引腳:一個電源;一個地,一個差分+;一個差分-(是通訊線),還有一個接單片機RXD,一個接TXD,另外兩個是輸出控制和輸入控制的(這兩個通常連在一起)。
所以單片機的輸出是先送到TXD,再由RS485變成差分信號送出去的;
輸入是把差分的輸入信號由RS485送到單片機的RXD引腳的。
❼ 用多塊51單片機用485進行串列通信
很明顯,第一個程序是發送程序,通過定時器控制發送的內容;第二個程序時接受程序,使用串口中斷接收。Rs485晶元有控制管腳,接收使能是低電平,一般只有在需要發送時方將其轉為發送狀態(高電平),發送完畢後即轉為接收狀態。
❽ 51單片機rs485通訊問題,高分求助!
你這類似modbus協議,發送8個位元組,這程序好寫的。先聲明一個數組,8個元素,依次對應一幀數據的8個位元組,按協議先寫成每個元素的初始數。
發送時,地址位元組重寫入需要發送的地址,功能碼,數據碼需要變化就重寫入數組,然後循環計算前面位元組的和,作為校驗和寫入最後的元素內。
好啦,要發送的數據幀准備完,就可以循環發送這個數組了,就是發送一幀數據了。
下位機接收數據也採用類似方法,只是先接收,後判斷處理一幀數據。
❾ 51單片機與PLC上的RS485如何連接
一般單片機的通訊介面是UART串口電平是TTL電平,與485的差分信號是無法直接連接的,中間需要需要用485晶元進行轉換的, 給你推薦一顆晶元PB331,可以兼容485協議,接線不分極性匯流排可以供電。
❿ 51單片機之間如何實現485通訊
如果自己做板,加一個485晶元,單片機串口與之相連,485晶元出來的是差分的485信號。