本次实验是利用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信号对其进行控制实验。
|