微信跳一跳已经出来很长一段时间了,把自己做的微信跳一跳辅助分享给大家学习。 初次发贴,大神勿喷~~原理: 利用串口通信,和对舵机进行PWM(脉宽调制)控制;电脑发送指定数据 ,单片机经过解析后计算出相应的舵机下落时间从儿触发小人前进指定的步长。
缺点:每次需要量两个桩之间的距离 (从小人底部圆心 到目的地的中心距离)
程序中注释已经添加,方便修改。
舵机信号的控制波形:(9g舵机,不同舵机可能存在差异)
舵机信号的控制波形(9g舵机,不同舵机可能存在差异)
玩法:使用串口助手发送斜杠后面的字符 波特率:9600 ,
串口助手在附件中
舵机信号线接口:P3.7
晶振大小:11.0592MHZ
单片机 :12T 89c52rc
源码如下:
- /*89C52RC 11.0592 M 红色金属舵机*/
- #include<reg52.h>
- #define uchar unsigned char
- #define uint unsigned int
-
- sbit duoji = P3^7 ;
-
- uchar count; //timer
- //uchar x=15 ; //15抬起 11落下
- uchar x = 10;//删除此句
- uchar Value ;
- static uchar flag=1; //触发标志位
- void delay(uint z)//毫秒级延时
- {
- uint i,j;
- for(i = z; i > 0; i--)
- for(j = 500; j > 0 ; j--);
- }
- /*定时器t0中断*/
- void timer_init()
- {
- TMOD|= 0x02 ; //定时器0 8位自动重装
- TH0 = 164 ; //100us溢出一次 10次1ms 190次19ms一个周期
- TL0 = 164 ;
- TR0 = 1; //启动定时器0
- EA = 1; //总中断打开
- ET0 = 1; //定时器中断打开
- TR0 = 1; //定时器开关打开
- }
-
-
- /*串口中断 */
- void UART_init()
- {
- TMOD |= 0x20; //T1工作模式2 8位自动重装
- TH1 = 0xfd;
- TL1 = 0xfd; //比特率9600
- TR1 = 1; //启动T1定时器
- SM0 = 0;
- SM1 = 1; //串口工作方式1 10位异步
- REN = 1; //串口允许接收
- EA = 1; //开总中断
- ES = 1; //串口中断打开
- }
-
复制代码
剩下的所有文件均在附件中。
微信跳一跳.zip
(678.47 KB, 下载次数: 26)
|