DIY SHOOK16 LED 字幕摇摇棒【效果+原理图+源代码+字幕修改方法】

发布时间:2012-02-7 阅读量:14119 来源: 我爱方案网 作者: 杜洋

中心议题:
    *  变废为宝:DIY SHOOK16 字幕摇摇棒

解决方案:
    *  电池+单片机+贴片LED+塑料管+导线


相关阅读:
新奇设计-采用LED做光源制作DIY投影机
http://www.52solution.com/article/articleinfo/id/80010854
stm8s103 + TM1812做的自行车轮POV【原理图+取模教程】
http://www.52solution.com/article/articleinfo/id/80010859
给你新鲜感-DIY鼠标LED灯
http://www.52solution.com/article/articleinfo/id/80010856
不可错过的 7 款新奇 LED 产品
http://www.52solution.com/article/articleinfo/id/80010853
攒机用多功能LED灯
http://www.52solution.com/article/articleinfo/id/80010857
超可爱米老鼠灯泡-你Hold得住吗?
http://www.52solution.com/article/articleinfo/id/80010858


黑夜里打开摇摇棒,在空中快速的左右摇晃,神奇的事情就会出现。如果是干木材上的一点碳火,那么摇晃出来的只会是一条弧线。摇摇棒却可以让棒身上的LED 灯在划过空中的适当位置显示文字和图形,这一奇迹就是单片机的杰作。单片机爱好者都会在《无线电》杂志或者网上找到关于摇摇棒制作的文章,相信许多热血沸腾的朋友已经着手制作了,最先要解决的问题是买到水银开关,它并不怎么常见,虽然价格只有1 元钱。接下来是要买一块长条形洞洞板,把8 个或16 个LED 灯并排焊在上面,然后连接LED灯与单片机之间的导线。如果你觉得这样的制作太麻烦,何不试试精简设计的摇摇棒,让制作更简单,让外观更简洁。单片机、LED、电池、导线、塑料管,这5 件东西可以制作什么?下面你将了解到如何用这5 件材料制作可显示汉字的摇摇棒。我为这款设计取名SHOOK16 摇摇棒。

本设计的原理图以及源代码下载请浏览:
http://www.52solution.com/data/datainfo/id/6153

SHOOK16 LED摇摇棒的效果




SHOOK16 摇摇棒制作起来非常简单,而且它使用的是16 个LED 灯来显示,可以轻松显示中文、英文和图型。程序设计上考虑了将来的字幕更换,可直接用取模软件生成你需要的字幕内容。整个制作无需PCB板,焊接容易、结构紧凑。只要把贴片LED 直接焊接在单片机的引脚上就可以了。而且一般的摇摇棒多采用微动开关来切换字幕,SHOOK16 摇摇棒却另有创新,它采用纵向摇动或敲击棒身来切换字幕,字幕的数量完全取决于单片机FLASH大小,SHOOK16 采用的单片机是STC12C5A60S2,内部具有60K 字节的FLASH空间,而程序本身才使用了2K 字节,余下的58K字节可以任你发挥。

 


第1 步
准备制作材料。制作SHOOK16 摇摇棒所需要的材料少的可怜,通常的制作都不把电池和导线算到材料里面,而在这里算上它们也不过5 种。电池、单片机、贴片LED 都可以在电子市场或者网上买到,包装单片机用的塑料管可以在卖芯片的柜台找到,店家都是把它当垃圾处理的,而我们却要把它变废为宝。导线和废弃的元器件引脚不用准备,相信每一个爱好者的桌面上都有一大堆。当然了,因为制作中使用了单片机,所以你还需要准备电脑和为STC 单片机烧写程序的ISP 下载工具。有了这些就可以完成制作,是不是有些不可思议呢?原来电子制作可以这么简单!


制作SHOOK16摇摇棒所需要的材料(图片)

好的制作其实并不需要过多的文字说明,那就发挥我的强项,用图解的方式介绍SHOOK16 摇摇棒的制作方法。首先来看一下制作SHOOK16 摇摇棒所需要的材料清单。




SHOOK16摇摇棒电路原理图(图片)

SHOOK16 摇摇棒的电路原理图也很简单,主要有单片机、LED、惯性开关和电池。电路图中标号相同的引脚是连接在一起的,这是网络标号的表示方法,省去了密密麻麻的连接线。其实在以下的制作过程中并不需要回头来参考原理图,因为电路制作是如此简单,以至于只看实物图片就可以完成制作。下面我们就按顺序对制作的关键节点做图文介绍。

 


第2 步
把单片机第21 脚到第40 脚一侧的引脚全部用钳子向外侧弯曲,目的是为了增加单片机的宽度。为什么要这样做呢?我在设计的时候是使用了电子市场中常见的包装单片机的塑料管,店家多把空出来的塑料管丢掉。我觉得它们结实而且透明,应该可以制作些什么,于是就向店家要了一些。在设计摇摇棒的时候突然想到塑料管的妙用,如果用塑料管来做摇摇棒的身体应该是很理想的。可是当我把单片机放进去的时候却发现单片机会左右、上下晃荡,这样制作出来的摇摇棒会在摇动时叮噹乱响,不知道的还以为是拨浪鼓呢。我也想过用胶带固定或是用纸填充空隙,可是会让制作变得困难,而且也不美观。所以不是缩小塑料管的宽度就是增加单片机的宽度,于是弯曲一侧引脚就可以最快速地解决问题。那为什么只弯曲第21脚到第40 脚一侧的引脚呢?这里面还是有门道的,下文告诉你。


用钳子弯曲单片机第21脚到第40脚一侧的引脚(图片)


弯曲角度以单片机放入塑料管后不易左右移动为止(图片)

 


第3 步
制作LED 显示电路。把贴片LED 直接焊接在刚刚被弯曲过的单片机引脚上。从单片机的21 脚(P2.0)开始焊起,贴片LED 的负极连接到21脚一侧,后续的LED负极也都朝向这一侧。16个LED 分别焊接在单片机的21 脚到37脚之间。焊接LED 的时间不要过长,烙铁尖不到碰到贴片LED 的塑料面上,LED的排列的整齐,显示效果才会更好。




将LED直接焊接在单片机的引脚上,LED负极都朝向单片机的21脚一侧(图片)

 



0805型贴片LED灯(图片)

有朋友可能很少接触这种0805 型贴片LED,它的体积比大米粒还要小,亮度却不比直插式的LED 差。这种贴片LED 在各大电子市场都有销售,包装它们的是一个大圆盘里面的黑色塑料条,好像电影胶片一样,许多贴片元器件都是这么包装的。


贴片式LED灯的极性说明(图片)

贴片LED 和直插LED 在使用上并没有太大区别,只需要学会识别贴片LED 的极性,还有就是在焊接时控制好烙铁的温度和焊接时间。贴片LED 的两侧有两个电极,其中标有绿色小点的一侧为LED 的负极。焊接时先将两个焊盘中的其中一个上锡,用烙铁熔化焊盘上的锡,同时用摄子轻轻地夹起贴片LED 放到对应位置,撤走烙铁等锡凝固后再用常规方法焊接另一边的焊盘。初次焊接的朋友可以在洞洞板上练习,熟悉动作之后再正式焊接。

这种直接焊接的灵感来自于我之前设计的mini1608电子时钟,当我把LED 点阵屏直接焊接在单片机的引脚上时,我就开始对直接焊接的制作着了迷。后来的一段时间里,我总会用身边可以找到元器件往单片机的引脚上安,其中的某一天就想到了贴片LED。但是当时并没有想到用这个方法来制作什么东西,于是存入了大脑深处,直到在写摇摇棒设计方案的时候才又把陈年的创意翻了出来。贴片LED 的体积小巧,包装单片机的塑料管又是透明的,正好可以透出LED的光。

如此焊接在硬件结构上确实不错,可是在电路原理和单片机编程上面是否行得通呢?嗯,这里的关键问题就是连续16 个贴片LED 所连接的引脚都必须是I/O接口,并且I/O接口在输出高、低电平时都可以直接驱动LED 发光。也就是说,单片机I/O 接口输出高电平时至少需要有20mA 电流的推动能力。唯一可以做到这一点的也只有I/O 接口的推挽工作方式了。恰好STC 公司的10、11、12 系列的单片机都有这一配置,所以我选择了手边常用的STC12C5A60S2来实现。

电路原理没了问题,那么如何编写LED 的驱动程序呢?不仅让LED 可以任意点亮,还要能控制它们在摇动过程中显示汉字和图形。老实讲,我在设计SHOOK16 摇摇棒之前并没有了解过其他摇摇棒的原理和编程方法,所以编写传统设计的摇摇棒尚无把握,更何况这种从来没有试过的驱动方式了!攻下这一难关确实耗费了不少精力,值得庆幸的是N 次调试之后我成功了,并滤除那些挫折与失败,仅把成功经验与你分享。

传统的摇摇棒设计是采用传统的单片机灌电流方式点亮LED 的。现在闭上眼睛,想象一下摇摇棒摇动时的1/4 慢镜头,在摇摇棒处在最左边的时候,16个LED 灯会显示字幕数据表里最左边的一列,停留一段时间之后所有LED 熄灭,等待摇摇棒的身体摇动到字幕数据中下一列的位置,然后显示、停留、熄灭。如此方法一直显示到字幕的最右边。好了,现在取消慢镜头,变成正常速度,我们的眼睛便可以看到那星星点点的亮光在浩瀚无际的夜空中形成飘浮的文字,这种显示方法应该叫做逐列显示。


逐点扫描形成列数据,然后再逐列扫描形成字幕(图片)


某一I/O接口为低电平时负极与之连接的LED点亮(图片)

SHOOK16 摇摇棒在1/4 慢镜头的时候看起来是逐列显示的,可是在1/16 慢镜头的时候却又有不同。SHOOK16 摇摇棒中单片机与LED的连接方式注定让16 个LED 不能同时点亮,它们必须逐一点亮。同一时间内只能有1 个引脚为低电平,其余引脚都必须为高电平。在摇摇棒的身体摇动到某一位置时,这一列的字幕数据表会被送入显示程序,显示程序要怎么做呢?有点麻烦,它要从上到下依次检查这一列数据中需要点亮的LED。首先检查最上边第1 个LED,这一列的数据中不需要它亮,那所有I/O接口输出高电平,停留一段时间再检查第2个LED。嗯,第2 个LED 需要亮,于是连接第2 个LED 负极的引脚输出低电平,其他I/O接口输出高电平。这时第2 个LED正极是高电平,负极是低电平,LED 点亮。因为LED反向不导通,所以第3个LED 不亮,其他的LED 两极都是高电平也不亮。点亮一段时间后再依此方法检查其他LED。在1/16 慢镜头时,16 个LED 就好像单片机实验板上的流水灯程序一样逐一点亮又逐一熄灭。在1/4 慢镜头的时候逐点扫描只是一瞬间的事,所以看起来它们是同时点亮的,因为它们处在不同的速度等级上。

编写驱动硬件的工作就只是循环将17个I/O接口中的某一个变成低电平而已了。解决了贴片LED驱动的问题却又产生了新问题,我们如何让单片机知道在摇动时哪一时刻摇摇棒的身体处在最左边呢?

 


第4 步
制作三向惯性开关。将一支废弃元器件引脚对折并焊接在弹性导线的一端上,弹性导线的另一端焊接在单片机的第20 脚(GND)内侧,注意掌握导线长度。将第4 脚(P1.3)引脚向内弯曲至芯片底部,形成惯性开关的一个触点。再用废弃元器件引脚向上延长第5 脚(P1.2),使之形成与第4 脚(P1.3)平行且相对的另一个触点。把第6 脚(P1.4)稍微向内弯曲一点,使它可以在导线向这一侧撞击时首先接触到第6 脚,这样就形成了3 个触点。3 个触点分别对应SHOOK16 摇摇棒的三个方向,所以叫三向惯性开关。弹性导线指的是在轻微的外力作用后能够恢复原状的普通导线,也可以用细铁丝代替。调整弹性导线使之在静止状态时处于上、下两个触点的中间。导线悬空的一端应该有一定重量,增加惯性的作用力。


弹性导线的另一端焊接在单片机的第20脚内侧(图片)


调整弹性导线使之在静止状态时处于上、下两个触点的中间(图片)

三向惯性开关分别对应SHOOK16摇摇棒的3个方向(图片)

为什么要制作惯性开关呢?其实惯性开关的出现就是为了解决我们前面出现的问题——让单片机知道摇摇棒身体所处的位置。在判断棒身位置的设计中,除了为摇摇棒安装全球卫星定位系统(GPS)之外,还可以使用惯性开关。关于惯性还有这样一个笑话,话说一公共汽车里站着一个美女和一个丑男,司机突然刹车,丑男措手不及向前一拥撞到了美女,美女白了丑男一眼说:“哼,德性!”。丑男不好意思的笑了笑说:“嘿嘿,不是德性,是惯性。”在SHOOK16 摇摇棒上有三个美女和一个丑男,虽然这个比喻会让大家感觉妒忌,但事实就是如此。由焊接在单片机第20脚的弹性导线充当着丑男的角色,经过弯曲的第3、4、5 脚分别充当着美女的角色。当向右摇晃的时候,由于惯性的作用,丑男(惯性开关柄)就会撞到左边的美女(惯性开关2),向左摇晃的时候就会撞到右边的美女(惯性开关1),向前摇晃的时候就会撞到后边的美女(字幕切换开关)。他们相撞的时候就是速度刚刚开始改变的时候,他们分开的时候也就是速度趋于稳定的时候。更多关于惯性的原理解释可以致电你的中学物理老师。单片机正是利用了这个原理来判断棒身所处的位置的,其中“惯性开关1”和“惯性开关2”两个触点是用来判断棒身左右位置的,那“字幕切换开关”让摇摇棒多了一样功能——前后摇晃或敲击时切换字幕。所以这种用弹性导线制作的惯性开关不但不需要使用水银开关,而且还独具特色。

 


第5 步

制作电源电路。取一段导线将一端焊接在单片机的第20 脚(GND)上。导线另一端的接头处挂上大量的锡,作为电池负极的接触点。用胶带固定导线,使之在摇动时不易乱窜。再把一支废弃的元器件引脚焊接在单片机的第40 脚(VCC)上,使引脚与单片机上方的导线平行且相对,它们之间的空隙就用来安放电池。将单片机连同电池一并塞进塑料管中,可用透明胶带缠绕单片机一圈并在塑料管开口处留出胶带头以方便拉出电池和单片机,摇摇棒不用时可拉出电池(或把纸片塞在两块电池中间)。最后用透明胶带把开口处包好。因摇动时的离心力向上,加之电池塞入塑料管时本来就已经很紧了,所以单片机及电池不会向下滑落,不需要设计单片机下方固定。


取一段导线将一端焊接在单片机的第20脚上(图片)


把一支废弃的元器件引脚焊接在单片机的第40脚上(图片)


将钮扣电池重叠后放入正、负极接口处(图片)


将单片机连同电池一并塞进塑料管中(图片)

选择适合的电池是决定整个设计成败的又一关键。最初的我采用的是3 节5 号碱性电池,因为我总觉得碱性电池的能量是很大的,可以让SHOOK16 摇摇棒使用的更长久一些。于是我在单片机的正、负极上引出两条导线,通过中空塑料管延长到手柄握着的一端,然后把大大的电池盒用胶带绑在塑料管上。这样一来既不美观也不好操作,和前面的巧妙设计形成了很大的反差。必须重新设计电池方案,那怕做出一些牺牲。正巧手边有前不久为录制LED 点阵屏测试方法视频节目时而购买的钮扣电池,型号是CR2032。我拿出电池往塑料管里塞了塞,虽然有点紧,可以还是可以牢固的塞进去。我大喜!这不正是我想要的样子吗?马上用短一点的导线把两节钮扣电池夹在中间,一并塞进塑料管里。哈哈,那电池、那塑料管、那单片机,就好像老天爷为它们保了媒一样,那么的般配、适合。不过两节CR2032 串联的电压是6V,单片机的工作电压是4.5~5.5V,这样连接会不会损坏单片机呢?其实并不会,首先电路中存在一定压降,加之钮扣电池可提供的电流并不大,二者相配有惊无险。而且因为单片机第21 脚到第40 脚向外弯曲,使得另外一侧的引脚紧贴塑料管内壁,让引脚内侧空出一大块空间,正好是给惯性开关预留的位置。这也正是我要弯曲单片机第21 脚到第40脚一侧引脚的原因。


 


字幕修改方法




SHOOK16摇摇棒在夜间的显示效果(图片)

现在,SHOOK16 摇摇棒制作完成。在宁静的夜晚,招集家里的亲朋好友坐在沙发上,关灯,然后把摇摇棒上LED 的一面对着他们匀速摇晃,那空中飘浮的文字一定会让在场的观众惊叹不已。敲击棒身,“啪”的一声,字幕改变了内容,再敲击——“啪”——又变了。表演结束后,打开灯,其中某位观众站起身来气愤的说:“你要换字幕就换嘛,为什么用棒子打我的头?!”没错,SHOOK16摇摇棒可以为你的生活带来更多精彩和乐趣。

除文章中的提示外,你还需要注意以下几个问题:
用STC-ISP软件烧写HEX 文件时需要有“步骤4”中选择“内部RC振荡器”。
本制作采用STC12C5A60S2 单片机,不可使用其他系列的单片机替代。


相关资讯
YXC可编程差分晶振,频点148.5MHz,LVDS输出,5032封装,应用于高端摄像头

晶振提供稳定的时钟信号,用于同步摄像机内部各个模块的工作,保证视频流的连贯性和准确性

YXC 扬兴 有源石英晶体振荡器,频点48MHz,工作电压1.8V~3.3V,应用于视频转接器

晶振可以提供稳定的时钟信号,用于同步各个组件的工作,确保数据的准确传输和处理

YXC 扬兴晶振 可编程振荡器,频点22.578MHz,3225封装,CMOS输出,应用于红外接收手柄

晶振作为一种常用的频率控制元件,能够产生稳定的脉冲信号,为游戏手柄的电路系统和内部器件提供准确的时序信号

突发!三星HBM芯片未通过英伟达认证

三星电子最新的高带宽内存(HBM)芯片尚未通过英伟达(Nvidia)的测试

压力传感器的选型技巧

压力传感器(Pressure Transducer)是能感受压力信号,并能按照一定的规律将压力信号转换成可用的输出的电信号的器件或装置。通常由压力敏感元件和信号处理单元组成。按不同的测试压力类型,压力传感器可分为表压传感器、差压传感器和绝压传感器。压力传感器是工业实践中最为常用的一种传感器,其广泛应用于各种工业自控环境,涉及水利水电、铁路交通、智能建筑、生产自控、航空航天、军工、石化、油井、电力、船舶、机床、管道等众多行业。