MCU PWM

  • 格式:txt
  • 大小:2.01 KB
  • 文档页数:1
//按K2,PWM值减小,则占空比减小。
//按K3,复位,频率10KHZ的占空比为50%的波形
//P2^3输出PWM波形
/**************************************************/
#include<reg51.h>
void delay(unsigned char t);
{
while(t--);
}
KEY=1; //输出高脉宽
}
/**************************************************/
//延时之程序
/*************************************************/
void delay(unsigned char t)
while(Leabharlann 1==1); } }
}
if(K2==1) //减少脉宽
{
if(PWM!=0x0A)
{
deiay(10);
if(K2==1)
{
PWM--;
while(K2==1);
void main()
{
TMOD=0x22; //T0、T1方式2
TH0=0x9c; //产生频率10KHZ 即周期100us ?TH0=0xff
TL0=0x9c; //频率调节
TH1=PWM; //脉宽调节
TL1=PWM;
EA=1; //开定时器中断T0、T1
}
/**************************************************/
//定时器1中断服务程序
/*************************************************/
void timer0()interrupt 3
{
TR0=0;
ET0=1;
ET1=1; //开定时器T0关定时器T1
TR0=1;
TR1=0;
while(1)
{
if(K1==1) //增加脉宽
{
if(PWM!=0xfa)
{
delay(10);
if(K1==1)
{
PWM++;
/**************************************************/
//晶振12M
//利用定时器控制产生频率10MHZ占空比的可变PWM波形 //////////////脉冲宽度调制(PWM)
//按K1,PWM值增加,则占空比增加。 ////////占空比是指高电平在一个周期之内所占的时间比率。方波的占空比为50%,占空比为0.5,说明正电平所占时间为0.5个周期。
//定时器0中断服务程序
/*************************************************/
void timer0()interrupt 1
{
TR0=0;
TH1=PWM; //赋脉宽值
TL1=PWM;
TR1=1;
TR0=1;
KEY=0; //输出高脉宽
sbit K1=P1^0; //增加键
sbit K2=P1^1; //减少键
sbit K3=P1^2; //复位
sbit KEY=P2^3; //PWM输出
unsigned char PWM=0xce; //赋初值脉宽50%
/*************************************************/
}
}
}
if(K3==1) //脉宽复位
{
delay(10);
if(K3==1)
{
PWA=0xce;
while(K3==1);
}
}
}
}
/**************************************************/

下载文档原格式

  / 1