}
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; }