前言
在学习的PWM模块的过程中,见到论坛中关于PIC单片机的呼吸灯的帖子很少,然后就自己试着做了一下这实验。因为最近在学PIC 16F877A的CCP模块,就想着PIC单片机有着集成的硬件PWM模块,那么好的功能,不能浪费了。于是写下这篇帖子希望可以帮助到一些跟我一样的萌新。
一、如何实现呼吸灯
(1)呼吸灯的原理,通俗的说就是利用PWM波的占空比的变化,让其输出的电压的有效值变化使得LED灯的亮度发送变化(灯泡的亮度是由有效值来确定的),然后通过延时让消除由PWM波占空比带来的闪烁影响。(关于如何产生一个PWM波可以看下这篇文章:https://blog.csdn.net/cxj7878789/article/details/108165096)
(2)j简单的介绍下使用的软件。
编程软件:MPLAC X IDE
仿真软件:PRTEUS 8.9
(3)j简单的介绍下使用的寄存器。
1)T2CON寄存器。
在CCP_PWM模块中要使用到定时器T2,来产生PWM的周期和脉冲宽度.
设置成T2CON=0X04 //初始化定时器T2,预分频设置为1:1
2)CCP1CON寄存器。
这个寄存器是用来设置PWM波10位分辨率的低2位和开启PWM模式用的。
设置成 CCP1CON=0X3C。 //初始化CCP_PWM让10位分辨率的低两位为11,开启PWM模式
3)PR2寄存器
这个寄存器是用来设置PWM波的周期的。
设置成 PR2=99。这样带入公式中得到的PWM波的周期为:100ns。
4)CCPR1L寄存器。