|
目录
|
数码管原理 |
来源:C语言网 作者:继承叔 编辑:Alice(火龙果软件) |
671 次浏览 |
2次 |
|
|
1.分类
数码管分 共阳数码管 和 共阴数码管。
数码管其实就是8个段的发光二极管,只点亮其中的几个段即可显示出数字或字母用来表达信息。
共阳数码管:把8段LED的正极并在一起作为公共端连接在5V上(共阳极),然后8个LED通过单片机的8个IO端口输出高低电平使其决定点亮哪几个段。原理跟第二章的8盏LED硬件连接一样。
共阴数码管的介绍参考《手把手教你学51单片机》文档5.3.1节即可,因为我们的开发板用的是共阳数码管,所以共阴数码管在这里就不讲解了。
2.硬件连接
我们先拿一个数码管进行简单讲解
上图是开发板上6个数码管中最右端那个的硬件连接简化图,我们叫它数码管0以好区分。引脚1和6(也就是A
A)做为所有内部LED的公共端,此时IO0输出低电平三极管导通,那么这个公共端就接上了5V,而通过P0的8个IO端口中哪几个IO端口输出0数码管中的哪几个段就被点亮。
3.代码分析
我们把第二章第4讲的代码复制过来,修改三八译码器的逻辑选择,使IO0输出为0,也就是P1.2输出0,P1.1输出0,P1.0输出0。但这样之前讲的8盏小灯就不能被点亮了,因为三八译码器一次只能使其中的IOx输出低电平,其他7个IO都输出高电平了。
如果我们要让数码管显示数字0,那么看到上图所示,只需a,b,c,d,e,f段的LED点亮,剩下g段和dp段不点亮即可。
对应的二进制值为 11000000,十六进制就为0xC0。把0xC0赋值给P0即可点亮最右端的数码管0显示数字0。
#include <reg52.h>
sbit ADDR2 = P1^2;
sbit ADDR1 = P1^1;
sbit ADDR0 = P1^0;
sbit ENLED = P1^4;
sbit ADDR3 = P1^3;
void main()
{
ADDR3 = 1;
ENLED = 0;
ADDR2 = 0;
ADDR1 = 0;
ADDR0 = 0;
P0=0xC0;
while (1);
}
|
|
671 次浏览 |
2次 |
|
|
|