❶ 單片機浮點數顯示問題
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]!='