新聞中心

        EEPW首頁 > 光電顯示 > 設計應用 > PWM控制LED漸亮漸滅示例程序

        PWM控制LED漸亮漸滅示例程序

        作者: 時間:2013-04-24 來源:網絡 收藏
        /***********************************************************程序說明:利用定時器控制產生占空比可變的 PWM按S6,PWM值增加,則占空比減小,
        燈漸暗。 按S3,PWM值減小,則占空比增加, 燈漸亮。
        當PWM值增加到最大值或減小到最小值時,蜂鳴器將報警。
        ***********************************************************/#include reg51.h >
        #include intrins.h >sbitK1 =P3^2 ; //增加鍵
        sbitK2 =P3^3 ; //減少鍵
        sbitBEEP =P3^7 ; //蜂鳴器
        unsigned char PWM=0x7f ; //賦初值void Beep();
        void delayms(unsigned char ms);
        void delay(unsigned char t);/*********************************************************/
        void main()
        { P0=0xff;
        TMOD=0x21 ;
        TH0=0xfc ; //1ms延時常數 12M
        TL0=0x18 ; //頻率調節(jié) TH1=PWM ; //脈寬調節(jié)
        TL1=0 ; EA=1;
        ET0=1;
        ET1=1;

        TR0=1 ; while(1)
        {
        do{
        if(PWM!=0xff)
        {
        PWM++ ;
        delayms(10);
        }
        else
        Beep();
        }while(K1==0); do{
        if(PWM!=0x01)
        {
        PWM-- ;
        delayms(10);}
        else
        Beep() ;
        }while(K2==0);
        }
        }/*********************************************************/
        // 定時器0中斷服務程序.
        /*********************************************************/
        void timer0() interrupt 1
        {
        TR1=0 ;
        TH0=0xfc ;
        TL0=0x66 ;
        TH1=PWM ;
        TR1=1 ;
        P0=0x00 ; //啟動輸出
        }/*********************************************************/
        // 定時器1中斷服務程序
        /*********************************************************/
        void timer1() interrupt 3
        {
        TR1=0 ;
        P0=0xff ; //結束輸出
        }/*********************************************************/
        //蜂鳴器子程序
        /*********************************************************/void Beep()
        {
        unsigned char i;
        for (i=0;i100;i++)
        {
        delay(100);
        BEEP=!BEEP; //Beep取反
        }
        BEEP=1; //關閉蜂鳴器
        delayms(100);
        } /*********************************************************/
        // 延時子程序
        /*********************************************************/
        void delay(unsigned char t)
        {
        while(t--) ;
        }/*********************************************************/
        // 延時子程序
        /*********************************************************/
        void delayms(unsigned char ms) {
        unsigned char i ;
        while(ms--)
        {
        for(i = 0 ; i 120 ; i++) ;
        }
        }

        pwm相關文章:pwm是什么


        pwm相關文章:pwm原理


        蜂鳴器相關文章:蜂鳴器原理


        關鍵詞: PWM控制 LED 漸亮漸滅

        評論


        相關推薦

        技術專區(qū)

        關閉
        主站蜘蛛池模板: 子洲县| 龙南县| 孝昌县| 孟津县| 古蔺县| 德化县| 哈密市| 荆门市| 崇信县| 泰宁县| 新津县| 神木县| 唐山市| 金湖县| 铜川市| 延川县| 南华县| 格尔木市| 宁武县| 通道| 阿拉善右旗| 兴海县| 革吉县| 宣威市| 宁波市| 永嘉县| 壤塘县| 松原市| 册亨县| 遵义县| 漳平市| 富平县| 青冈县| 阳山县| 贵德县| 灌云县| 金寨县| 吴旗县| 永昌县| 朝阳区| 太原市|