注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

 
 
 

日志

 
 

数码管的动态扫描程序  

2013-04-03 21:52:12|  分类: DIY-远程协助 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
数码管的动态扫描程序 - 子时DIY - 子时DIY
数码管的动态显示,最后一位闪烁
#include <AT89X51.H>
// 这里是一个数组,一共8位分别对应数码管的8个位置,存储了每一位将要显示的内容
unsigned char Data[8] = {0, 0, 0, 0, 0, 0, 0, 0};

// 这个不用说了,是字模
const unsigned char design[16] ={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90, //0 1 2 3 4 5 6 7 8 9
                                 0x88,0x83,0xC6,0xA1,0x86,0x8E};//A    B    C    D    E    F

int main(void)
{
    int i = 0;
    unsigned int j = 0;
    
    // 为每一位设置显示的内容
    Data[0] = design[0];
    Data[1] = design[1];
    Data[2] = design[2];
    Data[3] = design[3];
    Data[4] = design[4];
    Data[5] = design[5];
    Data[6] = design[6];
    Data[7] = design[7];
        
    while (1)
    {
        j++;
        
        // 这个地方其实起到分割时间的作用,作为示范可以这么写,但更好的办法是使用中断计数,不过原理是一样的
        if (j < 32767)
        {
            // 这种情况下让最后一位显示7
            Data[7] = design[7];
        }
        else
        {
            // 这种情况下让最后一位不现实
            Data[7] = 0XFF;
        }
        
        // 这里很简单了,就是动态扫描了
        for (i = 0; i < 8; i++)
        {
            P0 = 0XFF & (~(1 << i));
            // 关键是这里,每次从Data中取数据,而不是design中
            P2 = ~Data[i];
        }
    }
}
  评论这张
 
阅读(121)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017