PWM波发生器
赶着做了一波本人单片机课程的实验考试题目,配合proteus仿真。因为仿真用了许多芯片,还挺有意思的,所以分享一下。
PWM波发生器
一、 任务
在硬件电路PWM.DSN中实现P1.7输出PWM波。周期T=100ms,初始占空比(T1/T)为50%,按键KEY1每次增加占空比10%(直到90%),KEY2每次减小占空比10%(直到10%)。
二、 设计参考:
① PWM产生方法:
思路:
在一个载波周期内,时间小于T1时P1.7输出为1,其余P1.7均为0。因此,通过比较当前时间值与设定值的位置关系来决定P1.7置0或置1,即可生成PWM波形。
算法:
定义变量
1、 占空比设定值(记为Duty,数值为1~9,时间单位为定时时间常数)。
2、 当前时间值(记为设置Counts,数值为0~10,时间单位为定时时间常数)
设置定时时间为固定常数(10ms),在定时中断服务时做以下处理:
1、 重置定时器;
2、 Counts ++;
3、 Counts %= C;(C为固定载波周期,数值为10,时间单位为定时时间常数)
4、 IF Counts < Duty