数码管显示


前言

本文记录的是C51单片机的数码管显示


一、数码管电路图

在这里插入图片描述
在这里插入图片描述

二、显示原理

6个数码管是通过两个锁存器控制的。
一个锁存器是用来控制打开多少个数码管
另外一个锁存器是用来控制显示数码的数字
思路:打开位选,然后让P0输出打开多少个数码管,关闭位选。接着打开段选,让数码管显示什么数字,接着关闭段选

三、代码

1.nixie_tube.c

#include "./User/nixie_tube/nixie_tube.h"

//数码管表 0-f
 const uint8_t smg_table[] = 
{
    0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 
    0x7f, 0x6f, 0x77, 0x7c, 0x39, 0x5e, 0x79, 0x71
};

//数码管数量0-6
const uint8_t smg_num[] = {0xff, 0xfe, 0xfc, 0xf8, 0xf0, 0xe0, 0xc0};


sbit dula = P2^6;
sbit wela = P2^7;


/**
  * @brief  控制数码管显示
  * @param  index:控制多少个数码管亮; figure:控制数码管显示什么数字
  * @retval None
  */
void seg_display(unsigned char index, unsigned char figure)
{
    if(0 == index) {            //如果不需要显示,就退出
        return ;
    }
    
    wela = 1;                   //打开位选
    P0 = smg_num[index];        //选中第一个数码管
    wela = 0;                   //关闭位选

    dula = 1;                   //打开段选
    P0 = smg_table[figure];     //显示“6”
    dula = 0;                   //关闭段选
    
    
    return ;
}








2.nixie_tube.h

代码如下(示例):

#ifndef __NIXIE_TUBE_H__
#define __NIXIE_TUBE_H__

#include <reg52.h>
#include "./User/common/common.h"

void seg_display(unsigned char index, unsigned char figure);


#endif /* __NIXIE_TUBE_H__ */



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

free(me)

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值