PIC12F683 定时输出PWM的问题

2019-03-25 18:47发布

我手里刚好有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循环执行,目的就是为了实物检测,不然要等的时间太长了


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
7条回答
gs001588
1楼-- · 2019-03-25 22:31
这个还得靠你自己来。你有硬件,其他人没有,无法验证。
PWM输出功能不复杂,对照寄存器搞吧。
liu118
2楼-- · 2019-03-26 01:19
那有没有大致的思路呢,不是明白呢
ienglgge
3楼-- · 2019-03-26 02:38
 精彩回答 2  元偷偷看……
dingzy_2002
4楼-- · 2019-03-26 05:13
PIC的8位MCU配置PWM还是要有注意的地方,我刚开始使用这个模块也费了点时间。明天我将以前做的程序发上来给你参考下。
danet
5楼-- · 2019-03-26 10:40
新人进来学习,坐下听行家解答
dingzy_2002
6楼-- · 2019-03-26 11:16
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输出高电平有效

1.png
     高电平有效,指的是在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:
2.png

一周热门 更多>