社区导航

 
查看: 1046|回复: 4

[作品] 景思伟,付云,蒲卓石——跳一跳物理外挂

[复制链接]

2

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

发表于 2018-9-2 10:59:15 | 显示全部楼层 |阅读模式
本帖最后由 bqgup 于 2018-9-11 12:06 编辑

    基于51单片机的跳一跳物理外挂
                                              景思伟、付云、蒲卓石                                                         

作为一个手残党,一直以来都被微信跳一跳虐的很惨,看了别人写的帖子,做了一个玩微信跳一跳的程序,然后辅助自己玩游戏,然后刚好借预选赛这个机会自己也做了一个。

  

                                           系统硬件选择与设计
1.51最小系统板
51最小系统板.jpg
单片机原理图.gif
2.舵机
3
.电容笔
电容笔.jpg
这个作品需要的元器件比较少

下面我们再来看看程序吧

#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
typedef unsigned int u16;   
typedef unsigned char u8;
#define GPIO_KEY P1
sbit pwm=P0^1;
sbit led=P2^0;
int i=0;
int x=87;
uchar y;
u8 code time[]={40,47,50,55,60,63,71,77,79,82,85,90,95,97,100,103};


void delay(unsigned char i)//延时
{
unsigned char j,k;
for(j=i;j>0;j--)
for(k=125;k>0;k--);
}


void Time0_Init()  //定时器0初始化  发pwm波
{
TMOD|=0x01;
TH0=0xFF;
TL0=0x38;
EA=1;
ET0=1;
TR0=1;
}


void Time1_Init()  //定时器1初始化  改变占空比
{
TMOD|=0x10;
TH1=0xD8;
TL1=0xF0;
EA=1;
ET1=1;
TR1=0;
}

void KeyDown(void)//矩阵按键
{
char a=0;
GPIO_KEY=0x0f;
if(GPIO_KEY!=0x0f)//读取按键是否按下
{
  delay(10);//消抖
  if(GPIO_KEY!=0x0f)//再次确认
  {
   //测试列
   GPIO_KEY=0X0f;
   switch(GPIO_KEY)
   {
    case(0X07): y=0;break;
    case(0X0b): y=1;break;
    case(0X0d): y=2;break;
    case(0X0e): y=3;break;
   }
   //测试行
   GPIO_KEY=0Xf0;
   switch(GPIO_KEY)
   {
    case(0X70): y=y;  x=89;TR1=1;break;
    case(0Xb0): y=y+4;x=89;TR1=1;break;
    case(0Xd0): y=y+8;x=89;TR1=1;break;
    case(0Xe0): y=y+12;x=89;TR1=1;break;
   }
   while((a<50)&&(GPIO_KEY!=0xf0))  //检测按键释放
   {
    delay(10);
    a++;
   }
  }
}
}



void Time0_Int()interrupt 1 //中断0
{

TH0=0xFF;
TL0=0x38;
i++;
if(i==100)
  i=0;
if(i>x)
  pwm=1;
else
  pwm=0;
led=0;
}


void Time1_Int()interrupt 3 //中断1
{
static int u=0;
TH1=0xD8;
TL1=0xF0;
u++;
if(u==time[y])
{
  u=0;
  x=87;
  TR1=0;
}
}


void main()
{

Time0_Init();
Time1_Init();
while(1)
{
   KeyDown();
}
}

我们需要用尺子去测量两个箱子之间的间距,然后通过单片机的矩阵按键将数据输入给单片机,然后控制电容笔,从而达到控制跳跃的目的。

这也是这个作品不够智能化的地方所在,期待能有大神将这个作品进一步完善。

跳一跳测距.jpg

下面我们来看看效果吧

跳一跳视频.mp4 (5.39 MB, 下载次数: 13)


跳一跳.jpg


回复

使用道具 举报

311

TA的帖子

4

TA的资源

版主

Rank: 6Rank: 6

发表于 2018-9-2 12:10:11 来自手机 | 显示全部楼层
很棒哦,帖子写的不错,加油加油,以后可以多发这种帖子,对自己也很有帮助,不光能加深自己对知识的理解,还能提高自己的表达能力


回复

使用道具 举报

8505

TA的帖子

128

TA的资源

管理员

Rank: 13Rank: 13Rank: 13Rank: 13

发表于 2018-9-2 18:21:22 | 显示全部楼层
哈哈,不错,跳一跳最高记录16分的我。&#128514;我可能也很需要这么一个外挂


回复

使用道具 举报

2111

TA的帖子

24

TA的资源

五彩晶圆(高级)

Rank: 9Rank: 9Rank: 9

发表于 2018-9-4 10:06:12 | 显示全部楼层
USB摄像头+OpenVC识别距离+串口传输到单片机+驱动私服马达点击=全自动


回复

使用道具 举报

17

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

发表于 2018-11-10 16:23:41 | 显示全部楼层
很棒哦,帖子写的不错,加油加油,以后可以多发这种帖子,对自己也很有帮助,不光能加深自己对知识的理解,还能提高自己的表达能力。
好好学习,天天向上


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

  • 论坛活动 E手掌握

    扫码关注
    EEWORLD 官方微信

  • EE福利  唾手可得

    扫码关注
    EE福利 唾手可得

Archiver|手机版|小黑屋|电子工程世界 ( 京ICP证 060456 )

GMT+8, 2018-12-19 10:58 , Processed in 0.174276 second(s), 17 queries , Gzip On, MemCache On.

快速回复 返回顶部 返回列表