找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1353|回复: 1
打印 上一主题 下一主题
收起左侧

循环按键小程序

[复制链接]
跳转到指定楼层
楼主
ID:452456 发表于 2018-12-23 19:39 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include "Tool.h"
/* ===================================================================
**    OLED按键操作
** ===================================================================*/

void OLED_Debug()
  {   
      OLED_P6x8Str(6,0,"U_P");
      OLED_P6x8Str(6,1,"U_D");
      OLED_P6x8Str(6,2,"T_P");
      OLED_P6x8Str(6,3,"T_D");
      OLED_P6x8Str(6,4,"R_P");
      OLED_P6x8Str(6,5,"R_I");
      OLED_P6x8Str(6,6,"G_L");
      OLED_P6x8Str(6,7,"G_R");
      OLED_P6x8Str(70,0,"X");//互补滤波参数
      OLED_P6x8Str(70,1,"L");
      OLED_P6x8Str(70,2,"R");
      OLED_P6x8Str(70,3,"");
      OLED_P6x8Str(70,4,"");
      OLED_P6x8Str(70,5,"");
      OLED_P6x8Str(70,6,"");
      OLED_P6x8Str(70,7,"");

      int i = 0;

      while(1)
   {  Ad_Value();
   /********上按键   按下*光标向上一行移动*********/
         if( gpio_get(E6) == 0 )  
         {  
           while(gpio_get(E6) ==0);
                        i--;
                     if( i < 0) i = 15;
                     switch(i)
                     {
                     case 0 : {OLED_P6x8Str(0,0,"*");OLED_P6x8Str(63,7," ");OLED_P6x8Str(0,1," ");}break;
                     case 1 : {OLED_P6x8Str(0,1,"*");OLED_P6x8Str(0,0," ");OLED_P6x8Str(0,2," ");}break;
                     case 2 : {OLED_P6x8Str(0,2,"*");OLED_P6x8Str(0,1," ");OLED_P6x8Str(0,3," ");}break;
                     case 3 : {OLED_P6x8Str(0,3,"*");OLED_P6x8Str(0,2," ");OLED_P6x8Str(0,4," ");}break;
                     case 4 : {OLED_P6x8Str(0,4,"*");OLED_P6x8Str(0,3," ");OLED_P6x8Str(0,5," ");}break;
                     case 5 : {OLED_P6x8Str(0,5,"*");OLED_P6x8Str(0,4," ");OLED_P6x8Str(0,6," ");}break;                     
                     case 6 : {OLED_P6x8Str(0,6,"*");OLED_P6x8Str(0,5," ");OLED_P6x8Str(0,7," ");}break;
                     case 7 : {OLED_P6x8Str(0,7,"*");OLED_P6x8Str(0,6," ");OLED_P6x8Str(63,0," ");}break;

                     case 8 : {OLED_P6x8Str(63,0,"*");OLED_P6x8Str(0,7," ");OLED_P6x8Str(63,1," ");}break;
                     case 9 : {OLED_P6x8Str(63,1,"*");OLED_P6x8Str(63,0," ");OLED_P6x8Str(63,2," ");}break;                     
                     case 10 : {OLED_P6x8Str(63,2,"*");OLED_P6x8Str(63,1," ");OLED_P6x8Str(63,3," ");}break;
                     case 11 : {OLED_P6x8Str(63,3,"*");OLED_P6x8Str(63,2," ");OLED_P6x8Str(63,4," ");}break;
                     case 12 : {OLED_P6x8Str(63,4,"*");OLED_P6x8Str(63,3," ");OLED_P6x8Str(63,5," ");}break;
                     case 13 : {OLED_P6x8Str(63,5,"*");OLED_P6x8Str(63,4," ");OLED_P6x8Str(63,6," ");}break;
                     case 14 : {OLED_P6x8Str(63,6,"*");OLED_P6x8Str(63,5," ");OLED_P6x8Str(63,7," ");}break;
                     case 15 : {OLED_P6x8Str(63,7,"*");OLED_P6x8Str(63,6," ");OLED_P6x8Str(0,0," ");}break;
                     }


         }

       /**************下按键   按下光标向下一行移动***************************/  
          if( gpio_get(E5) == 0 )  
         {
           while(gpio_get(E5) ==0);
                     i++;
                     if( i > 15 ) i = 0;
                     switch(i)
                     {
                     case 0 : {OLED_P6x8Str(0,0,"*");OLED_P6x8Str(63,7," ");OLED_P6x8Str(0,1," ");}break;
                     case 1 : {OLED_P6x8Str(0,1,"*");OLED_P6x8Str(0,0," ");OLED_P6x8Str(0,2," ");}break;
                     case 2 : {OLED_P6x8Str(0,2,"*");OLED_P6x8Str(0,1," ");OLED_P6x8Str(0,3," ");}break;
                     case 3 : {OLED_P6x8Str(0,3,"*");OLED_P6x8Str(0,2," ");OLED_P6x8Str(0,4," ");}break;
                     case 4 : {OLED_P6x8Str(0,4,"*");OLED_P6x8Str(0,3," ");OLED_P6x8Str(0,5," ");}break;
                     case 5 : {OLED_P6x8Str(0,5,"*");OLED_P6x8Str(0,4," ");OLED_P6x8Str(0,6," ");}break;                     
                     case 6 : {OLED_P6x8Str(0,6,"*");OLED_P6x8Str(0,5," ");OLED_P6x8Str(0,7," ");}break;
                     case 7 : {OLED_P6x8Str(0,7,"*");OLED_P6x8Str(0,6," ");OLED_P6x8Str(63,0," ");}break;

                     case 8 : {OLED_P6x8Str(63,0,"*");OLED_P6x8Str(0,7," ");OLED_P6x8Str(63,1," ");}break;
                     case 9 : {OLED_P6x8Str(63,1,"*");OLED_P6x8Str(63,0," ");OLED_P6x8Str(63,2," ");}break;                     
                     case 10 : {OLED_P6x8Str(63,2,"*");OLED_P6x8Str(63,1,"");OLED_P6x8Str(63,3," ");}break;
                     case 11 : {OLED_P6x8Str(63,3,"*");OLED_P6x8Str(63,2," ");OLED_P6x8Str(63,4," ");}break;
                     case 12 : {OLED_P6x8Str(63,4,"*");OLED_P6x8Str(63,3," ");OLED_P6x8Str(63,5," ");}break;
                     case 13 : {OLED_P6x8Str(63,5,"*");OLED_P6x8Str(63,4," ");OLED_P6x8Str(63,6," ");}break;
                     case 14 : {OLED_P6x8Str(63,6,"*");OLED_P6x8Str(63,5," ");OLED_P6x8Str(63,7," ");}break;
                     case 15 : {OLED_P6x8Str(63,7,"*");OLED_P6x8Str(63,6," ");OLED_P6x8Str(0,0," ");}break;
                     }

         }

    /***************左按键  按下参数减小********************************/
        if( gpio_get(B3) == 0 )
        {
           while( gpio_get(B3) == 0);
              switch(i)
              {
              case 0 :  P_Up= P_Up-5;break;
              case 1 : D_Up=D_Up-1;break;
              case 2 : P_Turn=P_Turn-1;break;
              case 3 : D_Turn=D_Turn-2;break;
              case 4 : P_Run = P_Run-1;break;
              case 5 : I_Run = I_Run-0.2;break;
              case 6 :  {};break;
              case 7 :  {};break;
              case 8 : X=X-0.002;break;
              case 9 :  {};break;
              case 10 : {};break;
              case 11 : {};break;
              case 12 : {};break;
              case 13 : {};break;
              case 14 : {};break;
              case 15 : {};break;

              }


        }


    /***************右按键  按下参数的值增加********************************/
        if( gpio_get(B2) == 0 )
        {
         while(gpio_get(B2) ==0);
              switch(i)
              {
              case 0 :  P_Up= P_Up+5;break;
              case 1 : D_Up=D_Up+1;break;
              case 2 : P_Turn=P_Turn+1;break;
              case 3 : D_Turn=D_Turn+2;break;
              case 4 : P_Run = P_Run+ 1;break;
              case 5 : I_Run = I_Run+ 0.2;break;
              case 6 :  {};break;
              case 7 :  {};break;
              case 8 : X=X+0.002;break;
              case 9 :  {};break;
              case 10 : {};break;
              case 11 : {};break;
              case 12 : {};break;
              case 13 : {};break;
              case 14 : {};break;
              case 15 : {};break;
              }

                   }

        OLED_Print_Num1(25, 0, (int)( P_Up));
        OLED_Print_Num1(25, 1, (int)(D_Up));
        OLED_Print_Num1(25, 2, (int)(P_Turn));
        OLED_Print_Num1(25, 3, (int)(D_Turn));
        OLED_Print_Num1(25, 4, (int)(P_Run));
        OLED_Print_Num1(25, 5, (int)(10*I_Run));
        OLED_Print_Num1(25, 6, (int)(Gy_Left_AD));
        OLED_Print_Num1(25, 7, (int)(Gy_Right_AD));
        OLED_Print_Num1(85, 0, (int)(X*1000));
        OLED_Print_Num1(85, 1, (int)(RightAverage));
        OLED_Print_Num1(85, 2, (int)(LeftAverage));

    /****************中间键  确认键  按下就退出按键调参数函数**************/
        if( gpio_get(D5) == 0 )
        {
          while(gpio_get(D5) ==0);
            OLED_Fill(0x00);  //初始清屏
            break;

        }
   }
}




分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:1 发表于 2018-12-23 20:04 | 只看该作者
补全原理图或者详细说明一下电路连接即可获得100+黑币
头文件
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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