欢迎来到天天文库
浏览记录
ID:38796687
大小:521.00 KB
页数:11页
时间:2019-06-19
《摇摇棒文档通过一排灯来模拟一个点阵 通过一排灯来模拟一个点阵》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、摇摇棒制作接触单片机大概有一年时间了,开始从听同学讲,再到网上找资料(主要关于单片机的用途),心中就有一种要学学这东西的冲动,最后在同学的怂恿下买了一块开发板。拿到板子心里还有蛮激动的,毕竟是自己第一次接触这么神秘的东西,玩了几天,把里面的例程跑了一遍后兴趣就慢慢的减下来,虽然自己有过一些小小的程序设计,但是都是非常基础的,最多是将里面的一个模块多循环几次,稍微复杂一点就是将几个模块结合起来。经过一个暑假,单片机也是学学停停。最近老师布置的课程设计作业,要做实物出来,每人都有题目,老师最后补充一句,要是觉得这些题目你觉得原材料不好买就可以根据自己的情况
2、另选题目,听老师这么一说,自己就有一点点冲动用个单片机做个简单的小东西,呵呵,当然我的摇摇棒的想法就产生了,有想法就行动,呵呵。因此我就在找那方面的资料,还算好找,那个有现成的,心动不如行动,没花多少时间,基本上确定了自己的思路,理清了原理。这是关于摇摇棒原理的解释:我们知道屏幕上显示连续的画面是通过扫描实现的,电影就是如此,一秒钟播放二十四张画面,这样在眼睛的暂留时间内就会显示下一张画面,看起来就是动起来的连续的动画,摇摇棒的原理也是如此,在纵向有16个发光二极管,我们可以通过横向移动来进行扫描,把程序中流水灯变化的时间间隔设置在眼睛暂留时间内一般小
3、于0.04S就可以,因此我们在横向扫描时触动水银开关,程序开始执行,因此就可以显示一幅完整的画面。简单吧。下面是显示画面中的一幅关于硬件的制作:首先当然是电路方面的设计,由于本人是第一次做单片机方面的东西,很多需要注意的事还得通过实践才能掌握,因此这次使用的原理图与网上找到的没有什么分别,自己现将我的PCB展现如下,很丑陋的,经验不足元件参考:晶振:12MHZC1:20uF的电解电容,C2,C3:30pF的独石电容LED为IN4007稳压二极管K1为普通开关K2为水银开关LED(1~16)为3MM发光二极管用到的电阻都是10K,排阻由于买元件时没有考虑
4、到,故自己焊接了电阻在对应的引脚元件买回来后开始是想按照网上的做成一个长条形状,因此很轻易的将一块万用板损坏,建议没有必要的工具千万不要乱裁剪万用板,得不偿失。焊元件是很简单的事,只要按照原理图细心就是,下面是我焊的板子,比较丑陋的,不过毕竟是第一次啊,嘿嘿正面,将P1口的排阻焊在IC插槽内,比较美观背面就很差劲,特别是有线交叉的时候一定要测试好,避免短路我的一点点焊接方面的经验,在清除原理图的情况下,模块与模块之间要分开焊接,比如焊接起振模块时就不要去焊接其他模块,那样就不会漏掉要焊接的细节,比如接地和接电源。最好是焊好一个模块后用万用表检查一遍,尽
5、量减少错误的产生,当然最后一次检查是有必要的。焊接时细心细心还是细心。硬件具备好后就可以设计软件来调试了,通过原理图很清楚的知道,利用到单片机的资源很少,可以说只用到一些基本的IO借口,和一个外部中断,因此这也是我选择摇摇棒做我的第一个设计的原因,从简单的学起嘛。杂开始就没有那搞复杂的能耐,嘿嘿既然只用到一些基本的IO口和中断,况且连接IO口的为二极管,故调试时现象明显,最容易想到的就是设计一个流水灯,下面是我设计的一个简单的流水灯程序,调试通过,说明硬件连接是好的,因此可以下载显示图案和汉字的程序进去。调试流水灯程序:#include6、>#defineucharunsignedchar#defineuintunsignedintcharnum,a=0,b=3,c;ucharcodetable[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};voiddelay(uintz){uintx,y;for(x=210;x>0;x--)for(y=z;y>0;y--);}voidmain(){while(1){kaishi:c=3;P2=0xff;for(num=0;num<=7;num++){P0=table[num];delay(200);if(num7、==7){a=0;P0=0xff;for(a;a<=7;a++){P2=table[a];delay(50);if(a==7){b--;if(b==1){gotokaishi1;}P2=0xff;gotokaishi;}}}}kaishi1:b=5;for(c;c>=0;c--){P0=0xff;P2=0xff;delay(200);P0=0;P2=0;delay(200);if(c==0){gotokaishi;}}}}当然,我们还可以设计通过加外部中断来触发流水灯,在此不再编写。关于显示图案的程序,我们可以自己设计比较简单的,可以从显示数字1开始,8、再慢慢的到显示汉字和图案,这过程并不难,最多就是编码看起来可能复杂一点,相信通过我们的努力,自
6、>#defineucharunsignedchar#defineuintunsignedintcharnum,a=0,b=3,c;ucharcodetable[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};voiddelay(uintz){uintx,y;for(x=210;x>0;x--)for(y=z;y>0;y--);}voidmain(){while(1){kaishi:c=3;P2=0xff;for(num=0;num<=7;num++){P0=table[num];delay(200);if(num
7、==7){a=0;P0=0xff;for(a;a<=7;a++){P2=table[a];delay(50);if(a==7){b--;if(b==1){gotokaishi1;}P2=0xff;gotokaishi;}}}}kaishi1:b=5;for(c;c>=0;c--){P0=0xff;P2=0xff;delay(200);P0=0;P2=0;delay(200);if(c==0){gotokaishi;}}}}当然,我们还可以设计通过加外部中断来触发流水灯,在此不再编写。关于显示图案的程序,我们可以自己设计比较简单的,可以从显示数字1开始,
8、再慢慢的到显示汉字和图案,这过程并不难,最多就是编码看起来可能复杂一点,相信通过我们的努力,自
此文档下载收益归作者所有