基于AT89C51单片机的电机控制系统设计_课程设计报告 下载本文

内容发布更新时间 : 2024/12/22 21:23:38星期一 下面是文章的全部内容请认真阅读。

}

void PWM_Init() {

static unsigned char t=0; t++;

//速度产生函数

if(t>Pwm_MAX) t=0;

if(t<=Pwm_Value)

if(D==0) { } else {

MotorA=Pwm; MotorB=0; MotorA=0; MotorB=Pwm; { Pwm=1; } else { Pwm=0; }

} }

void Show_Value(unsigned char CH[]) //数据显示函数 { int i;

for(i=0;i<4;i++) { LcdPutChar(CH[i]); }

}

void Show_Init() //{

LcdWriteCmd(0x80); LcdPuts(\速度设定\LcdWriteCmd(0x90); LcdPuts(\速度反馈\LcdWriteCmd(0x88); LcdPuts(\速度方向\LcdWriteCmd(0x98); LcdPuts(\测控071 \LcdWriteCmd(0x9c); LcdPuts(\号 \}

void T_int()

{

TMOD&=0x00; TMOD=0x25; TH1=TL1=0xa4; TH0=TL0=0;

数据显示预处理函数//定时器初始化函数

ET1=1; TR1=1; EA=1; }

void MeasureSpeed() {

unsigned int m; TH0=TL0=0; TR0=1; Delay(2400); TR0=0; TF0=0;

m=2*(TH0*255+TL0);

if(m>Value) Pwm_Value++; if(m

FK[3]=(m)+48; FK[2]=(m/10)+48; FK[1]=(m/100)+48; FK[0]=(m/1000)+48;

SD[3]=(Pwm_Value)+48; SD[2]=(Pwm_Value/10)+48; SD[1]=(Pwm_Value/100)+48; SD[0]=(Pwm_Value/1000)+48; }

//速度反馈及信息处理函数

void main() {

//主函数部分

unsigned char i; MotorA=0;

MotorB=0;

EA=0;

T_int(); //定时器初始化 Delay(50);

LcdInit();//LCD初始化

/*****************************************/ for(i=0;i<2;i++) { }

LcdLightOff(); Delay(660); LcdLightOn(); Delay(660);

Delay(660);

LcdClear();

Delay(660);

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

Show_Init();

Delay(20);

Value=90;

//速度初值

Pwm_Value=Value; EA=1; for(;;) {

KEY();

//按键处理

}

MeasureSpeed(); //速度反馈 LcdWriteCmd(0x94);

Show_Value(FK); //显示实时速度 LcdWriteCmd(0x84);

Show_Value(SD); //显示设定值 LcdWriteCmd(0x8c); //显示方向

if(D==0) LcdPuts(\正向\ if(D==1) LcdPuts(\反向\}

void T1ZD() interrupt 3 //T1中断服务程序 {

unsigned char m=0; TR1=0;

PWM_Init(); //电机控制 if(SWTR) //延时程序控制 { }

if(--SWTV==0) SWTF=1;

TR1=1; }