跟我来做硬件wai挂--山寨版“按键盒子”~~~~~~~~

社区服务
高级搜索
猴岛论坛电脑百科跟我来做硬件wai挂--山寨版“按键盒子”~~~~~~~~
发帖 回复
正序阅读 最近浏览的帖子最近浏览的版块
8个回复

[技术小组]跟我来做硬件wai挂--山寨版“按键盒子”~~~~~~~~

楼层直达
lxm_991

ZxID:1108555

等级: 上等兵
举报 只看楼主 使用道具 楼主   发表于: 2012-09-10 0
看我来山寨“按键盒子”!
材料清单:
旧鼠标一个    (这个大家都能找到就不算资金啦!)
STC89C52最小系统板一块  (15元)
PL2303 USB转TTL小板一块(12元)
杜邦线         (附送的!)
9013三极管2个  1k电阻两个

Ok了就这么多,下面开始做啦

(89c52最小系统板)


(旧鼠标电路板~~~哈哈,光电管被我拆了  搞个LED做电源指示用)
这里拆除左右按键开关,用9013焊上  基极焊1k电阻引出来做控制端。

(PL2303 USB转TTL小板)


(全家福!!呵呵)

PL2303和89c52板子的连接就不说了,资料上都有。鼠标板子引出的两个1k电阻用杜邦线接到89c52的P12和P13脚,分别对应左键触发和右键触发。

Ok 万事大吉,下面就是写点代码了,很简单,Let’s gooooooooooo!

89c52的代码如下:


#include <reg52.h>

unsigned char message;

sbit L=P1 ^ 2;  //左键
sbit R=P1 ^ 3;  //右键

void delay21ms(void)   //误差-0.651041666671us
{
    unsigned char a,b;
    for(b=150;b>0;b--)
        for(a=63;a>0;a--);
}

void InitUART(void)
{
    TMOD = 0x20;
    SCON = 0x50;
    TH1 = 0xFD;   //速率19200 倍速
    TL1 = TH1;
    PCON = 0x80;
    EA = 1;
    ES = 1;
    TR1 = 1;
}

void SendOneByte(unsigned char c)
{
    SBUF = c;
    while(!TI);
    TI = 0;
}

void main(void)
{
  L=0;
  R=0;
    InitUART();
}

void UARTInterrupt(void) interrupt 4
{
    if(RI)
    {
        RI = 0;
        message=SBUF;
            if (message=='a')    //左键按下
            {
                     L=1;
                     delay21ms();
                     L=0;
                     SendOneByte('!');
            }
            if (message=='b')   //右键按下
            {
                     R=1;
                     delay21ms();
                     R=0;
                     SendOneByte('!');
            }
    }
    else
        TI = 0;
}

代码就是这些,很简单,用Keil编译后,使用stc的isp下载工具通过PL2303转接下载到89c52芯片中,至此,硬件部分结束!
这下可以用串口测试工具检测下片子工作正常不,串口参数:19200,8,n,1
发送字符‘a’返回‘!’,发送字符‘b’返回‘!’,这样就正常了

(像这个一样,这个就是stc的下载工具)

下面开始做上位机程序,很简单,就是在需要的时候发送字符,就可以控制鼠标的左右键点击了。我用的是delphi ,使用spcomm控件
我用大漠的插件做一个cf自动开木仓的程序,可以参考下。
哈哈,有了这个什么230错误啊,什么开木仓变慢啊,什么wai挂检测啊。。。都不存在了,只要你会找敌人就能把他干倒!!
源码如下:

unit Unit10;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls,Dm_TLB,ComObj,madKernel, ExtCtrls, SPComm;

type
  TForm10 = class(TForm)
    btn1: TButton;
    tmr1: TTimer;
    lbl1: TLabel;
    cm1: TComm;
    btn2: TButton;
    cbb1: TComboBox;
    procedure FormCreate(Sender: TObject);
    procedure tmr1Timer(Sender: TObject);
    procedure leftclick();
    procedure rightclick();
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure btn1Click(Sender: TObject);
    procedure btn2Click(Sender: TObject);
  
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form10: TForm10;
  plug:dmsoft;

implementation

{$R *.dfm}

procedure TForm10.btn2Click(Sender: TObject);
begin
  cm1.CommName:=cbb1.Text;
  cm1.StartComm;
  tmr1.Enabled:=True;
  btn2.Enabled:=False;
end;

procedure TForm10.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  cm1.StopComm;
end;

procedure TForm10.FormCreate(Sender: TObject);
begin
  Plug:=CreateComObject(CLASS_dmsoft) as dmsoft;
end;


procedure TForm10.leftclick;
begin
  cm1.WriteCommData('a',1);
end;

procedure TForm10.rightclick;
begin
  cm1.WriteCommData('b',1);
end;


procedure TForm10.btn1Click(Sender: TObject);
begin
  tmr1.Enabled:=False;
  cm1.StopComm;
  Self.Close;
end;


procedure TForm10.tmr1Timer(Sender: TObject);
var
x,y:OleVariant;
isfind:Integer;
begin
   begin
     isfind:=Plug.FindColor(370,350,430,351,'AE3D2B',0.9,2,X,Y);
      if isfind=1 then
      begin
        leftclick;
        Sleep(30);
        leftclick;
      end;
      Sleep(20);
   end;
end;

end.


好了 就说这么多了,可能有的地方没说全,下次再补补吧,好晚了,明天还要出差。
其实这个只是最最简单的硬件控制方案了,呵呵,无奈水平有限只能做个这个出来了,以后有时间再研究了!

                                                                                                                                              By   lxm
                                                                                                                                               QQ:455832194
本帖de评分: 2 条评分 DB +21
DB+1 2012-09-11

我懂得~,大手

DB+20 2012-09-11

我很赞同

lxm_991

ZxID:1108555

等级: 上等兵
举报 只看该作者 8楼  发表于: 2012-09-11 0
cf 完美过230错误   可以做到首木仓无延时  想怎么爽就怎么爽
    龙兄。

ZxID:17931655

等级: 元帅
此号不再何任何QQ有所瓜葛,2013年10月17日19:41:55

举报 只看该作者 7楼  发表于: 2012-09-11 0
完全看不懂
侯Zong。

ZxID:17425447

等级: 中士
举报 只看该作者 6楼  发表于: 2012-09-11 0
这东西有啥用
客服--紫月

ZxID:20108595

等级: 新兵
举报 只看该作者 5楼  发表于: 2012-09-11 0
怺逺哋傷

ZxID:5714769

等级: 少尉
聽 、這 壹 季 憂 傷 的 雨 聲 …
举报 只看该作者 4楼  发表于: 2012-09-11 0
哇    我打酱油的
初一°

ZxID:1428937

等级: 元老
配偶: 槍與玫瑰

举报 只看该作者 地板   发表于: 2012-09-11 0
虽然是技术性的东西,
但是太多人不懂,
就像人家不知道9013.
更不懂什么基极,发射极什么的
电烙铁应该了解点吧
其实按键盒子的应用范围还不大,
可能局限于他的编程吧

ヽEvil.忧梦

ZxID:18981761

等级: 大将
举报 只看该作者 板凳   发表于: 2012-09-10 0
牛人真多
一朵小草╮

ZxID:14136412

等级: 大将
下一步,云南
举报 只看该作者 沙发   发表于: 2012-09-10 0
牛人啊。猴岛牛人无处不在
« 返回列表
发帖 回复