c51单片机C语言编写的PWM程序

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

89c51单片机C语言编写的PWM程序

PWM, 单片机, C语言, 程序, 编写

分享到:新浪微博 QQ空间开心网人人网

说明:本程序使用STC89C52RC单片机,晶振,要使用本程序需要自己修改,我是用来控制直流电机的,外接了L298驱动电路,有问题或意见请回复,谢谢^_^

#include ""

#include ""

转;speed<0.反转(-100~100)

调用:extern int abs(int val); 取绝对值

返回:

/******************************************************************/

void motor(char speed1,char speed2)

{

//==============左边电机=============

if (speed1>0)

{

IN1 =0;IN2 =1;//正转

}

else if (speed1<0)

{

IN1 =1;IN2 =0;//反转

}

//==============右边电机=============

if (speed2>0)

{

IN3 =1;IN4 =0;//正转

}

else if (speed2<0)

{

IN3 =0;IN4 =1;//反转

}

}

/******************************************************************

名称:motor_PWM();

功能:PWM占空比输出

参数:无

调用:无

返回:无

/******************************************************************/

void motor_PWM ()

{

uchar PWM_abs1;

uchar PWM_abs2;

PWM_abs1=MOTO_speed1;

PWM_abs2=MOTO_speed2;

if (PWM_abs1>PWMAnd) ENA=1; //左边电机占空比输出

else ENA=0;

if (PWM_abs2>PWMAnd) ENB=1; //右边电机占空比输出

else ENB=0;

if (PWMAnd>=PWM_COUST) PWMAnd=0; //PWM计数清零

else PWMAnd+=1;

}

/******************************************************************

名称:void TIME_Init ();

功能:定时器初始化

指令:

调用:无

返回:无

/******************************************************************/

void TIME_Init ()

{

//=========定时器T2初始化 PWM==================

T2CON = 0x00;

T2MOD = 0x00;

RCAP2H = 0xff; //定时

RCAP2L = 0x47;

TH2 = 0xff;

TL2 = 0x47;

ET2 = 1; //定时器2中断开

TR2 = 1; //PWM定时器关,PWM周期为10ms

}

/******************************************************************

名称:void PWM_Time2 () interrupt 5

功能:T2中断,PWM控制

参数:

调用:motor_PWM();//PWM占空比输出

返回:

/******************************************************************/

void PWM_Time2 () interrupt 5

{

TR2 = 0;

TF2 = 0;

ET2 = 0; //定时器0中断禁止

motor_PWM();//PWM占空比输出

ET2 = 1; //定时中断0开启

TR2 = 1;

}

main()

{

TIME_Init () ;

motor(50,50);//左右电机的转速都是50

}

相关文档
最新文档