浙江理工大学拖动系统课程设计
if(speed00==0) {yy[3]='\\0';} delay(5) ; write_string(LCD_SL+8,\ \ //屏幕清空 delay(35); write_string(LCD_SL+8,yy); }
//-------------------------------------------------------------------
//--------------------------------------------------------------计时器1中断 void time0() interrupt 3 {
time_calculate(); BG++;S++; if(BG==1) { TH1=PHTH; TL1=PHTL; } else { BG=0; TH1=PLTH; TL1=PLTL; } if(direction==1) {PWM1=~PWM1;PWM2=0;} else {PWM2=~PWM2;PWM1=0;} }
//---------------------------------------------------------------------
//--------------------------------------------------------计数器中断 void time2() interrupt 0
第25页
浙江理工大学拖动系统课程设计
{
RAND++; if(S==200) {speed_calculate(); } }
//-------------------------------------------------------------
//------------------------------------------------------------主程序 void main() {
rank=5; // 设置默认转速 state=0; // 电机停止状态 direction=1; // 电机转向为正方向 PWM1=0; // 无PWM信号 PWM2=0; // lcd_init(); // 初始化屏幕 while(1) { key(); if(key_in>0) { if(key_in==1||key_in==2) { if(key_in==1&&rank<9) { rank++; } if(key_in==2&&rank>3) { rank--; } time_calculate(); } else if(key_in==7||key_in==8) {
if(key_in==8&&state==1) { PWM1=0;PWM2=0; TR1=0;ET1=0;state=0; EX0=0; write_string(LCD_SL,\ \
第26页
//定时器和计数器中断设置
浙江理工大学拖动系统课程设计
} else if(key_in==7&&state==0) { TR1=1;ET1=1;EA=1;TMOD=0x10; BG=1; state=1;IT0=1;EX0=1;PX1=1; //定时器和计数器中断设置 //定时器1以方式1记时 //计数器0以下降沿触发中断 S=0;RAND=0; pwm_on(); } } else if(key_in==4||key_in==5) { if(direction==2&&key_in==4) { direction=1;PWM1=0;PWM2=0; TR1=0;ET1=0; delay_1ms(400); } else if(direction==1&&key_in==5) { direction=2;PWM1=0;PWM2=0; TR1=0;ET1=0; //换向时先停止在换向 delay_1ms(400); } if(state==1) { pwm_on(); } }
key_in=-1;
write_string(LCD_FL,\TE: \if(state==1) {
char xx[5];int R; R=rank-2;
sprintf(xx, \
write_string(LCD_FL+13,xx);
第27页
浙江理工大学拖动系统课程设计
} else {
write_string(LCD_FL+13,\ //刷新屏幕 }
if(direction==1)
write_string(LCD_FL+6,\else
}
}
}
write_string(LCD_FL+6,\
第28页