久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1499|回復: 3
打印 上一主題 下一主題
收起左側

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

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

使用道具 舉報

沙發
ID:752974 發表于 2022-4-13 11:16 | 只看該作者
給你一段代碼參考,我這是4個按鍵的。
//===============================================================================
// 鍵盤處理
//-------------------------------- 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;           //第三位加小數點

       
   
       
        flag_exit = 1;  //進入手動設置數據
        flag_ok = 0;

        do{
//             dog=1;          //CLR WDT
             get_segm(led_buf,LED_LEN);       //查段碼  
             led_buf_segm[i]|=0x80;           //加點
             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;    //設置數據有效
                            flag_exit=0;//退出
                                                        break;
                          case _MODE:      //設置溫度值
                                                switch(k)      //設置項目選擇
                                                        {   
                                                                case 0 : led_buf[0] = '1';//1
                                                                                 led_buf[1] = 's';
                                                                                 temp = temperature.temper_st;    //1號位置上限溫度
                                                                                 led_buf[2] = temp/10 + 0x30;  //十位數
                                                                                 led_buf[3] = temp%10 + 0x30;  //個位數
                                      //   led_buf[4] = 0x30;            //小數不設置
                                                                                break;
                                                                case 1 : led_buf[0] = '1';//1
                                                                                 led_buf[1] = 'x';
                                                                                 temp = temperature.temper_xt;    //1號位置下限溫度
                                                                                 led_buf[2] = temp/10 + 0x30;  //十位數
                                                                                 led_buf[3] = temp%10 + 0x30;  //個位數
                                      //   led_buf[4] = 0x30;            //小數不設置
                                                                                break;
//                                case 2 : led_buf[0] = '2';//1
//                                                                                 led_buf[1] = '-';
//                                                                                 temp = temperature.count;    //開關窗時鐵管轉動圈數
//                                                                                 led_buf[2] = temp/10 + 0x30;  //十位數
//                                                                                 led_buf[3] = temp%10 + 0x30;  //個位數
//                                      //   led_buf[4] = 0x30;            //小數不設置
//                                                                                break;
                                                        }
                                                k++;
                                                if(k>1)
                                                  k = 0;
                                                get_segm(led_buf,LED_LEN);//查段碼
                                                led_buf_segm[i]|=0x80;    //加點
                                                break;
                         case _RL :   //處理指示位置的點
                                       
                                            get_segm(led_buf,LED_LEN);//查對應段碼
                                                i++;                      //移動點
                                            if(i>3)                   //如果點的位置超界
                                                 {
                                                   led_buf_segm[i-1]&=0x7f;//清除末位點
                                                   i=2;                    //恢復點的原位置
                                                 }
                                            led_buf_segm[i]|=0x80;     //設置當前位置的點
                                            if(i!=2)                   //如果點的位置移動
                                              led_buf_segm[i-1]&=0x7f;   //去掉前一位的點
                                                break;
                         case _SET :   //設置數據
                                            led_buf[i] = led_buf[i] + 1;
                                                if(led_buf[i] > '9')
                                                  led_buf[i] = '0';          //0~9之間的數據
                                                get_segm(led_buf,LED_LEN);   //查段碼
                                                led_buf_segm[i]|=0x80;       //加點
                                           break;
                  }
             disp_ta6932(COM_1_SET,COM_2_ADDR,LED_LEN,led_buf_segm,COM_3_DISP);     //送顯
                //以下將字符轉換成數據               
                 if((led_buf[0]=='1')&&(led_buf[1]=='s')) //1號位上限數據        
                  {
                    memcpy(dat,led_buf+2,2);
                        temperature.temper_st = a_to_int(dat);
                  }
                 if((led_buf[0]=='1')&&(led_buf[1]=='x')) //1下限數據                  
                  {
                        memcpy(dat,led_buf+2,2);
                        temperature.temper_xt = a_to_int(dat);
                  }
//                if((led_buf[0]=='2')&&(led_buf[1]=='-')) //轉動圈數              
//                  {
//                        memcpy(dat,led_buf+2,2);
//                        temperature.count = a_to_int(dat);
//                  }
             //保存上限溫度,下限溫度,轉動圈數        
        
        if(flag_ok)     //添加存儲設置的數據->EEPROM,顯示當前溫度,
                 {
           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;  //當前實時溫度
           led_buf[0]='*';  //關顯示
           led_buf[1]=temp1/100+0x30;
                 led_buf[2]=temp1%100/10+0x30;//十位
               led_buf[3]=temp1%100%10+0x30;//個位
                   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);               
}
回復

使用道具 舉報

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

謝謝 我看下
回復

使用道具 舉報

地板
ID:230742 發表于 2022-4-18 00:44 | 只看該作者
留個記號,以后好找。謝謝。
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 欧州一区二区三区 | 在线婷婷 | 久久国产精品久久国产精品 | 午夜看电影在线观看 | 欧美成人精品在线 | 91中文字幕在线观看 | 精品国产一区二区 | 国产欧美日韩视频 | 亚洲二区视频 | 国产精品久久久久影院色老大 | 亚洲国产一区二区在线 | 成人在线免费视频 | 羞视频在线观看 | 日韩精品一区二区三区四区 | 亚洲免费在线 | 四虎成人免费视频 | 日本免费在线观看视频 | 国产婷婷综合 | 97福利在线 | 日韩一区二区三区在线观看视频 | 中文字幕 在线观看 | 日韩精品久久一区 | 99热精品在线观看 | 在线观看成人免费视频 | 日韩一级精品视频在线观看 | 国产精品久久久久av | 久久福利网站 | 国产精品高清在线 | 91在线精品一区二区 | 国产精品a级 | 亚洲一区二区不卡在线观看 | 在线看成人av| 国产欧美日韩一区二区三区 | 久久精品一级 | 成人乱人乱一区二区三区软件 | 国产精品视频97 | av在线免费观看网站 | 国产精品久久久久久久7777 | 国产成人精品免费视频大全最热 | 亚洲狠狠丁香婷婷综合久久久 | 日本a视频|