下载手机汽配人

两相四线42步进电机?程序?只有step?和dir?的c51程序?跪求

提问者:网友 2018-08-01
最佳回答
/*89C51控制步进电机c程序 使用89C51控制四相六线步进电机, 步进电机采用四相六线,步距角1.8度,半步工作0.9度八拍运行。 接口如下: P15---启动信号输入 P14---停止信号输入 P13---接光电传感器 P20---输出控制步进电机的A相 P21---输出控制步进电机的B相 P22---输出控制步进电机的C相 P23---输出控制步进电机的D相 如下是我给步进电机八拍运行正向通电顺序: P23(D相)、P22(C相)、P21(B相)、P20(A相) 第一步: 0 0 0 1 第二步: 0 0 1 1 第三步: 0 0 1 0 第四步: 0 1 1 0 第五步: 0 1 0 0 第六步: 1 1 0 0 第七步: 1 0 0 0 第八步: 1 0 0 1 使用光电传感器的输出作为脉冲信号,光电接收管的后面加一个三极管做信号放大。 光电传感器前有个齿盘,齿空的间隔距离是相等的,要求齿盘每移动一格, 光电传感器输出一个脉冲,步进电机移动一个角度0.9度。齿盘转动的速度不固定, 可能快也可能慢。步进电机没有转动之前,齿盘一直是转动的, 只有按下启动按钮步进电机才开始转动。 #include #define uint unsigned int #define uchar unsigned char sbit START = P1^5; sbit STOP = P1^4; sbit COM = P1^3; //电机接在低4位,接在其他位可修改数组。 uchar code lab[8]={0x01,0x03,0x02,0x06,0x04,0x0c,0x08,0x09}; void Mdelay(uchar x) {uchar j,k; for(j=x;j>0;j--) { for(k=124;k>0;k--) {;} } } //步进程序,调用一次程序,移动一步, //参数:方向,1为正转,0为反转。 void motormove(uchar dir) { static step=0; P2&=0xf0; if(dir) { if(step<=7) { P2|=lab[step++];} else {step=0;P2|=lab[step];} } else { if(step==0) {P2|=lab[step];step=7;} if(step>0) {P2|=lab[step--
回答者:网友
产品精选
搜索问答
还没有汽配人账号?立即注册

我要提问

汽配限时折扣

本页是网友提供的关于“两相四线42步进电机?程序?只有step?和dir?的c51程序?跪求”的解答,仅供您参考,汽配人网不保证该解答的准确性。