硬件外挂基础-看我来山寨按键盒子
旧鼠标一个 (这个大家都能找到就不算资金啦!)
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 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’返回‘!’,这样就正常了 下面开始做上位机程序,很简单,就是在需要的时候发送字符,就可以控制鼠标的左右键点击了。我用的是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.
硬件外挂按键盒 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)