找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 8086|回复: 3
打印 上一主题 下一主题
收起左侧

这个单片机数码管显示程序是什么意思?显示缓冲区又是什么意思

[复制链接]
跳转到指定楼层
楼主
ID:421426 发表于 2019-1-3 19:48 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
unsigned char dspbuf[8] = {10,10,10,10,10,10,0,0};//显示缓冲区
unsigned char dspcom = 0;
void display(void)
{   
        P2 = ((P2&0x1f)|0xE0);
        P0 = 0xff;
        P2 &= 0x1f;

        P2 = ((P2&0x1f)|0xC0);
        P0 = 1<<dspcom;
        P2 &= 0x1f;
        
    P2 = ((P2&0x1f)|0xE0);                                                                                                   //dspduf  dspcom
        P0 = tab[dspbuf[dspcom]];
        P2 &= 0x1f;

    if(++dspcom == 8){
        dspcom = 0;
    }   

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:164602 发表于 2019-1-4 08:06 | 只看该作者
第一个问题不知道怎么回答,因为看了程序,它有一系列的运算,为什么这样运算,从你给出的程序中没看出来。
第二个问题很好理解,所谓显示缓冲区,就是先将要显示的内容计算好,存在其中,显示时,直接使用就可以了,也就是说,不是将计算结果直接显示——缓冲的意思很明白嘛。只要新计算没完成,缓冲区的内容就不变,显示就不受影响。这样的操作,对单片机使用数码管很有效,因为数码管显示通常用扫描法,时间间隔太长就会闪。
回复

使用道具 举报

板凳
ID:123289 发表于 2019-1-4 08:22 | 只看该作者
本帖最后由 yzwzfyz 于 2019-1-4 09:08 编辑

对于显示:初学者会直接向连接LED灯的IO口送出显示的数据(译码后)。
高手这样做:从某个区域(A区)中定向取数,送至对应的IO口。这个A区就叫显示缓冲区。甚至还有B缓冲区。
例如:B区放直观数据、A区放显示码数据
这样【显示子程序】就固定为:从B区取数据,译码后放入A区、从A区取数据送到IO口。
显示动作就简单了:用一个定时器,定期调用【显示子程序】。
主程序就方便灵活了。它只要将需要显示的直观数据放入B区就行了。
要移动走屏也方便了:只要改变从A区取据的起点、终点就可以了。如:第一次从1-10,下次从2-10-1,再下次从3-10-1-2……
还即可以在缓冲区中做许多文章,改变显示花样!
回复

使用道具 举报

地板
ID:421426 发表于 2019-1-7 13:10 | 只看该作者
HC6800-ES-V2.0 发表于 2019-1-4 08:06
第一个问题不知道怎么回答,因为看了程序,它有一系列的运算,为什么这样运算,从你给出的程序中没看出来。 ...

谢谢您的回答     这程序是我老师写的   我没把程序复制完整
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表