标题:
如何将变量值转字符串形式在上位机显示?
[打印本页]
作者:
LAW1100
时间:
2024-12-19 20:54
标题:
如何将变量值转字符串形式在上位机显示?
在不使用printf()函数情况下,用SBUF形式将变量值转字符串在上位机显示?第一次使用接触,请各位大佬们指点下:例如:将ADC读取的数字值在串口发上位机显示
unsigned int temp=0;
unsigned char sum=123;
temp=ADC_read();
SBUF=sum;
while(!TI);
TI=0;
DelayMs(1000);
这样在上位机显示HEX格式“FB”,而不是123
作者:
xiaobendan001
时间:
2024-12-20 07:30
直接发个INT,让上位机自己处理不行吗?
作者:
devcang
时间:
2024-12-20 09:02
上位机是电脑,功能强大,再将hex转换成dec,就是了,,,,每种编程语言都可做到的,如java Integer.parseInt("hex string", 16)
作者:
Graves
时间:
2024-12-20 09:11
转换一下再打印,例如打印变量是123,转字符串就要串口发3个数值'1''2''3'
SBUF='1';while(!TI);TI=0;
SBUF='2';while(!TI);TI=0;
SBUF='3';while(!TI);TI=0;
也就是写个函数把变量的百位十位个位提取出来转ascii后再依次发送
作者:
zhuls
时间:
2024-12-20 10:11
mcu处理一些本地数据是可以的,但上位机处理数据能力远胜MCU,所以一些数值转换还是放在上位机这边更好。特别是与MCU已经断联的数据。
作者:
LAW1100
时间:
2024-12-20 14:04
有的是用sprintf函数转成字符串后再从串口发送,如:unsigned char str[5];
unsigned char sum=123;
sprintf(str,"%d\r\n,sum);
sedstring(str);//从串口发送上位机
作者:
LAW1100
时间:
2024-12-20 20:40
void UartSend(char dat)
{
while (!TI);
TI = 0;
SBUF = dat/100;
while (!TI);
TI = 0;
SBUF=dat/10%10;
while (!TI);
TI = 0;
SBUF=dat%10;
}
UartSend(sum);
作者:
LAW1100
时间:
2024-12-21 08:05
上位机显示不对
作者:
Y_G_G
时间:
2024-12-21 09:14
单片机如果片上资源多的话
sprintf是相对好用的函数
对于要发送给上位机的数据,是要处理一下的,要么是用协议,要么是自己加一个起始和结束符,不然,数据容易乱
直接发8位变量值是简单,但如果是浮点型呢?16位数据灯呢?所以,还是用sprintf相对好点
作者:
LAW1100
时间:
2024-12-21 09:38
串口助手显示会乱码
作者:
LAW1100
时间:
2024-12-21 20:29
已经弄好,多谢各位!
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1