⑴ 如何利用显示数码管显示小数点
程序如下:
#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段)码表,需小数点时就用这个表格,不要小数点时用另一个表格