设计目标
通过一555定时器芯片和一CD4017芯片控制9个LED灯间隔0.5s依次点亮,即实现流水灯。
手动流水灯
为比较形象地说明CD4017芯片的工作原理,我下面通过设计一个简单的手动流水灯的实现来介绍这个芯片。
脉冲发生电路
下图是一个非常简单的按键电路,但这里我们是用它来产生脉冲信号的。它的电路很简单,电源正负极中间接了个按键开关,串了个电阻是保护电路的。右边是双通道示波器,通道A接的按键电路的输出,用来观察它输出的电压信号。
关于它如何产生脉冲信号还有什么是上升沿信号的问题,我们看下示波器的仿真结果就好理解了。看下图,很明显在按下按键后电压从低电平变成了高电平,而右边示波器界面显示的就是一个典型的上升沿脉冲信号。
CD4017流水灯
有了脉冲发生电路,我们就可以结合CD4017芯片做一个手动的流水灯了。下面是它的电路,左边就是我们刚设计的按键电路,由它产生的脉冲信号给到了CD4017芯片的CP0输入口,右边就是流水灯电路。
看上图,每次我开闭开关(产生上升沿信号),灯就会往后移动一盏。这就是CD4017脉冲分配和计数的原理,也是它最主要的应用了。简单来说,CP口收到一个上升沿信号,输出口移1位。
至于O9输出口为什么接MR脚,以及CD4017芯片的其他引脚的作用我等下再说。这里只是先实现一个简单的手动流水灯的设计而已。
真正的流水灯
手动很麻烦,现在就要用555定时器来帮助我们实现自动化了。接下来就开始实现本文的设计目标了。
方波信号发生器
通过555定时器产生我们刚通过开闭按键产生的上升沿(也叫方波)信号,即方波信号发生器。跟之前按键电路的区别在于,它会隔段时间就输出同样的上升沿信号,不用再人为地开闭按键,从而实现了自动化。
那它是怎么工作的呢?简单来说,它就是靠电容充放电产生的方波,电容充电时它输出高电平,放电时输出低电平,所以电容越大,充放电时间越久,周期也就越大。
下面是它的电路,通过对电容C1值的修改可以改变输出方波信号的周期,对电位器R12的修改可以改变方波信号的占空比。这两者的参数都可以决定最后我们设计的流水灯的显示时间间隔。
对于555定时器做方波信号发生器的应用,我觉得了解以上内容即可自行设计了。然后,对它的原理感兴趣的话可以在这里[1]找到答案。
示波器的使用
本文要设计间隔0.5s亮灭的流水灯,那么输出方波的周期就应该是0.5s,为得到合适的输出周期,我们还得会用示波器方便看波形。
打开仿真,示波器开始输出波形,横轴代表时间(也叫周期),纵轴代表输出电压(也叫幅值)。波形图的下方显示的是仿真运行的时间还有A通道的幅值电压。再往下就是对波形图的设置,Timebase(时基)栏下的Scale(比例)框可以修改时间轴一格的单位(这里每格代表200ms),Channel A(通道A)栏下的Scale框可以修改电压幅值轴一格的单位(这里每格代表2V)。
从上图两个下降沿可以判断出现在方波输出周期差不多是480ms,跟我们要求的500ms,仅20ms的误差,差不多可以接受了。
仿真实现
方波输出合适了,现在就可以直接把方波产生电路的输出接到CD4017控制的流水灯电路上了。因为本次设计需要有实物,考虑到器件不好找的问题所以就把2.2uF的电容通过两个1uF的电容并联等效了。下图即为最终设计的电路。
现在结合上图说下为啥要把O9输出接到MR脚吧,CD4017的MR脚应该代表Master Reset,就是主复位清零的意思。当在MR脚加高电平或正脉冲时,计数器清零,在所有输出中,只有对应“0”状态的O0输出高电平,其余输出均为低电平。
因为本设计目标只要9个流水灯,O9这个输出我们没有用到的,所以最好就是它输出高电平时马上跳回到O0(也即回到第一盏LED灯),这里就是利用了MR脚的这个工作特性,提前让CD4017重新开始计数了。
- 1.阎石的《数字电子技术基础》(第六版),第七章,7.5节-555定时器及其应用,第380页公式(7.5.4)有涉及到周期的计算。 ↩