<strike id="um4h1"></strike>
<legend id="um4h1"><pre id="um4h1"><dl id="um4h1"></dl></pre></legend>
<th id="um4h1"><track id="um4h1"></track></th>
  • <dd id="um4h1"></dd><nav id="um4h1"><sub id="um4h1"></sub></nav>
    <rp id="um4h1"></rp>

    <dd id="um4h1"></dd>
    1. <th id="um4h1"></th>
       找回密碼
       馬上注冊

      QQ登錄

      只需一步,快速開始

      搜索

      [ 單片機 ] 看geek怎么玩白塊兒

      2015-2-6 03:35| 發布者: §塘低☆老泥§ | 查看: 49285 |來自: 原創

      突發奇想做的這個東東  沒有什么實用價值 只作為一次實踐   一般情況我們想在游戲里“耍流氓”都是通過軟件方法即 開掛,  但我就是想通過“物理方法”來玩別踩白塊兒  嘿嘿
      先上視頻:

      視頻里 因為第二個電磁鐵回彈有點問題所以卡了幾次 
      原理:用四個光敏電阻來測 手機游戲里的四個位置   然后用單片機AD轉換  來驅動四個電磁鐵(我是拆了四個繼電器)點擊手機屏幕上相應的位置
       
      先拆繼電器


      拆好后在 彈片上焊上一個電阻的引腳

      弄四個

      PS:這里引腳的頭上是錫箔紙 后來發現點擊手機屏幕的效果不好 所以就換成了四個電容筆的頭

      焊到板上



      然后焊上線 就不插圖了

      now  把光敏電阻 按手機的游戲界面的位置 焊到板上 引腳留長一點 方便測光(我在多處來的引腳上套了熱縮管來防止干擾)



      這里我在板的兩端焊了粗漆包線 來當支架

      合影

      然后  一系列編程  調試

      電路圖附上:

      程序(估計用不著,但里面的幾個單片機的關于ADC的模板可能用的著):

      ---------------------------------------------------------------------------------------------------------------------------------------------------

      #include //單片機頭文件
      #include  //51基本運算(包括_nop_空函數)

       


      sbit  AAA   = P3 ^ 2;
      sbit  BBB   = P3 ^ 3;
      sbit  CCC   = P3 ^ 4;
      sbit  DDD   = P3 ^ 5;
      /*********************************************************************************************/

      /*********************************************************************************************
      函數名:毫秒級CPU延時函數
      調  用:DELAY_MS (?);
      參  數:1~65535(參數不可為0)
      返回值:無
      結  果:占用CPU方式延時與參數數值相同的毫秒時間
      備  注:應用于1T單片機時i<600,應用于12T單片機時i<125
      /*********************************************************************************************/
      void DELAY_MS (unsigned int a){
       unsigned int i;
       while( --a != 0){
        for(i = 0; i < 600; i++);
       }
      }
      /*********************************************************************************************/
      /*********************************************************************************************
      函數名:8位A/D轉換初始化函數
      調  用:Read (?);
      參  數:輸入的端口(0000 0XXX 其中XXX是設置輸入端口號,可用十進制0~7表示,0表示P1.0,7表示P1.7)
      返回值:無
      結  果:開啟ADC功能并設置ADC的輸入端口
      備  注:適用于STC12C2052AD系列單片機(必須使用STC12C2052AD.h頭文件)
      /**********************************************************************************************/
      void Read_init (unsigned char CHA){
       unsigned char AD_FIN=0; //存儲A/D轉換標志
          CHA &= 0x07;            //選擇ADC的8個接口中的一個(0000 0111 清0高5位)
          ADC_CONTR = 0x60;  //ADC轉換的速度(0XX0 0000 其中XX控制速度,請根據數據手冊設置)
          _nop_();
          ADC_CONTR |= CHA;       //選擇A/D當前通道
          _nop_();
          ADC_CONTR |= 0x80;      //啟動A/D電源
          DELAY_MS(1);            //使輸入電壓達到穩定(1ms即可)
      }
      /**********************************************************************************************/
      /*********************************************************************************************
      函數名:8位A/D轉換函數
      調  用:? = Read ();
      參  數:無
      返回值:8位的ADC數據
      結  果:讀出指定ADC接口的A/D轉換值,并返回數值
      備  注:適用于STC12C2052AD系列單片機(必須使用STC12C2052AD.h頭文件)
      /**********************************************************************************************/
      unsigned char Read (void){
       unsigned char AD_FIN=0; //存儲A/D轉換標志
          ADC_CONTR |= 0x08;      //啟動A/D轉換(0000 1000 令ADCS = 1)
          _nop_();
          _nop_();
          _nop_();
          _nop_();
          while (AD_FIN ==0){     //等待A/D轉換結束
              AD_FIN = (ADC_CONTR & 0x10); //0001 0000測試A/D轉換結束否
          }
          ADC_CONTR &= 0xE7;      //1111 0111 清ADC_FLAG位, 關閉A/D轉換,
      return (ADC_DATA);          //返回A/D轉換結果(8位)
      }
      /**********************************************************************************************
      主函數
      **************************************************************************************************/
      void main (void){
                          unsigned char a;
              unsigned char b;
                          unsigned char c;
                          unsigned char d;
                          P1M0 = 0x0f;
         
         AA:
                    while(1){
              Read_init (0);
                         DELAY_MS (2);
                  a = Read ();
                      Read_init (1);
                          DELAY_MS (2);
                     b = Read ();
                      Read_init (2);
                             DELAY_MS (2);
                      c = Read ();
                      Read_init (3);
                             DELAY_MS (2);
                      d = Read ();
               

                if(a<80){AAA = 0 ;
                                                   DELAY_MS (200);
                                                    AAA=1;
                                                      goto AA ;};
                                                   

       

                if(b<80){BBB = 0 ;
                                                DELAY_MS (200);
                                                BBB=1;
                              goto AA;};

                                               


                if(c<80){CCC = 0 ;
                                                 DELAY_MS (200);
                                  CCC=1;
                         goto AA;};           
                                               


                if(d<80){DDD = 0 ;
                                                 DELAY_MS (200);
                                                 DDD=1;
                         goto AA;};
                                              
                  }

          
          
          }

      -------------------------------------------------------------------------------------------------------------------------------------------------------

                                                                                                                      Thanks watching! 祝大家新年快樂!

      收藏 邀請
      已有18人參與

      會員評論

      • 引用 風殤 2016-4-13 16:30
        原來也做了個,不是很成功,只不過用的舵機,測試的時候發現不是很穩定,有時候能檢測到有時候不可以,舵機反應也有些慢,看了樓主的用繼電器試試看
      • 引用 DIY. 2016-3-26 13:40
        778575669: 求QQ   交流一下
        求加qq1312004789學習下你的作品,謝謝
      • 引用 shien12345 2016-3-11 18:23
        厲害
      • 引用 滾地龍 2016-3-9 21:58
        樓主也是牛逼啊。。。
      • 引用 休息的風 2015-8-31 20:22
        這游戲都被玩壞了  簡直滅絕人性啊 看到您的創意 我深刻認識到自己的想象力貧瘠的寸草不生
      • 引用 心隨默銘 2015-4-8 13:29
        你好,我特別喜歡你的作品,太厲害了,希望可以和你聊聊,我也是極客迷哦,我qq1156024718,加我的時候請備注極客迷,謝謝
      • 引用 778575669 2015-3-21 14:09
        求QQ   交流一下
      • 引用 zhu1106980606 2015-3-20 21:51
        我靠。。。。!
      • 引用 極客迷778 2015-3-15 14:09
        嘿嘿,求QQ啊,想交流一下
      • 引用 xtjhzxf 2015-2-25 22:53
        可以試試吧光敏電阻改成光電管,就不用調試AD了,類似循跡小車的原理
      • 引用 eupatorium 2015-2-24 09:49
        力挺,
      • 引用 木_木 2015-2-22 20:09
        哈哈哈哈哈。。樓主這個想法好
      • 引用 Mr.罷了 2015-2-7 19:36
        比開掛跟牛X
      • 引用 燾燾 2015-2-7 09:55
        都這樣了就別開外掛了
      • 引用 2399021159 2015-2-7 09:15
        話說我也有過同樣的想法,而且構思差不多。。。!
      • 引用 ming88208 2015-2-6 13:31
        好評!
      • 引用 游泳的鳥兒 2015-2-6 11:46
        這個創意不錯,有意思
      • 引用 看門查水表 2015-2-6 10:05
        這比外掛還外掛

      查看全部評論>>

      推薦閱讀

      QQ|極客迷網 ( ICP09011854

      44030602000010

      © 2009-2016 All Rights Reserved

      GMT+8, 2022-4-16 21:29 , Processed in 0.197823 second(s), 34 queries , Gzip On, Memcache On.