新聞中心

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

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

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

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

        本文引用地址:http://www.104case.com/article/201611/323863.htm

        思路:設(shè)定變量PWM,通過按鍵來改變PWM的值,再構(gòu)造與PWM相關(guān)的模擬PWM函數(shù),通過PWM的值去調(diào)節(jié)脈寬,達到調(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)//檢測開機鍵,也就是增加鍵是否按下,并且LED主燈,在沒有鍵下的情況下是不會亮的

        {

        RC0=0;

        if(RC4==0)

        break;

        }

        while(1)

        {

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

        scan1();//加鍵掃描

        scan2();//減鍵掃描

        }

        }

        }

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

        利用

        while

        If(表達式1)

        Break;

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



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

        評論


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

        關(guān)閉
        主站蜘蛛池模板: 铜川市| 平利县| 九龙县| 河间市| 城市| 惠来县| 称多县| 石城县| 昌都县| 丰台区| 瓦房店市| 定远县| 凌海市| 肇州县| 静乐县| 盐池县| 宜川县| 安仁县| 老河口市| 临澧县| 繁昌县| 宜丰县| 伽师县| 林州市| 左云县| 康马县| 邹城市| 麻阳| 富顺县| 镇宁| 云梦县| 南华县| 阳原县| 乐平市| 南丹县| 吴川市| 西林县| 保山市| 双桥区| 浦县| 开封县|