(十一)c52学习之旅-动态数码管

一、动态数码管显示原理
动态显示的特点是将所有位数码管的段选线并联在一起,由位选线控制是哪一位数码管有效。这样一来,就没有必要每一位数码管配一个锁存器,从而大大地简化了硬件电路。选亮数码管采用动态扫描显示。所谓动态扫描显示即轮流向各位数码管送出字形码和相应的位选,利用发光管的余辉和人眼视觉暂留作用,使人的感觉好像各位数码管同时都在显示。动态显示的亮度比静态显示要差一些,所以在选择限流电阻时应略小于静态显示电路中的。

二、动态刷新
刷新频率>50HZ,我们就感觉不到闪烁了,即低于0.02秒(20毫秒)。
所谓动态扫描显示是指轮流向各位数码管送出段选(字形码)和位选,由于人眼的视觉残留作用,使人的感觉好像各位数码管同时都在显示。
动态显示的亮度比静态显示要低,所以在选择限流电阻时应小于静态显示电路中的。

三、6个数码管显示0-5的数字
如下图显示
这里写图片描述
下面为演示的代码

#include<reg52.h>
#define uint8 unsigned char 
//段选锁存控制位p2.6  位选锁存控制位p2.7
sbit DU=P2^6;
sbit WE=P2^7;
//数码管0-9的16进制
uint8 num[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x70,0x7f,0x5f};
//位选6个数码管
uint8 smg[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf};
int flag=0;

void init_t0()
{
    TMOD=0X01 ;//0000 0001 定时器T0方式1
    /*设定初始数值,16位*/
    //溢出一次大概3ms  用到了6个数码管,所以20/6约等于3,即延时定在3毫秒
    TH0=0Xf4;
    TL0=0x48;
    ET0=1;//打开定时器开关
    EA=1;//打开中断总开关
    TR0=1;//开始启动计数器 =0关闭停止计数
}

void main()
{
    init_t0();
    while(1);
}

void Delay3ms() interrupt 1         //延迟3ms
{
    TR0=0;//此时溢出,停止计数 
    TH0=0Xf4;
    TL0=0x48;

    DU=1;//打开段选
    P0=num[flag];
    DU=0;//关闭段选

    WE=1;//打来位选
    P0=smg[flag];
    WE=0;//关闭位选
    if(flag++==5)
        flag=0;
    TR0=1;//开始计数
}
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值