所有关于电路
项目

LED追球手…扭了一下!

2016年1月12日通过Jens Christoffersen

制作一个LED追逐器:我们将使用一个微控制器和一个LCD,以及通常的4017计数器。

用一个MCU和一个LCD以及4017个计数器来照明。

需求

介绍

互联网上充斥着LED追逐者、骑士和以不同方式闪烁一系列LED的特定模式。在这篇文章中,我将制作另一个LED追逐者,或骑士骑士,但这是一个小扭曲:我们将制作一个LCD菜单,允许您选择不同的模式和速度。

这个项目有五个pcb:四个带led的pcb和一个带微控制器的pcb。在LED的PCB上,有两个icHCF4017BE约翰逊计数器。计数器有一个时钟输入引脚和10个输出引脚。对于时钟引脚上接收到的每个高脉冲,下一个输出引脚设置为高,从输出引脚0开始。在链接中了解更多关于集成电路的信息。

最后一个PCB有一个PIC16F877A单片机。在这个微控制器上,我连接了几个开关、一个电位器和一个液晶显示器。每个计数器IC上的微控制器时钟的顺序不同。该单片机还可以对计数器ICs进行复位。在软件中,有一个菜单允许你在一些预定义的模式中进行选择。您可以使用其中一个开关进行导航,并使用另一个开关进入菜单选择。第三个开关是复位开关。其中一种模式可以让你使用电位器来改变“运行中的”led的速度。这是通过微控制器的内置ADC模块完成的。本文将不讨论ADC。

硬件

为了让led来回“运行”,我为每个8个led使用了两个4017。在第一个4017 IC上,我将Q1连接到LED 1, Q2连接到LED 2,以此类推。第二个4017集成电路的输出在相反的方向连接。Q1到LED 8, Q2到LED 7,等等....我根据这个原理图制作了四个pcb:

点击图像为全分辨率。

然后我做了一个PCB从这个原理图:

点击图像为全分辨率。

为了节省空间,我使用了一些SMD组件。微控制器晶体上的电容器是0603大小。我从来没有焊接过这么小的东西,我很惊讶它是多么容易。我只是需要一点练习。其他的SMD组件都是0805尺寸的,除了明显的通孔组件。

零件清单

以下是由EagleCAD编辑的零件列表。记住你需要把LED PCB乘以4。

软件

我用微芯片的图书馆来做液晶显示器。所有的源代码文件都被复制到一个大的lcdc文件中,并且lcd.h文件被编辑以匹配我的连接。该菜单是使用两个开关箱循环构建的。第一个循环使用适当的文本更新LCD,并为一个变量(MenuItem)赋值。当按下MENUENTER开关时,MenuItem中的值将传递给下一个开关情况循环,它将执行所需的选项。

4017有一个时钟引脚和一个复位引脚。所有4017s时钟引脚都连接到微控制器上的不同引脚上。所有复位引脚被绑在一起并连接到微控制器上的一个引脚。使用这种配置,我可以为单个4017 ICs计时。由于所有重置引脚都被绑定到微控制器上的一个引脚上,我只需要将该引脚高脉冲来重置所有4017 ICs。

通过菜单导航,是通过一个按钮完成的。对你来说,一次推可能看起来像一次推,但对微控制器来说就不一样了。开关会弹跳,使微控制器认为你按了很多次按钮,这叫做开关弹跳。在这里了解更多:开关弹跳及如何处理。我正在用软件处理。

软件中有14种不同的模式。这是创建菜单选项的字符串:

// MENUOPTION字符串char prg1[] = "运行1. .4017年”;//时钟第一个CD4017字符prg2[] = "运行2。4017年”;//时钟第二个CD4017 char prg3[] = "RUN 3。4017年”;/ /……等等……char prg4[] = "执行4。4017年”; char prg5[] = "RUN 5. 4017 "; char prg6[] = "RUN 6. 4017 "; char prg7[] = "RUN 7. 4017 "; char prg8[] = "RUN 8. 4017 "; char prg9[] = "UP - DOWN "; // LEDs "run" up and down endlessly char prg10[] = "USER SPEED "; // User set the speed char prg11[] = "RUN ODD "; // Clock only ODD number CD4017 -> 1, 3, 5, 7 char prg12[] = "RUN EVEN "; // Clock only EVEN number CD4017 -> 2, 4, 6, 8 char prg13[] = "RUN EVEN - ODD "; // Clock first EVEN numbers then ODD numbers -> 2, 4, 6, 8, 7, 5, 3, 1 char prg14[] = "RUN ODD - EVEN "; // Clock firs ODD numbers then EVEN numbers -> 7, 5, 3, 1, 2, 4, 6, 8

该软件已得到相当好的评价,因此不再作进一步的讨论。您可以在下面的链接中下载源代码。

jc_pic16f877a-32ledchaser.c.zip

结论

在这篇文章中,我为互联网制作了另一个LED追逐器,但这里有一个小小的转折,那就是带有菜单的LCD。总共有32个led在上下运行,或者以不同的模式运行。微控制器有一些未使用的引脚,这意味着你可以添加更多的pcb与led。你准备好了吗?

图片和视频

SOT-23晶体管和一个0805电阻:

我做了四块这样的木板:

这是控制板:

16 × 2液晶显示器:

自己尝试一下这个项目吧!BOM。

2的评论
  • W
    Wontolla 2016年1月18日

    这篇文章很棒,我真的很喜欢读。快速注意,在零件列表中,你说你使用的是16F877A,但在原理图上,零件被标识为16F874P。只是觉得你会想知道

    喜欢的。 回复