ImageVerifierCode 换一换
格式:DOCX , 页数:17 ,大小:555.69KB ,
资源ID:11285363      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/11285363.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(摇摆LED时钟.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

摇摆LED时钟.docx

1、摇摆LED时钟用移动硬盘电机DIY摇摆显示时钟详细制作介绍2009年05月28日 星期四 23:47 看到市场上正在流行的时尚商品摇摆LED时钟,感觉非常新颖独特,正在玩单片机的我,激起了自己也想DIY一个的冲动。不就是一个流水灯吗?有什么难的?! 于是,一个单片机项目就这样开始了。然而动手以后才知道问题并非想象那样简单,有许许多问题在制作中一一出现,经过十多天的制作、修改与调试,作品才告完成,基本达到预先要求。一. 设计思路本制作是根据视觉暂留原理, 让一排8只LED运动, 在空中呈现数字来表示时钟。由于其实质就是一个摆动的流水灯,特别适合初入门的单片机爱好者动手制作。整个屏可显示七个字符,

2、平时作时钟只用其中的五个字符。显示分 “正常运行”、“调分”和“调时” 三种状态。正常运行时中间的“:”符每一秒闪现一次,调分和调时时,则为调整的项闪现。设置三个调整按键,一个为“状态键”,一个为“加法键”,一个为“减法键”。完成图(见图1、图2)图1图2 效果图(见图3)图3二. 硬件结构主板的结构布局见图4。 图4机械部分: 驱动摇棒摆动的机构采用从硬盘上拆下的音圈电机(见图5)组件构成,为制作方便,这个组件是直接安装在电路板上的。 图5 为使摇棒保持平衡,需在线圈端加配重,由于配重是在磁铁的上端,最好选铜质物件。为了让摇棒摆动稳定,在摇棒摆动的摆幅两端加了限位器。并在两个限位器上分别套上

3、一个胶圈,以减轻噪音和振动。 1LED的焊接,(见图6)将LED两脚跨接在电路板两端的方式进行焊接。使LED紧密排列在一起。 图6 2摇棒上的LED与主板上的信号用排线连接,音圈电机供电占2位,LED信号传输占9位,所以至少要11位的排线。(见图7)图7 3设置三个按键用于调整时间。(见图8)图8 4采用驱动直流电机正反转的方式,驱动音圈电机来回摆动。让电机正、反转的方法很多,最典型的是H桥电路驱动。为了简化电路桥功能的集成电路。这种IC很多,比如象TA7257,TA8429H,L6203等,这里用的是三菱公司的M54544AL。(见图9)图9 IC各脚定义见图10。 图10 5电原理图见图1

4、1。图11三. 软件设计1 摇棒的启动通过P3.6和P3.7输出驱动音圈电机的信号, 由于没有设置检测摇棒的传感器,时间间隔只能跟据实验确定。在调试中发现,当驱动摇棒的信号转换加速到一定的时候,从静止状态转到正常摆动状态发生困难,因此需要由慢到快的驱动过程。由下面的程序段实现。do mm-; DelayMs(120+mm*5); /逐渐缩短延时间 put1=put1; put2=put2; /转换输出口电平状态 while(mm0);2 秒闪现的实现数字和字符的闪现是通过变量Ms和数组w实现的,如需要七位字符中的间的第4位闪现,则w3=1。这是通过全局变量Ms在void timer0(void

5、)函数中每隔一秒改变一次状态(0或1),在void timer1(void)函数中的下列语句中实现。if(put1=1)&(ii7)&(Ms*wii=0) P2=ASCIIDOCvii*6+jj; else P2=0xff;3 校正显示不均匀调试中发现,显示屏上的字符并不是一样宽的,仔细分析是由于摇棒在运动中一直受力,使摇棒产生加速运动,这样就需要在程序中加一校正因子,逐渐缩短显示的时间段。具体是通过变量tt在函数void timer1(void)中实现的。4 按键去抖程序按键的去抖采用软件编程实现,其方法是当检测到按键的接口出现低电平后,隔一段时间再检测,如还是低电平,则确认为有效,否则无效

6、。具体的程序是通过函数unsigned char ChKey(bit Key)实现。5 显示同步调试时要根据实际情况确定Ti的值,保证显示正常。6预留的部分功能提供的程序除提供了一个完整的时钟程序外,还预留了显示七个字符功能(见图12),只是主程序要作一些修改。图12 7完整C51程序代码/*POV摇摆显示LED钟C51程序 周正华编 2008.2.29*/#include /*硬件端口定义*/sbit set0=P01;sbit set1=P00;sbit set2=P02;sbit put1=P36;sbit put2=P37;/*时钟用数组*/unsigned char BUFFER=0

7、,0,0,0;unsigned char maxnum=59,23;/*显示用数组*/unsigned int v20;unsigned int w7;/*字符字模*/unsigned char code ASCIIDOC = / ASCII0x7C,0x8A,0x92,0xA2,0x7C,0x00, / -0-000x00,0x42,0xFE,0x02,0x00,0x00, / -1-010x46,0x8A,0x92,0x92,0x62,0x00, / -2-020x84,0x82,0x92,0xB2,0xCC,0x00, / -3-030x18,0x28,0x48,0xFE,0x08,0x

8、00, / -4-040xE4,0xA2,0xA2,0xA2,0x9C,0x00, / -5-050x3C,0x52,0x92,0x92,0x8C,0x00, / -6-060x80,0x8E,0x90,0xA0,0xC0,0x00, / -7-070x6C,0x92,0x92,0x92,0x6C,0x00, / -8-080x62,0x92,0x92,0x94,0x78,0x00, / -9-090x00,0x00,0x00,0x00,0x00,0x00, / - -100x00,0x00,0xFA,0x00,0x00,0x00, / -!-110x04,0x08,0x10,0x20,0x4

9、0,0x00, / -/-120x00,0x6C,0x6C,0x00,0x00,0x00, / -:-130x3E,0x48,0x88,0x48,0x3E,0x00, / -A-140xFE,0x92,0x92,0x92,0x6C,0x00, / -B-150x7C,0x82,0x82,0x82,0x44,0x00, / -C-160xFE,0x82,0x82,0x82,0x7C,0x00, / -D-170xFE,0x92,0x92,0x92,0x82,0x00, / -E-180xFE,0x90,0x90,0x90,0x80,0x00, / -F-190x7C,0x82,0x8A,0x8A

10、,0x4E,0x00, / -G-200xFE,0x10,0x10,0x10,0xFE,0x00, / -H-210x00,0x82,0xFE,0x82,0x00,0x00, / -I-220x04,0x02,0x82,0xFC,0x80,0x00, / -J-230xFE,0x10,0x28,0x44,0x82,0x00, / -K-240xFE,0x02,0x02,0x02,0x02,0x00, / -L-250xFE,0x40,0x30,0x40,0xFE,0x00, / -M-260xFE,0x20,0x10,0x08,0xFE,0x00, / -N-270x7C,0x82,0x82,

11、0x82,0x7C,0x00, / -O-280xFE,0x90,0x90,0x90,0x60,0x00, / -P-290x7C,0x82,0x8A,0x84,0x7A,0x00, / -Q-300xFE,0x90,0x98,0x94,0x62,0x00, / -R-310x64,0x92,0x92,0x92,0x4C,0x00, / -S-320x80,0x80,0xFE,0x80,0x80,0x00, / -T-330xFC,0x02,0x02,0x02,0xFC,0x00, / -U-340xF8,0x04,0x02,0x04,0xF8,0x00, / -V-350xFE,0x04,0

12、x18,0x04,0xFE,0x00, / -W-360xC6,0x28,0x10,0x28,0xC6,0x00, / -X-370xC0,0x20,0x1E,0x20,0xC0,0x00, / -Y-380x86,0x8A,0x92,0xA2,0xC2,0x00, / -Z-390x24,0x2A,0x2A,0x1C,0x02,0x00, / -a-400xFE,0x14,0x22,0x22,0x1C,0x00, / -b-410x1C,0x22,0x22,0x22,0x10,0x00, / -c-420x1C,0x22,0x22,0x14,0xFE,0x00, / -d-430x1C,0x

13、2A,0x2A,0x2A,0x10,0x00, / -e-440x10,0x7E,0x90,0x90,0x40,0x00, / -f-450x19,0x25,0x25,0x25,0x1E,0x00, / -g-460xFE,0x10,0x20,0x20,0x1E,0x00, / -h-470x00,0x00,0x9E,0x00,0x00,0x00, / -i-480x00,0x01,0x11,0x9E,0x00,0x00, / -j-490xFE,0x08,0x14,0x22,0x02,0x00, / -k-500x00,0x82,0xFE,0x02,0x00,0x00, / -l-510x1

14、E,0x20,0x1E,0x20,0x1E,0x00, / -m-520x20,0x1E,0x20,0x20,0x1E,0x00, / -n-530x1C,0x22,0x22,0x22,0x1C,0x00, / -o-540x3F,0x24,0x24,0x24,0x18,0x00, / -p-550x18,0x24,0x24,0x24,0x3F,0x00, / -q-560x20,0x1E,0x20,0x20,0x10,0x00, / -r-570x12,0x2A,0x2A,0x2A,0x24,0x00, / -s-580x20,0xFC,0x22,0x22,0x24,0x00, / -t-5

15、90x3C,0x02,0x02,0x3C,0x02,0x00, / -u-600x38,0x04,0x02,0x04,0x38,0x00, / -v-610x3C,0x02,0x3C,0x02,0x3C,0x00, / -w-620x22,0x14,0x08,0x14,0x22,0x00, / -x-630x39,0x05,0x05,0x09,0x3E,0x00, / -y-640x22,0x26,0x2A,0x32,0x22,0x00, / -z-65;unsigned int TZ,Ti;unsigned char ii,jj,nn,mm,tt, Ms;/*延时函数*/void Delay

16、Ms(unsigned int msec)unsigned int x,y;for(x=0; x=msec;x+)for(y=0;y201) BUFFER0=0; BUFFER1=BUFFER1+1;Ms=!Ms;if (BUFFER1=60) BUFFER1=0;BUFFER2=BUFFER2+1; if (BUFFER2=60) BUFFER2=0;BUFFER3=BUFFER3+1; if (BUFFER3=24) BUFFER3=0; /*定时器中断1处理(LED驱动)函数*/void timer1(void) interrupt 3 using 1TH1=(Ti+tt*15)/256

17、; TL1=(Ti+tt*15)%256;if(put1=1)&(ii5) ii+; jj=0;if(ii10) ii=0;put1=put1; put2=put2;tt=0;/*主程序*/void main(void)Ms=1;Ti=-2100; /根据实际调整 mm=14;put1=0;put2=1; /*初始化定时中断0*/ TMOD=0x11;TH0=-5000/256; TL0=-5000%256;TR0=1;ET0=1;/*初始化定时中断1*/TH1=Ti/256; TL1=Ti%256;TR1=1;ET1=1;/* 七个显示位置,中间为: 符 */ v0=10;v1=10;v2=

18、10;v3=13;v4=10;v5=10;v6=10;/*正常运行状态,让中间:符闪现*/w1=0;w2=0;w3=1;w4=0;w5=0; /*摇摆棒初始启动*/do mm-; DelayMs(120+mm*5); put1=put1; put2=put2;while(mm0);/*启动显示*/ii=0;jj=0;EA=1;/*正式运行*/for(;) while(1) /*显示时和分*/ v1=BUFFER3/10; v2=BUFFER3-v1*10; v4=BUFFER2/10; v5=BUFFER2-v4*10; /*按键处理*/ if(ChKey(set0)=1) /调整项键 if(

19、TZ2) TZ+; else TZ=0; /*闪现调整项*/ switch(TZ) case 0:w1=0;w2=0;w3=1;w4=0;w5=0;break;/正常时秒闪 case 1:w1=0;w2=0;w3=0;w4=1;w5=1;break;/调分时分闪 case 2:w1=1;w2=1;w3=0;w4=0;w5=0;break;/调时时时闪 ; DelayMs(300); if(ChKey(set1)=1) if(BUFFERTZ+10) BUFFERTZ+1-; else BUFFERTZ+1=maxnumTZ-1;DelayMs(300); / 减法键 DelayMs(300); 四. 结语 本制作的最大问题是操声和振动问题,尽管做了努力,还是没有完全解决,还有改善余地。由于设计没有考虑回摆时的显示,显示有明显闪烁现象,也需要进一步完善

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1