单片机交流
直播中

张静

7年用户 1425经验值
私信 关注
[问答]

如何实现数码管的动态显示?

如何实现数码管的动态显示?

回帖(1)

寇亦青

2021-11-4 10:23:55
动态显示
动态显示的特点是将所有位数码管的段选线并联在一起,由位选线控制是哪一位数码管有效。选亮数码管采用动态扫描显示。所谓动态扫描显示即轮流向各位数码管送出字形码和相应的位选,利用发光管的余辉和人眼视觉暂留作用,使人的感觉好像各位数码管同时都在显示。
代码

#include
#include


#define uint unsigned int
#define uchar unsigned char


***it DU = P2^6;
***it WE = P2^7;


uchar code tabel[] = {0X3F,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};


void delay(unsigned int i)
{
        unsigned int m,n;
        for(m=i;m>0;m--)
                for(n=90;n>0;n--);
}//设置延时
void display(uchar i)
{
        uchar bai,shi,ge;
        bai = i / 100;
        shi = i % 100/10;
        ge = i % 10;
        //第一位
        P0 = 0XFF;
        WE = 1;
        P0 = 0xFE;
        WE = 0;


        DU = 1;
        P0 = tabel[bai];
        DU = 0;
        delay(5);
        //第二位
        P0 = 0XFF;
        WE = 1;
        P0 = 0XFD;
        WE = 0;
       
        DU = 1;
        P0 = tabel[shi];
        DU = 0;
        delay(5);
        //第三位
        P0 = 0XFF;
        WE = 1;
        P0 = 0XFB;
        WE = 0;


        DU = 1;
        P0 = tabel[ge];
        DU = 0;
        delay(5);         
}
void main()
{
        while(1)
        {
                display(123);//输入要显示的值
        }
}
这里我只是做了可以显示3位数的,还可以仿照上面代码做一个显示8位数的。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分