查看: 1908|回复: 0
打印 上一主题 下一主题

例十六、步进电机每按一下转3.6度

[复制链接]
跳转到指定楼层
沙发
发表于 2015-5-7 21:18:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

////////////////////////汇诚科技////////////////////
//////////////////http://www.ourhc.cn///////////////
///////////////////步进电机正转调试程序/////////////

#include<reg52.h>  
/*****************************************************************/
/*设程序的后四位1111对应位为ABCD,0000为abcd那么步进电机就可以细分进行下列组合

Abcd》aBcd》abCd》abcD 对应的数组为 0x08,0x04,0x02,0x01

ABcd》aBCd》abCD》AbcD 对应的数组为 0x0C,0x06,0x03,0x09

ABcd》aBcd》aBCd》abCd》abCD》abcD》AbcD》AbcD 对应的数组为 0x0C,0x04,0x06,0x02,0x03,0x01,0x09,0x08

只要按照ABCD的顺序通电,可以产品多种组合。

/*****************************************************************/
code unsigned char run[8]={ 0x03,0x0b,0x09,0x0d,0x0c,0x0e,0x06,0x07};
unsigned char a,s,i,j,k;
sbit ANJIAN=P2^0;
sbit chuanganqi=P3^0;
void delay(i)//延时函数
{
for(j=0;j<i;j++)
for(k=0;k<250;k++);
}
main()
{
unsigned char z,y;
y=10;            //定义延时时间,时间越长电机转速越慢反之则快
a=0;
while(1)
{
if((ANJIAN==0)||(chuanganqi==0))
{
a++;
while((!ANJIAN)||(!chuanganqi));
//delay(y);

switch(a)
        {
        case 11=run[0];delay(y)1=run[2];delay(y);break;
        case 21=run[4];delay(y)1=run[6];delay(y);break;
        case 31=run[0];delay(y)1=run[2];delay(y);break;
        case 41=run[4];delay(y)1=run[6];delay(y);break;
        case 51=run[0];delay(y)1=run[2];delay(y);break;
        case 61=run[4];delay(y)1=run[6];delay(y);break;
        case 71=run[4];delay(y)1=run[2];delay(y);break;
        case 81=run[0];delay(y)1=run[6];delay(y);break;
        case 91=run[4];delay(y)1=run[2];delay(y);break;
        case 101=run[0];delay(y)1=run[6];delay(y);break;
        case 11:P1=run[4];delay(y);P1=run[2];delay(y);break;
        case 12:P1=run[0];delay(y);P1=run[6];delay(y);break;
        //case 13:P1=run[0];delay(y);P1=run[1];delay(y);break;
        case 13:a=0;break;

        default:break;       
        }

}
}
}





本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?加入因仑

x
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 加入因仑

本版积分规则

快速回复 返回顶部 返回列表