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码对应的字模送到屏幕上显示了。