好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

单片机——摇摇棒制作.doc

11页
  • 卖家[上传人]:hs****ma
  • 文档编号:539792566
  • 上传时间:2024-01-30
  • 文档格式:DOC
  • 文档大小:531KB
  • / 11 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 摇摇棒·原创· [图片] 2011年05月13日 15:17 阅读(130) 评论(10) 分类:个人日记 主题名:摇摇棒背景:想信小时候有玩过香火或者烟花的吧,当香火或者烟花在手中晃动的时候,你会看到什么?对,好看的火花画面···功能:本作品当你拿在手中以较快的速度左右摇摆的时候,由于人眼视觉暂留效应,会在作品经过的幅平面内显示文字,图画,以及发挥你的想象···你想DIY一个么,你想给你的女友一个惊喜么,你想···?想就快快动手吧···      前一阵子,应同学邀请,合作了一批32个LED的摇摇棒,其实哥们动机不纯(哈哈··他死不承认··不要告诉他是我说的啊·),为了满足他的心愿,程序+调试,花了一个晚上给他写了,现在将资料整理···发出来···欢迎拍砖···东西简单,鼓励大家自己动手制作,如果哥们有桃花运,不要忘记给我发喜糖啊··抓住时间,超越空间,飞往另一个世界···照片名称:也许,相见不如怀念··照片名称:也许这就是人间的四月天吧··照片名称:爱你,疼你,你会知道么?照片名称:让我们相约同一个地方···照片名称:实物照片名称:电路图(可以联系索取·) /********程序功能:32*32点阵 摇摇棒程序版本:2011年4月11日2:35:38    V2.5程序设计者:消失的电波(彭杰)程序修改者:/********/// 此为自定义头文件,具体请参见STC89C52RC/89C54RD+/89C58RD+ 系列芯片 // datasheet中PQFP-44/PLCC-44封装关于P4口的引脚定义以及内部地址声明#include // 内含_nop_();函数        #include // 32*32汉字字模数据头文件#include #define DelayTime 10 // 延时时间   根据晶体改动此参数unsigned char changeFlag = 1; // 画面切换标志sbit P4_3 = P4^3;    // 按键接口,本程序中应用P4^3的第二功能,即外部中断2// 延时子函数void delay(unsigned int i){    while (i--)    {       _nop_ ();    }}// 显示子函数    DisAdd:欲显示汉字头地址    delayTime:延时时间void Display(unsigned char *DisAdd,unsigned char delayTime){    unsigned int i;        // 一个32*32点阵的汉字占64个字节。

      每次取4个字节,一个汉字循环32次取完,每帧显示5个汉字       for(i=0;i<160;i++)    {          // 此程序中采用按列,高位在前的取模方式,每次取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点亮与熄灭的时间基本相同        delay(delayTime);    }    // 退出显示子函数,清除显示    P0=0xFF;    P1=0xFF;    P2=0xFF;    P3=0xFF;}/********/// 外部中断2,中断向量号为6void EX_INT2(void) interrupt 6{    // 关闭全局中断    EA = 0;    if (!P4_3)        {            // 延时消抖,在12MHz晶体时大概为20ms            delay(2000);            // 松手检测            while(!P4_3);            // 画面切换标志加1            changeFlag++;            // 显示6帧数据            if (changeFlag >= 7)            {                changeFlag = 1;            }                        // 将changeFlag的值赋给P1口显示,即指示即将显示的是第几帧数据            P1 = ~changeFlag;        }     // 使能全局中断    EA = 1;    }/********/// 外部中断3,中断向量号为7// 外接一只颠倒开关或水印开关至32引脚,即P4^2,每中断一次显示一帧数据void EX_INT3(void) interrupt 7    //格式区别。

      {             // 关闭全局中断    EA = 0;     // 在此延时是为了让汉字能够显示在摆幅平面的中间位置,根据摆动速度进行调节    // 当然可以设置为自动调节,请读者发挥想象自行设计    delay(5000);      // 选择显示图画,changeFlag通过按键改变其值    switch (changeFlag)    {        case 1 :            // 显示第1帧数据                 // 人间四月天            Display(tab1,10);            break;        case 2:                 // 见或者不见            Display(tab2,10);            break;        case 3:                 // I Love You             Display(tab6,10);            break;        case 4:                 // 消失的电波             Display(tab4,10);            break;        case 5:                //              Display(tab5,10);            break;        case 6:                // 2011.04.11             Display(tab3,10);            break;        default :            break;    }    // 重新打开中断    EA = 1;         }// 主函数void main(void){    // 使能全局中断    EA = 1;    // 使能外部中断3    EX3 = 1;    // 下降沿中断    IT3 = 1;    // 使能外部中断2    EX2 = 1;    // 下降沿中断    IT2 = 1;    // 将changeFlag的值赋给P1口显示,即指示即将显示的是第几帧数据,初始为第一帧    P1 = ~changeFlag;    for(;;)    {        // 检测按键是否按下        // 此处按键检测利用中断,如果不用中断,也可以将EX_INT2中程序cut至此。

          }    }。

      点击阅读更多内容
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.