晶振12MHz的51单片机输出两路频率为30KHz的PWM波控制DC-AC半桥逆变电路程序
时间: 2023-05-29 09:01:50 浏览: 183
基于51单片机的PWM控制
以下是晶振12MHz的51单片机输出两路频率为30KHz的PWM波控制DC-AC半桥逆变电路程序:
#include <reg52.h>
sbit PWM1 = P1^3; // PWM1输出口
sbit PWM2 = P1^5; // PWM2输出口
void InitTimer0(); // 定时器0初始化函数
void InitPWM(); // PWM初始化函数
void Delay(int time); // 延时函数
void main()
{
InitTimer0(); // 初始化定时器0
InitPWM(); // 初始化PWM
while(1)
{
PWM1 = 1; // PWM1输出高电平
Delay(4); // 延时4个机器周期,即1/30000*4=133.3us
PWM1 = 0; // PWM1输出低电平
PWM2 = 1; // PWM2输出高电平
Delay(4); // 延时4个机器周期,即1/30000*4=133.3us
PWM2 = 0; // PWM2输出低电平
}
}
void InitTimer0()
{
TMOD |= 0x01; // 定时器0工作在模式1(16位自动重载定时器)下
TH0 = 0xFC; // 每次定时65536 - 500 = 0xFC6C,即产生30KHz的PWM波
TL0 = 0x6C;
TR0 = 1; // 定时器0开始计时
}
void InitPWM()
{
PWM1 = 0; // PWM1输出低电平
PWM2 = 0; // PWM2输出低电平
}
void Delay(int time) // 在12MHz晶振下,1个机器周期为1/12MHz=83.33ns
{
int i, j;
for(i=0; i<time; i++)
for(j=0; j<12; j++); // 延时1个机器周期,即83.33ns
}
阅读全文