你重新写一个test函数,这是四相的,你这样驱动电机,P2=0x08,delay();P2=0x04;delay();P2=0x02;
delay();P2=0x01;delay();
这个delay()的时间长短是控制转速的,有一定范围的,在一定范围内,越小越快,超过了的话,电机识别不了脉冲就不转了。
#include<reg52h>
#define uchar unsigned char
#define uint unsigned int
#define MotorData P0 //步进电机控制接口定义
uchar phasecw[4] ={0x08,0x04,0x02,0x01};//正转 电机导通相序 D-C-B-A
uchar phaseccw[4]={0x01,0x02,0x04,0x08};//反转 电机导通相序 A-B-C-D
//ms延时函数
void Delay_xms(uint x)
{
uint i,j;
for(i=0;i<x;i++)
for(j=0;j<112;j++);
}
//顺时针转动
void MotorCW(void)
{
uchar i;
for(i=0;i<4;i++)
{
MotorData=phasecw[i];
Delay_xms(400);//转速调节
}
}
//逆时针转动
void MotorCCW(void)
{
uchar i;
for(i=0;i<4;i++)
{
MotorData=phaseccw[i];
Delay_xms(40);//转速调节
}
}
//停止转动
void MotorStop(void)
{
MotorData=0x00;
}
//主函数
void main(void)
{
uint i;
Delay_xms(50);//等待系统稳定
while(1)
{
for(i=0;i<500;i++)
{
MotorCW(); //顺时针转动
}
MotorStop(); //停止转动
Delay_xms(500);
for(i=0;i<500;i++)
{
MotorCCW(); //逆时针转动
}
MotorStop(); //停止转动
Delay_xms(500);
}
}
上面这个给你参考,你先不加按键调试先,这个模块完成了再加按键进行调试。
uchar code
//数码管显示0-9对应的编码,如0对应0x3F,1对应0x06,具体对应我不确定
xianshi[12]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};
//数码管显示函数,dat:要现实的数字,num1:应该是四个数码管,对应第几个数码管显示
void display_num1(uint dat,uchar num1)
{
P0=xianshi[dat]; //应该是p0接在数码管的i/o口
switch(num1)
{
case1: P2=0x01;break;//p2口接在数码管片选上,哪位置一代表哪个数码管显示
case2: P2=0x02;break;
case3: P2=0x04;break;
case4: P2=0x08;break;
default: break;
}
delay1_ms(2); //延迟让人眼可以看到,并且不出现重影
}
//显示要现实的数字
void display_num4(uint num)
{uint qian,bai,shi,ge;
qian=num/1000;
if(qian==0)qian=11; //如果千位为0则显示xianshi中的第11个内容,我也不知道会显示什么,估计是个特殊符号
display_num1(qian,4); //第四个数码管上显示千
bai=(num%1000)/100;
if(qian==11&&bai==0)bai=11;
display_num1(bai,3); //第三个数码管上显示百
shi=(num%100)/10;
if(qian==11&&bai==11&&shi==0)shi=11;
display_num1(shi,2); //第二个数码管上显示十
ge=num%10;
display_num1(ge,1); //第一个数码管显示个位数
}
电磁式直流电动机的定子磁极(主磁极)由铁心和励磁绕组构成。根据其励磁(旧标准称为激磁)方式的不同又可分为串励直流电动机、并励直流电动机、他励直流电动机和复励直流电动机。因励磁方式不同,定子磁极磁通(由定子磁极的励磁线圈通电后产生)的规律也不同。
串励直流电动机的励磁绕组与转子绕组之间通过电刷和换向器相串联,励磁电流与电枢电流成正比,定子的磁通量随着励磁电流的增大而增大,转矩近似与电枢电流的平方成正比,转速随转矩或电流的增加而迅速下降。其起动转矩可达额定转
以上就是关于我刚工作,初步接触单片机,自己仿照编写的步进电机控制程序,用proteus仿真步进电机不动全部的内容,包括:我刚工作,初步接触单片机,自己仿照编写的步进电机控制程序,用proteus仿真步进电机不动、51单片机的C语言程序,用来控制直流电机,但是电机速度仿真显示不出来,求解哪里错了、求霍尔法高速电机测速的仿真和程序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)