前言
目标
控制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}
}