如何控制数码管定时闪烁??

[复制链接]
5556|8
 楼主| dubuchu 发表于 2010-10-17 11:44 | 显示全部楼层 |阅读模式
本帖最后由 dubuchu 于 2010-10-17 12:27 编辑

1.芯片AT89C52,1个轻触开关,2个数码管。
2.当按下按键,数码管定时闪烁(两个数码段码共用8个IO口,数码显示不同数字,如38),再按下按键,数码管不闪。
3.求程序编写的思路?如有源码更好?我(菜鸟)写了两天了,老实现不了,求求各位?
denarock 发表于 2010-10-17 12:19 | 显示全部楼层
要有原理图呢
两个数码管可用静态扫描
程序简单多了
 楼主| dubuchu 发表于 2010-10-17 12:24 | 显示全部楼层
楼上,你好,要是两个数码管显示相同数字就好办些,现在要求是显示不同数字,不知怎么啊?
gx_huang 发表于 2010-10-17 13:59 | 显示全部楼层
8个GPIO驱动2个数码管,可以用2个4-7译码器驱动。
也可以用2个GPIO驱动164,再用2个作位选。这样只要4个GPIO。
如果你连硬件都不懂,还是先学习硬件,再学习单片机。
wangyazhou8910 发表于 2010-10-17 14:27 | 显示全部楼层
简单
把图给我
我给你写
zhangshaoyan 发表于 2010-10-17 16:31 | 显示全部楼层
先用Proteus仿真一下,如果可以的话,直接上电路吧。
eyuge2 发表于 2010-10-17 16:38 | 显示全部楼层
数码管的驱动是定时调用的吧,你显示38是将不同的码送到数码管中。在驱动程序做个小的修改,你真正显示的码放在一个缓冲区中,不显示的码(如0xff或0x00)放在一个缓冲区中。1秒钟读真正的缓冲区,1秒钟读不显示的缓冲区。这样就实现了闪烁。
liyang6105 发表于 2010-10-17 22:58 | 显示全部楼层
void display()
{   static unsigned char i;
        uchar k;
        for(k=1;k<7;k++)
        {
               
                P2=weisao[k];
                if((s1num==k)&&i<70)
                        P0=0xff;
                else
                        P0=dis_7[timedata[k-1]];
                if(++i>140)
                        {
                                i=0;
                                                                                }
      
                delayms(5);
        }
}
liyang6105 发表于 2010-10-17 23:05 | 显示全部楼层
你看看

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
您需要登录后才可以回帖 登录 | 注册

本版积分规则

15

主题

112

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部