前言

目标

控制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

void main()

{

P2_2 = 0;

P2_3 = 0;

P2_4 = 0;

P0 = 0X7D;

while(1)

{

//nop

}

}