小白菜的学习之路系列之四——欢天喜地摇摇棒 摇摇棒DIY群组:
想自己制作的同学们加这个群组吧,一起学习探讨!
https://bbs.elecfans.com/forum.ph ... st&fid=342#groupnav
我的小组:喜欢单片机机的朋友可以加一下,一起进步,一起提高!
https://bbs.elecfans.com/forum.ph ... action=list&fid=343
一 背景 话说2012年就要过去了,某人的生日也快到了。送个什么东西好呢?小白菜开始思考了,上次送是一条小白菜自己设计定做的项链(银的,不贵的,同学们可以试一下哦,保证让小女生感动的不得了……咳咳,有点跑题了。),这次嘛,送个什么好,想啊想,要不就送个闪字摇摇棒吧。摇摇棒又好玩,而且能亲手做(表达心意嘛),还能锻炼一下动手能力,最主要的是自己亲手做的东西是天下独一份的哦。恩,说做就做! 小白菜会把这次DIY过程的全部资料无私奉献!鼓掌!!!可是,这是为什么呢?因为现在地里的白菜8分钱一斤没人要啊,还不如白送呐!!!哈哈。开玩笑!不过种白菜的今年吃苦头了,希望他们早日过上好日子…… 二 应用需求 做一个摇摇棒! 三 过程分析 手不停的左右摇晃,利用人眼的视觉暂留来显示一幅画面,其原理和数码管、点阵的动态扫描相同。因此需要LED和单片机,还需要一个启动显示的装置,并且在摇到一定的位置时来触发这个装置,这个装置就是惯性开关。别的没了…… 四 硬件分析 单片机及外围 电路必不可少。单片机就先STC90C52RC,为什么?因为我手上暂时就只有这一片能用的了。16个LED可以显示汉字,通过电阻连接到VCC,另一端接IO口。 难点来了,惯性开关!小白菜手上没有水银开关,就用加了点焊锡的铜线来充当吧。见图4.1.1。 电池?当然要有!省电???需要稍微考虑一下。附录1是较为详细的制作过程。
图4.1.1 DIY“水银开关”示意图 五 软件分析 通过过程分析,小白菜了解了一个重要的地方,触发显示。但小白菜喜欢把功能拆分开,于是就需要两个函数来处理,触发函数和显示函数。 1 司令部——触发函数 通过检测惯性开关来决定是否起动显示,这是发命允显示命令的函数,因此是司令部!既然是允许显示,那就起名App_YYB_Disp_Enable()吧(App是什么?小白菜的应用层函数的前缀)。 2 作战部队——显示函数 显示函数只负责显示。当司令部触发函数发布显示允许命令后,该函数把一幅图片显示出来(就算是汉字,其实也是一幅点阵图片)。这就像作战部队接到命令后进行执行一样。软件起名App_ YYB_Disp()。 3作战内容——显示内容 找个取模软件把要显示的东西取个模,然后把数据放到code区。尽量放在code区哦。
六 代码编写 略 七 成果展示 “谁知盘中餐,粒粒皆辛苦。”成果出来的那一刻,小白菜心里巨激动!毕竟是个人的劳动成果嘛。话不多说,直接上图。
图7.1.1 效果图 八 总结 1 一开始测试时,不要急于显示汉字,因为汉字是相对复杂的图案。可以先点亮一行或一列。循序渐进!延时要自己进行测试。一开始小白菜在显示列时用的是毫秒级延时,后来发现时间太长,于是改用了微秒级延时。 2 由于手在来回摆动的时候不是匀速的,在最边上时速度最慢,所以在触发后要先延时一段时间,待行进到较为匀速区之后再开始显示。当然,你也可以动态的进行延时来处理这个问题。 3惯性开关可以做成双向触发的(类似于单刀双掷开关)。由两个IO口来确定两个边的位置。如图8.3.1所示。软件也要做相应的更改。如左边触发时,正序显示,右边触发时,逆序显示。(两个都触发时?可以忽略或者取一边有效。)要注意显示时把握好延时。 4显示方式可改变。我们一般都是一次送出8位LED数据到Pn口,这是因为我们的硬件支持我们这们做,如图8.4.1所示,各个LED间互不影响。 是否有其他显示方式?其实我们可以每次只送出一个LED的数据,然后把Pn口的8位数据依次送出,之后显示下一字节。既然一次只点亮一个数据,那个我们可以只用一个限流电阻,如图8.4.2所示。此时一定要保证一次只点亮一个LED,否则亮度下降,注意不要烧毁0.25W的电阻。
图8.3.1双向触发惯性开关
图8.4.1 普通LED接线方式
图8.4.2 无实用价值的改进型LED接线方式 九 附件 内有硬件原理图,源代码,以及本文的PDF版本。 十 联系小白菜 QQ = 1062509507
3htech 我是一颗小白菜~
======================================================================
附录1:摇摇棒硬件制作过程,一定要先画原理图。
原理图 1 焊接LED,数目自己定。之后焊接电阻,最好用直插 元件,小白菜这里都是贴片的……小白菜又测量了下电阻值(1k,5%精度)。
图F1.1.1 焊接LED
图F1.1.2焊接限流电阻
图F1.1.3 检查电阻焊接质量 2 焊接DIP40座和单片机的复位电路,晶振电路。还是贴片的……
图F1.2.1焊接DIP40座 图F1.2.2焊接复位电路和时钟电路
3 焊接惯性开关。由于怕惯性开关自身质量太小,所以加了个焊锡球。为了不让它上下活动,我加了一个小罩子,这样就能保证只在一定的范围内活动。
图F1.3.1惯性开关 4 用排线连接LED和单片机以及开关。如图F1.4.1。 5 焊接电池座和 电源地线。整机焊接完成。如图F1.5.1。这里我强压了一个DIP40座,方便我取下单片机下程序。两个电池串联的,电压6V。正好。效果图如图F1.5.2和图F1.5.3。
图F1.4.1背面连线图 图F1.5.1 整机正面图
图F1.5.2 效果图1 图F1.5.3 效果图2
【全文完】
|