1.什么是数码管
2.共阴极和共阳极
3.让数码管显示数字原理
4.段选和位选
5.用锁存芯片74HC573实现段选和位选
6.代码实现
1.什么是数码管
如图所示,这是二位的数码管
一个数码管,要有8个LED灯控制他显示是什么数字,7个LED控制数字,1个LED控制小数点。如上图
2.共阴极和共阳极
如上图,对于一个数码管,共阴极就是 组成数码管的二极管的阴极是连在一起的,想点亮数码管,就在单片机的对应 I/O 口给高电平。
共阳极就是 组成数码管的二极管的阳极是连在一齐的,想点亮数码管,就在单片机的对应 I/O 口给低电平。
3.让数码管显示数字原理
如上图,abcdefg分别控制数码管的8条led灯,如我要显示数字 8 ,则要把abcdefd全点亮,如上图右边,就是把abcdefg都置高电平。
3.段选和位选
如上图所示,上面八根线(a,b,c,d,e,f,g,dp)控制数码管显示的数字是多少,叫做段选
下面四根线,控制四个数码管中,哪一个数码管被点亮,叫做位选
位选的意义:
由第一点的知识可知,控制一个数码管的亮灭,需要8个LED灯,换言之,控制一个数码管,就要用掉8个 I/O口,控制5个数码管就要用掉40个I/O口,
I/O口的资源没有那么多,所以引入了位选,有了位选以后,只需要8个I/O口控制数码管的段选(数码管显示什么数字)就好,至于让哪一个数码管亮,就由位选来做。
4.用锁存芯片74HC573实现段选和位选。
如上图所示,是一片74HC573芯片,这片芯片的作用是锁住输入的值,(D1~D8为输入端,Q1~Q8为输出端),C段(就是上图的11引脚)为片选段。
当C段为1时,输出端=输入端,当C段为0时,当输入端改变,输出端也不会改变了,达到了锁存的作用
如图所示,上图是共阴数码管的原理图,从原理图可知,一块74HC573控制段选,另一块74HC573控制位选,分别接到最小系统的P2.6和P2.7引脚
由于是共阴极,所以位选置0时,数码管会亮
5.代码实现
我们显示数字时,为了方便,我们可以下载一个 数码管计算器 ,百度数码管计算器即可。可以快速显示 响应数字怎么引脚怎么设置
如上图,显示3 就是把对应8位 I/O口组 设置为 0x4F
#include<reg52.h>
sbit WE=P2^7;
sbit DU=P2^6;
void main()
{
DU=1;
P0=0x4f; //让数码管显示数字3
DU=0;
WE=1;
P0=0xfe;//让第一个数码管点亮,1111 1110
WE=0;
while(1);
}