求单片机c语言控制步进电机调速程序

求单片机c语言控制步进电机调速程序,第1张

给你一段简单的程序代码,控制步进电机的,不过你要好好看看誉槐程序的编写,以适应你的硬件(主要是连线),你可以在实现这个的基础上实现你所说的目标,个人觉得你参考这个程序然后自己实现你所说的功能比较好:

#include

unsigned

char

code

f_rotation[4]={0x08,0x10,0x20,0x40}//正转表格

unsigned

char

code

b_rotation[4]={0x40,0x20,0x10,0x08}//反转表格

void

delay(unsigned

int

i)//延时

{

while(--i)

}

main()

{

unsigned

char

i

while(1)

{

for(i=0i<4i++)

//4相

{

p1=f_rotation[i]

//输出对应的相运虚卖

可以自行换成反旁逗转表格

delay(500)

//改变这个参数可以调整电机转速

}

}

}

1、有三个输入,分别是一个按钮、两个霍尔传感器(也就是接近开关),我用P0.0到P0.2来代替;输出2个或以上(这看接什么显示器,如果是PC的话,就不用数字量输出,直接串口就可以了)控制正反转的继电器管脚用P1.0、P1.1;需要与一个全局变量转动次数k连接起来,另外两个输入接近开关选用NPN传感器或用光电隔离,总之有效信号能把管脚电压拉低就可以。

2、例程:

#include <reg51.h>  //选用晶振11.0592MHz

unsigned char k=0  //k表示正反转次数

sbit X0=P3^2     //调节按钮

sbit X1=P1^1     //上限位接近开关信号

sbit X2=P1^2     //下限位接近开关信号

sbit Y1=P0^0  岁局樱   //电机上升(注意:我使用的是管脚输出为0时候,电机运动,这样可以避免启动时候,单片机自复位对电腊旁机点动的影响)

sbit Y2=P0^1    乎丛 //电机下降

void delay50ms(unsigned int i)

  unsigned int j

  for (ii>0i--)

    for(j=46078j>0j--)

}

main()

{

   IT0=1       //下降沿触发

   EX0=1       //开P3.2外部中断

   EA=1        //总中断开  

   while(1)

   while(k)

   {

      Y1=0        //正转

      while(X1==1)       //等待正转接近开关反应

      Y1=1          //正转停

      delay50ms(1)     //停止时间50ms

      Y2=0     //反转

      while(X2==1)     //等待反转接近开关反应

      Y2=1    //反转停

      k--     //圈数减一   

   }

}

void  counter0(void) interrupt 0

{

   k++     //外部中断控制圈数加一

   //这个位置可以加你显示程序

}


欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/yw/12261193.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-24
下一篇 2023-05-24

发表评论

登录后才能评论

评论列表(0条)

保存