c语言数码管消影,多位数码管动态显示中的虚影消除

原标题:多位数码管动态显示中的虚影消除

在学习时,发现有一个问题,数字是正常显示了,但是好几个数字上面,某些不应该亮的地方,有一些微微亮,导致数字显示不是很清楚,代码如下(说明:数码管可以显示8个数字,共阳,P3用于选择亮哪一个,P0用于输出数字):

#include

#define uchar unsigned char

//随手抄来的,虽然我只显示0-7

uchar code table[] = {

0xC0,0xF9,0xA4,0xB0,

0x99,0x92,0x82,0xf8,

0x80,0x90,0x88,0x83,

0xC6,0xA1,0x86,0x8E

};

uchar i;

void main()

{

P3 = 0xFF;

P0 = 0xFF;

while(1)

{

for(i=0;i<8;i++)

{

//共阳,P3用于选择亮哪一个,P0用于输出数字,不同开发板不一样

P3 = 0xFF & (~( 1 << (i%8) ));//选择使用哪一个数码管

P0 = table[i];//数码管代码

}

}

}

后来仔细看了代码,才发现书上有延时的代码,也就是设置完成后,延时1到2毫秒,本来以为没什么用,没想到 一加上,效果立杆见影啊,修改后如下:

#include

#define uchar unsigned char

void delay1ms()

{

uchar j;

for(j=110;j>0;j--)

;

}

//随手抄来的,虽然我只显示0-7

uchar code table[] = {

0xC0,0xF9,0xA4,0xB0,

0x99,0x92,0x82,0xf8,

0x80,0x90,0x88,0x83,

0xC6,0xA1,0x86,0x8E

};

uchar i;

void main()

{

P3 = 0xFF;

P0 = 0xFF;

while(1)

{

for(i=0;i<8;i++)

{

//共阳,P3用于选择亮哪一个,P0用于输出数字,不同开发板不一样

P3 = 0xFF & (~( 1 << (i%8) ));//选择使用哪一个数码管

P0 = table[i];//数码管代码

/************加上延时后,数码管马上变清晰了**************/

delay1ms();

delay1ms();//试了下,2毫秒效果比较好

}

}

}

责任编辑:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值