欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

利用按鍵控制PWM調(diào)節(jié)LED亮度,持續(xù)按按鍵能夠連續(xù)變化 求幫助

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:495949 發(fā)表于 2019-9-9 18:12 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
我已經(jīng)做到了單獨按遙控或者是按按鍵的時候可以調(diào)節(jié)亮度,但是持續(xù)按遙控或者是按鍵的話我實現(xiàn)不了,希望大佬們幫幫忙,給我一點點思路。
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏3 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:235200 發(fā)表于 2019-9-9 22:44 | 只看該作者
單獨按能實現(xiàn),持續(xù)按不能實現(xiàn),這就要看你的電路和程序了,按鍵是否中斷實現(xiàn)?若是中斷的話是邊沿觸發(fā)還是電平觸發(fā)?判斷按鍵是否要彈起才有效?這些問題不清楚不好回答你的問題。一般若要連續(xù)按實現(xiàn)調(diào)節(jié)的話,用一個計數(shù)器計數(shù),計數(shù)至最大值對應(yīng)最大亮度,最小值對應(yīng)最小亮度,只要保證按鍵能對計數(shù)值增減就可實現(xiàn)了
回復(fù)

使用道具 舉報

板凳
ID:332444 發(fā)表于 2019-9-9 23:02 | 只看該作者
循環(huán)延時你的按鈕變量自增
回復(fù)

使用道具 舉報

地板
ID:213173 發(fā)表于 2019-9-10 07:49 | 只看該作者
短按+-,長按連+-,給你一個示例程序參考。
  1. #include <REG51.H>
  2. #define uint unsigned int        
  3. #define uchar unsigned char
  4. #define key_S 1000                                        //宏定義短按(約20ms)
  5. #define key_L 30000                                        //宏定義長按(約2/3s)
  6. #define key_M 20000                                        //宏定義長按(約1/3s)
  7. sbit key1=P3^6;                                                //加鍵
  8. sbit key2=P3^7;                                                //減鍵
  9. uchar num=1;

  10. void keyscan()                                                        //按鍵掃描
  11. {
  12.         static uint count1=0,count2=0;//計數(shù)變量
  13.         if(!key1)   
  14.         {  
  15.                 count1++;  
  16.                 if(count1>=key_L)                                //長按
  17.                 {
  18.                         if(num<255)
  19.                                 num++;        
  20.                         count1=key_M;
  21.                 }
  22.         }  
  23.         else                                                                        //按鍵抬起
  24.         {  
  25.                 if(count1>key_S && count1<key_L)//短按
  26.                 {
  27.                         if(num<255)
  28.                                 num++;
  29.                 }
  30.                 count1=0;                                                        //count清0
  31.         }   
  32.         if(!key2)   
  33.         {  
  34.                 count2++;  
  35.                 if(count2>=key_L)                                //長按
  36.                 {
  37.                         if(num>0)
  38.                                 num--;        
  39.                         count2=key_M;
  40.                 }
  41.         }  
  42.         else                                                                        //按鍵抬起
  43.         {  
  44.                 if(count2>key_S && count2<key_L)//短按
  45.                 {
  46.                         if(num>0)
  47.                                 num--;
  48.                 }
  49.                 count2=0;                                                        //count清0
  50.         }
  51. }

  52. void main()
  53. {
  54.         while(1)
  55.         {
  56.                 keyscan();                                //按鍵掃描
  57.                 P1=~num;                                        //LED低電平顯示
  58.         }
  59. }
復(fù)制代碼
回復(fù)

使用道具 舉報

5#
ID:495949 發(fā)表于 2019-9-10 08:49 | 只看該作者
csmyldl 發(fā)表于 2019-9-9 22:44
單獨按能實現(xiàn),持續(xù)按不能實現(xiàn),這就要看你的電路和程序了,按鍵是否中斷實現(xiàn)?若是中斷的話是邊沿觸發(fā)還是 ...

謝謝 我再試試
回復(fù)

使用道具 舉報

6#
ID:609970 發(fā)表于 2019-9-10 15:08 | 只看該作者
本帖最后由 bsbshi 于 2019-9-10 16:07 編輯

按鍵不用中斷,在計時器里循環(huán)查詢按鍵接口電平,加個延遲計數(shù)器,if判斷,在延遲時間內(nèi)高電平回零,為單次按按鍵,+1;超過延遲還是高電平則為持續(xù)按壓,++,直到按鍵變低電平
回復(fù)

使用道具 舉報

7#
ID:230975 發(fā)表于 2019-11-22 15:34 | 只看該作者
能看看你的按鍵檢測代碼嗎。有沒有加松手檢測。
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

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