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

專注電子技術學習與研究
當前位置:單片機教程網 >> MCU設計實例 >> 瀏覽文章

雙鍵無極LED調光臺燈

作者:佚名   來源:本站原創   點擊數:  更新時間:2013年10月20日   【字體:

雙按鍵控制LED臺燈亮度C方案

功能要求:上電LED不亮,按著1鍵,LED從最暗達到最亮,并且附加狀態指示燈,達到最亮時候,指示燈點亮,說明主燈已經達到最亮。按著2鍵,主燈LED將一直變暗到滅掉。

 

思路:設定變量PWM,通過按鍵來改變PWM的值,再構造與PWM相關的模擬PWM函數,通過PWM的值去調節脈寬,達到調光目的。

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

程序代碼:

 

#include<pic.h>

__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函數
{


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)// 一直檢測減按鍵是否按下,有鍵按下則跳出循環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)//檢測開機鍵,也就是增加鍵是否按下,并且LED主燈,在沒有鍵下的情況下是不會亮的

       {        

           RC0=0;

              if(RC4==0)

              break;

       }

 

    while(1)

     {       

            LED_ON()//模擬PWM函數

            scan1();//加鍵掃描

            scan2();//減鍵掃描

     }

   }

}

 

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

利用

while

If(表達式1

Break;

)結構設定各種循環檢測.

關閉窗口

相關文章