<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 雙鍵無極LED調(diào)光臺燈

          雙鍵無極LED調(diào)光臺燈

          作者: 時(shí)間:2016-11-30 來源:網(wǎng)絡(luò) 收藏
          雙按鍵控制LED臺燈亮度C方案

          功能要求:上電LED不亮,按著1鍵,LED從最暗達(dá)到最亮,并且附加狀態(tài)指示燈,達(dá)到最亮?xí)r候,指示燈點(diǎn)亮,說明主燈已經(jīng)達(dá)到最亮。按著2鍵,主燈LED將一直變暗到滅掉。

          本文引用地址:http://www.ex-cimer.com/article/201611/323863.htm

          思路:設(shè)定變量PWM,通過按鍵來改變PWM的值,再構(gòu)造與PWM相關(guān)的模擬PWM函數(shù),通過PWM的值去調(diào)節(jié)脈寬,達(dá)到調(diào)光目的。

          端口連接:RC0—LED RC4----按鍵1RC5----按鍵2RC3為最大亮度指示燈

          程序代碼:

          #include

          __CONFIG(0X034);

          #define uchar unsigned char

          #define uint unsigned int

          unsigned int PWM,H,L;

          void delay(unsigned int b)

          {

          unsigned char i;

          while(b--)

          {

          for(i=0; i<2; i++);

          }

          }

          void LED_ON()//模擬PWM函數(shù)
          {


          H=PWM;
          L=500-H;

          RC0=1;
          while(H--);
          RC0=0;
          while(L--);

          }

          void scan1()//加鍵掃描

          {

          if(RC4==0)

          {

          delay(50);

          if(RC4==0)

          {

          PWM++;

          if(PWM>499)

          {

          PWM=499;

          while(1)//

          {

          RC0=1;

          RC3=1;

          if(RC5==0)//一直檢測減按鍵是否按下,有鍵按下則跳出循環(huán)while語句

          break;

          }

          }

          }

          }

          }

          void scan2()//減鍵掃描

          {

          RC3=0;

          if(RC5==0)

          {

          delay(50);

          if(RC5==0)

          {

          PWM--;

          if(PWM<1)

          {

          PWM=1;

          RC0=0;

          while(1)//一直檢測其加鍵是否按下,有按下則跳出while語句

          {

          if(RC4==0)

          break;

          }

          }

          }

          }

          }

          void main()//主程序

          {

          RC0=0;

          RC3=0;

          TRISC=0b00110000;

          while(1)

          {

          while(1)//檢測開機(jī)鍵,也就是增加鍵是否按下,并且LED主燈,在沒有鍵下的情況下是不會亮的

          {

          RC0=0;

          if(RC4==0)

          break;

          }

          while(1)

          {

          LED_ON()//模擬PWM函數(shù)

          scan1();//加鍵掃描

          scan2();//減鍵掃描

          }

          }

          }

          涉及到按鍵無極調(diào)光的,一定要采取“按下有效”的方法去掃描按鍵,不需要松手檢測。

          利用

          while

          If(表達(dá)式1)

          Break;

          )結(jié)構(gòu)設(shè)定各種循環(huán)檢測.



          關(guān)鍵詞: 雙鍵無極LED調(diào)光臺

          評論


          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();