关于MCS-51单片机实现PWM的方法PWM是脉冲宽度调制的意思。PWM实际上是在单片机的某个引脚输出一系列的矩形波,其周期一般是固定的;而其高
关于MCS-51单片机完成PWM的办法
PWM是“脉冲宽度调制”的意思。
PWM实际上是在单片机的某个引脚输出一系列的矩形波,其周期一般是固定的;而其高电平、低电平所占用的时刻,是能够受控调整的。高电平、低电平所占用的时刻之比,称为占空比,其值为0~1之间。PWM的运用很广,简略的说,它能够操控灯火的亮度、能够操控直流电机的转速,乃至还能够输出语音信号。
新式的单片机,往往都含有硬件的PWM模块,编写程序就很简略;而旧式的MCS-51系列,就不具有这个条件。
其实,在没有PWM硬件的单片机上完成PWM,也并不难,只需一个守时器,令其作业在中止办法即可。下面以网上的一个标题为例,阐明完成PWM办法。
标题链接:http://zhidao.baidu.com/question/170790790.html?push=core
标题:AT89C52单片机输出可调PWM波。
要求:
1。单片机的晶振是12MHz,输出周期为1s。
2。用两个开关操控占空比的添加和削减,分20等级。针对这个标题,做而论道规划了一个简略的试验电路:
在P2口的8条线输出PWM波形;
在/INT1、/INT0外接了两个按键,用来调整占空比;
在P0口外接了两个BCD数码显现器,用来显现当时的占空比的等级。
试验的时分,能够运用示波器来调查P2口输出的波形。
如果把PWM波形的频率进步,也能够用LED调查到渐亮渐暗的作用,现在看,仅仅闪耀的时刻发生变化。
//程序如下:
//==========================================
#include
unsignedinta,b;
//——————————————
voidmain()
{
TMOD=0x01;//T0守时办法1
TH0=(65536-50000)/256;//50ms@12MHz
TL0=(65536-50000)%256;
TR0=1;ET0=1;
EX0=1;EX1=1;
IT0=1;IT1=1;
EA=1;a=0;
b=10;
while(1);
}
//——————————————
voidtime0()interrupt1
{
TL0=(65536-50000)%256;
TH0=(65536-50000)/256;//50ms@12MHz
a++;
if(a==20)a=0;//在这里调整周期.
if(a<b)P2=0xff;//在这里调整占空比.
elseP2=0x00;
P0=((b/10)<<4)+b%10;//显现占空比等级
}
//——————————————
voidX0_INT()interrupt0
{
b++;
if(b>19)b=19;//占空比等级最大为19
}
//——————————————
voidX1_INT()interrupt2
{
b–;
if(b<1)b=1;//占空比等级最小为1.
}
//==========================================
声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/xinpin/yuanjian/261345.html