最近在研究智能小车的直流电机调速,遇到以下几个问题,望高手解答1:有看了些关于PWM调速的书,但是感觉把理论运用到单片机编程上就不会了。
2:pid算法与pwm调速有什么关系?
3:以下是stc12c5a60s2官网提供的pwm的示例程序,不知道还要加入什么程序才能控制电机转动并控制占空比?
4:如何才能学会pwm调速?
#include <reg52.h>
#include <intrins.h>
#define FOSC 18432000L
typedef unsigned char BYTE;
typedef unsigned int WORD;
////////////////////主函数入口////////////////////////////
sfr CCON = 0xD8; //PCA控制寄存器
sbit CCF1 = 0xD9; //PCA模块1中断标志
sbit CCF0 = 0xD8; //PCA模块0中断标志
sbit CF = 0xDF; //PCA计数溢出标志位
sbit CR = 0xDE; //PCA计数器 运行控制位
sfr CMOD = 0xD9; //PCA模式寄存器
sfr CL = 0xE9; //PCA 定时寄存器 低位
sfr CH = 0xF9; //PCA 定时寄存器 高位
sfr CCAPM0 = 0xDA; //PCA模块0模式寄存器 //模块0对应P1.3/CEX0/PCA0/PWM0(STC12C5A60S2系列)
sfr CCAPM1 = 0xDB; //PCA模块1模式寄存器 //模块1对应P1.4/CEX1/PCA1/PWM1(STC12C5A60S2系列)
sfr CCAP0L = 0xEA; //PCA模块0的 捕获寄存器 低位
sfr CCAP0H = 0xFA; //PCA模块0的 捕获寄存器 高位
sfr CCAP1L = 0xEB; //PCA模块1的 捕获寄存器 低位
sfr CCAP1H = 0xFB; //PCA模块1的 捕获寄存器 高位
sfr PCA_PWM0 = 0xF2; //PCA PWM 模式辅助寄存器0
sfr PCA_PWM1 = 0xF3; //PCA PWM 模式辅助寄存器1
void main()
{
CCON=0;
CL=0;
CH=0;
CMOD=0x02;
CCAP0H=CCAP0L=0x80;
CCAPM0=0x42;
CCAP1H=CCAP1L=0x80;
//
PCA_PWM1=0x03;
CCAPM1=0x42;
CR=1;
while(1);
} |