对于刚接触数码管电路的小伙伴们可能会觉得这玩意到底为什么能灵活的显示数字的?
先说一句大实话,其实驱动数码管说白了就是点灯!不信?来看一下数码管内部的结构,如下图1所示:
图1
图1中就是两类数码管,分别是共阳和共阴,共阳的意思就是数码管里面所有的正极都接在一起(如图1左边图中红色路径所示),共阴的意思就是数码管里面所有的负极都接在一起(如图1右边图中绿色路径所示)
如果图1看起来比较难理解的话,那下面的转化图相信会更容易理解。
转化图
那怎么让数码管显示想要的数字呢?比如要显示数字3,如下图2所示:
图2
图2中对于共阳管,要显示数字3只需要COM接5V,abcdg接到GND即可显示。
对于共阴管,要显示数字3只需要COM接GND,abcdg接到5V即可显示。
那实际使用中能不能直接这样接?
当然不行!在实际使用中必须要加限流电阻,不然很容易损坏数码管(电流太大)
图3
那像图3这样驱动是否稳妥呢!
我们看一下STC89C52RC的手册
手册写着GPIO的灌电流有6~12MA,完全可以满足一颗LED的电流。
但是共阴极的数码管就不行了,如下图4所示:
图4
图4中要想点亮数码管,就必须由STC89C52RC的GPIO输出高电平,但由于STC89C52RC(单片机)能提供的电流太小,会造成数码管亮度不够,甚至驱动不起来。所以在实际应用中,一般都是加三极管或者集成IC来驱动共阴管。
最后,我们看一下到底该如何驱动多个数码管?如下图5所示:
图5
图5所示的多位数码管驱动电路只是其中的一种方式而已,驱动数码管的方方有很多很多种,图5只是作为例子展开讲解,其他的驱动方式,要具体情况具体分析,这里就不一一展开说明了!
图5的逻辑:
SN74HC245PWR主要为数码管提供驱动电流,输出直接接到数码管的a,b,c,d,e,f,g,dp上。其中DIG1,DIG2,DIG3,DIG4是每一个数码管的共阴极,也就是一个数码管中8个LED的负极接在一起的节点,也称为“位选”
位选:单片机输出控制NPN三极管来选择点亮8个中某一位数码管。
也就是说要显示什么数字都是通过SN74HC245PWR输出段码全部给到8位数码管。再通过位选来选择点亮哪一位数码管!
当然了,图5这种方式还是比较占单片机的GPIO口的,所以实际项目中都会采用专用的IC去控制,比如使用两片74HC595并转串的方式,或者采用TM1620,通过和单片机通信(只需要占用三个GPIO)就可以实现8位数码管的驱动了。
好了,这章就先写到这吧!