導航:首頁 > 操作系統 > 單片機串口接收字元串

單片機串口接收字元串

發布時間:2022-04-17 08:37:55

㈠ 51單片機串口接收字元串

51單片機串口接收字元串,接收的字元串長度不定,無結束符,要判斷這個字元串結束,確實比較難。如果每個字元串還是連續發送,幾乎是無法判斷的。如果每個字元串之前有一定的空閑時間,可以根據最短的空閑時間來判斷結束。即接收每一個字元都開始計時,接收下一個字元結束計時,如果計時的時間超過最短的空閑時間,則前一個字元為結束,且新字元串開始。並再重新計時。

㈡ C51單片機如何從PC機串口接收字元串

我的程序的一部分,供參考

//主流程
void main(void)
{
//系統初始化
SCON = 0x50; //串口方式為1,SM2= 0,TB8= 1
PCON = 0x80; // SMOD=1
TMOD = 0x22; //設定定時器0/1的工作模式為方式2
//設置T0中斷的定時時間為1/7200毫秒
TH0 = 0x00;
TL0 = 0x00;
//設置非同步串口的波特率
//TH1 = 0x0f4; //OSC = 11.0592MHz bps = 4800 SMOD=1
//TL1 = 0x0f4;
TH1 = 0x0fd; //OSC = 11.0592MHz bps = 19200 SMOD=1
TL1 = 0x0fd;
//設置中斷優先順序,T0中斷為高優先順序中斷,其他為低優先順序中斷
IP = 0x02; // 設置中斷優先順序--T0為高優先順序,其他低

ET0 = 1; //定時器0中斷
ES = 1; //串列介面中斷
EA = 1; //系統中斷允許

TR0 = 1; //啟動定時器0
TR1 = 1;
......................

//串口接收中斷處理程序
//發送採用查詢處理
void SerialComm(void) interrupt 4
{
_pReceive[_cReceive] = SBUF;
_cReceive ++;
if(_cReceive >= RecBuffSize) _cReceive = 0;
RI = 0;
}

//串口發送一個位元組
//senddata:需要發送的數據
void SendOneByte(unsigned char senddata)
{
ES = 0;
TI = 0;
SBUF = senddata;
while(TI == 0);
TI = 0;
ES = 1;
}

㈢ 51單片機串口收發字元串求助

51單片機串口發字元串的方法有多種,比較容易理解的方法是:先定義一個要發送的字元串,就是一個字元串數組。
發送時,連續發送個數組。
接收字元串,也可以採用類似的方法,先聲明一個字元串,接收時,每接收一個就存入這個串中,接收結束,查這個字元串就行了。

㈣ 51單片機 串口通信 檢查接收的字元串

首先SBUF只有8位 即一位元組,而"adcd"有4位元組+『』個,你這把temp和「abcd」比較永遠只能為假。所以LED1=!LED1;這條語句不能執行。正確的做法是建立一個變數,將SBUF接受到的字元存入變數,然後再比較

㈤ 單片機怎麼接收字元串

void init_ser(){ TMOD=0X20;//定時器1工作在方式2 TH1=0XFD; TL1=0XFD; //波特率9600 TR1=1; EA=1; SM0=0; SM1=1; REN=1;//允許串口接收 ES=1;//開串口 中斷 }void delay(unint z){ unint x,y; for(x=z;x>0;x--) for(y=110;y>0;y--); }void ser() interrupt 4 //中斷函數不用聲明 { if(RI==1) { RI=0; ser_receive=SBUF; if(ser_receive=='a') { m=1; } if( m==1 && ser_receive!='z') { receive_data[i]=ser_receive; i++;// if(i==36)// {// i=0;// ser_flag=1;// } } else if (ser_receive=='z') { i=0; m=0; ser_flag=1; xianshi=1; } } }void uart(){ if(ser_flag==1) { ES=0; ser_flag=0; for(j=0;j<57;j++) { SBUF=receive_data[j]; while(!TI); TI=0; delay(10); } ES=1; }}我剛寫的,接受以a開始,以z結束的字元串,測試沒問題。

㈥ 請問51單片機如何接收字元串

上位機 與 下位機,發送 與 接收 一串數據,單片機接收 是一個位元組 一個位元組 接收的
需要有 通訊協議,可以自己設計 一個 如 多機通訊
指令碼 機器號 數據1 數據2 - - - 數據n 校驗碼 結束碼
這樣 單片機可以判斷 接收的數據 類型,接收到數據 先存放在 緩沖區,收到結束碼後
再判斷 指令 是否是 本機數據,是再按照 數據類型處理。

㈦ 51單片機串口用數組接收字元串程序怎麼寫

對於固定的數據,可以通過順序判斷來識別用if或switch語句來判決即可
通過串口中斷,每次進入把SBUF的值賦給T,通過判決、累加NUM的值最終取得冒號後面的數值(不知樓主是否是要最後的數值)
voidUART_Int(void)interrupt4
{
staticucharNUM=0;
ucharT;
if(RI==1)
{
RI=0;
T=SBUF;//接收串口數據
switch(T)//如果是按value":0的順序讀進的話會最終觸發NUN=7的條件
{
case'v':
NUM=1;
break;
case'a':
if(NUM==1)
{
NUM=2;
}
else
{
NUM=0;
}
break;
case'l':
if(NUM==2)
{
NUM=3;
}
else
{
NUM=0;
}
break;
case'u':
if(NUM==3)
{
NUM=4;
}
else
{
NUM=0;
}
break;
case'e':
if(NUM==4)
{
NUM=5;
}
else
{
NUM=0;
}
break;
case'"':
if(NUM==5)
{
NUM=6;
}
else
{
NUM=0;
}
break;
case':':
if(NUM==6)
{
NUM=7;
}
else
{
NUM=0;
}
break;
default:
if(NUM==7)
{
LED=T; //LED為全局變數
}//把最後的數據傳給LED
NUM=0;
break;

}
}
}

㈧ 請問51單片機怎麼通過串口接收字元串能解釋一下代碼嗎謝謝了

看流程是什麼了,如果等待14個位元組接收完,那就是for循環,或者while等待。如果只是接收的話,就中斷,然後去讀數組,超過14個位元組就處理。

㈨ 單片機 串口接收的字元串如何轉為字元

樓主你好,樓上兄弟說的太復雜了,
恕我直言
沒看懂你想說明神馬問題,串口接收到的字元串如何轉化成字元,首先字元串是字元的連續儲存方式,那麼
例:
1char temp[4] = { A, B, C };這是一個標准字元串
那麼temp[0]=='A';為真
以此類推temp[1]
=='B'
1temp[3] == '/0';//c語言字元串結尾標示符./0轉義符
如果你想顯示中文那麼
中文是16bit的,雙位元組字元
1234short temp;temp=sbuf;將第一個數據獲取回來 temp<<=8;將數據左移8位temp|=sbuf;將第二次的數據帶入進來
可能會我記錯了高低位順序,要是出錯可以反過來即可!
小弟告訴你一個最簡單最實用的辦法
如何把字元中的數字變成變數數據
switch
你會用么
就是開關選擇語句
123456789static char temp;//申明一個變數 這是個全局靜態變數temp = sbuf;switch(temp) {case '0':temp = 0; break;//break必須要加,否則數據覆蓋case '1':temp = 1; break;case '2':temp = 2;break;...}
以此類推
,這樣你的道的字元串或字元數據則能變成數據,
字元串也只是數組而已
而樓主想要的字元也就是其中的一個元素罷了
可以用指針方式提取
亦可以用數組下標提取!這用的都是ascll碼
但是不需要理解到碼表上
請樓主明察搶答時間
,樓下請勿復制,祝樓主早日解決程序問題,加油加油

㈩ 串口通信時 如何讓單片機接收以特定字元開頭的字元串,比如「a 10 11 12 13 ff 」 如果判斷發過來的字元串

你可以開辟一個緩沖區,Buf[100],做成一個循環隊列,串口中斷裡面接收到一個字元,就往隊列裡面添加接收到的新字元。主程序裡面查詢是否連續幾個字元為你定義的包頭:「a 10 11 12 13 ff 」 ,如果是,就開始處理以下的字元。

閱讀全文

與單片機串口接收字元串相關的資料

熱點內容
蘋果筆記本t2加密晶元怎麼打開 瀏覽:796
安卓如何把手機投屏至電視 瀏覽:737
方舟編譯器現在可提速哪些軟體 瀏覽:58
微信加密為什麼是黑屏 瀏覽:473
android去電狀態 瀏覽:602
蘋果13如何加密視頻 瀏覽:813
linuxweblogic緩存 瀏覽:67
雲伺服器不同地域 瀏覽:946
python鬧鍾怎麼打 瀏覽:686
虛擬主機伺服器有什麼區別 瀏覽:833
演算法與程序的奧秘章節檢測 瀏覽:377
找pdf 瀏覽:529
與伺服器連接斷開如何處理 瀏覽:833
伺服器維修預計十分鍾什麼意思 瀏覽:170
黑馬程序員主打教學是什麼 瀏覽:41
python九乘法表怎麼編寫 瀏覽:974
思維方式pdf 瀏覽:656
tcc社區app怎麼注冊 瀏覽:941
央視網下載加密 瀏覽:454
命令行訪問伺服器 瀏覽:36