STC12C5A60S2 正弦波 取自《M128》上。供参考。 一、定时/计数器 PWM 设计要点 根据 PWM 的特点,在使用 ATmega128 的定时/计数器设计输出 PWM 时应注意以下几点: 1.首先应根据实际的情况,确定需要输出的 PWM 频率范围,这个频率与控制的对象有关。如输出 PWM波用于控制灯的亮度,由于人眼不能分辨 42Hz以上的频率,所以 PWM 的频率应高于 42Hz,否则人眼会察觉到灯的闪烁。 2.然后根据需要 PWM 的频率范围确定 ATmega128定时/计数器的 PWM 工作方式。AVR 定时/计数器的PWM 模式可以分成快速 PWM 和频率(相位)调整PWM 两大类。 3.快速 PWM 可以的到比较高频率的 PWM 输出,但占空比的调节精度稍微差一些。此时计数器仅工作在单程正向计数方式,计数器的上限值决定 PWM 的频率,而比较匹配寄存器的值决定了占空比的大小。PWM 频率的计算公式为: PWM 频率 = 系统时钟频率/(分频系数*(1+计数器上限值)) 4.快速PWM 模式适合要求输出PWM 频率较高,但频率固定,占空比调节精度要求不高的应用。 5.频率(相位)调整 PWM 模式的占空比调节精度高,但输出频率比较低,因为此时计数器仅工作在双向计数方式。同样计数器的上限值决定了 PWM 的频率,比较匹配寄存器的值决定了占空比的大小。PWM 频率的计算公式为: PWM 频率 = 系统时钟频率/(分频系数*2*计数器上限值)) 6.相位调整 PWM 模式适合要求输出PWM 频率较低,但频率固定,占空比调节精度要求高的应用。当调整占空比时,PWM 的相位也相应的跟着变化(Phase Correct)。 7.频率和相位调整 PWM 模式适合要求输出PWM 频率较低,输出频率需要变化,占空比调节精度要求高的应用。此时应注意:不仅调整占空比时,PWM 的相位会相应的跟着变化;而一但改变计数器上限值,即改变PWM 的输出频率时,会使PWM 的占空比和相位都相应的跟着变化(Phase and Frequency Correct)。 8.在PWM 方式中,计数器的上限值有固定的0xFF(8位T/C);0xFF、0x1FF、0x3FF(16 位T/C)。或由用户设定的0x0000-0xFFFF,设定值在16 位T/C的ICP 或OCRA 寄存器中。而比较匹配寄存器的值与计数器上限值之比即为占空比。 二、 PWM 应用设计参考 下面给出一个设计示例,在示例中使用PWM 方式来产生一个1KHz 左右的正弦波,幅度为0-Vcc/2。 首先按照下面的公式建立一个正弦波样本表,样本表将一个正弦波周期分为128 个点,每点按7 位...