—信仰

  • 2018-09-02
  • 发表了主题帖: 景思伟,付云,蒲卓石——跳一跳物理外挂

    本帖最后由 bqgup 于 2018-9-11 12:06 编辑     基于51单片机的跳一跳物理外挂                                              景思伟、付云、蒲卓石                                                          作为一个手残党,一直以来都被微信跳一跳虐的很惨,看了别人写的帖子,做了一个玩微信跳一跳的程序,然后辅助自己玩游戏,然后刚好借预选赛这个机会自己也做了一个。                                               系统硬件选择与设计1.51最小系统板 2.舵机3.电容笔 这个作品需要的元器件比较少:)http://bbs.eeworld.com.cn/static/image/hrline/line7.pnghttp://bbs.eeworld.com.cn/static/image/hrline/line7.pnghttp://bbs.eeworld.com.cn/static/image/hrline/line7.pnghttp://bbs.eeworld.com.cn/static/image/hrline/line7.pnghttp://bbs.eeworld.com.cn/static/image/hrline/line7.pnghttp://bbs.eeworld.com.cn/static/image/hrline/line7.pnghttp://bbs.eeworld.com.cn/static/image/hrline/line7.pnghttp://bbs.eeworld.com.cn/static/image/hrline/line7.pnghttp://bbs.eeworld.com.cn/static/image/hrline/line7.pnghttp://bbs.eeworld.com.cn/static/image/hrline/line7.pnghttp://bbs.eeworld.com.cn/static/image/hrline/line7.pnghttp://bbs.eeworld.com.cn/static/image/hrline/line7.png 下面我们再来看看程序吧#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(); } }我们需要用尺子去测量两个箱子之间的间距,然后通过单片机的矩阵按键将数据输入给单片机,然后控制电容笔,从而达到控制跳跃的目的。这也是这个作品不够智能化的地方所在,期待能有大神将这个作品进一步完善。{:1_113:}下面我们来看看效果吧{:1_138:}

最近访客

< 1/1 >

统计信息

已有4人来访过

  • 芯币:78
  • 好友:--
  • 主题:1
  • 回复:0
  • 课时:--
  • 资源:--

留言

你需要登录后才可以留言 登录 | 注册


现在还没有留言