数码管静态显示

前言

目标

控制LED数码管,静态显示数字

原理

51 单片机的 LED 数码管有8个
每个数码管又由 8 个数码段组成

  • 选择要点亮的 LED 数码管的位置, 一共8个位置

  • 点亮特定 LED 数码管的数码段, 通过不同的组合,从而显示出想要的字符

效果图

参考资料

[4-1]静态数码管显示

位码

一共是8个LED数码管,所以如何来控制这8个位置?

74HC138译码器

可以做到用3个IO端口,控制8个LED的状态

这3个 IO 端口,也就是

  • P2_2
  • P2_3
  • P2_4

设置74HC245使能

OE 就是 芯片使能,接地工作,接VCC不工作。需要接一下 跳线帽, 让 OE 和 GND 接到一起。

PS: 不过似乎我的单片机上,OE接了GND的话,会让旁边的LED 8*8点阵工作,所以还是维持原本在OE-VCC的跳线吧。

段码

通过74HC245这样一个双向缓冲器,可以把 P0 端口的8位数据传给 LCD 数码段 0-7

这个数码管应该是共阴极8段数码管,所以我们要传的信号是高电平亮,低电平灭。

TODO

我们可以写代码,把常见的数码管字符对应的段码存储在数组里,方便使用。不过这个应该要等下一篇文章了。

代码

这个代码比较蠢,硬编码了位置和段码。效果就是让最低位的LED数码管,显示一个 “6”

#include <REGX52.H>

void main()
{
    P2_2 = 0;
    P2_3 = 0;
    P2_4 = 0;
    
    P0 = 0X7D;
    while(1)
    {
        //nop
    }
}
posted @ 2025-03-28 11:37  lucky_doog  阅读(133)  评论(0)    收藏  举报