分清楚共阳极和共阴极
如上图所示的这个就是共阳极的,也就是在上面的3号引脚或者8号引脚输入高电平,下面的引脚输入低电平,就可以点亮某一个管。比如,3号引脚输入高电平5V,7号引脚输入低电平接GND,那么A管就点亮,可以用同样的道理点亮其他每一个管。
那么共阴极的呢,自然就是二极管的方向反过来,如下图,操作的方法自然也就是反过来的。
数码管怎么配合单片机进行使用呢?
如果只有一位数码管,而且在单片机引脚够用的情况下,我们可以采用直接连接的方式。假如你用的是STM32,3.3V的推挽输出驱动数码管一般也完全够用了。那么我们就可以直接把单片机引脚接到数码管引脚上面,通过控制单片机引脚就可以控制数码管,这里没有学过单片机的小伙伴可以先撤退了,了解了单片机再过来
当引脚数量充足的时候,当然可以像上图一样这么做,但是如果引脚不够怎么办?
译码器
可以使用译码器来辅助设计,比如在只有一位数码管的情况下,为了给单片机留出更多引脚,我们就可以这么设计
这里利用到了一个3位译码8位的译码器,不知道译码器怎么用的小伙伴可以去复(yu)习一下数电了,这里放上译码器的真值表,我们发现我们通过单片机的三个引脚就能控制8位的输出了
细心的小伙伴可能发现问题了,这个译码器是可以做到八位输出,每次只能输出一位低电平,怎么样才能同时控制数码管的八个段呢?
这里其实需要解决的问题有两个,我们这里先说第一个
8个输出引脚,只能有一个引脚是低电平,其余是高电平,怎么同时控制八位?
这里可以用到我们人眼的视觉延迟效应,既然没法同时点亮,那就一个一个点亮,时间足够短,看起来就和同时点亮一样了。
这里就涉及到了第二个问题了
如果数码管是共阳极的,一个一个点亮自然没什么问题,但如果是共阴极呢?
我们会发现,共阴极数码管采用这种方式,只能熄灭其中一个管,没法做到我们上面说的效果,那么这个时候就需要用到非门进行电平的反转了。听起来好像很简单,加个非门就好了,在数码管只有一位的情况下确实是这样的。
我们上面这种设计方法,如果遇到多位数码管怎么办呢?
下面给大家分享一个案例
案例分享
如上原理图,采用了一个38译码器(型号为74HC138D,653),译码器的真值表同上文,右边的数码管是个共阳数码管。这个案例采用的设计方法是把数码管的段接到了译码器上,位选直接接到了单片机的引脚。
乍一看,这么设计好像没有什么毛病
实际上在编程的时候,我们想象一下这个逻辑,如果要同时点亮四个数码管,并让他显示不同的数字,那么我们会发现,这四个位置的数字是不能同时操作的。为什么呢?因为四个位置的数码管段选都连在了同一个译码器上,只能一个一个去点亮他们
这时候就出现了一个大问题,当我们只有a,b,c...dp八个段的时候,逐个点亮看不出明显的亮度减弱,而现在有32个段,如果逐个点亮,每个段实际通电的时间只有总时间的1/32,这时候就会发现数码管的亮度明显被削弱了。当然,会有人想用ULN2003之类的芯片来提高电压,也没问题,但我认为这里最好的解决方法并不是提高电压
第一种,我认为应该是把译码器接到数码管的位上,也就是原理图中的DIG1-DIG4可以用一个24译码器,然后a-dp这8个段直接接到单片机上,当然这种方法也需要用到很多的单片机引脚,或者更适合位数较多的数码管。因此,我们还可以用另一种器件来实现我们需要的功能
那就是,锁存器
锁存器
锁存器,顾名思义,就是锁住电平用的。如果大学期间参加过蓝桥杯单片机或嵌入式的比赛,应该就会对这个东西特别熟悉
我这里拿蓝桥杯用过的锁存器M74HC573M1R来举例,如下图,当Y6C的电平改变时,就能开关锁存,具体是高电平开还是低电平开我就偷个懒不去差手册了,大家如果要用这款芯片来做电路设计记得去查一下手册。所以其实锁存就是存下来并锁住,通过控制Y6C就可以控制右侧com1-com8的电平是否和左侧相同,这样就可以最大程度利用到单片机的引脚资源了
对了,进阶选手可以了解一下移位寄存器74HC595,这款芯片还是比较常用来驱动数码管的。
审核编辑:刘清
全部0条评论
快来发表一下你的评论吧 !