⑴ 如何利用顯示數碼管顯示小數點
程序如下:
#include<reg52.h>
#include<intrins.h>
sbit an=P3^0;
sbit wei=P3^1;
Unsigned character code table[] = {
0x3f、0x06、0x5b、0x4f,
0x66、0x6d、0x7d、0x07,
0x7f、0x6f、0x77、0x7c,
0x39、0x5e、0x79、0x71};
Invalid delay (invalid)
{
unsigned char i,j;
for(i=0;i<10;i++)
for(j=0;j<110;j++);
}
void show6led(float num)
{
Unsigned character I;
I= value;
Section =1;
P2 = table [i] + 0x80;//顯示個位和小數點
Section =0;
P2=0xff;//先關閉led
wei=1;
P2=0xfb; //段選3
wei=0;
delay();
P2=0xff;
P3=0xff;//這兩句非常重要,主要是清屏消隱
num=num-i
num=num*10
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= value;
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);
}
}
數碼管工作原理
數碼管分為七節數碼管和八節數碼管。八節數碼管有一個以上的LED單元(一個以上小數點顯示)比七個部分的數碼管。
根據LED單元的連接方式,可分為普通陽極鎳鉻管和普通陰極鎳鉻管。普通陽數碼管是指將所有發光二極體陽極連接在一起形成一個共同陽極(COM)的數碼管。
公共極COM應連接到+5V時,共同的積極數碼管應用。當場led的陰極低時,相應的場將打開。當一個場的陰極很高時,相應的場將不亮。
共用陰極數碼管是一種將所有發光二極體的陰極連接在一起形成共同陰極(COM)的數碼管。公共陰極COM應連接到GND,當共用陰極X射線管被應用時。當場led的陽極高時,相應的場將打開。當一個場的陽極很低時,相應的場將不亮。
⑵ 單片機8位數碼管怎麼讓其中一個帶小數點12.345678
你這應該是一個循環程序,循環變數是 i ,來完成8位數碼管顯示的吧?Display_data[i+1] ,這應該是段碼表數組吧?
數碼管是共陽還是共陰的,加小數點的方法是不同的。
如下圖是共陽的
程序
m=_crol_(m,1);
P2=m;
if(i==1)
P0=Display_data[i+1]+0x80;//加小數點
else
P0=Display_data[i+1];
delayms(2);
⑶ 單片機中數碼管數字部分和小數點的點亮規則是什麼啊
你好,我不懂你的電路圖是怎麼的,但是數碼管的小數點是這樣的,P0=table1[ge];你這個是定址的後面加個點就得了,給為
P0=table1[ge]+0x80;或者P0=table1[ge]|0x80應該都一樣的;
0x80就是那個點亮,不懂你是公陽還是共陰的,如果是公陽的是0x7f。。。和共陰的相反
⑷ 關於單片機程序中小數點的的問題
這個要看單片機的平台以及關於舍入/進位的相關定義。
一般來說都是舍入為6。
⑸ 51單片機 c語言六位數碼管小數點
如果電路是普通電路的,一般是最高位驅動小數點的,你只要把最高位置為1就點亮小數點了。
例如:
x|=0x80;
LEDPORT=x;
⑹ 我找的程序,在單片機模擬時這段程序顯示的小數點有問題,每次到8三個數碼管都顯示小數點,求解決
你找的程序,與你的模擬圖是否相符?這單片機的程序必須結合模擬圖來編寫,否則是不能得到模擬效果的。把你模擬圖的數碼管顯示電路截圖上來看看。就這個程序而言,不管模擬圖怎樣,都是有錯誤的,必須修改才能用。那幾個數f7,fb,fd,fe是位控碼,數碼管應該是共陰的,位控是0有效的。
⑺ 單片機數碼管小數點閃爍
假設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段)碼表,需小數點時就用這個表格,不要小數點時用另一個表格