51单片机怎样做PWM

来源:百度知道 编辑:UC知道 时间:2024/06/25 03:25:23
51单片机怎样做PWM,我想光让I/O口高低高低总是不行呀,还要用到中断 和定时器吧.帮忙说个较为详细点的思路.

你用定时器开中断吧,如果只是简单的用IO口的话,得到的频率很不准确的!
思路:根据单片机的晶振大小计算定时器的初值,在中断程序里给对要输出脉冲的引脚取反操作就是了,例如:P1^0=~P1^0;
还有脉冲频率不能太高哦,要保证定时器的计时时间大于中断程序执行时间~~
程序大体结构:
void Init_timer() //定时器初始化
{
}
void main() //主程序
{
}
void t0() interrupt 1//t0的中断程序
{
}

STC的部分51单片机可以使用相关寄存器实现PWM功能,不用编写复杂的程序(即不用中断了),当然我一直看不懂STC编写的说明书,所以一边都用AVR单片机来制造PWM,而且非常简单。

输出高电压,设置定时器时间为高电压宽度, 定时器中断到后,拉低电压,重新设置定时器时间为低电压宽度. 定时器中断到后在拉高电压. 重复开始的步骤

将定时器设置成定时中断,分两次进中断,一次给控制端口送高电平,一次送低电平。高低电平的定时的时间要看控制的要求而定。这种方法的缺点是频率不是很高。