如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
步进电机原理及测试程序--24byg#include<AT89X52.h>#include<intrins.h>#defineucharunsignedchar#defineuintunsignedintucharcodeCCW[8]={0x08,0x0c,0x04,0x06,0x02,0x03,0x01,0x09};//逆时钟旋转相序表ucharcodeCW[8]={0x09,0x01,0x03,0x02,0x06,0x04,0x0c,0x08};//正时钟旋转相序表sbitK1=P3^5;//反转按键sbitK2=P3^6;//正转按键sbitK3=P3^4;//停止按键sbitFMQ=P2^3;//蜂鸣器voiddelaynms(uintaa){ucharbb;while(aa--){for(bb=0;bb<115;bb++)//1ms基准延时程序{;}}}voiddelay500us(void){intj;for(j=0;j<57;j++){;}}voidbeep(void){uchart;for(t=0;t<100;t++){delay500us();FMQ=1;//产生脉冲}FMQ=1;//关闭蜂鸣器}voidmotor_ccw(void){uchari,j;for(j=0;j<8;j++)//电机旋转一周,不是外面所看到的一周,是里面的传动轮转了一周{if(K3==0){break;//如果K3按下,退出此循环}for(i=0;i<8;i++)//旋转45度{P1=CCW[i];delaynms(1);//调节转速}}}voidmotor_cw(void){uchari,j;for(j=0;j<8;j++){if(K3==0){break;//如果K3按下,退出此循环}for(i=0;i<8;i++)//旋转45度{P1=CW[i];delaynms(1);//调节转速}}}voidmain(void){ucharr;ucharN=64;//因为步进电机是减速步进电机,减速比的1/64,//所以N=64时,步进电机主轴转一圈while(1){if(K1==0){while(1){beep();for(r=0;r<N;r++){motor_ccw();//电机逆转}}}elseif(K2==0){beep();for(r=0;r<N;r++){motor_cw();//电机反转if(K3==0){beep();break;}}}//else//beep();}}