173 2438 5004
KEROS加密芯片——品牌直销 | 免费样品 | 技术支持
当前位置:网站首页 > 资讯中心 正文 资讯中心

单片机打印浮点运算

htxw 2023-03-14 资讯中心 24 ℃

单片机 浮点运算

用keil C51,加入

#includemath.h

就行了。

但你要注意了!要进行浮点运算,你的程序存储器一定要大,因为一个乘除法需要三、四百个字节,开方需要七百多字节呢,而且好像算得不太准。慎用!

单片机浮点数运算问题。程序如下

.采用定点方法 如一个脉冲代表0.003米,将其扩大1000倍为整数3,然后显示结果

unsigneg long int depth=pulse*3 最后显示时把小数点定在倒数第4位后面即可

2.

用C语言编程时,可用float型,后将结果转化成字符串,然后用字符串显示函数

如 sprintf(s,"%6.4f",a);, a是浮点数变量 S[]是保存字符串转换结果的数组  长度根据需要自己定 中间引号里是输出格式控制符,类似于print

方法1我一直采用,第2种方法是我最近才学会的

C51单片机浮点数运算

因为没有电路,所以程序我就没法给你写,给你个思路.

第一,不知道你的a和b是什么类型的,如果是定义成浮点型,那么,可以这样写:

float f_Div = a/b;

如果两个有一个是整形的,那么,把整型强制转换成浮点型:

float f_Div = (float)a/(float)b;

注意,那个f_Div变量必须是float型,才能有小数产生

第二,你要进行显示,肯定要把各个位都取出来,这里面肯定有一个取模运算,就是"%",

对于浮点型,不运行取模运算的,所以,你必须把浮点型转换成整型,但是,不能强制转换,

比如: unsigned int I_Div = (unsigned int)f_Div;这是不可以的,你的小数部分就没有了.

所以,你必须要放大一定的倍数,根据你的要求,你是要保留三位,那么,这里还有个问题,你的

小数点之前有几位,决定了你小数点后面保留几位.

比如,你得到的结果是 1.2345,那么,你就保留1.23

如果你得到的结果是 12.345,那么,就保留12.3

如果你得到的结果是 123.45,你就只能保留123了

如果得到的结果是 0.123,你就只能保留 0.12

所以可以看出,你的浮点型结果整数部分有多少位,决定了你的小数能保留多少位,所以还要进行如下运算:

unsigned int i_Div = unsigned int)f_Div;;

unsigned char Dot_Bit = 0; //---这个变量用来表示在第几位上显示小数点,因为

//---通过下面的操作,已经把小数变成整数了

if(I_Div = 100) //---表示前面有3个整数部分位

{

; //---那就没什么可操作的,unsigned int i_Div = unsigned int)f_Div;;就符合要求

}

else if (I_DIV = 10) //---表示整数部分有2位

{

I_DIV = f_Div *10;

Dot_Bit = 1; //---在右数第2个地方显示小数点,也就是十位后显示小数点

}

else

{

I_DIV = f_Div *10;

Dot_Bit = 2; //---在右数第2个地方显示小数点,也就是最前面那位后面显示

}

void Display(void)

{

unsigned char Hundred = I_Div/100;

unsigned char TenBit = (I_Div/%00)/10;

unsigned char TenBit = I_Div%10;

....... //然后就开始显示了

}

51单片机怎么实现浮点运算

要先按装浮点库C51FPS.LIB,按装路径为:将 C51FPS.LIB 文件复制到 C:\Keil\C51\LIB\ 文件夹下面。

而后在程序中用浮点型变量float或double进行运算即可。

单片机能做浮点运算吗

可以啊,但不同品牌、不同型号单片机的运算能力不同,同样的运算代码,会出现不同的运算速度。

单片机打印浮点运算的介绍到此就结束了,感谢您耐心阅读,谢谢。

本文标签:单片机打印浮点运算

<