单片机发数据给串口助手,为啥怎么都是十六进制的,我修改了好几次也不行,请教各位单片机爱好者们
答案:5 悬赏:10
解决时间 2021-04-07 17:35
- 提问者网友:南佳人~
- 2021-04-07 05:44
最近在做一个超声波测距的实验,主要是将距离数据传送给串口调试助手以十进制显示出来 我写的控制部分
void cont()
{
uint A,B,C;
TIME=TH0*256+TL0;
TH0=0;
TL0=0;
S=(TIME*1.7)/100;
if(S>=700||flag==1)
{
flag=0;
P0=1;
printf("-----\n");
}
else
{TI=1;
printf("SBUF,S=%d\n",S);
while(!TI);
TI=0;
A=S/100;
B=S%100/10;
C=S%10;
display(A,B,C);//数码管显示
}
}
总是不行串口总是显示写十六进制的数,怎么办
最佳答案
- 二级知识专家网友:时光不老我们不分离
- 2021-04-07 05:51
传送的是BCD码
全部回答
- 1楼网友:花一样艳美的陌生人
- 2021-04-07 07:46
为啥怎么都是十六进制的 这句话是什么意思?
- 2楼网友:一起来看看吧
- 2021-04-07 06:35
单片机 没有 处理的 情况下,发送 接收 的 都是 十六进制数
串口助手 里可以 显示 十六进制数,也可以 显示 ASCII 字符
其实,如果 单片机 有程序处理,一样可以显示 字符、ASCII码
显示 十六进制数 没有什么关系,你能看懂就可以了
下一步 你 写 上位机 程序 时 要 处理、转换 的
- 3楼网友:都不是誰的誰
- 2021-04-07 06:23
【1】能显示“SBUF,S=”这些字符吗?如果不能显示字符,换一个串口助手。
【2】以下程序经过测试,应该可以解决显示问题。你的做法需要对S进行类型的强制转换。
具体显示给出了两种方法:
#include "reg51.h"
#include "stdio.h"
void main(void)
{
float S=18.3;
char buf[20];
TMOD=0x20;
TH1=TL1=0xff;
SCON=0x50;
TR1=1;
TI=1;
//【2-1】=========================================
printf("SBUF,S=%d\n",(unsigned int)S);
或者
printf("SBUF,S=%f\n",S);
//【2-2】=========================================
sprintf(buf,"SBUF,S=%f\n",S);
printf (buf);
while(1);
}
- 4楼网友:初心未变
- 2021-04-07 06:02
从右向左计算的,而不是平时大家生活中的从左向右.
所以,ad_data%51*10/51应该写成((ad_data%51)*10)/51
还有,你的波特率是否正确,要根据你用的晶振来计算
你说的数码管显示,请说说具体的接线和IC,如果是在串口助手上显示乱码,那多半是波特率问题,你的程序应当是显示X.000。
你程序的关键部分还是运算符的方向问题。
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯