❶ 51單片機顯示小數問題
浮點運算有精度問題,四捨五入呀,像這樣改:
if(t>=0)
a=t*100;//
else
a=(-t)*100;
改為
if(t>=0)
a=(t+0.005)*100;//
else
a=(-t+0.005)*100;
❷ 單片機數碼管顯示小數
我不懂你的電路圖是怎麼接的,但是數碼管的小數點是這樣的
P0=table1[ge];你這個是定址的後面加個點就得了
給為 P0=table1[ge]+0x80;或者P0=table1[ge]|0x80應該都一樣的;
0x80就是那個點亮,不懂你是公陽還是共陰的,
如果是公陽的是0x7f。。。和共陰的相反
❸ 單片機 LCD1602 C語言小數怎麼表示
1.首先你定義的speed是無符號字元型
在執行speed=1.1*ncounter
後speed的值也是整數,小數後面的數會被省略,你需要將speed定義為小數型:float
speed;
2.你的ncounter是多大的數?是否比speed最大范圍值大,如果大可能數據就亂了!
dian=speed*10,dian這個數也要同上考慮
3.小數點的數可以考慮使用:
dian=(speed%1)*10;//取出小數點後一位的數乘以10,變成整數顯示,你要顯示成小數顯示程序里前面加個點的符號隔開就行了!
❹ 單片機數碼管小數點的顯示
程序如下:
#include<reg52.h>
#include<intrins.h>
sbit an=P3^0;
sbit wei=P3^1;
unsigned char code table[] = {
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71 };
void delay(void)
{
unsigned char i,j;
for(i=0;i<10;i++)
for(j=0;j<110;j++);
}
void show6led(float num)
{
unsigned char i;
i=num;
an=1;
P2=table[i]+0x80; //顯示個位和小數點
an=0;
P2=0xff; //先關閉led
wei=1;
P2=0xfb; //段選3
wei=0;
delay();
P2=0xff;
P3=0xff; //這兩句非常重要,主要是清屏消隱
num=num-i;
num=num*10;
i=num;
an=1;
P2=table[i];
an=0;
P2=0xff;
wei=1;
P2=0xf7; //段選4,十分位
wei=0;
delay();
P2=0xff;
P3=0xff;
num=num-i;
num=num*10;
i=num;
an=1;
P2=table[i];
an=0;
P2=0xff;
wei=1;
P2=0xef; //段選5,百分位
wei=0;
delay();
P2=0xff;
P3=0xff;
num=num-i;
num=num*10;
i=num;
an=1;
P2=table[i];
an=0;
P2=0xff;
wei=1;
P2=0xdf; //段選6,千分位
wei=0;
delay();
P2=0xff;
P3=0xff;
}
main()
{
float number;
number=3.718;
while(1)
{
show6led(number);
}
}
數碼管工作原理
數碼管按段數分為七段數碼管和八段數碼管,八段數碼管比七段數碼管多一個發光二極體單元(多一個小數點顯示)。
按發光二極體單元連接方式分為共陽極數碼管和共陰極數碼管。共陽數碼管是指將所有發光二極體的陽極接到一起形成公共陽極(COM)的數碼管。
共陽數碼管在應用時應將公共極COM接到+5V,當某一欄位發光二極體的陰極為低電平時,相應欄位就點亮。當某一欄位的陰極為高電平時,相應欄位就不亮。
共陰數碼管是指將所有發光二極體的陰極接到一起形成公共陰極(COM)的數碼管。共陰數碼管在應用時應將公共極COM接到地線GND上,當某一欄位發光二極體的陽極為高電平時,相應欄位就點亮。當某一欄位的陽極為低電平時,相應欄位就不亮。
❺ 單片機C語言顯示小數
給你個流程思路吧。ad採集電壓信號,轉換的數據是根據參考電壓比較得到的。如果你的參考電壓是5V,用的是12位AD,現在轉換的結果為0x00ff,那麼當前的電壓就是0xo0ff*5000/4096
(mv)=311mv=0.311V,
至於怎麼顯示,那要看你的數碼管位數以及要顯示的數據范圍。
可以用定小數點顯示,也可以用動態小數點顯示。思路都是把當前小數換成需要的整數,保留固定的有效數字。然後去顯示小數點。思路就是這樣。希望能幫到你。
❻ 單片機數碼管小數點閃爍
假設4個數碼管,每個亮2ms,一輪掃描共亮8ms,我們可以讓其以120次為周期(0.96s),掃描前60次小數點亮,後60次小數點不亮,這樣小數點就 以大約1HZ的速度閃爍。
例如,小數點在第二位,數碼管七段碼table[]中不含小數點
顯示部分如下
if(a<60)
{dataport=(table[a1]);
sm1=0; Delay1ms(2);sm1=1;
dataport=(table[a2])|0x80;//第二位多個小數點
sm2=0; Delay1ms(2);sm2=1;
dataport=(table[a3]);
sm3=0; Delay1ms(2);sm3=1;
dataport=(table[a4]);
sm4=0; Delay1ms(2);sm4=1;
ia++;
}
else {dataport=(table[a1]);
sm1=0; Delay1ms(2);sm1=1;
dataport=(table[a2]); //第二位無小數點
sm2=0; Delay1ms(2);sm2=1;
dataport=(table[a3]);
sm3=0; Delay1ms(2);sm3=1;
dataport=(table[a4]);
sm4=0; Delay1ms(2);sm4=1;
ia++;
}
if(a==120) a=0;//120次後重新歸零
❼ 51單片機數碼管小數點不顯示
摘要 您好!可以另制一個帶小數點的7段(實際是8段)碼表,需小數點時就用這個表格,不要小數點時用另一個表格
❽ 單片機進棧為什麼是小數
常用的波特率有誤差的,用小數表示更准確減少誤差。
單機片進棧顯示小數後期可四捨五入轉換成整數,浮點運算有精度問題。小數在單片機中有一個單獨的分類,我們稱之為浮點型數據。之所以說是浮點型,是因為在小數的顯示過程中,小數點會出現在不同的位置,小數表示用起來也很方便。
單片機又稱單片微控制器,它不是完成某一個邏輯功能的晶元,而是把一個計算機系統集成到一個晶元上。相當於一個微型的計算機,和計算機相比,單片機只缺少了I/O設備。概括的講:一塊晶元就成了一台計算機。它的體積小、質量輕、價格便宜、為學習、應用和開發提供了便利條件。同時,學習使用單片機是了解計算機原理與結構的最佳選擇。
❾ 單片機板顯示小數0.0——9.9,應該怎麼做
顯示 00~99,即可。
小數點可以單獨用一個LED表示。
❿ 51單片機ds18b20小數顯示1602
發出存在脈沖。
51單片機ds18b20小數顯示1602是因為出現了發出存在脈沖導致的。
1602液晶模塊高精度4位小數顯示,溫度解析度0.0625℃,液晶模塊第一行顯示的是DS18B20的64位激光序列號,液晶模塊第二行顯示的是實際溫度。