[51单片机]纯手工打造摇摆LED时钟.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

现将制作资料整理出来,与广大DIY爱好者分享。

一.整体方案

本制作是根据视觉暂留原理,让一排8只LED作往复运动,在空中呈现八个字符的显示屏,可显示数字或英文字符。开机后先显示“Welcome!”欢迎字符(见图1),再进入时钟显示状态。显示屏同时显示“时”、“分”、“秒”信息,用“:”分隔(见图2)。

图1开机画面????????????????????????????????????????????????????????图2运行状态

显示分“正常运行”、“调分”和“调时”三种状态。当处于调整状态时,调整的项会闪现,以便识别。为此,设置三个调整按键,一个为“状态键”,一个为“加法键”,一个为“减法键”。(见图3)

图3按键的设置????????????????????????????????????????????????????图4音圈电机组件

摇棒的动力部分采用从废旧硬盘拆下的音圈电机(见图4),驱动采用直流电机驱动方式。

结构方面,将音圈电机直接安装在万用板上,将万用板的四周用四根螺柱与一透明有机板结合成一体,构成支撑摇棒底座。(见图5,图6)。

图5万用板与有机板构成底座??????????????????????????????????????图6底座侧面

二.实作要点

1.主板的结构布局见图7。

图7主板布局????????????????????????????????????????????????????????图8摇棒上的LED

2.LED的焊接,将LED两脚跨接在电路板两端的方式进行焊接。使LED紧密排列在一起。

3.摇棒上的LED与主板上的信号用柔性排线连接,音圈电机供电占2位,LED信号传输占9位,所以至少要11位的排线。(见图9)

图9排线与拉簧????????????????????????????????????????????????????图10拉簧

4.为保持摇棒的平衡,在摇棒接近旋转轴的两端加装两只拉簧,这两只拉簧的规格尽量保持一致,弹性强弱要适中,最好可多找几种规格的试试。(图9,图10)

5.采用驱动直流电机正反转的方式,驱动音圈电机来回摆动。让电机正、反转的方法很多,最典型的是H桥电路驱动,H桥电路原理见图11,常见的是用三级管代替图中的开关。

图11H桥驱动原理

为了简化电路,最好采用H桥功能的集成电路。这种IC很多,比如象TA7257,TA8429H,L6203等,这里用的是三菱公司的M54544AL(见图12)。IC各脚定义见图13。

图12电机驱动IC

图13M56544AL各脚定义

6.电原理图见图14。

图14电原理图

7.完成图见图15。

图15完成图?

三.软件设计

1.摇棒的启动

为了使摇棒从静止状态过度到正常运行状态,在正式显示前加一启动程序。其实质就是逐渐加快驱动的频率,一直到摇棒正常摆动为止。通过下面的代码实现

do{

mm++;

Delay(120+mm);

put1=~put1;put2=~put2;

}while(mm60);

Delay(20);//根据实际情况确定延时值

2.秒闪现的实现:数字或字符的闪现是通过变量Ms和数组w[]实现的,如需要八位字符中的间的第4位闪现,则w[3]=1。这是通过全局变量Ms在voidtimer0(void)函数中每隔一秒改变一次状态(0或1),打开或关闭显示。

if(Ms*w[ii-3]==1)P2=0xff;elseP2=~ASCIIDOC[v[ii]*6+jj];//正向显示

if(Ms*w[10-ii]==1)P2=0xff;elseP2=~ASCIIDOC[v[13-ii]*6+5-jj];//反向显示

3.调试中发现,显示屏上的字符并不是一样宽的(见图16),仔细分析是由于摇棒在运动中,一直受力,而且所受的力是随时变化的。为方便精确调整显示,特别作了一个显示中断表Tr[],改变显示LED的时间段,协调显示效果。

图16调整前的显示

4.按键去抖程序

按键的去抖采用软件编程实现,其方法是当检测到按键的接口出现低电平后,隔一段时间再检测,如还是低电平,则确认为有效,否则无效。具体的程序是通过函数unsignedcharChKey(bitKey)完成的。

5.显示同步

因没有位置传感器,

文档评论(0)

ryaoo + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档