四川师范大学成都学院本科毕业论文
/***********8T0中断服务程序************PWM波的生成**********/ void time0_int(void) interrupt 1 {
time++; TH0 = 0xec; TL0 = 0x78;
if(change == 0) { PWM2 = 1;
if(time == high) PWM1=0;
else if(time == period) { PWM1 = 1;
time = 0;
}
} else
{ PWM1 = 1;
if(time == high) PWM2=0;
else if(time == period)
{
PWM2 = 1;
time = 0;
20
四川师范大学成都学院本科毕业论文
}
}
}
/***************************************************************/ /****T1中断服务程序********单位时间(S)方波的个数*************/ void time1_int(void) interrupt 3 { count_speed++; if(count_speed == 20) { count_speed = 0; num_display = num_medium; num_medium = 0;
}
}
/***************************************************************/
/************************速度显示的数据处理*********************/ void datamade() {
uint data MM,NN;
wc51r(0xc2);
wc51ddr('S'); wc51ddr('p'); wc51ddr('e'); wc51ddr('e');
wc51ddr('d');
wc51ddr(0x3a); NN = num_display0;
MM = num_display/100;
21
四川师范大学成都学院本科毕业论文
wc51ddr(wword[MM]);
MM = NN/10;
NN = NN;
wc51ddr(wword[MM]); wc51ddr(wword[NN]);
}
/*****************************************************************/
/**********通过按键实现对电机开关、调速、转向的控制***************/ void motor_control() { if(open == 1)
EA = 1;
if(close == 1)
EA = 0;
if(swap == 1) { change = ~change; while(swap != 0) {}
}
if(sub_speed == 1) { high++; if(high == 30)
EA=0;
while(sub_speed != 0)
22
四川师范大学成都学院本科毕业论文
{}
}
if(add_speed == 1) { high--; if(high == 5)
high = 5;
while(add_speed != 0)
{}
}
}
/******************************************************************/
/***************************主函数*********************************/ void main() {
P2 = 0x00;
ET0 = 1; ET1 = 1;
TMOD = 0x11;
TH0 = 0xec; //定时器T0设置参数
TL0 = 0x78;
TH1 = 0x3c; //定时器T1设置参数 TL1 = 0xb0;
TR0 = 1;
23
四川师范大学成都学院本科毕业论文
TR1 = 1;
init(); //液晶显示初始化程序
while(1)
{
wc51r(0x84); wc51ddr('H'); wc51ddr('e'); wc51ddr('l'); wc51ddr('l'); wc51ddr('o');
if(test == 0)
num_medium++;
datamade(); motor_control();
}
}
24