『壹』 51單片機c語言如何把浮點型轉為字元串
使用stdio.h中的sprintf函數轉化即可:
#include<stdio.h>
floata=1.234;
charstr[10];
sprintf(str,"%f",a);
『貳』 51單片機怎麼實現浮點運算
要先按裝浮點庫C51FPS.LIB,按裝路徑為:將 C51FPS.LIB 文件復制到 C:\Keil\C51\LIB\ 文件夾下面。
而後在程序中用浮點型變數float或double進行運算即可。
『叄』 51單片機 單精度浮點數 float 怎樣輸出
float a;
int b
b=a*10; //乘10化整
s1=b/100; /跡差/十位
s2=b/10%10 +10; //滾州改個大判位,加小數點
s3=b%10; //小數
『肆』 在51單片機中,頭文件,include<float.h>有什麼用
這里需要注意include的兩種不同寫法,#include和#include"***.h" 採用"< >"方式進行包含的頭文件表示讓編譯器在編譯器的預設標准路徑下去搜索相應的頭文件,如果找不到則報錯。 例如:VS2008的安裝目錄\Microsoft Visual Studio 9.0\VC\include...
『伍』 51單片機能不能計算浮點數,支不支持浮點運算有人說能,有人說不能。
不能直接硬體計算浮點(就是所謂的FPU),只能通過程序庫(調用函數)模擬完成,非常耗時!
『陸』 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;
....... //然後就開始顯示了
}