通过51单片机来控制直流电机

来源:本站
导读:目前正在解读《通过51单片机来控制直流电机》的相关信息,《通过51单片机来控制直流电机》是由用户自行发布的知识型内容!下面请观看由(电工技术网 - www.9ddd.net)用户发布《通过51单片机来控制直流电机》的详细说明。
简介:在这里为大家提供一个通过51单片机来控制直流电机的程序。

原理很简单了 直接上电路图和源程序吧

通过51单片机来控制直流电机

下面是针对上面电路图的程序

;----------------------------------------------

;名称:51单片机来控制直流电机

;主频 6M晶震 51系列单片机

;编译环境:keilc51编译通过

;备注 :程序的关键部分是 T1定时中段程序里面 看PWM 是怎么控制电机转动的

;要改变电机的方向其实很简单

;4个小车状态子程序 你应该能看懂吧

;另外当然就是要去看下 驱动电机的芯片 L293D 了 嘿嘿 就是什么H桥什么的

; 当然电子基本攻扎实的 自己做个电路也是一样的 不过这芯片也就几块钱

; 节约时间的话就买来电路搭起就OK

;---------------------------------------------

;------------------------------------------------

;内存分配定义

ntw equ 3Eh ;PWM中断计数器(对T1中断)

ntwkz equ 3Dh ;左电机PWM脉宽设置

ntwky equ 3Ch ;右电机PWM脉宽设置

ntwkzy equ 31h ;左右电机预置PWM脉宽

zjfx bit p2.0 ;左电机方向控制口,0为正转,1为反转

yjfx bit p2.1 ;右电机方向控制口,0为正转,1为反转

;-------------------------------------------------

ORG 0000H

aJMP MAIN

org 000bh

lJMP t0zd

org 001bh

ljmp t1zd

org 0030h

;----------------------------------------------

MAIN :

ACALL XCQJ

ACALL CSH

; ;-----

; ;其他程序。比如数码管 显示 什么什么的

; ;----

AJMP MAIN

;-------------------------------------

;系统初始化

;-----------------------------------

CSH:

MOV TMOD, #11H ;定时器0/1均设置为方式1,定时方式 计耸器按16位工作

mov TH1,#0feh ;

mov TL1,#70h ;PWM调速,定时0.8ms

mov ntw,#10 ;PWM对T1中断计数,即可有10档速度调节

mov ntwkzy,#03 ;左右电机预置PWM脉宽

mov ntwkz,#03 ;左电机调速脉宽,此值为高电平的时间

mov ntwky,#03 ;右电机调速脉宽

SETB ET0 ;开T0中断

setb ET1 ;开T1中断

SETB EA ;系统开中断

SETB TR0 ;启动定时器0

SETB TR1 ;启动定时器1

RET

t0zd:

RETI

;---------------------------------

;小车状态子程序

;---------------------------------

xcqj: ;小车前进

setb zjfx ;左机正转(IN2)

setb yjfx ;右机正转(IN3)

RET

xczz: ;小车左转

clr zjfx ;左机反转(IN2)

setb yjfx ;右机正转(IN3)

RET

xcyz: ;小车右转

setb zjfx ;左机正转(IN2)

clr yjfx ;右机反转(IN3)

RET

xcht: ;小车后退

clr zjfx

clr yjfx

ret

;---------------------------------

;T1中断子程序

;---------------------------------

t1zd:

mov th1,#0feh

mov tl1,#70h

push acc

push psw

djnz ntw,t101 ; NTW 不等于0 则运行T101 等于0 则 送低电平

mov ntw,#10

clr p3.5

clr p3.7

ajmp t1fh

t101: mov a,ntw;这里实现了软件方式的电机调速功能 设置 PWM 高电平的脉冲宽度10个档位这里有一点需要注意 NTW开始是设置的10自减1然后与

;预先设置的左右电机的预设置的档位比较 这里是3 那么就是减7次也就是要等待7个T1中断之后才会SETB P3.5也就是说 这里的档位 值越小 转得越快

cjne a,ntwkz,t102 ; 不相等执行102 相等则顺序执行 比较 左电机预设置 的 PWM数量

setb p3.5

t102: cjne a,ntwky,t1fh ; 比较 右电机预设置 的 PWM数量其实这里我设置的都是一样的档 都是3 实际中可能有些情况需要调节2个轮子的转速度 不过一般情况下

;设置一样的 方便些 不过原理还是要看懂 知道怎么设置

setb p3.7

t1fh: pop psw

pop acc

reti

END

[ 原 创 ] Suse| haozi

2009.5.15 1:24 ,51单片机教程网51hei.com

突然想到要利用键盘控制电机调速的同志。。T1 的入口参数就是 ntwkz ntwky

ntwkz equ 3Dh ;左电机PWM脉宽设置

ntwky equ 3Ch ;右电机PWM脉宽设置

T1每次中断就从10档开始自减 一直减到你设置的档位 然后输出PWM波形

只需要改变 3DH 3CH 中的值 那么就可以实现调速功能了

提醒:《通过51单片机来控制直流电机》最后刷新时间 2024-03-14 01:00:01,本站为公益型个人网站,仅供个人学习和记录信息,不进行任何商业性质的盈利。如果内容、图片资源失效或内容涉及侵权,请反馈至,我们会及时处理。本站只保证内容的可读性,无法保证真实性,《通过51单片机来控制直流电机》该内容的真实性请自行鉴别。