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

包括工作原理,电路图... 包括工作原理,电路图 展开
 我来答
束桂兰恽水
2020-03-16 · TA获得超过3.7万个赞
知道大有可为答主
回答量:1.3万
采纳率:28%
帮助的人:821万
展开全部
这个很简单,我教你怎么玩,下面是思路和方式
思路:有三个输入,分别是一个按钮、两个霍尔传感器(也就是接近开关),我用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++;
//外部中断控制圈数加一
//这个位置可以加你显示程序
}
程序已经通过测试,放上去就能用,很好玩哟,呵呵
huzengpan
2019-01-05 · TA获得超过1499个赞
知道小有建树答主
回答量:1199
采纳率:84%
帮助的人:426万
展开全部
看你的题目应该是做实验室里的直流小电机吧,比如小车的驱动等,那么你可以使用一个驱动器L298 ,然后用单片机来控制器298,非常方便实验正反转,电路网上基本上也都是现成的,程序也都有现成的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
tianhj2001
2008-12-11 · TA获得超过189个赞
知道小有建树答主
回答量:409
采纳率:0%
帮助的人:182万
展开全部
电路图所在位置:
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 · TA获得超过5448个赞
知道答主
回答量:2368
采纳率:93%
帮助的人:281万
展开全部
淮南师范学院电气信息工程学院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条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式