今天我们将使用单片机内部自带的PWM来进行呼吸灯设计,自己可以查看该单片机型号的中文资料。所看章节如下:
直接上代码吧,大家可以查看代码,如果不明白的可以给我留言,^_^。
- #include <stc12c5a60s2.h>
- unsigned char dy[15]={16,32,48,64,80,96,112,128,144,160,176,192,208,224,240}; // CCAP0H值的分配,为了实现不同的占空比
- void modify_duty();
- void Init_PWM();
- void delay();
- void main()
- {
- Init_PWM();
- while(1)
- {
- modify_duty();
- }
- }
- void Init_PWM() // PWM功能的初始化
- {
- CMOD = 0X02; // 设置脉冲源
- CCAPM0 = 0X42; // 开启比较器,允许输出脉宽调制信号
- PCA_PWM0 = 0X00; // 组成9位比较器,可以设置成1,也可以设置成0
- CCAP0L = 0x80; // 比较器中的初值
- CCAP0H = 0X80; // 比较器初值重装
- CL=0; // 装载值为0
- CR =1; // 启动计数模式
- }
- void modify_duty()
- {
- int i;
- for(i=0;i<15;i++)
- {
- CCAP0H = dy[i];
- delay();
- }
- for(i=13;i>=1;i--)
- {
- CCAP0H = dy[i];
- delay();
- }
- }
- void delay()
- {
- int i,j;
- for(i=0;i<200;i++)
- {
- for(j=0;j<200;j++);
- }
- }
复制代码
可以看结果了:
|