智能小车-电机源代码

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

直流电机控制Keil c51源代码

直流电机的开环控制Keil c51源代码

//-----------------------函数声明,变量定义--------------------------------------------------------

#include

#include

#include

//-----------------------定义管脚--------------------------------------------------------

sbit PWM=P1^0; //PWM波形输出

sbit DR=P1^1; //方向控制

#define timer_data (256-100) //定时器预置值,12M时钟是,定时0.1ms

#define PWM_T 100 //定义PWM的周期T为10ms

unsigned char PWM_t; //PWM_t为脉冲宽度(0~100)时间为0~10ms

unsigned char PWM_count; //输出PWM周期计数

unsigned char time_count; //定时计数

bit direction; //方向标志为

//--------------------------------------------------------------------------------------------------

// 函数名称:timer_init

// 函数功能:初始化设施定时器

//--------------------------------------------------------------------------------------------------

void timer_init()

{

TMOD=0x22; /*定时器1为工作模式2(8位自动重装),0为模式2(8位自动重装) */ PCON=0x00;

TF0=0;

TH0=timer_data; //保证定时时长为0.1ms

TL0=TH0;

ET0=1;

TR0=1; //开始计数

EA=1; //中断允许

}

//--------------------------------------------------------------------------------------------------

// 函数名称:setting_PWM

// 函数功能:设置PWM的脉冲宽度和设定方向

//--------------------------------------------------------------------------------------------------

void setting_PWM()

{

if(PWM_count==0) //初始设置

{

PWM_t=20;

direction=1;

}

}

//--------------------------------------------------------------------------------------------------

// 函数名称:IntTimer0

// 函数功能:定时器中断处理程序

//--------------------------------------------------------------------------------------------------

void IntTimer0() interrupt 1

{

time_count++;

DR=direction;

if(time_count>=PWM_T)

{

time_count=0;

PWM_count++;

setting_PWM(); //每输出一个PWM波调用一次

}

if(time_count

PWM=1;

else

PWM=0;

}

//--------------------------------------------------------------------------------------------------

// 函数名称:main

// 用户主函数

// 函数功能:主函数

//--------------------------------------------------------------------------------------------------

void main()

{

timer_init();

setting_PWM();

}

直流电机闭环控制Keil c51源代码

//-----------------------函数声明,变量定义-------------------------------------------------------- #include

sbit INT_0 =P3^2; // 将p3.2外部中断0

sbit pulse_A=P1^2; // P1.2为脉冲A输入

相关文档
最新文档