❶ 单片机浮点数显示问题
1.采用定点方法如一个脉冲代表0.003米,将其扩大1000倍为整数3,然后显示结果
unsigneg
long
int
depth=pulse*3
最后显示时把小数点定在倒数第4位后面即可
2.
用C语言编程时,可用float型,后将结果转化成字符串,然后用字符串显示函数
如
sprintf(s,"%6.4f",a);,
a是浮点数变量S[]是保存字符串转换结果的数组
长度根据需要自己定中间引号里是输出格式控制符,类似于print
方法1我一直采用,第2种方法是我最近才学会的
❷ 51单片机编程如何把一个字符串里的数字提取出来并转化成浮点数
你这个字符串的形式是怎么样的?先字母后数字?还是随机的?如果单纯只是字母后就数据的话就直接判断字符的ASCII码,从数字的地方开始截取,把数字和小数点放到另一个数组里,用double atof(const char *nptr)函数转为浮点类型即可,如果你初始给的字符串是随机的那好像麻烦很多。。。
❸ 51单片机如何编程将uchar code gcode[]="G1 X0.2 Y0.2 Z6.3 F200.37 E55.3";中X,Y,Z值提出变成浮点数
/*楼主可以这样试雀御一下,首先字符串就是字符数组的末尾加一个‘ ’,我们可以通过数字下标操作,键消来提取里面的数据,通过判断 ‘X’ ‘Y’ ‘Z’,进而找到后面的数据,由于X数据后面都有一个 空格,那就可以通过X与空格来截取其中的字符数据,再通过字符转数字,再转成浮点数
*/
#include<reg51.h>
charcodegcode[]="G1X5.3Y0.2Z6.3F200.37E55.3";
charX_Array[3];//存X后面的字符
floatX_Float=0;//X浮点数
voidmain(void)
{
chari=0;//gcode[i]
charj=0;//X_Array[j]
/***************取字符******************/
while(gcode[i]!='