目的
让数码管在指定位置显示指定数字
一,STC单片机模块
二,数码管
2.1 数码管位置
2.2 生活中用到的数目管
红绿灯
LED数码管在生活中随处可见,洗衣机、电饭煲、热水器、微波炉、冰箱、这些最基本的家用电器上基本都用到了这种7段LED数码管(段
为LED灯的个数)。
2.3 数码管的分类
按显示段数分:分为七段、八段、九段、十四段和十六段
七段:七段数码管由7个LED构成
八段:八段数码管比七段多了一个小数点
九段:九段数码管由9个LED构成
十四段:十四段数码管由14个LED构成
十六段:十六段数码管由16个LED构成
按显示位数分:分为1位、2位、3位及多位数码管(大于1位),
我们的板子上是8段4位。
2.4 数码管电路图
单个数码管的电路图设计如下
内部接线图如下两种
第一种:共阴极(8个LED的负极接一起)
第二种:共阳极(8个LED的正极接一起)
可以看到,这个‘8’有A、B、C、D、E、F、G和DP8个LED构成。我们在程序上只需要将对应位置的LED点亮就可以了。ABCDEFG‘DP’8个位置刚好对应上一个byte的8个Bit位。要注意这里是与byte的低位对齐。
比如:
数字‘0’就是A、B、C、D、E、F位置的LED亮起。0011 1111 ,十六进制0x3F;
数字‘1’就是B、C 两个位置LED亮起。二进制0000 0110 ,十六进制0x06;
数字‘2’就是A、B、G、E、D位置的LED亮起、
……
以此类推,我们可以用HEX罗列出数码管能展示的所有可供我们认识的字符,要显示对应的字符,则P0值如下表
数码管显示 | 点亮位置的LED | 十六进制 (P0值) |
二进制 | |||||||
高 | 低 | |||||||||
DP | G | F | E | D | C | B | A | |||
0 | ABCDEF | 0x3F | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 |
1 | BC | 0x06 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 0 |
2 | ABGED | 0x5B | 0 | 1 | 0 | 1 | 1 |