用C语言实现步进电机正反转控制程序和电路图,求帮助。

如题所述

第1个回答  2012-06-10
我有程序,电路图可以在程序中看出,
#include<reg52.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
sbit key1=P3^7;
sbit key2=P3^6;
sbit key3=P3^5;
uchar kz,i=200;
uchar zhengzhuan[]={0xf3,0xf9,0xfc,0xf6};
uchar fanzhuan[]={0xf3,0xf6,0xfc,0xf9};
void delay1ms(uint ms)
{
uchar i;
while(ms--)
{
for(i = 0; i<10; i++)
{
_nop_();
_nop_();
_nop_();
_nop_();
}
}
}

void key()
{
if(key2==0)
{
delay1ms(10);
if(key2==0)
kz=1;
while(!key2)
{}
}
if(key3==0)
{
delay1ms(10);
if(key3==0)
kz=2;
while(!key3)
{}
}
}
void zz()//正转
{
uchar a=0,b=20;
while(kz==1)
{
P1=zhengzhuan[a];
a++;
if(a>3)
a=0;
i--;if(i==0)kz=0;
if(key1==0)
{
delay1ms(10);
if(key1==0)
{
kz=0;
P1=0xff;
while(!key1);
}
}
if(key2==0)
{
b=b+5;
if(b>=240)
b=240;
while(!key2)
{

}
}
if(key3==0)
{
b=b-5;
if(b<=20)
b=20;
while(!key3)
{

}
}
delay1ms(b);
}i=200;
}
void fz()//反转
{
uchar a=0,b=20;
while(kz==2)
{
P1=fanzhuan[a];
a++;
if(a>3)
a=0;
if(key1==0)
{
delay1ms(10);
if(key1==0)
{
kz=0;
P1=0xff;
}
}
if(key2==0)
{
b+=5;
if(b>=240)
b=240;
while(!key2)
{

}
}
if(key3==0)
{
b-=5;
if(b<=20)
b=20;
while(!key3)
{

}
}
delay1ms(b);
}
}
void main()
{
while(1)
{
key();
if(kz==0);
else if(kz==1)
zz();
else
fz();
}

}

用C语言实现步进电机正反转控制程序和电路图,求帮助。
我有程序,电路图可以在程序中看出,include<reg52.h> include<intrins.h> define uchar unsigned char define uint unsigned int sbit key1=P3^7;sbit key2=P3^6;sbit key3=P3^5;uchar kz,i=200;uchar zhengzhuan[]={0xf3,0xf9,0xfc,0xf6};uchar fanzhuan[]={0xf3,0xf6,0xfc,0xf9}...

用c语言程序实现步进电机的正反转加减速的编程
内容:1、本程序用于测试4相步进电机常规驱动 2、需要用跳帽或者杜邦线把信号输出端和对应的步进电机信号输入端连接起来 3、速度不可以调节的过快,不然就没有力矩转动了 4、按s4(设置成独立按键模式)可以控制正反转 ---*\/ include <reg52.h> bit Flag;\/\/定义正反转标志位 unsigned char code ...

用单片机控制步进电机正反转,简单易懂的C语言程序,最好带注释,步进电机...
第1行设置由输入端X1作为启动,Y1输出3万个脉冲,脉冲频率600赫兹(每秒600个脉冲的频率),由于只有Y1输出脉冲,没有设置方向输出端,所以电机正转。第3、4行由X2同时启动两行作为反转,Y1输出3万个脉冲,频率为800赫兹,Y1输出脉冲的同时方向输出端Y2同时输出方向信号,因此,电机反转。反转的3万个...

c语言编写步进电机程序,正转,反转,有6档转速5转\/S、2.5转\/S、1.25转\/...
这个要看你的电机驱动是什么了,不同的驱动电路或者驱动器的编程是不一样的#include#defineunitunsignedint#defineucharunsignedcharsbitkey=P1^1;\/\/定义键盘接线口unsignedcharcodeF_Rotation[4]={0x01,0x02,0x04,0x08};\/\/正转表uchara;voidDelay(unsignedinti)\/\/延时{while(--i);}voidrun()\/\/...

步进电机驱动程序C语言
步进电机控制程序(c语言+51单片机)include<reg51.h> define uint unsigned int define uchar unsigned char define ms *77 \/\/ f = 12 M define LEDLen 4 define Dj_star() {IE=0x81; pri_dj=0; } define Dj_stop() {IE=0x00; pri_dj=1; P1=0xff; shache="0"; delay(800ms);...

用c语言编写控制电机运动的程序
1、有三个输入,分别是一个按钮、两个霍尔传感器(也就是接近开关),我用P0.0到P0.2来代替;输出2个或以上(这看接什么显示器,如果是PC的话,就不用数字量输出,直接串口就可以了)控制正反转的继电器管脚用P1.0、P1.1;需要与一个全局变量转动次数k连接起来,另外两个输入接近开关选用NPN...

单片机控制电机正反转动的c语言程序
首先要看你的电机是直流电机还是步进电机。直流电机就简单了,只有两根线,电机两端电压正负极改变就可以实现正转反转。不过要加电机驱动芯片,或者H桥电路,电机驱动芯片可以选择L298N,加上适当的外围电路就可以直接用单片机控制电机了。比如让单片机P1.0 = 0,P1.1 = 1;(单片机I\/0口要与电机驱动...

求单片机C语言高手以下是计算步进电机速度的程序,帮忙详细的解释一下...
RunSpeed应该是延时时间,用来控制速度的,RunSpeed值越大,步进电机速度越低。SPEED[0]=(1000*6\/RunSpeed\/100)+48;SPEED[1]=1000*6\/RunSpeed%100\/10+48;SPEED[2]=1000*6\/RunSpeed%10+48;以上三个式子是求速度的百位,十位和个位,后面+48即加30H=48用来转换成ASCII码的。说的对,哥们就...

求一段控制电动机的C语言程序
\/\/电机转动 void motor_run() interrupt3 { if(n<PWM_H) motor=1;else motor=0;n++;if(n>=4) n=0;} \/\/速度控制,4级速度可调:0、1、2、3; 对应占空比:0、1\/4、2\/4、3\/4 void motor_set(unsigned char v){ if (v>3) v=3;if (v == 0)TR1 = 0;else { TR1 =...

步进电机28BYJ48的C语言程序问题
上面是2相4拍的控制字,正转的顺序是A-B-C-D-A,下面是2相8拍的控制字,正转的顺序是A-AB-B-BC-C-CD-D-DA-A。步距角下面是上面的一半。

相似回答