51单片机驱动步进电机(汇编语言)

发布者:Dingsir1902最新更新时间:2015-05-08 来源: 51hei关键字:51单片机  步进电机  汇编语言 手机看文章 扫描二维码
随时随地手机看文章
在这里介绍一下用51单片机驱动步进电机的方法。
这款步进电机的驱动电压12V,步进角为 7.5度 . 一圈 360 度 , 需要 48 个脉冲完成!!!
该步进电机有6根引线,排列次序如下:1:红色、2:红色、3:橙色、4:棕色、5:$、6:黑色。
采用51驱动ULN2003的方法进行驱动。
ULN2003的驱动直接用单片机系统的5V电压,可能力矩不是很大,大家可自行加大驱动电压到12V。


 ;******************************************************************
  ;****************************步进电机的驱动***************************************
  ; DESIGN BY BENLADN911 FOSC = 12MHz 2005.05.19
  ;---------------------------------------------------------------------------------
  ; 步进电机的驱动信号必须为 脉冲信号!!! 转动的速度和脉冲的频率成正比!!!
  ; 本步进电机步进角为 7.5度 . 一圈 360 度 , 需要 48 个脉冲完成!!!
  ;---------------------------------------------------------------------------------
  ; A组线圈对应 P2.4
  ; B组线圈对应 P2.5
  ; C组线圈对应 P2.6
  ; D组线圈对应 P2.7
  ; 正转次序: AB组--BC组--CD组--DA组 (即一个脉冲,正转 7.5 度)
  ;----------------------------------------------------------------------------------
  ;----------------------------正转--------------------------
  ORG 0000H
  LJMP MAIN
  ORG 0100H
  MAIN:
  MOV R3,#144 正转 3 圈共 144 脉冲
  START:
  MOV R0,#00H
  START1:
  MOV P2,#00H
  MOV A,R0
  MOV DPTR,#TABLE
  MOVC A,@A+DPTR
  JZ START 对 A 的判断,当 A = 0 时则转到 START
  MOV P2,A
  LCALL DELAY
  INC R0
  DJNZ R3,START1
  MOV P2,#00H
  LCALL DELAY1
  ;-----------------------------反转------------------------
  MOV R3,#144 反转一圈共 144 个脉冲
  START2:
  MOV P2,#00H
  MOV R0,#05
  START3:
  MOV A,R0
  MOV DPTR,#TABLE
  MOVC A,@A+DPTR
  JZ START2
  MOV P2,A
  CALL DELAY
  INC R0
  DJNZ R3,START3
  MOV P2,#00H
  LCALL DELAY1
  LJMP MAIN
  DELAY: MOV R7,#40 步进电机的转速
  M3: MOV R6,#248
  DJNZ R6,$
  DJNZ R7,M3
  RET
  DELAY1: MOV R4,#20 2S 延时子程序
  DEL2: MOV R3,#200
  DEL3: MOV R2,#250
  DJNZ R2,$
  DJNZ R3,DEL3
  DJNZ R4,DEL2
  RET
  TABLE:
  DB 30H,60H,0C0H,90H 正转表
  DB 00 正转结束
  DB 30H,90H,0C0H,60H 反转表
  DB 00 反转结束
关键字:51单片机  步进电机  汇编语言 引用地址:51单片机驱动步进电机(汇编语言)

上一篇:热流传感器信号采集
下一篇:基于51单片机的遥控智能小车实作心得

推荐阅读最新更新时间:2024-03-16 14:01

基于51单片机的模拟usb 键盘制作例程
终于搞了一回USB HID设备,做了一个USB键盘来玩玩~~~~其中的报告描述符让我晕了几天~~~~~几份HID相关的协议还是蛮长的~~~~~~明天再弄个USB鼠标设备玩玩~~~~~~~有空的话再搞个红外遥控器玩玩~~~ 这回是拿以前做的Mass storage来改的,所以比较快,修改了一下描述符以及端点处理等,就行了。用了一个4*4的小键盘,有0-9十个数字键,Num Lock键,Caps Lock键,Shift键,Ctrl键,Alt键,回车键等。 最多可以有三个键同时按下,如果相交的话,最多只能两个键按下。 以下是通过串口返回的调试信息:   系统启动................................ 断
[单片机]
基于<font color='red'>51单片机</font>的模拟usb 键盘制作例程
51单片机特别功用存放器和位界说
接下来的几节,我们会带着人人编写第一个单片机程序。在此之前,我们先来理解一些 51 单片机特有的程序语法以及 Keil 软件的根本操作步调,请人人必定要有耐烦。 我们次要是用 C 言语来对单片机编程,而有的单片机有那么几条很特别的独有的编程语句,51 单片机就有,先引见 2 条。 第一条语句是:sfr P0 = 0x80; sfr 这个症结字,是 51 单片机特有的,他的感化是界说一个单片机特别功用存放器(special function register)。51 单片机外部有许多个小模块,每一个模块寓居在具有独一房间号的房间内,同时每一个模块都有 8 个掌握开关。P0 就是一个功用模块,就住在了 0x80 这个房间里,我们就
[单片机]
<font color='red'>51单片机</font>特别功用存放器和位界说
基于51单片机定时器0计时计数器1计数的霍尔传感器精确测速
#include reg52.h #include intrins.h #define uchar unsigned char #define uint unsigned int sbit RW=P2^6;//定义LCD1602液晶显示器读写端 sbit RS=P2^5;//定义LCD1602液晶显示器数据命令端 sbit EN=P2^7;//定义LCD1602液晶显示器使能端 sbit qiting=P3^0;//定义启停按键 uchar qitingnum;//定义启停次数变量 uint count;//定时器0定时中断次数变量 unsigned long speed=0;//定义速度变量 uchar co
[单片机]
基于<font color='red'>51单片机</font>定时器0计时计数器1计数的霍尔传感器精确测速
51单片机的精确延时程序分析
一、C51程序 在晶振为11.0592的情况下,如下程序能实现ms级的比较精确的延时: 1 void Delayms(unsigned int n) 2 { 3 unsigned int i,j; 4 for(j=n;j 0;j--) 5 for(i=112;i 0;i--); 6 } 用keil可以看出这个延时的时间,我们先延时1ms,即Delayms(1)。 进入Delayms前,sec=0.00042209s 延时后,sec=0.00142253s 可以知道Delayms(1)实际延时0.00142253s 0.00042209s=0.00100044s 1ms 同样如果想延时15ms的话,用
[单片机]
<font color='red'>51单片机</font>的精确延时程序分析
51单片机之计时器
一、实验目的: 让六个数码管动态显示数字,计算秒数 二、实验分析: a.因为要显示秒数,所以我们首先应该定义一个数组,用来存放0-9数字在数码管上对应的 十六进制数 b.3/8译码器的使能设置 c.定时器的理解。首先应该知道定时器与TMOD和和TCON有关。对于TMOD值得我们特别注意的是TMOD的Gate位(门控位)和C/T位。Gate=0时,仅由运行控制位TR1/TR0来启动定时器运行。而当Gate=1时,仅由运行控制位TR1/TR0和外中断引脚(INT0和INT1)上的高电平共同来启动定时器运行。C/T=0为定时模式,C/T=1为计数模式。我这次用到的是定时器1的方式一,为了不影响TMOD上的其他位,我
[单片机]
基于51单片机的D/A & A/D 与单片机接口原理
D/A :数字 (digit)到模拟(analog) 就是把数字信息转换成模拟量 单片机属于数字芯片内部只有0和1表示的。无法表达一个模拟量。电压值 模拟量是随意变化的。数字量就2种变化没有变化表示。 如果是一个8位 D/A芯片 这里是并行口 8跟线跟单片机连接 就是 从0到255 0 0 0 0 0 0 0 0 ---- 1 1 1 1 1 1 1 1 全部送 1就是最大的表示范围 。如果是5V 那么最小的变化范围就是5V / 255 约等 0.0196. 一、D/A转换器的原理 T型电阻网络 D/A 转换器(如图): 工作原理: Vref 是参考电压的输入端,下面的 D0---D7是数字控制端上面的开
[单片机]
基于<font color='red'>51单片机</font>的D/A & A/D 与单片机接口原理
C51单片机重要知识点总结
01 C51基本数据类型总结 我们要记得定义变量时,到底选择哪里一个,有一条重要原则是:在合理情况下,尽可能选择内存小的,单片机的内存资源很珍贵。51单片机只有128个字节。 讲讲全局变量和局部变量, 全局变量:main函数以前定义;局部变量:函数体内部定义; 如果没有被main调用时,不占用内存;能使用局部变量,就不使用全局变量;声明时可以不写变量名。 02 C51数据类型扩充定义 这部分内容是程序最开始前,我们常碰到的内容; sfr :特殊功能寄存器说明 sfr16: sfr的16位数据声明 sbit: 特殊功能位声明 bit : 位变量声明 例如:SFR SCON=0x98 SFR T2=0xCC Sbit OV
[单片机]
基于A3967SLB的步进电机细分驱动系统设计
步进电机精度高,惯性小,在不失步的情况下没有步距误差积累,特别适用于数字控制的定位系统。传统的细分驱动电路由细分环行分配器、放大器和合成器等部分组成。这种电路应用复杂,灵活性差。本文利用A3967SLB作为步进电机微控芯片,简化了步进电机的控制实现。由于单片机资源没有PC丰富,人机界面也没有PC友好,因此,本文采用了主从式结构,即PC用于管理,单片机用于执行。 由A3967SLB构成步进电机的驱动部分 A3967SLB是美国Allegro公司生产的PWM恒流控制微步距驱动二相步进电机专用驱动器。它的工作电压可达30V,驱动电流达750mA,一个A3967SLB即可驱动一台二相步进电机,可实现8细分驱动。芯片内部的PWM电流控制电
[应用]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved