微信跳一跳已經(jīng)出來(lái)很長(zhǎng)一段時(shí)間了,把自己做的微信跳一跳輔助分享給大家學(xué)習(xí)。 初次發(fā)貼,大神勿噴~~原理: 利用串口通信,和對(duì)舵機(jī)進(jìn)行PWM(脈寬調(diào)制)控制;電腦發(fā)送指定數(shù)據(jù) ,單片機(jī)經(jīng)過(guò)解析后計(jì)算出相應(yīng)的舵機(jī)下落時(shí)間從兒觸發(fā)小人前進(jìn)指定的步長(zhǎng)。
缺點(diǎn):每次需要量?jī)蓚(gè)樁之間的距離 (從小人底部圓心 到目的地的中心距離)
程序中注釋已經(jīng)添加,方便修改。
舵機(jī)信號(hào)的控制波形:(9g舵機(jī),不同舵機(jī)可能存在差異)
舵機(jī)信號(hào)的控制波形(9g舵機(jī),不同舵機(jī)可能存在差異)
玩法:使用串口助手發(fā)送斜杠后面的字符 波特率:9600 ,
串口助手在附件中
舵機(jī)信號(hào)線(xiàn)接口:P3.7
晶振大小:11.0592MHZ
單片機(jī) :12T 89c52rc
源碼如下:
- /*89C52RC 11.0592 M 紅色金屬舵機(jī)*/
- #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; //觸發(fā)標(biāo)志位
- void delay(uint z)//毫秒級(jí)延時(shí)
- {
- uint i,j;
- for(i = z; i > 0; i--)
- for(j = 500; j > 0 ; j--);
- }
- /*定時(shí)器t0中斷*/
- void timer_init()
- {
- TMOD|= 0x02 ; //定時(shí)器0 8位自動(dòng)重裝
- TH0 = 164 ; //100us溢出一次 10次1ms 190次19ms一個(gè)周期
- TL0 = 164 ;
- TR0 = 1; //啟動(dòng)定時(shí)器0
- EA = 1; //總中斷打開(kāi)
- ET0 = 1; //定時(shí)器中斷打開(kāi)
- TR0 = 1; //定時(shí)器開(kāi)關(guān)打開(kāi)
- }
-
-
- /*串口中斷 */
- void UART_init()
- {
- TMOD |= 0x20; //T1工作模式2 8位自動(dòng)重裝
- TH1 = 0xfd;
- TL1 = 0xfd; //比特率9600
- TR1 = 1; //啟動(dòng)T1定時(shí)器
- SM0 = 0;
- SM1 = 1; //串口工作方式1 10位異步
- REN = 1; //串口允許接收
- EA = 1; //開(kāi)總中斷
- ES = 1; //串口中斷打開(kāi)
- }
-
復(fù)制代碼
剩下的所有文件均在附件中。
微信跳一跳.zip
(678.47 KB, 下載次數(shù): 26)
2018-7-8 22:03 上傳
點(diǎn)擊文件名下載附件
微信跳一跳附件
|