您好,欢迎访问三七文档
#includereg51.h//51芯片管脚定义头文件#includeintrins.h//内部包含延时函数_nop_();#defineucharunsignedchar#defineuintunsignedintucharcodeFFW[8]={0x01,0x03,0x02,0x06,0x04,0x0c,0x08,0x09};//四相八拍正转编码ucharcodeREV[8]={0x09,0x08,0x0c,0x04,0x06,0x02,0x03,0x01};////四相八拍反转编码sbitK1=P3^2;//正转sbitK2=P3^3;//反转sbitK3=P3^4;//停止sbitBEEP=P3^6;//蜂鸣器/********************************************************//*/*延时t毫秒/*11.0592MHz时钟,延时约1ms/*/********************************************************/voiddelay(uintt){uintk;while(t--){for(k=0;k125;k++){}}}/**********************************************************/voiddelayB(ucharx)//x*0.14MS{uchari;while(x--){for(i=0;i13;i++){}}}/**********************************************************/voidbeep(){uchari;for(i=0;i100;i++){delayB(4);BEEP=!BEEP;//BEEP取反}BEEP=1;//关闭蜂鸣器}/********************************************************//*/*步进电机正转/*/********************************************************/voidmotor_ffw(){uchari;uintj;for(j=0;j8;j++)//转1*n圈{if(K3==0){break;}//退出此循环程序for(i=0;i8;i++)//一个周期转45度{P1=FFW[i];//取数据delay(2);//调节转速}}}/********************************************************//*/*步进电机反转/*/********************************************************/voidmotor_rev(){uchari;uintj;for(j=0;j8;j++)//转1×n圈{if(K3==0){break;}//退出此循环程序for(i=0;i8;i++)//一个周期转45度{P1=REV[i];//取数据delay(2);//调节转速}}}/**********************************************************主程序**********************************************************/main(){ucharr,N=64;//N步进电机运转圈数while(1){if(K1==0){beep();for(r=0;rN;r++){motor_ffw();//电机正转if(K3==0){beep();break;}//退出此循环程序}}elseif(K2==0){beep();for(r=0;rN;r++){motor_rev();//电机反转if(K3==0){beep();break;}//退出此循环程序}}elseP1=0xf0;}}/********************************************************/
本文标题:步进电机正反转程序
链接地址:https://www.777doc.com/doc-1797117 .html