Stm32 四位数码管

本文介绍了STM32驱动四位数码管的原理,包括数码管的工作方式、编码规则,以及如何使用TM1637芯片进行控制。通过驱动程序和测试程序的展示,详细解析了如何创建一个滴答时钟,使数码管显示时间。
摘要由CSDN通过智能技术生成

四位数码管

关键词: stm32 滴答时钟 数码管 四位数码管

主要内容:

  • 数码管原理
  • 四位数码管
  • 驱动程序
  • 测试程序

文档参考:

最新地址: https://taotaodiy-mcu.readthedocs.io/en/latest/sensor/digit.html

四位数码管

数码管原理

数码管主要用来显示数据。

判断延时是否结束

数码管内部实际上就是8个发光二极管,我通过给A-H编号的发光二极管给高低不同的电平,最终使得数码管显示不同的字符。
如图所示,数码管分共阴(即发光二极管阴极连到一起)还是共阳(即发光二极管阳极连到一起)。

digit002

比如说我们希望,数码管显示5这个数字。那我们的思路是什么呢?

首先我们想要的效果应该是这样:

判断延时是否结束

也就是,通过电路和程序控制数码管的A,F,G,C,D这五个发光二极管发光即可。

上图已经对数码管用A-H进行了排序,如果用0/1来表示发光二极管的亮灭,

5这个数字就可以得到下面的一串有序编码。

#对应的数码管编号
H G F E D C B A
#共阴二极管亮为1,灭为0
0 1 1 0 1 1 0 1  --> 0x6b

这样就得到一个编码,0x6b,
是的,数码管原理就是如此,我们给他这样一个编码就能在数码管上显示5

共阳数码管则相反

#共阳二极管亮为0,灭为1
1 0 0 1 0 0 1 0  --> 0x92

对于单个数码管我们就可以得出 0-f 的编码,如下。

#共阳数码管编码
unsigned int DIGIT_ANODE[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e}; //0~f
#共阴数码管编码
unsigned int DIGIT_CATHODE[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};//0~f

多位数码管

上面是单个数码管的显示原理和数码管编码由来,当我们需要同时显示一段数据的时候就需要多段数码管,也就是多个数码管的组合。
这就存在一个问题,一个数码管需要8个IO来控制,那么再加几个数码管,不就把IO占用光了吗?

于是就有了位选,数码管通用八根段选,使用位选来控制单个数码管显示。

四位数码管

当然这样还是比较费IO,于是就有了各种数码管控制芯片。

文章开头的图片是一个四位数码管,使用TM1637来控制显示,下面是它的显示和控制原理。

四位数码管

数码管编码

这里的四位数码管唯一不一样的地方就是中间多了两个点,主要是为了显示时间,有那种闪烁的效果。
显示数

  • 15
    点赞
  • 69
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 18
    评论
评论 18
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

贪贪贪丶慎独

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

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

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

打赏作者

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

抵扣说明:

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

余额充值