数码管的静态显示

文章介绍了如何使用51单片机配合7段数码管进行数字显示,通过连接7个LED灯和小数点,结合十六进制值显示0到9的数字。在Proteus软件中进行元器件导入和连线,然后编写C语言程序,包括延时函数和显示子函数,最终实现数字的动态循环显示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

首先说一下数码管,其实就是7个led灯,加上一个小数点正好8位,和51单片机的一个端口连接。

使不同的灯亮起,就可以实现显示0到9这几个数字。

以上都是图片,下面把对应的值给到大家,0到9的十六进制值复制粘贴就好了:{0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}

下面说一下数码管的静态显示(下一篇说动态显示)

接下来就实际操作一下,打开proteus,如图导入元器件并连线,数码管搜索SEG。

下面就是编写c文件,之后编译,源码和注释看下面:

#include"reg51.h"

unsigned char dat[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
//  点        g        f        e        d        c        b        a
// 显示0      0        1        1        1        1        1        1   除了点和g不亮其他的灯都亮就是0。  十六进制就是0x3f
// 显示1      0        0        0        0        1        1        0   只有b和c亮,其他的都不亮。        十六进制就是0x06
// 按照上面的方式依次类推得到 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f


void delay(unsigned int n){       //延时函数   不是很精确
    unsigned int i=0, j=0;
    for(i=0; i<n; i++){
        for(j=0; j<120; j++);
    }
}

void seg(){                       // 自己命名的子函数,proteus中数码管叫seg,我这里就取名叫seg好了
    unsigned int i;
    for(i=0; i<10; i++){          //  循环10次,得到i的值从0到9都能取到
        P2=dat[i];                    // 51单片机的P2口得到的值就是数组dat中的每一个值,也就是从0到9分别亮
        delay(500);               // 延时, 由于单片机的运行速度太快,所以要加延时,也就是等一会,不然人眼看不到
    }
}

void main(){                      // 主函数   加一个无限循环  只调用了子函数seg
    while(1){
        seg();
    }
}

最后打开proteus把生成的hex文件导入,模拟仿真就可以看到从0到9不停地显示数字了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

尚久龙

你的鼓励是我最大的动力!谢谢!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值