用c语言程序实现步进电机的正反转加减速的编程

如题所述

内容:1、本程序用于测试4相步进电机常规驱动
2、需要用跳帽或者杜邦线把信号输出端和对应的步进电机信号输入端连接起来
3、速度不可以调节的过快,不然就没有力矩转动了
4、按s4(设置成独立按键模式)可以控制正反转
------------------------------------------------*/

#include <reg52.h>

bit Flag;//定义正反转标志位

unsigned char code F_Rotation[4]={0xf1,0xf2,0xf4,0xf8}; //正转表格
unsigned char code B_Rotation[4]={0xf8,0xf4,0xf2,0xf1}; //反转表格
/******************************************************************/
/* 延时函数 */
/******************************************************************/
void Delay(unsigned int i)//延时
{
while(--i);
}
/******************************************************************/
/* 主函数 */
/******************************************************************/
main()
{

unsigned char i;

EX1=1; //外部中断0开
IT1=1; //边沿触发
EA=1; //全局中断开

while(!Flag)
{
P0=0x71;//显示 F 标示正转
for(i=0;i<4;i++) //4相
{
P1=F_Rotation[i]; //输出对应的相 可以自行换成反转表格
Delay(500); //改变这个参数可以调整电机转速 ,数字越小,转速越大
}
}
while(Flag)
{
P0=0x7C;//显示 b 标示反转
for(i=0;i<4;i++) //4相
{
P1=B_Rotation[i]; //输出对应的相
Delay(500); //改变这个参数可以调整电机转速 ,数字越小,转速越大
}
}
}
/******************************************************************/
/* 中断入口函数 */
/******************************************************************/
void ISR_Key(void) interrupt 2 using 1
{
Delay(300);

Flag=!Flag; //s3按下触发一次,标志位取反

}
温馨提示:内容为网友见解,仅供参考
第1个回答  2010-12-16
使用步进电机肯定有配套的步进电机控制器,只要给步进电机控制器发脉冲就OK了。加减速可以通过脉冲的长短来实现。

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

用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语言程序,用msp430控制步进电机启动,停止,正转和反转。在线等...
首先这个程序是针对4项步进电机的,采用单4拍转动的方式。步进电机还有其他参数,比如转速等等,都要考虑在内。步进电机子程序放在定时器中断里面。不是特别精确。能用。里面设立了几个标志,你应该能看懂 void StepMotor(void) \/\/步进电机子函数 { \/\/正转\/\/ if (MOTORCONTROL==2){ if(motortim...

步进电机驱动程序C语言
void fx_run();uint round_num = 0; \/* 记录已转的 齿轮数 , 中断1次 加 1*\/ uint set_round_num = 0; \/* 播码盘设置 圈数 *\/ uint set_pwm_width = 0; \/* 播码盘设置 步进电机 正向速度 *\/ bit one_round_flg = 0;sbit led_1000 = P0^7; ...

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

求51单片机控制步进电机,实现其间歇运动的程序,最好要有C语言的
\/\/#include"delay.h" \/\/在本文件中加入一个延时函数,或添加带有延时函数的.c文件 unsigned char code table1[]={0x00,0x01,0x03,0x02,0x06,0x04,0x0c,0x08,0x09};\/\/0x00表示停止转动 \/\/ \/\/bit flag;\/\/正反转标志 void delayus(unsigned int t) \/\/延时函数 { while(--t);}...

C语言 步进电机的正反转 启停 控制程序 求解释
中断0,读键盘。没有scan_key()的源代码,不知道里面有些什么操作。while(1){...}循环是电机运转,flag_status是状态,1转动,0停止。没有看到与正转反转有关的代码。也许在motor_cw_ccw();函数里面,这个就是电机动一下的函数。原程序不完整,没有相应函数、变量的定义及意义说明。难以确切理解...

求单片机AT89C52控制步进电机的程序 谢谢! 要C语言的
{ while(--i);} main(){ while(1){ unsigned char i;unsigned int j;for(j=0;j<512;j++){ for(i=0;i<4;i++) \/\/4相 { P1=B_Rotation[i]; \/\/输出对应的相 可以自行换成反转表格 Delay(500); \/\/改变这个参数可以调整电机转速 } } for(j=0;j<512;j++){ for(i=...

如何用C语言控制步进电机 正转后自动反转
中断0,读键盘。没有scan_key()的源代码,不知道里面有些什么操作。while(1){...}循环是电机运转,flag_status是状态,1转动,0停止。没有看到与正转反转有关的代码。也许在motor_cw_ccw();函数里面,这个就是电机动一下的函数。原程序不完整,没有相应函数、变量的定义及意义说明。难以确切理解...

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

相似回答