我手里刚好有12F683这款单片机,想实现定时输出PWM,对这个毫无头绪,哪位大神帮忙写个例程,用C语言写,我想学习参考下
我想实现的功能:
1、开机1-6h后,输出PWM 70%的占空比,频率1KHZ
2、6-8h后,输出PWM 50%的占空比,频率1KHZ
3、8-11h后,输出PWM 30%的占空比,频率1KHZ
4、11-12h后,输出PWM 60%的占空比,频率1KHZ
单片机的5脚输出PWM.
断电后复位,重新开始
另外我还有个想法,不知道能不能实现,比如在7脚输入低电平(拉地)的时候,上述4条程序,时间缩短至相隔10S循环执行,目的就是为了实物检测,不然要等的时间太长了
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
PWM输出功能不复杂,对照寄存器搞吧。
使用的MCU型号:PIC12F615
MCU使用频率:8MHz(时钟节拍为2MHz)
PWM功能:使用CCP1模块,在GPIO2管脚上输出频率为16KHz,脉宽可变的PWM信号(分辩率接近7位)
此时,PWM中CCP1的比较数量最大值是:2MHz/16KHz=125,(PWM_MAX=125)
那么,CCP1模块的数据是:
① CCP1CON = 0x0C; //普通PWM模式,CCP1输出高电平有效
高电平有效,指的是在PWM开始时,管脚输出H电平,当CCP1的数据达到设定值后,IO输出L电平。
②CCPR1L = (PWM_MAX);
产品中,先是将PWM设定为最高,再向下调节;这段指的是PWM的输出管脚目前恒为H电平。
③T2CON = 0x00;
T2的前后分频均为1,目前是关闭T2的,等管脚设置完成后再打开。
④PR2 = (PWM_MAX-1);
此处是重点:PR2的值一定要比设定的最大脉宽值少1,否则在最大脉宽时,PWM输出将不正常。
原因在于T2与PR2匹配后,到下个递增周期时才复位为0:
一周热门 更多>