#include void delay (dy) { while(--dy); } /******读取按键子程序 getkey()*************/ unsigned char getkey (void) { unsigned char k,tem,keytem; keytem=0; P1=0xff; tem=P1 & 0xff; //第一次读取按键值 if(tem!=0xff) //判断有无按键按下 { for(k=0;k<20;k++) delay(250); //延时一段时间 tem=P1 & 0xff; //再次读取按键值 if(tem!=0xff) { if(tem==0xf7) keytem=4; //表示K3按键按下 else if(tem==0xfb) keytem=3; //表示K2按键按下 else if(tem==0xfd) keytem=2; //表示K1按键按下 else if(tem==0xfe) keytem=1; //表示K0按键按下 } } while(tem!=0xff) tem=P1 & 0xff; //等待按键释放 return(keytem); //返回按键值 } unsigned char code F_Rotation[4]={0xf9,0xf5,0xf6,0xfa};//正转表格 unsigned char code B_Rotation[4]={0xfa,0xf6,0xf5,0xf9};//反转表格 void Delayms(unsigned int i) { int j,k; for(j=0;jfor(k=0;k<120;k++); } main() { unsigned char i,t=10; unsigned char keyboard=0; while(1) { keyboard=getkey(); if(keyboard==1) t=t+10; for(i=0;i<4;i++) { P0=F_Rotation[i]; Delayms(t); } } } #include void (dy) { //4相 //输出对应的相 可以自行换成反转表格 //改变这个参数可以调整电机转速 while(--dy); } /******读取按键子程序 getkey()*************/ unsigned char getkey (void) { unsigned char k,tem,keytem; keytem=0; P1=0xff; tem=P1 & 0xff; //第一次读取按键值 if(tem!=0xff) //判断有无按键按下 { for(k=0;k<20;k++) delay(250); //延时一段时间 tem=P1 & 0xff; //再次读取按键值 if(tem!=0xff) { if(tem==0xf7) keytem=4; //表示K3按键按下 else if(tem==0xfb) keytem=3; //表示K2按键按下 else if(tem==0xfd) keytem=2; //表示K1按键按下 else if(tem==0xfe) keytem=1; //表示K0按键按下 } } while(tem!=0xff) tem=P1 & 0xff; //等待按键释放 return(keytem); //返回按键值 } unsigned char code F_Rotation[4]={0xf9,0xf5,0xf6,0xfa};//正转表格 unsigned char code B_Rotation[4]={0xfa,0xf6,0xf5,0xf9};//反转表格 void Delayms(unsigned int i) { int j,k; for(j=0;jfor(k=0;k<100;k++); } main() { unsigned char i,t=10; unsigned char keyboard=0; while(1) { keyboard=getkey(); if(keyboard==0) for(i=0;i<4;i++) //4相 { P0=F_Rotation[i]; //输出对应的相 可以自行换成反转表格 Delayms(t); //改变这个参数可以调整电机转速 } if(keyboard==1) t=t+5; if(keyboard==2) t=t-5; if(keyboard==3) for(i=0;i<4;i++) //4相 { P0=F_Rotation[i]; //输出对应的相 可以自行换成反转表? Delayms(t); //改变这个参数可以调整电机转速 } if(keyboard==4) for(i=0;i<4;i++) //4相 { P0=B_Rotation[i]; Delayms(t); } } } #include void delay (dy) { while(--dy); //输出对应的相 可以自行换成反转表格 //改变这个参数可以调整电机转速 } /******读取按键子程序 getkey()*************/ unsigned char getkey (void) { unsigned char k,tem,keytem; keytem=0; P1=0xff; tem=P1 & 0xff; //第一次读取按键值 if(tem!=0xff) //判断有无按键按下 { for(k=0;k<20;k++) delay(250); //延时一段时间 tem=P1 & 0xff; //再次读取按键值 if(tem!=0xff) { if(tem==0xf7) keytem=4; //表示K3按键按下 else if(tem==0xfb) keytem=3; //表示K2按键按下 else if(tem==0xfd) keytem=2; //表示K1按键按下 else if(tem==0xfe) keytem=1; //表示K0按键按下 } } while(tem!=0xff) tem=P1 & 0xff; //等待按键释放 return(keytem); //返回按键值 } unsigned char code F_Rotation[4]={0xf9,0xf5,0xf6,0xfa};//正转表格 unsigned char code B_Rotation[4]={0xfa,0xf6,0xf5,0xf9};//反转表格 void Delayms(unsigned int i) { int j,k; for(j=0;jfor(k=0;k<120;k++); } /*******正转程序*******/ void zhengzhuan(unsigned char t) {unsigned char i,m=1; while(m) { keyboard=getkey(); if(keyboard!=0&&keyboard!=1) m=0; for(i=0;i<4;i++) //4相 { P0=F_Rotation[i]; //正转 Delayms(t); }} //改变这个参数可以调整电机转速 } /*******反转程序*********/ void fanzhuan(unsigned char t) {unsigned char i,m=1; while(m) { if(keyboard!=2) m=0; for(i=0;i<4;i++) //4相 { P0=B_Rotation[i]; //反转 Delayms(t); } //改变这个参数可以调整电机转速 } } main() { unsigned char i,t=10; unsigned char keyboard=0; while(1) { keyboard=getkey(); if(keyboard==0||keyboard==1) zhengzhuan(t); if(keyboard==2) fanzhuan(t); if(keyboard==3) t=t-2; if(keyboard==4) t=t+2; } } #include void delay (dy) { while(--dy); } /******读取按键子程序 getkey()*************/ unsigned char getkey (void) { unsigned char k,tem,keytem; keytem=0; P1=0xff; tem=P1 & 0xff; //第一次读取按键值 if(tem!=0xff) //判断有无按键按下 { for(k=0;k<20;k++) delay(250); //延时一段时间 tem=P1 & 0xff; //再次读取按键值 if(tem!=0xff) { if(tem==0xf7) keytem=4; //表示K3按键按下 else if(tem==0xfb) keytem=3; //表示K2按键按下 else if(tem==0xfd) keytem=2; //表示K1按键按下 else if(tem==0xfe) keytem=1; //表示K0按键按下 } } while(tem!=0xff) tem=P1 & 0xff; //等待按键释放 return(keytem); //返回按键值 } unsigned char code F_Rotation[4]={0xf9,0xf5,0xf6,0xfa};//正转表格 unsigned char code B_Rotation[4]={0xfa,0xf6,0xf5,0xf9};//反转表格 void Delayms(unsigned int i) { int j,k; for(j=0;jfor(k=0;k<120;k++); } /*******正转程序*******/ void zhengzhuan(unsigned char t) {unsigned char keyboard,i,m=1; while(m) { keyboard=getkey(); if(keyboard==2) m=0; if(keyboard==3) t=t-2; if(keyboard==4) t=t+2; for(i=0;i<4;i++) //4相 { P0=F_Rotation[i]; //正转 Delayms(t); }} //改变这个参数可以调整电机转速 } /*******反转程序*********/ void fanzhuan(unsigned char t) {unsigned char keyboard,i,m=1; while(m) { keyboard=getkey(); if(keyboard==1) m=0; if(keyboard==3) t=t-2; if(keyboard==4) t=t+2; for(i=0;i<4;i++) //4相 { P0=B_Rotation[i]; //反转 Delayms(t); } //改变这个参数可以调整电机转速 } } main() { unsigned char t=10; unsigned char keyboard=0; while(1) { keyboard=getkey(); if(keyboard==1) zhengzhuan(t); if(keyboard==2) fanzhuan(t); } } 因篇幅问题不能全部显示,请点此查看更多更全内容