A. 51單片機中SBUF中讀出的數據類型
SBUF讀出來的是ASCII碼,數據類型當然是unsigned char,所以如果你從PC發一個數字9給單片機,單片機實際接收到的數據是0x39(9對應的ASCII碼),所以你在程序中判斷的值應該是0x39而不是9。希望我的回答對你有幫助,謝謝!
B. 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. 單片機傳輸給上位機的是ASCII碼,如何在上位機顯示為十進制數用C語言編程
如果只是數字0-9的ASCII碼,那簡單。0-9對應的ASCII碼為48-57,上位機將接收到的ASCII碼減48就是0-9的數字,兩位以上數字自己合並一下問題就解決了,方法有點土但實用。當然,用查表的方式也可以做到,程序稍多一些,要讓人幫忙編程序至少要告知:
1,傳輸給上位機ASCII碼的范圍;
2,上位機指的是PC還是單片機。
D. 上位機給51單片機傳送ASCII碼,單片機如何在液晶中顯示出來對應的字元呀
如果液晶能直接顯示ASCII碼的啊,比如上位機向單片機傳送『HELLO』字元串,這就是ASCII碼組成的,即直接送到液晶上顯示即可。
但是有的液晶不能直接顯示,那就把ASCII碼對應的字模送到屏幕上顯示了。