单片机控制电机的正反转 程序及电路图

包括工作原理,电路图

这个很简单,我教你怎么玩,下面是思路和方式
思路:有三个输入,分别是一个按钮、两个霍尔传感器(也就是接近开关),我用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个回答  2019-01-05
看你的题目应该是做实验室里的直流小电机吧,比如小车的驱动等,那么你可以使用一个驱动器L298 ,然后用单片机来控制器298,非常方便实验正反转,电路网上基本上也都是现成的,程序也都有现成的。
第2个回答  2008-12-11
电路图所在位置:
http://hi.baidu.com/tianhj2001/album/item/c0dc7d4fc718aed7d1c86a98.html
;文件名:DJ15-4.ASM
;程序功能:开关控制步进电机正反转

K1 EQU P3.2
K2 EQU P3.3
K3 EQU P3.4

STOP: MOV P0, #0FFH

LOOP: JNB K1, Z_M2
JNB K2, F_M2
JNB K3, STOP1
JMP LOOP
;-----------------------------
STOP1: ACALL DELAY
JNB K3, $
ACALL DELAY
JMP STOP

Z_M2: ACALL DELAY
JNB K1, $
ACALL DELAY
JMP Z_M

F_M2: ACALL DELAY
JNB K2, $
ACALL DELAY
JMP F_M

;---------------------------
Z_M: MOV R0,#00H
Z_M1: MOV A, R0
MOV DPTR, #TABLE
MOVC A,@A+DPTR
JZ Z_M
MOV P0,A
JNB K3, STOP1
JNB K2, F_M2
ACALL DELAY
INC R0
JMP Z_M1
RET
;-----------------------------
F_M: MOV R0,#05H
F_M1: MOV A, R0
MOV DPTR, #TABLE
MOVC A,@A+DPTR
JZ F_M
MOV P0,A
JNB K3, STOP1
JNB K1, Z_M2
ACALL DELAY
INC R0
JMP F_M1
RET
;-----------------------------
DELAY: MOV R1,#40
D1: MOV R2,#248
DJNZ R2,$
DJNZ R1,D1
RET
;-----------------------------
TABLE: DB 0FCH, 0F9H, 0F3H, 0F6H
DB 00
DB 0F7H, 0F3H, 0FBH, 0F9H
DB 0FDH, 0FCH, 0FEH, 0F6H
DB 00
;-------------------------------
END本回答被网友采纳
第3个回答  推荐于2020-02-09
淮南师范学院电气信息工程学院2013届自动化专业课程设计报告
第 1 页
学生:xxx
指导教师:xxx 电气信息工程学院自动化系
1 课程设计的任务与要求 1.1 课程设计的任务
利用AT89C51单片机设计并实现电动机正反转控制及其相关功能。通过本次设计了解并掌握51系列的单片机的结构及其使用方法。
1.2 课程设计的要求
该设计要求能够具有以下功能: (1)开启后器件没有任何反应。 (2)闭合正转开关按钮电动机开始正转。 (3)闭合反转开关按钮电动机开始反转。 (4)闭合停转开关按钮电动机停止转动。 1.3 课程设计的研究基础
该设计包括硬件和软件设计两部分。
硬件部分包括:直流电动机,电磁继电器,7路反相器,6路反相器。 软件部分包括:基于51单片机的c语言程序。 设计中的相关研究部分介绍如下:
(1)直流电动机部分:更改直流电动机的正负极就可以实现对直流电动机的正反转控制,更改可以使用继电器实现。
(2)电磁继电器部分:通过更改电磁继电器的正负极可以实现对电磁继电器中电磁的有无进行控制。再间接通过电磁的有无控制继电器中开关的打开与闭合。
(3)7路反相器部分:通过反相器可以更改输入电平的高低与其高低值(即当输入为高电压输出为低电压并且低电压为接地电压,当输入为低电压是输出为高电压并且电压强度与接com端相同)。其实质就是为了供给与继电器相适合的高低电压,所以如果没有该部分,则供给继电器的高低电压就有单片机提供,而单片机的输出高低电平为定值,因此需要此部分。
(4)6路反相器部分:该部分是为了结合7路反相器部分使用的,因为负负得正,正正得正。

如何用单片机实现正反转控制?
1、首先在【程序段1】中建立一个互锁加自锁的回路,I0.0是正转启动。I0.1是停止,M0.0是正转启动线圈,M0.1是反转启动线圈。2、然后在【程序段2】中建立一个反转的互锁加自锁的回路,I0.1是反转启动信号。I0.1是停止,M0.0是正转启动线圈,M0.1是反转启动线圈。3、接着在【程序段3...

用单片机怎样实现电机的正反转控制?
图1中的开关为单刀双掷开关,所以开关有左,中,右三个位置。 方案一开关控制过程如下:将单刀双掷开关置向左边电动机开始正转,将开关置向右端电动机开始反转,将开关置向中间位置电动机停止转动。方案二:使用电磁继电器进行控制电动机的正反转。此种设计使用了电磁继电器为了是能让控制过程更安全可靠,...

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

如何编出电机正反转控制程序
(1)按下正转按钮SB2,则接触器KM1得电导通,电动机正转;按下反转按钮SB3,则接触器KM2得电导通,电动机反转。图5-33 三相异步电动机正反转控制电路 图5-34 正反转控制的PLC外围接线图 (2)在任何状态下,按下停止按钮SB1,电动机停止运行。为设计本控制系统的梯形图,先安排输入、输出接口...

如何用单片机驱动继电器控制交流电机正反转
首先,你要先确定你是采用何种接线方式的双向转的交流电机?如采用主副对称单抽头的,那么用单片控制三极管驱动继电器来控制电机正反转,如图中的上。这个控制电路有个问题,就是无法控制电机停止!而且,在电机旋转时控制转向 ,电机可能会由于惯性扭力而造成损害。图中的下,加了一级停止控制(1)和...

单片机C语音控制步进电机正反转程序
以下是一个简单的程序代码示例,用于控制步进电机的正反转:首先,定义步进电机的四相绕组为A、B、C、D,通过脉冲控制其正反转。正转控制代码示例:c include define DELAY_1 0.001s void delay(int n){ int i;for (i = 0; i < n; i++);} void main(){ while (1){ \/\/ AB→BC→...

如何让单片机驱动直流电机正反转
如上图所示包括单片机的最小系统,同时用到了4个PNP三极管,通过控制P1.3,P1.4和P2.2 P2.4的电平的高低从而分别控制三极管的导通和断开。当P1.3=1,P1.4=0时;三极管Q1导通,Q2断开;P2.2=1,P2.4=0;三极管Q3导通,Q4断开;此时直流电机正转。当P1.3=0,P1.4=1时;三极管Q1断开...

单片机 ULN2003驱动步进电机,控制正反转电路图
用单片机的四个口接uln的四个输入,然后uln四个输出接步进电机的ABCD,剩下的那一根红线是接VCC的。控制单片机四个口的输出控制正反转 uchar zheng[8] ={0x01,0X03,0x02,0X06,0x04,0X0C,0x08,0X09};\/\/正转 电机导通相序 A-AB-B-BC-C-CD-D-DA uchar fan[8]={0X09,0X08,0X0C,0X...

怎样用单片机控制电机或马达的正反转以及转速。要有电路设计,如果有pro...
这是控制正反转的程序: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}; \/\/反转表格 \/***\/ \/* 延时函数 *\/ \/***...

如何用单片机来控制步进电机,并用两盏灯分别来表示其正反转! 大侠可以...
\/ 程序名称: 按键控制电机正反转 p1.0键为反转 p1.1键为停止 p1.2键为正转 \/ \/*头文件*\/ include <reg52.h> include <intrins.h> define uint unsigned int define uchar unsigned char define _Nop() _nop_()\/*端口定义*\/ define motor P0 \/*步进电机接口*\/ sbit P12 = P1^...

相似回答