• <li id="00i08"><input id="00i08"></input></li>
  • <sup id="00i08"><tbody id="00i08"></tbody></sup>
    <abbr id="00i08"></abbr>
  • 新聞中心

    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 ; //頻率調節 TH1=PWM ; //脈寬調節
    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 漸亮漸滅

    評論


    相關推薦

    技術專區

    關閉
    主站蜘蛛池模板: 温州市| 安国市| 宜川县| 沧州市| 那坡县| 瑞金市| 洪泽县| 岑巩县| 荔波县| 临邑县| 旬阳县| 安康市| 巫溪县| 呈贡县| 大悟县| 沾益县| 龙川县| 双鸭山市| 永泰县| 永清县| 吴旗县| 仙桃市| 哈巴河县| 隆化县| 潜江市| 安西县| 汝南县| 临朐县| 铁力市| 澜沧| 北流市| 民县| 大同县| 郑州市| 文昌市| 南澳县| 福建省| 九寨沟县| 海兴县| 朔州市| 龙胜|