• 歡迎光臨東莞市飛江電子科技有限公司官網!
    全國咨詢熱線

    13926563901

    18925580829

    飛江淘寶店鋪

    首頁>技術資料>51單片機

    基于51單片機之兩鍵控制LED(調光臺燈)實驗例程

    發布時間:2018-03-26   瀏覽量:

    **************************  Copyright(C) CaKe  ****************************************
    ========================================================================================
    ==============**版權信息   : CaKen工作室                            ==============
    ==============**文件名     : main.c              ==============
    ==============**作者       : CaKen             ==============
    ==============**版本號     : V1.0              ==============
    ==============**時間       : 2014.08.23               ==============
    ==============**功能描述   : 16鍵電子琴實驗測試         ==============
    ========================================================================================
    ****************************************************************************************
     
    #include"reg52.h"
     
    #define  CaKen_LED  P1             //設置LED連接的I/O組
     
    #define  CaKen_PWM 501       //設置明亮的總級數(級數過大會出現閃爍)(值域:0~65535)
    #define  CaKen_MAX 500       //設置最大亮度(值域:小于明亮總級數)
    #define  CaKen_MIN 1       //設置最小亮度(值域:明亮大于等于1,小于最大亮度)
     
    sbit     CaKen_KEY_ADD = P3^0;     //亮度加
    sbit     CaKen_KEY_DEC = P3^1;        //亮度減
     
     
    ***************************************************************************************
    函數名:延時程序
    調  用:delay();
    參  數:
    返回值:
    結  果:
    備  注: 0.1ms延時程序(12MHz 10倍于51單片機速度時)
    ****************************************************************************************/
    void delay (unsigned int a)
    {
     unsigned char i;
       while( --a != 0)
       {
      for(i = 0; i < 12; i++);
       }         
    }
     
     
    ***************************************************************************************
    函數名:LED顯示程序
    調  用:Display();
    參  數:CaKen
    ****************************************************************************************/
     
    void Display(unsigned int CaKen) //顯示程序(50ms的PWM寬度)
    {
       CaKen_LED=0x00;                 //LED小燈亮
     delay(CaKen);                 //延時a的長度
     CaKen_LED=0xff;                 //LED小燈滅
     delay(CaKen_PWM-CaKen);         //延時總PWM長度減a
    }
     
     
    ***************************************************************************************
    函數名:main
    備  注:
    ****************************************************************************************/
    void main()
    {
      unsigned int k=1;     //初始化LED的亮度 
      while(1)
       {  
          Display(k);
          if(CaKen_KEY_ADD==0)      //如果按鍵按下則繼續
           {
             delay(20);        //消抖 延時20mS
             if(CaKen_KEY_ADD==0)     //如果按鍵按下則繼續
       {
         k++;
         if(k>CaKen_MAX)
          {
            k=CaKen_MAX;
          }
       }
           }
     
        if(CaKen_KEY_DEC==0)   //如果按鍵按下則繼續
            {       
             delay(20);     //消抖 延時20mS
             if(CaKen_KEY_DEC==0)  //如果按鍵按下則繼續
        {
           k--;
          if(k
           {
             k=CaKen_MIN;
         
           }
        }
           }
       }
    }
    黑人粗大无码AV人妻一区