新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 一鍵多功能(按鍵控制LED亮度)

        一鍵多功能(按鍵控制LED亮度)

        作者: 時間:2016-11-30 來源:網絡 收藏
        本例子利用主要實現功能,一個按鍵,控制LED臺燈的亮度。上電默認關機,第一次按下,LED全亮,第二次按下,LED亮58%,第三次按下,LED亮47%,第四次按下,LED亮9%。

        本例中主要利用模擬PWM進行LED亮度控制。由于考慮成本,所以使用價格低廉,功能單一的單片機(沒有中斷功能)。所以一切靠模擬。選用 PIC16F505,其實可以用12F508或者12F509,反正8腳的單片機都可以用。RC4接按鍵,RC2接LED(可以通過擴流去驅動更大概率的 LED負載)。
        程序如下:
        }

        利用timer1(uint y)這個函數實際上很好的解決了,利用按鍵控制PWM調光,RGB漸變等多種狀態的轉跳。

        本文引用地址:http://www.104case.com/article/201611/323851.htm
        #include
        __CONFIG(0X034);
        #define uchar unsigned char
        #define uint unsigned int

        #define uchar unsigned char
        #define uint unsigned int
        uint a,q;
        void delay0(uint x)//延時函數1
        {
        uint c,d;
        for(c=x;c>0;c--)
        for(d=110;d>0;d--);
        }
        void delay4(uint w)//延時函數2
        {
        uint f,e;
        for(f=w;f>0;f--)
        for(e=10;e>0;e--);
        }
        void scan()//按鍵掃描函數,此函數實際帶了按鍵長擊和短擊功能,本例子用了按鍵的短擊(就是很正常的操作按鍵)
        {
        while(!RC4)//如果有鍵被按下
        {
        delay4(2);
        q++;//變量q自加1
        }
        if(q>5)//如果q大于5,說明有鍵按下,并且是短擊一次
        {
        RC3=1;
        delay4(50);
        RC3=0;
        //////////這3句是驅動一個有源蜂鳴器,意思是每按一次鍵,蜂鳴器響一聲,小家電里常見的操作。
        q=0;
        a++;//a是散轉的變量,a=1,2,3,4代表按鍵按下了幾次。
        }
        }



        void timer1(uint y)//此函數式本程序的靈魂,她具備了2個功能,第一:模擬PWM的脈寬可以用過y的值改變,意思是改變y的值就可以改 變LED亮度。第二,在PWM工作方式中,同時還檢測是否有按鍵按下,從而跳轉到下一個功能。
        {
        uint k;
        for(k=y;k>0;k--)
        {
        if(RC4==0)
        {
        a=2;
        }
        }
        }

        void timer2(uint n)//同上
        {
        uint m;
        for(m=n;m>0;m--)
        {
        if(RC4==0)
        {
        a=3;
        }
        }
        }

        上一頁 1 2 下一頁

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 虎林市| 武山县| 兴隆县| 阿拉尔市| 手游| 安阳县| 沙湾县| 松桃| 连江县| 南岸区| 金沙县| 大埔区| 静安区| 盘山县| 胶州市| 北流市| 息烽县| 荣昌县| 长垣县| 莱西市| 永年县| 康保县| 甘德县| 剑阁县| 黔西县| 诸暨市| 芮城县| 来宾市| 临泉县| 海淀区| 江安县| 山阴县| 蓝山县| 稷山县| 奉新县| 余庆县| 水富县| 新平| 西乌珠穆沁旗| 四平市| 兖州市|