欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4833|回復: 1
收起左側

如何使用pwm的原理,設計兩個按鍵,來控制一個led亮度的加減(單片機C語言) 求幫助

[復制鏈接]
ID:424795 發表于 2019-3-3 14:28 | 顯示全部樓層 |閱讀模式
10黑幣
如題

最佳答案

查看完整內容

用STC12C5624AD寫的PWM可調C程序 //本程序用占空比可調節的PWM方波來控制大功率LED的亮度,PWM波占空比可從0到100 // PWM 控制 LED 燈漸亮漸滅程序 // 晶振為12M // 利用STC12C5624AD單片機的PWM功能產生占空比可變的 PWM 方波 // 按K1,PWM值增加,則占空比減小,LED 燈漸暗。 // 按K2,PWM值減小,則占空比增加,LED 燈漸亮。 // 當PWM值增加到最大值或減小到最小值時,蜂鳴器將報警。 //…..安徽師范大學物理與電子信息學 ...
回復

使用道具 舉報

ID:407374 發表于 2019-3-3 14:29 | 顯示全部樓層
用STC12C5624AD寫的PWM可調C程序
//本程序用占空比可調節的PWM方波來控制大功率LED的亮度,PWM波占空比可從0到100
// PWM 控制 LED 燈漸亮漸滅程序
// 晶振為12M
// 利用STC12C5624AD單片機的PWM功能產生占空比可變的 PWM 方波
// 按K1,PWM值增加,則占空比減小,LED 燈漸暗。
// 按K2,PWM值減小,則占空比增加,LED 燈漸亮。
// 當PWM值增加到最大值或減小到最小值時,蜂鳴器將報警。
//…..安徽師范大學物理與電子信息學院07級電子信息工程專業   曾祥…………..//
#include<reg52.h>
sfr CCON=0xD8;
sfr CMOD=0xD9;
sfr CL=0xE9;
sfr CH=0xD8;
sfr CCAP0L=0xEA;
sfr CCAP0H=0xFA;
sfr CCAPM0=0xDA;
unsigned char PWM=0x7f;                           //PWM初值
unsigned char flag=0;                                
sbit K1 =P2^6 ;                    //增加鍵
sbit K2 =P2^7 ;                                           //減少鍵
sbit BEEP=P2^5;                                           //蜂鳴器
sbit CR=0xDE;
void Beep();
void delayms(unsigned char ms);
void delay(unsigned char t);
void main(void)
{
  CMOD=0x02;                //PCA計數脈沖選擇為fos/2
  CL=0x00;
  CH=0x00;
  CCAP0L=0xC0;
  CCAP0H=PWM;
  CCAPM0=0x42;
  CR=1;
  
  while(1)
  {
  if(K1==1&&K2==1)
   flag=0;
  if(K1==0)
        {
                delay(50);
               if(K1==0&&flag==0)        
                        {        
                                if(PWM<0xf5)
                                {  
                                CR=0;        PWM+=10; delayms(10); CR=1;
                                 }
                                  else
                                  { PWM=0xff;Beep();}
                                  flag=1;
                    }
     }
    if(K2==0)
         {
                delay(50);
              if(K2==0&&flag==0)
           {
                 if(PWM>0x0a)
              {
                           CR=0;   PWM-=10 ;delayms(10); CR=1;  }
                      else {PWM=0x00;Beep();}
                          
                    }
                        flag=1;        
      }

     CCAP0H=PWM;
    }
  }

/*********************************************************/
//蜂鳴器子程序
/*********************************************************/
void Beep()     
{
      unsigned char i ;
      for (i=0 ;i<100 ;i++)
        {
          delayms(3) ;
         BEEP=0 ;                //Beep取反
        }
    BEEP=1 ;                            //關閉蜂鳴器
    delayms(100);
}
/*********************************************************/
// 延時子程序1
/*********************************************************/
void delay(unsigned char t)
{
    while(t--)   ;
}
/*********************************************************/
// 延時子程序2
/*********************************************************/
void delayms(unsigned char ms)
{
    unsigned char i ;
    while(ms--)
     {
        for(i = 0 ; i < 120 ; i++)         ;
     }
}

  
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表