找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 1524|回復(fù): 3
打印 上一主題 下一主題
收起左側(cè)

求一個(gè)按鍵設(shè)置程序 就是像變頻器設(shè)置面板那種 設(shè)置 移位 增加

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:582844 發(fā)表于 2022-4-12 08:06 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
就是像變頻器設(shè)置面板那種,3個(gè)按鍵,一個(gè)設(shè)置,一個(gè)移位,一個(gè)增加的按鍵程序
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:752974 發(fā)表于 2022-4-13 11:16 | 只看該作者
給你一段代碼參考,我這是4個(gè)按鍵的。
//===============================================================================
// 鍵盤處理
//-------------------------------- OK --------------------------------------------
void key_pro(void)
{
  u8  i,k,keytemp,dat[4];       
  u8  flag_exit,flag_ok,temp;
  u16 temp1;
       
        i=2;
        k=0;
        led_buf[0] = '-';
        led_buf[1] = '-';
        led_buf[2] = '-';
        led_buf[3] = '-';
//        led_buf[4] = '-';

//        get_segm(led_buf,LED_LEN);       //查段碼
//        led_buf_segm[i]|=0x80;           //第三位加小數(shù)點(diǎn)

       
   
       
        flag_exit = 1;  //進(jìn)入手動(dòng)設(shè)置數(shù)據(jù)
        flag_ok = 0;

        do{
//             dog=1;          //CLR WDT
             get_segm(led_buf,LED_LEN);       //查段碼  
             led_buf_segm[i]|=0x80;           //加點(diǎn)
             disp_ta6932(COM_1_SET,COM_2_ADDR,LED_LEN,led_buf_segm,COM_3_DISP); //顯示
             keytemp = get_key();                   //讀鍵值
         switch(keytemp)
                   {
            //  case _EXIT  :
                        //             flag_exit=0;//退出                                                                                 
                        //                 break;
                          case _OK    : if(flag_ok !=1)   //
                                                      flag_ok=1;    //設(shè)置數(shù)據(jù)有效
                            flag_exit=0;//退出
                                                        break;
                          case _MODE:      //設(shè)置溫度值
                                                switch(k)      //設(shè)置項(xiàng)目選擇
                                                        {   
                                                                case 0 : led_buf[0] = '1';//1
                                                                                 led_buf[1] = 's';
                                                                                 temp = temperature.temper_st;    //1號(hào)位置上限溫度
                                                                                 led_buf[2] = temp/10 + 0x30;  //十位數(shù)
                                                                                 led_buf[3] = temp%10 + 0x30;  //個(gè)位數(shù)
                                      //   led_buf[4] = 0x30;            //小數(shù)不設(shè)置
                                                                                break;
                                                                case 1 : led_buf[0] = '1';//1
                                                                                 led_buf[1] = 'x';
                                                                                 temp = temperature.temper_xt;    //1號(hào)位置下限溫度
                                                                                 led_buf[2] = temp/10 + 0x30;  //十位數(shù)
                                                                                 led_buf[3] = temp%10 + 0x30;  //個(gè)位數(shù)
                                      //   led_buf[4] = 0x30;            //小數(shù)不設(shè)置
                                                                                break;
//                                case 2 : led_buf[0] = '2';//1
//                                                                                 led_buf[1] = '-';
//                                                                                 temp = temperature.count;    //開關(guān)窗時(shí)鐵管轉(zhuǎn)動(dòng)圈數(shù)
//                                                                                 led_buf[2] = temp/10 + 0x30;  //十位數(shù)
//                                                                                 led_buf[3] = temp%10 + 0x30;  //個(gè)位數(shù)
//                                      //   led_buf[4] = 0x30;            //小數(shù)不設(shè)置
//                                                                                break;
                                                        }
                                                k++;
                                                if(k>1)
                                                  k = 0;
                                                get_segm(led_buf,LED_LEN);//查段碼
                                                led_buf_segm[i]|=0x80;    //加點(diǎn)
                                                break;
                         case _RL :   //處理指示位置的點(diǎn)
                                       
                                            get_segm(led_buf,LED_LEN);//查對(duì)應(yīng)段碼
                                                i++;                      //移動(dòng)點(diǎn)
                                            if(i>3)                   //如果點(diǎn)的位置超界
                                                 {
                                                   led_buf_segm[i-1]&=0x7f;//清除末位點(diǎn)
                                                   i=2;                    //恢復(fù)點(diǎn)的原位置
                                                 }
                                            led_buf_segm[i]|=0x80;     //設(shè)置當(dāng)前位置的點(diǎn)
                                            if(i!=2)                   //如果點(diǎn)的位置移動(dòng)
                                              led_buf_segm[i-1]&=0x7f;   //去掉前一位的點(diǎn)
                                                break;
                         case _SET :   //設(shè)置數(shù)據(jù)
                                            led_buf[i] = led_buf[i] + 1;
                                                if(led_buf[i] > '9')
                                                  led_buf[i] = '0';          //0~9之間的數(shù)據(jù)
                                                get_segm(led_buf,LED_LEN);   //查段碼
                                                led_buf_segm[i]|=0x80;       //加點(diǎn)
                                           break;
                  }
             disp_ta6932(COM_1_SET,COM_2_ADDR,LED_LEN,led_buf_segm,COM_3_DISP);     //送顯
                //以下將字符轉(zhuǎn)換成數(shù)據(jù)               
                 if((led_buf[0]=='1')&&(led_buf[1]=='s')) //1號(hào)位上限數(shù)據(jù)        
                  {
                    memcpy(dat,led_buf+2,2);
                        temperature.temper_st = a_to_int(dat);
                  }
                 if((led_buf[0]=='1')&&(led_buf[1]=='x')) //1下限數(shù)據(jù)                  
                  {
                        memcpy(dat,led_buf+2,2);
                        temperature.temper_xt = a_to_int(dat);
                  }
//                if((led_buf[0]=='2')&&(led_buf[1]=='-')) //轉(zhuǎn)動(dòng)圈數(shù)              
//                  {
//                        memcpy(dat,led_buf+2,2);
//                        temperature.count = a_to_int(dat);
//                  }
             //保存上限溫度,下限溫度,轉(zhuǎn)動(dòng)圈數(shù)        
        
        if(flag_ok)     //添加存儲(chǔ)設(shè)置的數(shù)據(jù)->EEPROM,顯示當(dāng)前溫度,
                 {
           flag_ok = 0;
           eeprom_sector_erase(ISP_START_ADDR);
           eeprom_byte_write(ISP_START_ADDR,temperature.temper_st);
           eeprom_byte_write(ISP_START_ADDR+1,temperature.temper_xt);
      
           temp1 = temperature.temper_p;  //當(dāng)前實(shí)時(shí)溫度
           led_buf[0]='*';  //關(guān)顯示
           led_buf[1]=temp1/100+0x30;
                 led_buf[2]=temp1%100/10+0x30;//十位
               led_buf[3]=temp1%100%10+0x30;//個(gè)位
                   get_segm(led_buf,LED_LEN);        //查段碼
                   led_buf_segm[2]|=0x80;            //
                   disp_ta6932(COM_1_SET,COM_2_ADDR,LED_LEN,led_buf_segm,COM_3_DISP);     //送顯
                 }
                                 
        }while(flag_exit);               
}
回復(fù)

使用道具 舉報(bào)

板凳
ID:582844 發(fā)表于 2022-4-16 09:37 | 只看該作者
munuc_w 發(fā)表于 2022-4-13 11:16
給你一段代碼參考,我這是4個(gè)按鍵的。
//============================================================= ...

謝謝 我看下
回復(fù)

使用道具 舉報(bào)

地板
ID:230742 發(fā)表于 2022-4-18 00:44 | 只看該作者
留個(gè)記號(hào),以后好找。謝謝。
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表