⑴ AT89C51单片机汇编语言写个控制电动机正反转的程序
不用中断,就行。
;
ORG 0000H
⑵ 51单片机电机正反转控制程序
正转:PWM1高电平,PWM2低电平;
反转:PWM1低电平,PWM2高电平;
⑶ 单片机控制电机的正反转 程序及电路图
这个很简单,我教你怎么玩,下面是思路和方式
思路:有三个输入,分别是一个按钮、两个霍尔传感器(也就是接近开关),我用p0.0到p0.2来代替;输出2个或以上(这看你接什么显示器,如果是pc的话,就不用数字量输出,直接串口就可以了)控制正反转的继电器管脚用p1.0、p1.1;
ps:显示那块我不知道你怎么处理,但是需要与一个全局变量转动次数k连接起来,另外两个输入接近开关选用npn传感器或用光电隔离,总之有效信号能把管脚电压拉低就可以了,具体硬件要注意什么,有需要就问我
现在我们来写程序:
#include
//选用晶振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
(i;i>0;i--)
for(j=46078;j>0;j--);
}
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++;
//外部中断控制圈数加一
//这个位置可以加你显示程序
}
程序已经通过测试,放上去就能用,很好玩哟,呵呵
⑷ 用单片机怎样实现电机的正反转控制
方案一:使用开关直接控制电动机的正反转,此种设计非常简便易懂,便于修理与使用。
缺点:该方案直接控制易产生火花电弧,会危害操作者生命安全。 如图1所示:
图1中的开关为单刀双掷开关,所以开关有左,中,右三个位置。 方案一开关控制过程如下:
将单刀双掷开关置向左边电动机开始正转,将开关置向右端电动机开始反转,将开关置向中间位置电动机停止转动。
方案二:使用电磁继电器进行控制电动机的正反转。此种设计使用了电磁继电器为了是能让控制过程更安全可靠,顺利解决了方案一的不足。
缺点:该方案不能够满足现代生活对自动化智能化的基本要求。
⑸ 用单片机怎么使直流电机正反转
单片机控制直流电机正反转,最简单的方法是 两个I/O口 控制两个继电器(一组常开、常闭)的就可以,电机 两个极 接 两个继电器 的 动触点,两个继电器 的 常开点接+(电机电源),两个常闭点接-,就可以了。
单片机控制接通一个继电器 是正转,控制接通另一个继电器 是反转,两个继电器都不接通(或者都接通)电机不转。
⑹ 单片机控制交流电机正反转的C语言程序
这个很简单,我教你怎么玩,下面是思路和方式
思路:有三个输入,分别是一个按钮、两个霍尔传感器(也就是接近开关),我用P0.0到P0.2来代替;输出2个或以上(这看你接什么显示器,如果是PC的话,就不用数字量输出,直接串口就可以了)控制正反转的继电器管脚用P1.0、P1.1;
PS:显示那块我不知道你怎么处理,但是需要与一个全局变量转动次数k连接起来,另外两个输入接近开关选用NPN传感器或用光电隔离,总之有效信号能把管脚电压拉低就可以了,具体硬件要注意什么,有需要就问我
现在我们来写程序:
#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 (i;i>0;i--)
for(j=46078;j>0;j--);
}
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++; //外部中断控制圈数加一
//这个位置可以加你显示程序
}
程序已经通过测试,放上去就能用,很好玩哟,呵呵
⑺ 51单片机步进电机正反转程序
单片机控制步进电机,我想你说的是两相步进电机,一般是控制其相序分配的顺逆从而控制正反转,一般而言,步进电机相序分配你可以做成一个数组比如step[]={0x03,0x06,0x0c,0x09},这样来说可以假设P0口是步进电机控制口,那么可以按如下方式来控制: while(1) { for(i=0;i<4;i++) { if(fx==1)P0=step[i]; //正向 else P0=step[3-i]; //反向 delay(x); //x大小决定电机速度。
根据电机相数买个驱动器。然后用单片机产生脉冲来控制电机的转动以及正反转。单片机产生脉冲的方法和单片机控制流水灯是一样的。ULN2003D 是驱动步进电机的驱动芯片,主要是匹配电机所需的电流。 由于是四相电机,步进电机之所以可以转动就需要给相绕组提供连续的脉冲,所以需要4个端口来控制四相绕组的工作状态(P15应该是不需要的),具体的编码要看电机的拍数; 一旦明白这些,你就可以很容易编写代码来控制电机的转动了,还有在脉冲间你可以设置不同的延时时间来调节电机的转速。
⑻ 单片机控制电机正反转程序
你好 你可以下一个说明书 好好的研究学习一下
⑼ C51单片机控制电机正反转
这需要你自己完成:走35米需要有你的小车轮子直径算出来走35M的圈数,实际一定有误差,需要考虑,此外可以采用终点定标[比如什么颜色的标记等]用对应的传感器去识别;到达终点后,利用单片机的定时器延时60S后将小车掉转头,向回开,直到到达起点。这种情况通常需要有道路标记的——也就是说,小车是按照编辑路线行进和停止的。