找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2944|回复: 9
打印 上一主题 下一主题
收起左侧

求教摇摇棒制作方法

[复制链接]
跳转到指定楼层
楼主
ID:147114 发表于 2016-11-9 21:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
求教摇摇棒制作方法

评分

参与人数 1黑币 +5 收起 理由
2515361695 + 5 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:1 发表于 2016-11-13 15:11 | 只看该作者
回复

使用道具 举报

板凳
ID:147669 发表于 2016-11-13 18:31 | 只看该作者
百度一下,你就知道了。
回复

使用道具 举报

地板
ID:147669 发表于 2016-11-13 18:32 | 只看该作者
是的,我只是来整点儿
回复

使用道具 举报

5#
ID:147890 发表于 2016-11-14 21:02 | 只看该作者
google;有  shake
回复

使用道具 举报

6#
ID:148069 发表于 2016-11-16 14:23 | 只看该作者
回复

使用道具 举报

7#
ID:148069 发表于 2016-11-16 14:24 | 只看该作者
很全的
回复

使用道具 举报

8#
ID:140346 发表于 2016-11-16 14:58 来自手机 | 只看该作者
电子市场有套件,你可以去看看
回复

使用道具 举报

9#
ID:148324 发表于 2016-11-16 19:08 | 只看该作者
百度  吧   找教程
回复

使用道具 举报

10#
ID:166208 发表于 2017-2-23 18:14 | 只看该作者
#在这里快/**************************************************************************************** /*硬件制作:07电气工程 张国荣 /*软件调试:07电气工程 付春平   /*描    述: 摇摇棒程序,通过滚珠开关检测周期,摇动时间自适应,图像始终保持在中间。开机后每摇晃10次切换下一组字模 /* 按了一下按键后变成了手动切换,直到回到第一组字的时候再自动切换 如有问可直接加我QQ:77554971 技术交流群:120069344 套件出售 详细制作在里面了!  最后祝各位制作成功!学习进步!         /*****************************************************************************************/ #include <STC11F60XE.h> /*********外部接口定义**********/ #define uchar unsigned char #define uint unsigned int    //宏定义 #define out P1        //数据输出端口 sbit led1=P3^0;        //第1组LED sbit led2=P3^1;        //第2组LED sbit led3=P3^3;        //第3组LED sbit led4=P3^4;        //第4组LED sbit key1=P3^5;         //按键输入 sbit p3_2=P3^2; uchar KY,num;      //KY作用在后面说明 uchar BUFF;                                   //缓存 /*********全局变量定义**********/ unsigned long int TimeCount=0; unsigned int         DelayN=80,                //延时临时计数                                 DelayTime=80;        //每次延时的周期个数 unsigned char key,keyy;                 /**********************************************/ void delay(unsigned char n); void DelayMs(void); /*******************************************/  unsigned char code text0[]={   0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,/*" ",0*/  0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x07,0x00,0xB7,0xBB,0xB7,0xBB,0xB3,0xBB,0xB4,0xBB,0xB5,0xBB,0xB7,0xBB,0xB7,0xBB,0xB7,0xBB,0x07,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,/*"自",1*/  0xBF,0xBF,0xBE,0xDF,0x39,0xE0,0xFF,0xDF,0xEF,0xBF,0xEF,0xBF,0x6D,0xB0,0x6D,0xB7,0x6D,0xB7,0x01,0xB7,0x6E,0xB7,0x6E,0xB7,0x6E,0xB0,0xEF,0xBF,0xEF,0xBF,0xFF,0xFF,/*"适",2*/  0xFF,0xBF,0xFF,0xC7,0x03,0xF8,0xBB,0xDF,0x7B,0xDF,0xFB,0xD0,0xEB,0xDB,0xDA,0xDF,0x39,0xDC,0x7B,0xCF,0xFB,0xD3,0xFB,0xDC,0x1B,0xDF,0xBB,0xDF,0xFF,0xDF,0xFF,0xFF,/*"应",3*/  0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,/*" ",4*/  0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,/*" ",5*/  0xEF,0xFB,0xEF,0xBB,0xEF,0x7D,0x00,0x80,0x6F,0xFF,0xAF,0xFD,0x75,0x05,0x8D,0xBD,0xB9,0xBD,0xA5,0xBD,0x3D,0x80,0x9E,0xBD,0xAE,0xBD,0xB6,0xBD,0xFF,0x05,0xFF,0xFF,/*"摇",6*/  0xEF,0xFB,0xEF,0xBB,0xEF,0x7D,0x00,0x80,0x6F,0xFF,0xAF,0xFD,0x75,0x05,0x8D,0xBD,0xB9,0xBD,0xA5,0xBD,0x3D,0x80,0x9E,0xBD,0xAE,0xBD,0xB6,0xBD,0xFF,0x05,0xFF,0xFF,/*"摇",7*/  0xEF,0xFC,0x2F,0xFF,0x00,0x00,0xAF,0xFF,0x6F,0xFD,0xBB,0xF5,0xAB,0xF6,0x2B,0xF5,0x8B,0xF5,0xA0,0x00,0x2B,0xF5,0xAB,0xF4,0xAB,0xF6,0xBB,0xF5,0xBF,0xFD,0xFF,0xFF,/*"棒",8*/  0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,/*" ",9*/    };  unsigned char code text1[]={ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,/*" ",0*/  0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,/*" ",1*/  0xF7,0xFD,0xF7,0xFE,0x76,0xFF,0x31,0x00,0x57,0xFF,0xE7,0x7C,0xFF,0xBF,0x01,0xCF,0x7D,0xF0,0x7D,0xFF,0x7D,0xFF,0x7D,0x80,0x01,0x7F,0xFF,0x7F,0xFF,0x0F,0xFF,0xFF,/*"祝",2*/  0x7F,0xFF,0xBF,0xFF,0x0F,0x80,0xD3,0xFF,0xBC,0xEF,0xDF,0xF3,0x67,0xFC,0xF0,0xDE,0xF5,0xBF,0x17,0xC0,0xF7,0xFF,0x77,0xFF,0xD7,0xFC,0xE3,0xE3,0xF7,0xF7,0xFF,0xFF,/*"你",3*/  0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,/*" ",4*/  0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,/*" ",5*/  0xFF,0xFF,0xBF,0x7F,0xBD,0xBF,0xBD,0xDF,0xBD,0xEF,0xBD,0xF7,0xBD,0xF9,0x01,0xFE,0xBD,0xFD,0xBD,0xFB,0xBD,0xF7,0xBD,0xEF,0xBD,0xCF,0xBD,0x9F,0xBF,0xDF,0xFF,0xFF,/*"天",6*/  0xFF,0xFF,0xBF,0x7F,0xBD,0xBF,0xBD,0xDF,0xBD,0xEF,0xBD,0xF7,0xBD,0xF9,0x01,0xFE,0xBD,0xFD,0xBD,0xFB,0xBD,0xF7,0xBD,0xEF,0xBD,0xCF,0xBD,0x9F,0xBF,0xDF,0xFF,0xFF,/*"天",7*/  0xBF,0xFF,0xBD,0xBF,0xBD,0xDF,0xBD,0xEF,0xBD,0xF3,0x01,0xFC,0xBD,0xFF,0xBD,0xFF,0xBD,0xFF,0xBD,0xFF,0x01,0x80,0xBD,0xFF,0xBD,0xFF,0xBD,0xFF,0xBD,0xFF,0xFF,0xFF,/*"开",8*/  0xFF,0xFB,0x7F,0xFC,0xFF,0xFF,0xFF,0xFF,0x0F,0xC0,0xFF,0xBF,0xFE,0xBF,0xFD,0xBF,0xE3,0xBF,0xF7,0xBF,0xFF,0xBF,0xBF,0x87,0x7F,0xFF,0xFF,0xF8,0xFF,0xFD,0xFF,0xFF,/*"心",9*/  }; unsigned char code text2[]={  0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF9,0xFF,0xFF,0x9F,0xF9,0xFF,0xFF,0x9F,0xF9,0xFF,0xFF,0x9F,0x01,0x00,0x00,0x80,0x01,0x00,0x00,0x80,0xF9,0xFF,0xFF,0x9F, 0xF9,0xFF,0xFF,0x9F,0xF9,0xFF,0xFF,0x9F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x87,0xFF,0xFF,0xFF,0x01,0xFE,0xFF, 0x7F,0x00,0xF8,0xFF,0x3F,0x00,0xF0,0xFF,0x1F,0x00,0xE0,0xFF,0x0F,0x00,0xC0,0xFF,0x07,0x00,0x80,0xFF,0x03,0x00,0x00,0xFF,0x03,0x00,0x00,0xFF,0x03,0x00,0x00,0xFE, 0x03,0x00,0x00,0xFC,0x03,0x00,0x00,0xF8,0x07,0x00,0x00,0xF0,0x0F,0x00,0x00,0xE0,0x1F,0x00,0x00,0xE0,0x3F,0x00,0x00,0xC0,0x3F,0x00,0x00,0x80,0x1F,0x00,0x00,0xC0, 0x0F,0x00,0x00,0xE0,0x07,0x00,0x00,0xF0,0x03,0x00,0x00,0xF8,0x03,0x00,0x00,0xFC,0x03,0x00,0x00,0xFE,0x03,0x00,0x00,0xFF,0x07,0x00,0x80,0xFF,0x0F,0x00,0xC0,0xFF, 0x1F,0x00,0xE0,0xFF,0x3F,0x00,0xE0,0xFF,0xFF,0x00,0xF8,0xFF,0xFF,0x01,0xFC,0xFF,0xFF,0x07,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0x07,0x00,0x00,0xE0,0x07,0x00,0x00,0xC0,0x07,0x00,0x00,0xC0,0xFF,0xFF,0xFF,0xC7,0xFF,0xFF,0xFF,0xCF,0xFF,0xFF,0xFF,0xCF,0xFF,0xFF,0xFF,0xCF,0xFF,0xFF,0xFF,0xCF, 0xFF,0xFF,0xFF,0xCF,0xFF,0xFF,0xFF,0xCF,0xFF,0xFF,0xFF,0xCF,0xFF,0xFF,0xFF,0xC7,0x07,0x00,0x00,0xC0,0x07,0x00,0x00,0xC0,0x07,0x00,0x00,0xE0,0xFF,0xFF,0xFF,0xFF,/*"未命名文件",0*/   }; /***********n(us)延时子程序***************/ void DelayUs(uint N) { uint x; for(x=0; x<=N;x++); } /******************************************/ void main() {                 AUXR=0x80;                 CLK_DIV=1;                 EX0=1;        //开放外部中断0         IT0=1;        //中断0为边沿触发方式         IP=0x02;        //设置中断优先级         TMOD=0x02;        //定时器0方式2,8位重装载         TH0=0x80;        //设定定时器初值         TL0=0x80;                            KY=0;         EA=1;        //开放中断         ET0=1;        //开放定时器0中断         TR0=1;        //启动定时器0,开始计时*/         key=0;        //初始化显示第一组文字         keyy=0;         P1M0=0x55;        //0101 0101        /P1.0  P1 .2 P1.4 P1.6推挽输出     P1M1=0xAA;           while(1){//等待中断                     if(key1==0){        //有键按下          DelayUs(50);          if(key1==0){                                         key++;                                //更换下一幅图片                                 if(key>2) key=0;        //图片循环显示 根据显示的组数来定义 这里有9组 所以就要keyy>9                 while(key1==0);                //等待按键释放                                         }                 }         if(num>10) //每中断10次切换                 {                 keyy++;                 num=0;                 }              if(keyy>2)keyy=0;        //图片循环显示 根据显示的组数来定义 这里有9组 所以就要keyy>9         }         }     /*********文字显示子程序**********/  void display_word(unsigned char code *text) {     unsigned        char i,j=2;                        //j为图片起始位置 3 为第3个开始是图片 如果要显示高时32的大字 也属于图片格式     DelayUs(6400);                          for(i=0;i<64;i++)         {                          P3M0=0x00;                        //0000 0000        //P3.0推挽输出 P3 .1 P3.3 P3.4输入高阻             P3M1=0x1B;                 if((key>=j)||(keyy>=j))                 BUFF=(*(text+i*4+3));                 else                                          BUFF=(*(text+128+i*2+1));                 led4=0;                 P1=~BUFF>>1;                 P3M0=0x10;                        //0001 0000        //P3.4推挽输出 P3 .0 P3.3 P3.1输入高阻             P3M1=0x0B;          //0000 1011                   delay(1);                 P3M0=0x00;                        //0000 0000        //P3.0推挽输出 P3 .1 P3.3 P3.4输入高阻             P3M1=0x1B;                         //0001 1011                 led4=1;              P1=BUFF;             //01010101  1357                 P3M0=0x10;                        //0001 0000        //P3.4推挽输出 P3 .0 P3.3 P3.1输入高阻             P3M1=0x0B;          //0000 1011                   delay(1);                 P3M0=0x00;                        //0000 0000        //P3.0推挽输出 P3 .1 P3.3 P3.4输入高阻             P3M1=0x1B;                         //0001 1011                 if((key>=j)||(keyy>=j))                 BUFF=(*(text+i*4+2));                 else                 BUFF=(*(text+128+i*2));                 led3=0;                 P1=~BUFF>>1;                 P3M0=0x08;                        //0000 1000        //P3.3推挽输出 P3 .0 P3.1 P3.4输入高阻             P3M1=0x13;          //0001 0011                 delay(1);                 P3M0=0x00;                        //0000 0000        //P3.0推挽输出 P3 .1 P3.3 P3.4输入高阻             P3M1=0x1B;                         //0001 1011                 led3=1;              P1=BUFF;             //01010101  1357                 P3M0=0x08;                        //0000 1000        //P3.3推挽输出 P3 .0 P3.1 P3.4输入高阻             P3M1=0x13;          //0001 0011                  delay(1);                 P3M0=0x00;                        //0000 0000        //P3.0推挽输出 P3 .1 P3.3 P3.4输入高阻             P3M1=0x1B;                 if((key>=j)||(keyy>=j))                 BUFF=(*(text+i*4+1));                 else                 BUFF=(*(text+i*2+1));                 led2=0;             P1=~BUFF>>1;                 P3M0=0x02;                        //0000 0010        //P3.1推挽输出 P3 .0 P3.3 P3.4输入高阻             P3M1=0x19;                        //0001 1001                 delay(1);                 P3M0=0x00;                        //0000 0000        //P3.0推挽输出 P3 .1 P3.3 P3.4输入高阻             P3M1=0x1B;                         //0001 1011                 led2=1;                     P1=BUFF;            //01010101  1357                 P3M0=0x02;                        //0000 0010        //P3.1推挽输出 P3 .0 P3.3 P3.4输入高阻             P3M1=0x19;                        //0001 1001                  delay(1);                 P3M0=0x00;                        //0000 0000        //P3.0推挽输出 P3 .1 P3.3 P3.4输入高阻             P3M1=0x1B;                         //0001                 if((key>=j)||(keyy>=j))                 BUFF=(*(text+i*4));                 else                 BUFF=(*(text+i*2));                 led1=0;                 P1=~BUFF>>1;                 P3M0=0x01;                        //0000 0001        //P3.0推挽输出 P3 .1 P3.3 P3.4输入高阻             P3M1=0x1A;                         //0001 1010                 delay(1);             P3M0=0x00;                        //0000 0000        //P3.0推挽输出 P3 .1 P3.3 P3.4输入高阻             P3M1=0x1B;                         //0001 1011                 led1=1;                                     P1=BUFF;            //01010101  1357                 P3M0=0x01;                        //0000 0001        //P3.0推挽输出 P3 .1 P3.3 P3.4输入高阻             P3M1=0x1A;                         //0001 1010                  delay(1);  } } /*********显示内容选择子程序**********/ void display(unsigned char t) {        keyy=0;         switch (t){                //通过按键选择显示内容                 case 0:        {display_word(text0);}break;                 case 1:        {display_word(text1);}break;                 case 2:        {display_word(text2);}break; //                case 3:        {display_word(text3);}break; //                case 4:        {display_word(text4);}break; //                case 5:        {display_word(text5);}break; //                case 6:        {display_word(text6);}break; //                case 7:        {display_word(text7);}break;         //        case 8:        {display_word(text8);}break;                         //        case 9:        {display_word(text9);}break;         //        case 10:{display_word(text10);}break;                 //default:{display_word(text1);}                                                   }} /*****************************************/ void display1(unsigned char y) {         switch (y){                //通过按键选择显示内容                 case 0:        {display_word(text0);}break;                 case 1:        {display_word(text1);}break;                 case 2:        {display_word(text2);}break; //                case 3:        {display_word(text3);}break; //                case 4:        {display_word(text4);}break; //                case 5:        {display_word(text5);}break; //                case 6:        {display_word(text6);}break; //                case 7:        {display_word(text7);}break;         //        case 8:        {display_word(text8);}break;         //        case 9:        {display_word(text9);}break;         //        case 10:{display_word(text10);}break;                 }                 } /***************************************/ /*********延时子程序**********/ void delay(unsigned char n) {         for(;n>0;n--){                 DelayN=DelayTime;                 while (DelayN);         } } /*********中断子程序**********/ void int0() interrupt 0        //使用外部中断0 { KY=~KY; if(KY==0) {                                 DelayTime=TimeCount/1580;                 TimeCount=0;        //延时周期计数清零         if(key==0)         {          num++;          display1(keyy);        //根据按键选择循环显示文字         }         else         {         display(key);        //根据按键选择循环显示文字         } } } void timer0() interrupt 1                //定时器0中断子程序 {         TimeCount++;         if (DelayN!=0)         DelayN--; } 复制代码速回复#
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表