|
微信跳一跳已經出來很長一段時間了,把自己做的微信跳一跳輔助分享給大家學習。 初次發貼,大神勿噴~~原理: 利用串口通信,和對舵機進行PWM(脈寬調制)控制;電腦發送指定數據 ,單片機經過解析后計算出相應的舵機下落時間從兒觸發小人前進指定的步長。
缺點:每次需要量兩個樁之間的距離 (從小人底部圓心 到目的地的中心距離)
程序中注釋已經添加,方便修改。
舵機信號的控制波形:(9g舵機,不同舵機可能存在差異)
舵機信號.png (33.21 KB, 下載次數: 92)
下載附件
舵機信號的控制波形(9g舵機,不同舵機可能存在差異)
2018-7-8 21:52 上傳
玩法:使用串口助手發送斜杠后面的字符 波特率:9600 ,
串口助手在附件中
玩法.png (9.96 KB, 下載次數: 1505)
下載附件
2018-7-8 21:57 上傳
舵機信號線接口: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; //串口中斷打開
- }
-
復制代碼
PWM個人筆記.png (187.68 KB, 下載次數: 87)
下載附件
2018-7-9 00:34 上傳
0.png (41.52 KB, 下載次數: 97)
下載附件
2018-7-9 00:33 上傳
剩下的所有文件均在附件中。
微信跳一跳.zip
(678.47 KB, 下載次數: 26)
2018-7-8 22:03 上傳
點擊文件名下載附件
微信跳一跳附件 下載積分: 黑幣 -5
|
評分
-
查看全部評分
|