⑴ 單片機 串口接收的字元串如何轉為字元
樓主你好,樓上兄弟說的太復雜了,
恕我直言
沒看懂你想說明神馬問題,串口接收到的字元串如何轉化成字元,首先字元串是字元的連續儲存方式,那麼
例:
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碼
但是不需要理解到碼表上
請樓主明察搶答時間
,樓下請勿復制,祝樓主早日解決程序問題,加油加油
⑵ 51單片機串口通信如何把SBUF收到的ASCII碼轉換為字元
接收時加個轉碼處理。假設你上位機發送的是文本格式的十六進制數據,那麼下位機處理需要:
字元處理,temp = SBUF; if ((temp>='0')&&(temp<='9')) temp -= '0'; else if ((temp>='A')&&(temp<='F')) temp = temp - 'A' + 10; else if ((temp>='a')&&(temp<='f')) temp = temp - 'a' + 10; else temp = 0;
每兩個字元拼接成1位元組數據,數組中第偶數個為higher、下一個為lower,然後output = higher << 8 + lower;
最好加個超時通訊結束處理。
⑶ C單片機 變數值怎麼轉換成字元串
uchar tmp[3];
tmp[0] = num%10 + 0x30; //看起來lz事項用ascii碼,所以我加了個0x30,如果不用請去掉
tmp[1] = num/10 + 0x30;
tmp[2] = 0;
Display_ASCII8X16(uint x0,uint y0, tmp, Color);
⑷ 單片機 串口接收的字元串如何轉為字元
你好:
得到的數要對照ASCII碼表,做一個簡單的加法就可以,如得到的數為十六進制的0x00-0x09轉換為字元形式的'0'到'9'(字元』0『的ASCII碼為48),那麼比如得到數賦值給變數data,那麼轉換為字元就是data+48,然後字元形式輸出就可以。
⑸ 單片機發送整型轉字元串數據C程序
void main (void){
unsigned char i;
InitUART();
while (1){
for(i=100;i<1001;i++)
long2string(i,&ch[0]);
DelayMs(200);//延時循環發送
}
}
主函數裡面,沒有調用發送的
⑹ 51單片機中C語言int能轉換為字元串類型嗎怎麼轉換
因為是C51, 所以不能用 VC++裡面的C語言代碼 eg: itoa, 也不要用列印的 eg: sprintf
為什麼? 因為C51的內存太小 ,如果這樣用非常佔用資源. 下面的朋友回答就顯得不夠專業了.
所以, 一般我們是這樣自己寫代碼使用實現的: 字元串改為數組的形式
unsigned char dat[5];
dat[4]=Num/10000+'0';
dat[3]=Num%10000/1000+'0';
dat[2]=Num%1000/100+'0';
dat[1]=Num%100/10+'0';
dat[0]=Num%10+'0'
⑺ 單片機 unsigned long轉字元串問題
可以把數據的每一位,通過取余和除法取出來,然後把數據轉換成字元。單個字元就可以處理成字元串使用。也可以看一下有沒有適合你的標准C的轉換函數。
⑻ 單片機C51中將浮點數轉成字元用串口發出,有時會出錯
仔細看了一下,問題出現在Send_Data(num_ganguo[i]);這里。你去看一下,你是如何處理字元串的,是不是,把數據中的除上位機的數據的數字都處理成了0的ASCII碼了。(個人見解,如有不足,請指出)
⑼ 51單片機c語言如何把浮點型轉為字元串
使用stdio.h中的sprintf函數轉化即可:
#include<stdio.h>
floata=1.234;
charstr[10];
sprintf(str,"%f",a);
⑽ 51單片機,各種類型如何轉字元串,比如 uchar a[]= {1,2,3,4,5}; 如何轉換
+ 0x30就可以了!