微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 定时中断和PWM

定时中断和PWM

时间:10-02 整理:3721RD 点击:
                        #include < reg51.h >
#include < intrins.h >
sbit  K1 =P3^0 ;                    //增加键
sbit  K2 =P3^1 ;                    //减少键
sbit  P00 =P1^1;
unsigned char PWM=0xe7;   //赋初值
void delayms(unsigned char ms);
void main()
{
     P1=0xff;
    TMOD=0x21 ;                           //设置定时器的工作方式,将定时器1设置与工作方式2.将定时器0设置成工作方式1,
    TH0=0xff ;             //50us延时常数
    TL0=0xce ;            //频率调节
    TH1=PWM ;            //脉宽调节
    TL1=0 ;
     EA=1;
     ET0=1;
     ET1=1;
         PT0=1;
         PT1=1;
     TR0=1 ;
         TR1=1;
   while(1)
   {
     do{
            if(PWM!=0xff)
           {PWM++ ;delayms(10);}
         }
     while(K1==0);
     do{
           if(PWM!=0xce)
          {PWM-- ;delayms(10);}
          }
     while(K2==0);
   }
}
void timer0() interrupt 1
{
    TR1=0 ;
    TH0=0xff ;
    TL0=0xce ;
    TH1=PWM ;
    TR1=1 ;
    P00=0 ;      //启动输出
}

void timer1() interrupt 3
{
    TR1=0 ;
    P00=1 ;     //结束输出
}

// 延时子程序
/*********************************************************/
void delayms(unsigned char ms)
{
    unsigned char i ;
    while(ms--)
     {
        for(i = 0 ; i < 120 ; i++) ;
     }
}

我想知道这个PWM调节led灯亮度的程序是怎么通过定时中断完成的,或者说在这里定时中断的作用是什么?

首先,你的定时器是通过电平反转产生一个方波。其次,你的摁键改变interrupt 3的时间,即改变了脉冲的平均输出电压。
最后,我想说:你是想问中断产生的原因是什么吧?答案:计数

定时器的作用是控制频率的,PWM的高电平控制LED的亮度

那么这是怎么触发定时中断的呢

产生方波就能改变灯的亮度吗?

产生方波就能引起灯的亮度不同吗?

上一篇:矩阵键盘检测
下一篇:3.2寸彩色屏

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top