打印
[活动专区]

8003硬件板+(四)PWM(呼吸灯)

[复制链接]
11563|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
      本次实验是利用SC92F8003的Pin20引脚输出占空比可变的PWM信号驱动LED工作,代码以官方DEMO为蓝本但没有采用中断方式。
一、实验环境
1、Keil MDK51 9.59
2、SC-LINK
3、SC92F8003的DEMO硬件板
4、8位LED模块

二、实验过程
1、PWM6初始化程序参考了官方的DEMO。
void PWM_Init(void)
{
        PWMCFG  = 0x55;                        //135输出不反向,0246输出反向               
        PWMCON0 = 0X83;                        //打开PWM、时钟16周期低2位为11               
        PWMDTYB = 0XaA;     //PWM456占空比低两位Duty                                               
        PWMPRD  = 0xff;                        //设置PWM周期高8位                                                                       
  PWMCON1 = 0X7f;     //独立模式,打开PWM模块0~6                                       
        PWMDTY6 = 0X00;     //设置PWM6占空比高8位
}
2、主程序中忽略的低2位,只对占空比的高8位进行了配置。
#include <SC92F8003_C.H>
#include "delay.h"
#include "pwm.h"

unsigned char i=0;
bit flag = 0;
       
       
void main(void)
{
        PWM_Init();
        while(1)
        {
                if(flag==0)
                {
                        i++;
                        PWMDTY6 = i;     
                        delayms(50);
                        if(i==255)flag = 1;                               
                }
                if(flag)
                {
                        i--;
                        PWMDTY6 = i;   
                        delayms(50);
                        if(i==0)flag = 0;                       
                }       
        }
}
3、系统时钟配置为16MHz


三、实验现象
接在Pin20的LED受PWM6的输出控制,LED按灭->渐亮->最亮->渐暗->灭进行循环。

四、总结
       SC92F8003的PWM模块使用比较方便,配置也比较简单。另外其PWM还可以配置成3组“互补模式”,利用这种模式对电机进行控制也是比较方便的,后期准备搭一个电机模块,并利用“互补模式”的PWM信号对其进行控制实验。

相关帖子

沙发
沃利贝尔| | 2020-8-31 09:20 | 只看该作者
感谢楼主,现在正在困扰这个问题

使用特权

评论回复
板凳
lisingch|  楼主 | 2020-9-1 12:12 | 只看该作者
沃利贝尔 发表于 2020-8-31 09:20
感谢楼主,现在正在困扰这个问题

很高兴能够帮到您!

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

99

主题

14989

帖子

17

粉丝