unsigned char code dispbitcode[]={0xfe,0xfd,0xfb,0xf7,
0xef,0xdf,0xbf,0x7f};
unsigned char code dispcode[]={0x3f,0x06,0x5b,0x4f,0x66,
0x6d,0x7d,0x07,0x7f,0x6f,0x00};
unsigned char dispbuf[8]={10,10,10,10,10,0,0,0};这个程序我用的是八个数码管,可是最后显示数字的是只有后面的三个数码管,我想知道一下,为什么这个dispbuf[8]={10,10,10,10,10,0,0,0}前五个数码管初值都是10呢,但是我查了有的资料,有的还可以是16,这个是为什么啊?麻烦知道人士给我解释一下。
10 对应dispcode[10] = 0x00; 看你的数码管是共阴(这个数码管灭)还是共阳(这个数码管亮)的 如果是灭的话就表示不用这几个数码管 让它熄灭不亮 只关心后面的三位数码管的显示数字
当你引用dispcode[]这个数组中的元素超过初始化元素时,系统会自动初始化为0
那么dispcode[16]=0;也是不显示
温馨提示:答案为网友推荐,仅供参考
第1个回答 2010-12-17
unsigned char code dispbitcode[]={0xfe,0xfd,0xfb,0xf7,
0xef,0xdf,0xbf,0x7f};
这个是位码
unsigned char code dispcode[]={0x3f,0x06,0x5b,0x4f,0x66,
0x6d,0x7d,0x07,0x7f,0x6f,0x00};
这个是段码,表示0-9和不亮
这个的10应该对应dispcode[]的下标即dispcode[10],如果是16,说明段码有0-9,A-F和不亮一共16个,一般不亮放在最后
达到这种效果还有很多方法,下面我再介绍一种
这个函数的功能:从第几位亮和亮几位,这里用了数码管动态显示的消影
uchar tempData[8];//存放要显示在数码管上的段码
uchar code DuanMa[]= //段码
{
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71
};
uchar code WeiMa[]= //位码
{
0xfe,0xfd,0xfb,0xf7,
0xef,0xdf,0xbf,0x7f
};
void Display(uchar firstBit,uchar disCount)
{
uchar i;
for(i=0;i<disCount;i++)
{
wela=1;
P0=0xff;
wela=0;
dula=1;
P0=tempData[i];
dula=0;
P0=0xff;
wela=1;
P0=WeiMa[i+firstBit];
wela=0;
delay(2);
}
}
0xef,0xdf,0xbf,0x7f};
这个是位码
unsigned char code dispcode[]={0x3f,0x06,0x5b,0x4f,0x66,
0x6d,0x7d,0x07,0x7f,0x6f,0x00};
这个是段码,表示0-9和不亮
这个的10应该对应dispcode[]的下标即dispcode[10],如果是16,说明段码有0-9,A-F和不亮一共16个,一般不亮放在最后
达到这种效果还有很多方法,下面我再介绍一种
这个函数的功能:从第几位亮和亮几位,这里用了数码管动态显示的消影
uchar tempData[8];//存放要显示在数码管上的段码
uchar code DuanMa[]= //段码
{
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71
};
uchar code WeiMa[]= //位码
{
0xfe,0xfd,0xfb,0xf7,
0xef,0xdf,0xbf,0x7f
};
void Display(uchar firstBit,uchar disCount)
{
uchar i;
for(i=0;i<disCount;i++)
{
wela=1;
P0=0xff;
wela=0;
dula=1;
P0=tempData[i];
dula=0;
P0=0xff;
wela=1;
P0=WeiMa[i+firstBit];
wela=0;
delay(2);
}
}
第2个回答 2010-12-17
关键在于下面这个数组:
dispcode[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00};
它是段码表。
把其中的第0个元素3F,送到显示器,将显示0;
把其中的第1个元素06,送到显示器,将显示1;
把其中的第2个元素5B,送到显示器,将显示2;
……
把其中的第9个元素6F,送到显示器,将显示9;
把其中的第10个元素0x00,送到显示器,将显示什么? 就是显示“空白”。
如果不理解什么是段码,就需要研究电路了。
dispcode[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00};
它是段码表。
把其中的第0个元素3F,送到显示器,将显示0;
把其中的第1个元素06,送到显示器,将显示1;
把其中的第2个元素5B,送到显示器,将显示2;
……
把其中的第9个元素6F,送到显示器,将显示9;
把其中的第10个元素0x00,送到显示器,将显示什么? 就是显示“空白”。
如果不理解什么是段码,就需要研究电路了。