標題: 原創(chuàng)的51單片機玩微信跳一跳 [打印本頁]

作者: 溫存723    時間: 2018-7-8 22:04
標題: 原創(chuàng)的51單片機玩微信跳一跳
微信跳一跳已經(jīng)出來很長一段時間了,把自己做的微信跳一跳輔助分享給大家學習。 初次發(fā)貼,大神勿噴~~原理:  利用串口通信,和對舵機進行PWM(脈寬調(diào)制)控制;電腦發(fā)送指定數(shù)據(jù) ,單片機經(jīng)過解析后計算出相應的舵機下落時間從兒觸發(fā)小人前進指定的步長。

缺點:每次需要量兩個樁之間的距離 (從小人底部圓心  到目的地的中心距離)
程序中注釋已經(jīng)添加,方便修改。
舵機信號的控制波形:(9g舵機,不同舵機可能存在差異)




玩法:使用串口助手發(fā)送斜杠后面的字符  波特率:9600  ,
串口助手在附件中



舵機信號線接口:P3.7
晶振大。11.0592MHZ
單片機   :12T  89c52rc
源碼如下:
  1. /*89C52RC  11.0592 M 紅色金屬舵機*/
  2. #include<reg52.h>

  3. #define uchar unsigned char
  4. #define uint  unsigned int
  5.                  
  6. sbit duoji = P3^7 ;

  7. uchar count;                      //timer
  8. //uchar x=15 ; //15抬起  11落下        
  9. uchar x = 10;//刪除此句
  10. uchar Value ;

  11. static uchar flag=1; //觸發(fā)標志位

  12. void delay(uint z)//毫秒級延時
  13. {
  14.            uint i,j;
  15.         for(i = z; i > 0; i--)
  16.          for(j = 500; j > 0 ; j--);
  17. }        
  18. /*定時器t0中斷*/
  19. void timer_init()
  20. {
  21.         TMOD|= 0x02 ;     //定時器0   8位自動重裝
  22.         TH0  = 164  ;     //100us溢出一次  10次1ms  190次19ms一個周期
  23.         TL0  = 164  ;
  24.         TR0  = 1;         //啟動定時器0
  25.         EA   = 1;         //總中斷打開
  26.     ET0  = 1;         //定時器中斷打開
  27.     TR0  = 1;         //定時器開關(guān)打開
  28. }
  29.   

  30. /*串口中斷 */                        
  31. void UART_init()
  32. {
  33.    TMOD |= 0x20;          //T1工作模式2  8位自動重裝
  34.         TH1 = 0xfd;
  35.         TL1 = 0xfd;         //比特率9600
  36.         TR1 = 1;                //啟動T1定時器
  37.         SM0 = 0;
  38.         SM1 = 1;                 //串口工作方式1 10位異步
  39.         REN = 1;                //串口允許接收
  40.         EA  = 1;                //開總中斷
  41.         ES  = 1;                //串口中斷打開
  42. }
復制代碼


剩下的所有文件均在附件中。 微信跳一跳.zip (678.47 KB, 下載次數(shù): 26)










歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1