t=85; rpm=11; break;
case 7: t=72; rpm=13; }
void direc() {
break;
case 8: t=62; rpm=15;
break;
case 9: t=55; rpm=17;
break;
case 10: t=49; rpm=19; break;
}
if(keyccw==0) { flag=1; time=0; }
else if(keycw==0)
26
{ flag=2; time=0; }
else if(pause==0) }
void display() { }
void delaynms(uint aa) { 序 }
void timer0() interrupt 1 {
flag=0;
fir=1; sec=0;
P0=table_anode[rpm/10]; delaynms(17); fir=0; sec=1;
P0=table_anode[rpm]; delaynms(20);
uchar bb; while(aa--) {
for(bb=0;bb<250;bb++); }
TH0=(65536-1000)/256;
27
//1ms基准延时程
TL0=(65536-1000)%6; time++;
if(flag==1)//逆时针转 {
if(time==t) }
{ time=0; P1=ccw[i]; i++; if(i==4)
i=0;
} }
else if(flag==2)//顺时针转{
if(time==t) { time=0;
if(i>0)
i--;
else if (i==0)
i=3;
P1=ccw[i];
}
}
28
5 仿真与调试
5.1仿真调试的操作步骤
本次采用的仿真软件是proteus,采用的编程工具是keil。具体操作如下: 1)在Protues中画出系统电路图 2)编写程序并在keil中编译并生成hex文件。
3)把在keil中编译生成的HEX文件载入AT89C52芯片中; 4)运行仿真。
5.2仿真结果
仿真结果如下图所示:
当点下proteus的play键时候,此时数码管显示速度为零,电机不转。
29
当按加速按键时候,速度会从01一直加到19。共有十个速度等级
30