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

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

QQ登錄

只需一步,快速開始

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

單片機(jī)程序 開關(guān)打開時(shí)LED燈調(diào)至最暗時(shí),怎么判定開關(guān)為關(guān)呢?

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:941265 發(fā)表于 2022-5-6 15:35 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
各位大佬,問(wèn)個(gè)問(wèn)題,51C,當(dāng)觸摸開關(guān)打開了,長(zhǎng)按開關(guān),燈的亮度調(diào)為最暗時(shí)候,我怎么短按燈調(diào)為最亮呢
單片機(jī)源程序如下:
  1. #ifndef _MAIN_C_
  2. #define _MAIN_C_
  3. /*********************************************************************************************************************/
  4. #include "ca51f5_config.h"
  5. #include "includes\ca51f5sfr.h"
  6. #include "includes\ca51f5xsfr.h"
  7. #include "includes\gpiodef_f5.h"
  8. /*********************************************************************************************************************/
  9. #include "TS_Lib\Includes\ts_configuration.h"
  10. #include "TS_Lib\Includes\ts_def.h"
  11. #include "TS_Lib\Includes\ts_api.h"
  12. #include "TS_Lib\Includes\ts_service.h"
  13. /*********************************************************************************************************************/
  14. #include "includes\system.h"
  15. #include "Library\includes\uart.h"
  16. #include "Library\includes\system_clock.h"
  17. #include "Library\Includes\tmc.h"       
  18. #include "Library\includes\pwm.h"
  19. #include "Library\includes\delay.h"
  20. #include "function.h"
  21. #include "Library/includes/flash.h"
  22. u16 check_time;
  23. u16 reset_time;
  24. u16 dim_ct;
  25. bit onff_s;
  26. bit CHOOSE;
  27. /*******************************************************************************************************************************************
  28. 說(shuō)明:
  29. ------------------------------------------------------------------------------------------------------------
  30. 1.ts_configuration.h是觸摸的配置文件,可在配置文件中設(shè)置觸摸通道、靈敏度等。詳見ts_configuration.h中的說(shuō)明。
  31. ------------------------------------------------------------------------------------------------------------
  32. 2.如果需要使用UART來(lái)調(diào)試,可在ca51f5_config.h中打開宏定義UART0_EN
  33. ------------------------------------------------------------------------------------------------------------
  34. 3.觸摸庫(kù)對(duì)外的數(shù)據(jù)接口為KeysFlagSN,用戶可根據(jù)KeysFlagSN的值來(lái)判斷觸摸鍵是否按下(如果觸摸鍵按下,KeysFlagSN
  35. 的對(duì)應(yīng)位一直為1,觸摸鍵松開,對(duì)應(yīng)位變?yōu)?),TS_Key是根據(jù)KeysFlagSN的值生成的按鍵消息,用戶如不使用可忽略。
  36. ------------------------------------------------------------------------------------------------------------
  37. 4.使能了觸摸省電模式后,在無(wú)按鍵時(shí),在定義的時(shí)間后會(huì)進(jìn)入省電模式,進(jìn)入省電模式前會(huì)關(guān)閉TMC中斷和觸摸中斷(注意,總
  38. 中斷仍是開啟的),在觸摸省電模式下,CPU會(huì)進(jìn)入STOP模式,在被觸摸喚醒后,程序在省電函數(shù)(TS_EnterSleepMode)的循環(huán)內(nèi)運(yùn)行(注意,觸摸省電模式程序不
  39. 會(huì)在主循環(huán)內(nèi)運(yùn)行),在觸摸省電模式下如果還要響應(yīng)其他中斷,用戶需在進(jìn)入觸摸省電模式前自行開啟其他中斷,
  40. 如果需要退出省電模式,用戶只需要在省電函數(shù)循環(huán)內(nèi)加入條件判斷,跳出循環(huán)即可。
  41. 變量TS_SleepEn是控制觸摸省電模式的開關(guān),如果希望程序在某些條件下不進(jìn)入省電模式,只需在此條件下設(shè)置TS_SleepEn = 0;
  42. ------------------------------------------------------------------------------------------------------------
  43. 5.觸摸外掛電容(即TK_CAP引腳連接電容)范圍:6nF~50nF,建議值:20nF(即203)
  44. ------------------------------------------------------------------------------------------------------------
  45. 6.觸摸引腳串聯(lián)電阻范圍:0~5K,建議值:1K歐姆,如果有抗對(duì)講機(jī)等電磁干擾要求, 此電阻至少3K以上。
  46. *******************************************************************************************************************************************/
  47. void main(void)
  48. {
  49.         Delay_ms(50);
  50. #ifdef LVD_RST_ENABLE
  51.         LVDCON = 0xC3;        //設(shè)置LVD復(fù)位電壓為2.0V
  52. #endif
  53.        
  54. #ifdef UART0_EN
  55.         Uart0_Initial(UART0_BAUTRATE);//波特率函數(shù)
  56. #endif
  57.   PADRD =0x3F;//FLASH和程序存儲(chǔ)空間大小
  58.         EA = 1;
  59.   LoadAllPar();//flash讀程序
  60.         PWM_init();
  61.   pwm(3);
  62.         TS_init();       
  63.   onoff=1;//開關(guān)關(guān)閉
  64.         CHOOSE=1;
  65.         mode=1;
  66.         while(1)
  67.         {                                               
  68.                 TS_Action();//觸摸開關(guān)程序
  69.                 if(!onoff)
  70.                 {
  71.                 if(dim<dim_data)
  72.                                 {
  73.            dim_ct++        ;
  74.            if(dim_ct>1000)       
  75.                                          {                                                 
  76.                                           dim++;
  77.                                                  dim_ct=0;
  78.                                          }
  79.                                 }
  80.                         pwm(dim);
  81.                         }
  82.                         else
  83.                         {
  84.                                 if(dim>0)
  85.                                         {
  86.            dim_ct++        ;
  87.            if(dim_ct>500)       
  88.                                          {                                                 
  89.                                           dim--;
  90.                                                  dim_ct=0;
  91.                                          }
  92.                                   }
  93.                                 pwm(dim);
  94.                         }
  95. #if SUPPORT_WHEEL_SLIDER
  96.                 if(WheelSliderPosition != -1)
  97.                 {
  98.                         //當(dāng)WheelSliderPosition不等于-1時(shí), 表示滑條或圓環(huán)有觸摸事件發(fā)生。WheelSliderPosition的值表示滑條或圓環(huán)的位置。
  99.                 }
  100. #endif
  101. #if SUPPORT_KEY
  102. /*************************************************************************************************
  103. 變量KeysFlagSN是觸摸庫(kù)對(duì)外的數(shù)據(jù)接口,KeysFlagSN的每一位對(duì)應(yīng)一個(gè)觸摸鍵的狀態(tài),為1表示觸摸鍵觸發(fā)。可多鍵同時(shí)觸發(fā)。
  104. *************************************************************************************************/
  105.         if(CHOOSE)
  106.                 {/* long_press是長(zhǎng)按的位變量,onff_s是判斷開關(guān)的位變量,press_f是存儲(chǔ)亮度下次按鍵或者重啟的位變量*/
  107.    if(long_press&&(!onoff)&&(!onff_s))//進(jìn)入長(zhǎng)按,觸發(fā)亮度調(diào)節(jié)子程序onff_s用來(lái)判斷開關(guān)
  108.                          {
  109.                                  press_f=1;
  110.                                 if(up_flag)//亮度提升
  111.                                  {
  112.                                          if(dim_data<255)
  113.                                           {
  114.                                                          dim_ct++        ;
  115.                                                          if(dim_ct>1200)       
  116.                                                          {                                                                                       
  117.                                                                 dim_data++;
  118.                                                                  dim=dim_data;
  119.                                                                  dim_ct=0;
  120.                                                          }
  121.                                           }
  122.                                            else
  123.                                            {
  124.                                                            dim_data=255;
  125.                                                            dim_ct++        ;
  126.                                                          if(dim_ct>1200)       
  127.                                                           {
  128.                                                                  dim_ct=0;
  129.                                                           }                                                         
  130.                                                  }                                                 
  131.                                  }
  132.                                  else//亮度調(diào)暗
  133.                                  {
  134.                                          if(dim_data>10)
  135.                                           {
  136.                                                                 dim_ct++        ;
  137.                                                          if(dim_ct>1200)       
  138.                                                          {                                                         
  139.                                                                  dim_data--;
  140.                                                                  dim=dim_data;
  141.                                                                  dim_ct=0;
  142.                                                          }
  143.                                           }                                                 
  144.                                            else
  145.                                            {
  146.                                                          dim_data=10;
  147.                                                          dim_ct++        ;
  148.                                                          if(dim_ct>1200)       
  149.                                                           {                                                 
  150.                                                                  dim_ct=0;
  151.                                                           }
  152.                                                  }
  153.                                  }
  154.                          }
  155.                  }
  156. /*短按開關(guān)*/
  157.                 if(KeysFlagSN != 0)//keypress//按鍵有按下
  158.                 { reset_time=0;
  159.                         check_time=0;
  160.                         switch(KeysFlagSN)
  161.                         {
  162.                                 case 0x0001:                                                   
  163.                                                    press_ct++;//(check_c)觸發(fā)觸摸按鍵,參數(shù)自加
  164.                                            if(press_ct>P_level)//參數(shù)大于P_level
  165.                                                                            {
  166.                                                                                          long_press=1;//進(jìn)入長(zhǎng)按,觸發(fā)調(diào)光
  167.                                                                                          press_ct=P_level;
  168.                                                                            }
  169.                                                                                  if(onoff) //如果燈是關(guān)著
  170.                                                                                   {
  171.                                                                                          onoff=0;//開關(guān)打開
  172.                                                                                          long_press=0;//退出長(zhǎng)按
  173.                                                                                          press_ct=0;
  174.                                                                                         //dim=0;
  175.                                                                                                 onff_s=1;
  176.                                                                                   }
  177.                                         break;
  178.                                 case 0x0002:
  179.                                         break;
  180.                                 case 0x0004:
  181.                                         break;
  182.                                 //......
  183.                                 default:
  184.                                         break;
  185.                         }
  186.                 }
  187.                 else//release
  188.                 {
  189.                         check_time++;//
  190.                 }
  191.                 if(check_time>220)//=i>600
  192.                 {
  193.                         check_time=0;
  194. //                        lianfa=0;//
  195.                         reset_time++;                       
  196.                         if(press_ct>10&&press_ct<P_level&&long_press==0)////觸發(fā)短按,進(jìn)行燈具開滅
  197.                    {
  198.                                 if(!onff_s)
  199.                                 {
  200.                           onoff=!onoff;//short press
  201.                                  press_f=1;
  202.                                 }                               
  203.                    }
  204.                          onff_s=0;
  205.                          if(long_press)//(lpress_ct)//長(zhǎng)按進(jìn)行亮度調(diào)節(jié)翻轉(zhuǎn)
  206.                          {
  207.                                  up_flag=!up_flag;
  208.                          }                         
  209.                    long_press=0;
  210.                          press_ct=0;
  211.                          if(press_f)//存儲(chǔ)亮度變量,松手或者關(guān)機(jī),下次從這個(gè)變量觸發(fā)
  212.                          {
  213.                                  press_f=0;
  214.                           SaveAllPar();
  215.                          }
  216.                 }
  217.                 /**/
  218.                 if(reset_time>1000)
  219.                   {
  220.       TS_init();
  221.                         reset_time=0;
  222.                                 //LG=1;
  223.                                 //LB=1;
  224.                                 //Delay_ms(100);
  225.                   }
  226. #endif
  227.                 //#endif
  228.         }
  229. }
  230. #endif
復(fù)制代碼
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 日韩精品人成在线播放 | www97影院| 国产在线观看网站 | 99久久精品免费看国产四区 | 成人午夜在线 | 成人免费在线 | 成人免费视频播放 | 免费一级淫片aaa片毛片a级 | 久久久久久天堂 | 情侣av| 国产精品无码专区在线观看 | 国产精品久久久亚洲 | 国产激情精品视频 | 日韩欧美国产精品 | 精品视频在线播放 | 综合激情av | 亚洲精品一区中文字幕乱码 | 一区二区三区中文字幕 | 99久久精品免费看国产小宝寻花 | 久久久不卡网国产精品一区 | 天天躁天天操 | 国产一区二区欧美 | 午夜精品一区二区三区在线视 | av中文字幕网 | 亚洲成人黄色 | 日韩美av | 免费黄色录像片 | 精品久久国产老人久久综合 | 成人在线免费观看 | 欧美成人h版在线观看 | 日韩欧美在线不卡 | 日韩中文在线视频 | 精品久久久久国产 | 日本三级全黄三级三级三级口周 | 欧美日韩综合 | 牛牛热在线视频 | 国产一区二区在线免费观看 | 偷拍自拍在线观看 | 中文精品视频 | 三级免费毛片 | 日本成人免费观看 |