|
微处理器的DAC功能虽然可以输出比较准确的电压,但并不是所有的微处理器都具备的,而且在点亮LED方面也存在着一点的缺陷,所以mbed还提供了另外一种模拟输出功能,即脉宽调制(PWM:(Pulse Width Modulation)输出。它是一种对模拟信号电平进行数字编码的方法,简单来说就是通过一个时钟周期内高低电平的不同占空比来表征模拟信号,如下面就是一个具体的编码样例(三角波是用来生成PWM编码的):
对于生成的PWM编码还可以用简单的电路进行还原,如下面的低通滤波电路就可以得到原来的模拟信号:
mbed使用PwmOut类来实现PWM输出功能,它提供的主要方法如下:
上程序:
#include "mbed.h"
PwmOut PWM1(LED2);
float pv=0;
char flag=0;
int main() {
PWM1.period_us(100);
while(1) {
if(flag==0)
{
PWM1=pv;
pv=pv+0.01;
}
else
{
PWM1=pv;
pv=pv-0.01;
}
wait(0.01);
if(pv>1)
{
flag = 1;
pv = 1;
}
if(pv <= 0)
{
flag = 0;
pv = 0;
}
}
}
视频明天上:
|
|