欢迎来到天天文库
浏览记录
ID:15104082
大小:531.00 KB
页数:11页
时间:2018-08-01
《单片机——摇摇棒制作》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、摇摇棒·原创·[图片]2011年05月13日15:17阅读(130)评论(10)分类:个人日记主题名:摇摇棒背景:想信小时候有玩过香火或者烟花的吧,当香火或者烟花在手中晃动的时候,你会看到什么?对,好看的火花画面···功能:本作品当你拿在手中以较快的速度左右摇摆的时候,由于人眼视觉暂留效应,会在作品经过的幅平面内显示文字,图画,以及发挥你的想象···你想DIY一个么,你想给你的女友一个惊喜么,你想···?想就快快动手吧··· 前一阵子,应同学邀请,合作了一批32个LED的摇摇棒,其实哥们动机不纯(哈哈··他死不承认··不要告诉他是我说的啊·),
2、为了满足他的心愿,程序+调试,花了一个晚上给他写了,现在将资料整理···发出来···欢迎拍砖···东西简单,鼓励大家自己动手制作,如果哥们有桃花运,不要忘记给我发喜糖啊··抓住时间,超越空间,飞往另一个世界···照片名称:也许,相见不如怀念··照片名称:也许这就是人间的四月天吧··照片名称:爱你,疼你,你会知道么?照片名称:让我们相约同一个地方···照片名称:实物照片名称:电路图(可以联系索取·) /********程序功能:32*32点阵摇摇棒程序版本:2011年4月11日2:35:38 V2.5程序设计者:消失的电波(彭杰)程序修改者:/****
3、****///此为自定义头文件,具体请参见STC89C52RC/89C54RD+/89C58RD+系列芯片//datasheet中PQFP-44/PLCC-44封装关于P4口的引脚定义以及内部地址声明#include//内含_nop_();函数 #include//32*32汉字字模数据头文件#include#defineDelayTime10//延时时间 根据晶体改动此参数unsignedcharchangeFlag=1;//画面切换标志sbitP4_3=P4^3; //按键接口
4、,本程序中应用P4^3的第二功能,即外部中断2//延时子函数voiddelay(unsignedinti){ while(i--) { _nop_(); }}//显示子函数 DisAdd:欲显示汉字头地址 delayTime:延时时间voidDisplay(unsignedchar*DisAdd,unsignedchardelayTime){ unsignedinti; //一个32*32点阵的汉字占64个字节。每次取4个字节,一个汉字循环32次取完,每帧显示5个汉字 for(i=0;i<160;i++
5、) { //此程序中采用按列,高位在前的取模方式,每次取4个字节,也就是1列送至P0-P3口显示 P0=DisAdd[4*i]; P2=DisAdd[4*i+1]; P3=DisAdd[4*i+2]; P1=DisAdd[4*i+3]; //延时片刻,清除显示 delay(delayTime); P0=0xFF; P1=0xFF; P2=0xFF; P3=0xFF; //延时片刻,保证LED点亮与熄灭的时间
6、基本相同。 delay(delayTime); } //退出显示子函数,清除显示 P0=0xFF; P1=0xFF; P2=0xFF; P3=0xFF;}/********///外部中断2,中断向量号为6voidEX_INT2(void)interrupt6{ //关闭全局中断 EA=0; if(!P4_3) { //延时消抖,在12MHz晶体时大概为20ms delay(2000); //松手检测 while(!P
7、4_3); //画面切换标志加1 changeFlag++; //显示6帧数据 if(changeFlag>=7) { changeFlag=1; } //将changeFlag的值赋给P1口显示,即指示即将显示的是第几帧数据 P1=~changeFlag; } //使能全局中断 EA=1; }/********///外部中
8、断3,中断向量号为7//外接一只颠倒开关或水印开关至32引脚,即P4^2,每中断
此文档下载收益归作者所有