单片机控制电机正反转动的c语言程序
2个回答
展开全部
首先要看你的电机是直流电机还是步进电机。直流电机就简单了,只有两根线,电机两端电压正负极改变就可以实现正转反转。不过要加电机驱动芯片,或者H桥电路,电机驱动芯片可以选择L298N,加上适当的外围电路就可以直接用单片机控制电机了。比如让单片机P1.0 = 0,P1.1 = 1;(单片机I/0口要与电机驱动芯片的输入脚相连)这样的话,电机驱动芯片就会输出一个电压差,可以使直流电机向一个方向转,如果使P1.0 = 1,P1.1 = 0,则电机驱动芯片会输出一个和刚才相反的电压,使电机向相反的方向转动。H桥电路和电机驱动芯片的原理差不多,网上多的是。我这说的只是简单的原理,实际中,L298N的输入端和单片机相连的时候要加光耦隔离,否则单片机会工作不正常。步进电机就稍微复杂点,也得需要电机驱动芯片才行,只不过控制信号是按一定的规律给的,规律变了,电机转动的方向也就变了。楼上给出的貌似是步进电机的驱动程序。
展开全部
给你个能正反转的!
#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就行了
#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就行了
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询