面包板上的流水灯
流水灯是一种非常简单的电路设计项目。使用移位寄存器很容易实现这个电路:
本来我计划采用一片555定时器产生时钟信号,一片74595移位寄存器实现流水灯的功能。可惜,电路做到一半发现74595的2号引脚(Q2)似乎损坏了(Q2输出高电平时,Q0~Q7会一起输出高电平;3号引脚对地电阻约几十千欧,其他引脚对地电阻都在兆欧以上)。其实做这个电路比较合适的集成电路是74194,但我没有。我也没有其他的移位寄存器了,于是用了两片7474(各含2个D触发器)来完成这个电路。
电路原理图如下:
555定时器用于产生方波信号,频率可由电位器R4调节。产生的方波作为四个D触发器的共用时钟。每个D触发器的输出Q作为下一个D触发器的输入D,实现循环移位的功能。我使用的74HC74芯片的输出电流为±25mA,足够驱动LED。每个LED按2V 20mA算,则需要限流电阻150Ω,因为同一时刻只有一个LED亮起,所以可以共用一个限流电阻。
这个原理图是用Fritzing绘制的。这个软件的优势是它不但可以绘制原理图和PCB图,还可以绘制基于面包板或者Arduino开发板的实物图。这给业余电子制作者带来了很大方便。这个软件也有一些缺点。比如自定义元器件的时候编辑起来似乎比较麻烦,布线功能用起来不太顺手,导出的SVG文件也有一些问题(图中RESET标签的文字都是颠倒的)。
我在面包板上搭了类似的电路,并验证了其功能。电路的运行效果也可以通过Falstad的电路仿真器观察。
PS 我本来是想用FPGA做一个PIC的编程器(比这个流水灯高级许多),然后用PIC跑一个流水灯验证我编程正确。我已经调试了很久时序,感觉没有问题,但是似乎看不到编程成功的迹象。正准备再尝试一次的时候,不小心把12V电源短接到5V电源上,烧了几个三端稳压器。现在FPGA的供电电源坏了,我也没法做一些复杂的电路了。
PPS PIC微处理器真是个神奇的东西。我这里有一块PIC12F629的芯片,才8个引脚,和555一样大小,功能却强太多:内置4MHz振荡器、2个定时器、6个通用IO口(足以驱动LED)。用PIC写流水灯那么只要一片集成电路就足够。