DIY及创意
直播中

一说就是错

12年用户 532经验值
私信 关注
[创意DIY]

看我怎么开挂玩别踩白块儿!!!!

[media]http://v.youku.com/v_show/id_XODg2NjgwNjM2.html[/media]



原理:用四个光敏电阻来测 手机游戏里的四个位置   然后用
单片机AD转换  来驱动四个电磁铁(我是拆了四个继电器)点击手机屏幕上相应的位置


先拆继电器
1.png



2.png



拆好后在 弹片上焊上一个电阻的引脚


3.png



弄四个


4.png



PS:这里引脚的头上是锡箔纸 后来发现点击手机屏幕的效果不好 所以就换成了四个电容笔的头
焊到板上
5.png

6.png

然后焊上线 就不插图了
now  把光敏电阻 按手机的游戏界面的位置 焊到板上 引脚留长一点 方便测光(我在多处来的引脚上套了热缩管来防止干扰)

7.png

8.png

9.png

这里我在板的两端焊了粗漆包线 来当支架
合影
10.png

然后  一系列编程  调试
[color=rgb(68, 68, 68) !important]电路附上:
11.png

程序(估计用不着,但里面的几个单片机的关于ADC的模板可能用的着):
---------------------------------------------------------------------------------------------------------------------------------------------------
#include //单片机头文件
#include  //51基本运算(包括_nop_空函数)



***it  AAA   = P3 ^ 2;
***it  BBB   = P3 ^ 3;
***it  CCC   = P3 ^ 4;
***it  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;};
                                         
            }
   
   
    }

回帖(14)

喔是华安

2015-9-29 10:20:37
楼主好人啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊
举报

宇宇

2015-9-29 14:04:49
哈哈,这个好,楼主能不能做一个能玩节奏大师的装置呢?
举报

救赎123

2015-10-15 21:21:17
666
举报

全球变冷1

2015-11-8 23:37:24
楼主不知道那个电容笔头是不是也不灵敏
举报

更多回帖

发帖
×
20
完善资料,
赚取积分