導航:首頁 > 操作系統 > 51單片機rs485信號

51單片機rs485信號

發布時間:2022-08-11 13:33:37

① 關於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單片機用485進行串列通信

很明顯,第一個程序是發送程序,通過定時器控制發送的內容;第二個程序時接受程序,使用串口中斷接收。Rs485晶元有控制管腳,接收使能是低電平,一般只有在需要發送時方將其轉為發送狀態(高電平),發送完畢後即轉為接收狀態。

③ rs485實現兩個51單片機之間的通信

因該可以,485通信最遠1.2km,根據你設置通信距離,波特率越大,通信距離越短,按你的要求,波特率設置為9600就可以

④ 51單片機能直接接收RS485信號嗎

51單片機能直接接收RS485信號嗎
不行,要用RS485轉換的。RS485有8個引腳:一個電源;一個地,一個差分+;一個差分-(是通訊線),還有一個接單片機RXD,一個接TXD,另外兩個是輸出控制和輸入控制的(這兩個通常連在一起)。
所以單片機的輸出是先送到TXD,再由RS485變成差分信號送出去的;
輸入是把差分的輸入信號由RS485送到單片機的RXD引腳的。

⑤ 51單片機485通訊實驗

void send(unsigned char dat)
{
DE=1; //485發送程序多了個DE控制,其他不變
SBUF=dat;
while(TI==0);
TI=0;
DE=0;
}

⑥ 51單片機之間如何實現485通訊

如果自己做板,加一個485晶元,單片機串口與之相連,485晶元出來的是差分的485信號。

⑦ 51單片機與PLC上的RS485如何連接

一般單片機的通訊介面是UART串口電平是TTL電平,與485的差分信號是無法直接連接的,中間需要需要用485晶元進行轉換的, 給你推薦一顆晶元PB331,可以兼容485協議,接線不分極性匯流排可以供電。

⑧ 51單片機怎樣和PC通過RS485進行通信

你已經用USB轉成RS485,再將RS485轉成TTL了,剩下的事就簡單了,就把RS485TTL的RXD接到單片機RXD,把485TTL的TXD接到單片機的TXD上就行了。然後就要寫程序了。電腦的USB轉485線要安驅動程序,虛擬出一個串口來,電腦就可以用串口調試助手與單片機通信了。

⑨ 51單片機rs485通訊問題,高分求助!

你這類似modbus協議,發送8個位元組,這程序好寫的。先聲明一個數組,8個元素,依次對應一幀數據的8個位元組,按協議先寫成每個元素的初始數。
發送時,地址位元組重寫入需要發送的地址,功能碼,數據碼需要變化就重寫入數組,然後循環計算前面位元組的和,作為校驗和寫入最後的元素內。
好啦,要發送的數據幀准備完,就可以循環發送這個數組了,就是發送一幀數據了。
下位機接收數據也採用類似方法,只是先接收,後判斷處理一幀數據。

⑩ RS485與51單片機通信

因該可以,485通信最遠1.2km,根據你設置通信距離,波特率越大,通信距離越短,按你的要求,波特率設置為9600就可以

閱讀全文

與51單片機rs485信號相關的資料

熱點內容
vue類似電腦文件夾展示 瀏覽:111
後備伺服器有什麼功效 瀏覽:268
連不上伺服器怎麼連 瀏覽:600
什麼構架的可以刷安卓系統 瀏覽:771
愛奇藝APP怎麼兌換CDK 瀏覽:994
程序員買4k顯示器還是2k顯示器 瀏覽:144
python多進程怎麼多窗口 瀏覽:818
電腦文件夾怎麼取消類別 瀏覽:47
cad拉線段命令 瀏覽:924
如何用電腦清理手機沒用的文件夾 瀏覽:100
儲存層次結構對程序員的意義 瀏覽:477
微信文件夾查看器 瀏覽:952
android視頻聊天開源 瀏覽:552
思科iso命令 瀏覽:944
手機網頁源碼里的視頻地址 瀏覽:681
哈利波特魔法覺醒要怎麼選伺服器 瀏覽:993
情感交友網站php 瀏覽:942
id下載不了app怎麼回事 瀏覽:996
有什麼好看的伺服器小說 瀏覽:293
程序員四級沒過有什麼影響 瀏覽:540