汇编语言中一下语句 [STRIN DB 'lajid451231;' COUNT EQU $-STRIN] $-STRIN完成什么功能

如题所述

转载
单片机控制步进电机

步进电机是一种常见的机电控制执行器,并且其使用电脉冲转化为角位移,通俗地说:当步进驱动器的脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度(步距角)。可以控制的控制的脉冲数,即角位移量,从而达到准确定位的目的,同时通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调速的目的。

对步进电机的步进马达常识分为三种:永久磁铁(PM),反应式(VR)和混合型(HB),永磁步进一般为两相,转矩和体积是更小的步进角为7.5度或15度,反应步进一般为三相,高转矩输出,步距角为1.5度,但大的噪音和振动。在欧洲和美国等发达国家已在上世纪80年代淘汰的混合式步进意味着永久磁铁和反应式的优点相结合的。它由两相和五相:两相步进角一般为1.8度和五相步进角一般为0.72度。步进电机是使用最广泛的。

永磁步进电机控制

以下业余电子爱好者永磁步进电机为例,介绍了如何使用步进电机控制。 />图1是35BY永磁式步进电机的外部视图,图2是电动机的接线图,可以看出,从该图中,共有四组电机的线圈,其中一个端点的四组线圈一起线索,这样一共有五个领先。要使用步进电机转动,就可以轮流到每个终端通电。 COM端子C,只要AC,C,BC,C,打开电源就能驱动步进电机的操作,权力的方式可以有很多种COM端接正电源,只要认定为开关元件(如晶体管),A,B,交替接地。

下表列出了一些典型的电机参数:

表1 35BY48S03型一步一步的机械和电气机器参数型号步距角相电压电流电阻最大静转矩定位转矩的惯性矩35BY48S03 7.5 4 12 0.26 47 180 65 2.5

使用这些参数,这是容易设计的控制电路,由于工作电压为12V,最大电流为0.26A开路输出与达林顿驱动器(ULN2003)作为一个驱动器,P1.4 - P1.7来控制各线圈的导通和关闭,在图3所示的电路。启动,P1.4到P1.7高,反过来P1.4-P1.7为低电平以驱动步进电机运行时,要注意,然后切换到前面的输出引脚变为高电平。如果你想改变电机的旋转速度,只要两者之间的打开时间的变化,来改变电机的旋转方向,只要你改变每个线圈导通的顺序。

图1 35BY48S03型步进电机外形图

图2 35BY48S03型步进电机接线图

图3单芯片步进电机控制35BY48S03电路图

III。

要求步进电机驱动器实例:控制电路如图3所示,开机后,电机不转,按下启动按钮,电机在25转/分钟的速度旋转,按加号键的速度增加,按减号键,较低的速度,最高速度为100转/分,最低传输带25转/分,按下“停止”按钮来停止电机。速度值?需要在数字显示。

1。分析

根据上述的分析,变化速度,只要的变化P1.0到P1.3旋转的变为低电平,符合要求的,不应该被使用的时间延迟来实现,因为它可能会影响其它功能。这里是正规的方式。首先,计算出固定的时间。

的要求,最低转速为25转/分钟,步进电机的步距角为7.5,每1个星期的48个脉冲,即,当为1200脉冲/分,相当的最低速度要求在50毫秒/脉冲。在最高速度为100转/分,即48000脉冲/分,相当于12.5mS的/脉冲的要求。下表中列出



步进电机的转速和定时器定时常数关系速度单步时间(我们)TH1 TL1实际时间(我们)

25 50000 76 0 49996.8 26 48077 82 236 4807 4.18

27 46296 89 86 46292.61

28 44643 95 73 44640.155

? ............ 100 12500 211 0 12499.2

表不仅计算TH1和TL1,但也定时常数,一个真正的定时时间,根据该计算值来估算实际速度与理论速度的误差值的计算出来的。

表TH1和TL1计算的是基于定时,定时这里使用的是初始晶体11.0592M。如上表所示,程序并不难实现,使用定时器/计数器T1定时器定时时间到后切换输出引脚。

2。计划,以实现

定义DSB-1A实验板S1启动按钮,S2为停止按钮加1键,S3,S4减去1按钮,程序如下:

startend位01H;启动和停止标志

MinSpd EQU 25;起始转速

MaxSpd EQU 100;最高转速

速度?DATA 23H流量统计

DjCount数据24小时值控制电机的输出最初的11110 111

隐藏EQU 10H;消隐代码

计数器数据57H;计数器

DISPBUF数据58H;显示缓冲区

ORG 0000H

AJMP MAIN

ORG 000BH

JMP DISP

ORG 001BH

JMP DJZD

ORG 30H

MAIN:

MOV SP,#5FH

MOV P1,#0FFH

MOV A,#隐藏

MOV DispBuf,A

MOV DispBuf +1,一个

MOV DispBuf +2,A

MOV DjCount,#11110111B

MOV速度,#MinSpd;开始的自转速度被送入计数器

CLR startend失速状态

MOV TMOD,#00010001B;

MOV TH0,#高(65536 -3000) MOV TL0,#LOW(65536-3000)

MOV TH1,#0FFH;

MOV TL1,#0FFH

SETB TR0

SETB EA SETB ET0 SETB ET1

LOOP:ACALL键;

JNB F0键盘程序m_NEXT1无钥匙继续

由ACALL和KEYPROC的;

m_NEXT1否则键盘处理程序被调用:

MOV A,速度?

MOV B,#10

DIV AB

MOV DispBuf +5,B,最低位

MOV B,# 10

DIV AB

MOV DispBuf +4乙

MOV DispBuf +3 A

JB startend,其中m_Next2

CLR TR1;关闭电机

JMP LOOP

ORL P1,#11110000B

m_Next2的:

SETB TR1;启动电机

AJMP LOOP;主程序年底

; --- ------------------------------------ /> D10ms的:

? ?

---------延时程序,键盘处理呼叫

KEYPROC的:

MOV A,B;访问键

JB的ACC.2的,启闭的关键代码分析,新闻,该位是1

JB ACC.3 KeySty

JB ACC.4,UpSpd

JB ACC.5 DowSpd的

AJMP <br KEY_RET启闭的

SETB StartEnd开始

AJMP KEY_RET

KeySty:

CLR StartEnd;停止

AJMP KEY_RET

UpSpd :

INC。速度;

MOV A,SPEED

CJNE A#MaxSpd的的在K1;

DEC速度数量最多的零下1,旁边的承诺仍然是

K1值:

AJMP KEY_RET

DowSpd: DEC SPEED

MOV A,SPEED

CJNE A,#MAXSPD,KEY_RET范围(尚未达到最大值),返回

MOV速度#MinSpd;

KEY_RET:

RET

KEY:

? ?访问重点项目

RET的

DjZd:电动机的速度控制,定时器T1

PUSH ACC PUSH PSW的

MOV A,速度?

SUBB A ,#MinSpd;少基线

MOV DPTR,#DJH

MOVC A,_at_ A + DPTR

MOV TH1,A

MOV A,速度的?

SUBB A ,#MinSpd

MOV DPTR,#DJL

MOVC A,@ A + DPTR

MOV TL1,A MOV A,DjCount

CPLá

魔术P1,

MOV A,DjCount

JNB ACC.7,d_Next1

JMP d_Next2

d_Next1:

MOV DjCount,#11110111B

d_Next2:<BR / MOV A,DjCount

RLá

MOV DjCount,A;恢复
ANL P1,A POP PSW

POP ACC

RETI DJH:DB 76,82,89,95,100,106,110,115,119,123,12中......

DJL:DB 0,236,86,73,212,0,214,96,163,165

? ?

DISP:显示程序

POP PSW

POP ACC。

? ?

RETI

BitTab:DB 7FH,0BFH 0DFH 0EFH,0F7H,0FBH

DISPTAB:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H, 88H,83H,0C6H,0A1H,86H,8EH,0FFH完

3。程序分析

这个程序是主程序从键盘,监控程序,步进电机驱动器三部分组成,主程序首先初始化变量显示三个消隐,每个引脚步进电机驱动器是高输出,然后调用键盘程序,并作出判断,如果一个键被按下,键盘处理程序被调用时,或直接到下一步骤。下一个步骤是到显示缓冲区的当前速度值转换为BCD码;的判断位变量StartEnd的,“1”或“0”,如果它是“1”时,定时器T1是开放的,否则关闭的定时为T1,为了防止长期断电相线圈时,关闭定时器T1,P1.0到P1.3设置高。在这一点上,主程序结束。这里为简便起见,有没有高的“0”消隐速度为10转/分,“010”,读者可以添加自己的代码来处理这个工作。

步进电机驱动器,定时器T1中断服务程序,从上述的分析,每一个固定的时间到达后,连接到P1.0到P1.3反过来,一个变量后DjCntr来实现这一功能的程度,在主程序的初始化,该变量的初始值11110111B到定时器中断被使用时,发送的变量删除ACC累加器,并在累加器中的左移位,因此,其值将变为11101111,然后和P1“和” P1.4输出低电平,使第二进入中断时,第一否定的数量0001 0000,然后P1的数量“或”因此,P1.4输出高,关断相应的线圈,则多个再取出来,左移位,即1110,1111右移11011111,P1的数量“和”该P1.5输出低,等等,P1.7P1.4回路输出低电平。当该数据变为01111111,需要做出相应的,重新变回数据为第二个周期,读者自己分析了相关代码到11110111。

定时的是如何确定的?这里是一个查表的方法,首先每个速度TH和TL值?使用Excel计算,然后被放置在DJH和DJL表,进入T1中断服务程序,变速速度的价值?进入累加器ACC,然后减去基25,其基地从0开始计数,然后查表,到TH1和TL1的复位时序最初目的。

阅读这部分内容后,读者本身了以下工作:

1。改变程序S1被定义为“开始/停止”,和S2被定义为“方向”,按下S2开关电动机旋转的方向。

2。改变程序,需要从1到100的速度。
3。改变程序实现第一个无效零消隐。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-01-04
定义一个字节变量 [STRIN 里边存的是 l a j i d 4 5 1 2 3 1 ; 这些字符的ASCII码
$这个是当前偏移量的意思 $-[STRIN 就是当前偏移减 [STRIN 的偏移量正好就是 [STRIN 中含字符的个数
第2个回答  2013-01-04
string db 'lajid451231';定义一个字符串,db指各字符是字节型。
count equ $-string;定义count的值为上面所定义的字符串string的长度。$指当前偏移地址。注意,如果定义的字符串是dw型,则字符个数是count/2,因为用$统计的是字节数。来自:求助得到的回答
第2个回答  2013-01-04
开始时定义了一个字节变量STRIN,里面存的是lajid451231;
后面一个是计算刚刚这个字符串的长度。
相似回答