单片机控制电机正反转动的c语言程序

如题所述

首先要看你的电机是直流电机还是步进电机。直流电机就简单了,只有两根线,电机两端电压正负极改变就可以实现正转反转。不过要加电机驱动芯片,或者H桥电路,电机驱动芯片可以选择L298N,加上适当的外围电路就可以直接用单片机控制电机了。比如让单片机P1.0 = 0,P1.1 = 1;(单片机I/0口要与电机驱动芯片的输入脚相连)这样的话,电机驱动芯片就会输出一个电压差,可以使直流电机向一个方向转,如果使P1.0 = 1,P1.1 = 0,则电机驱动芯片会输出一个和刚才相反的电压,使电机向相反的方向转动。H桥电路和电机驱动芯片的原理差不多,网上多的是。我这说的只是简单的原理,实际中,L298N的输入端和单片机相连的时候要加光耦隔离,否则单片机会工作不正常。步进电机就稍微复杂点,也得需要电机驱动芯片才行,只不过控制信号是按一定的规律给的,规律变了,电机转动的方向也就变了。楼上给出的貌似是步进电机的驱动程序。
温馨提示:内容为网友见解,仅供参考
第1个回答  2011-02-25
给你个能正反转的!
#include<reg51.h>
#include<intrins.h>

unsigned char code table[]={0x01,0x02,0x04,0x08};
unsigned char code table0[]={0x08,0x04,0x02,0x01};
void delay(unsigned char ms)
{
unsigned char i,j;
for(i=ms;i>0;i--)
for(j=110;j>0;j--);
}

void main()
{
unsigned char i;
while(1)
{

for(i=0;i<4;i++)
{
P0=table[i];
delay(100);
}
}
}
如果反转的话把table改为table0就行了本回答被提问者采纳

51单片机中如何用c语言控制直流电机正反转
include <reg52.h> define uint unsigned int define uchar unsigned char sbit IN1=P1^0;sbit ENA=P1^1; \/\/左轮 1 sbit IN2=P1^2;\/\/左轮2 sbit IN3=P1^3;\/\/右轮 1 sbit ENB=P1^4;sbit IN4=P1^5;\/\/右轮 2 sbit left=P0^0;sbit right=P0^1;\/\/sbit middle=P0^2;void dela...

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

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

L298驱动两小电机正反转,用C语言怎么做啊?
L298一般配合单片机使用。简单的说,L298有四个输出,O1,O2,O3,O4.一般可以接两个电机,可以分别控制正反转和PWM调速。它有四个输入,IN1~4,可以分别控制相当的四个输出电平的高低。ENA,ENB当它们为高电平的时候,正常输出,否则不输出电压。这两个引脚一般用PWM调速用。如果不需要,可以接入高电平。

求单片机AT89C52控制步进电机的程序 谢谢! 要C语言的
} 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=0;i<4;i++) ...

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

求用51型的单片机控制步进电机,要求步进电机转90度后停5秒,再转90度...
另一种是带脉冲分配的,单片机发过来一串方波脉冲,脉冲个数决定转动的步数,另外输出一个控制正转和反转的信号 这两种驱动器的单片机程序当然是不一样的 用C语言编程很简单:(第一种驱动器)for(i=0;i<4;i++){ for(j=0;j<3;j++)\/\/循环3次每次4步,12步是90度 { P0=1;delay_ms(2);...

51单片机使用T0和T1外部脉冲计数,C语言如何编程?
使用T0和T1外部脉冲计数,控制两个电机,到1700个脉冲电机停止,--统计脉冲个数,用外部中断更好。--T0和T1,留着定时用。用四个按键控制,按键1控制电机正转,按键2控制电机反转,按键3控制电机1正转,按键4控制电机2正转,怎么用C语言编程?--编程前,要先设计出来电路。

大神们,求帮忙。单片机通电之后,步进电机自动转动90度,然后再反转回去...
首先要弄清转90度是多少步,假设4相步进电机转100步 a=100;while(a<100){ P0=8;delayms(2);P0=4;delayms(2);P0=2;delayms(2);P0=1;delayms(2);a-=4;} a=100;while(a<100){P0=1;delayms(2);P0=2;delayms(2);……} ...

求51单片机控制步进电机,实现其间歇运动的程序,最好要有C语言的
unsigned char code table1[]={0x00,0x01,0x03,0x02,0x06,0x04,0x0c,0x08,0x09};\/\/0x00表示停止转动 \/\/ \/\/bit flag;\/\/正反转标志 void delayus(unsigned int t) \/\/延时函数 { while(--t);} void delayms(unsigned int t) \/\/毫秒级延时 { unsigned int i,j;for(i=t;i>0...

相似回答