蓝桥杯单片机第十二篇_PWM

PWM波输出可以用来调节电压的大小,蓝桥杯考的基本是灯亮度的调节
用定时器法实现PWM输出

以RB2调节灯的亮度为例子

#include <stc15.h>

void Timer1Init(void)  //100微秒@12.000MHz
{
 AUXR &= 0xBF;  //定时器时钟12T模式
 TMOD &= 0x0F;  //设置定时器模式
 TL1 = 0x9C;  //设置定时初值
 TH1 = 0xFF;  //设置定时初值
 TF1 = 0;  //清除TF1标志
 TR1 = 1;  //定时器1开始计时
 EA=ET1=1;
}

void main(void)
{
  while(1)
  {
    adc_dat=adc_read();
  }
}

void pwm_isr(void) interrupt 3
{
  static unsigned char pwm=0; 
  
 if(++pwm==255)		//因为ADC最大值是255,所以最大值也设置为255
  pwm=0; 
  
  //如果adc的值大于了PWM的值才开灯,否则熄灭,从而达到调整亮度的目的
 if(adc_dat>pwm)	
 {
   P2=(P2&0X1F)|0X80;
   P0=led_temp;		//灯的状态
   P2&=0X1F; 
 }
 else
 {
   P2=(P2&0X1F)|0X80;
   P0=0XFF;
   P2&=0X1F;    
 }
}
©️2020 CSDN 皮肤主题: 游动-白 设计师:上身试试 返回首页