51单片机中如何用汇编语言编写流水灯

51单片机中如何用汇编语言编写流水灯,第1张

流水灯就是51单片机控制led灯依次点亮的控制方式。具体程序如下:

ORG 0000H ;复位启动

AJMP START ;

ORG 001BH ;T1中断

AJMP T1INT ;

;定义变量========================

YSJS EQU 30H;延时计数器

LED EQU 31H;LED控制缓冲器

;主程序==========================

START: MOV LED,#0FEH ;初始化数据

MOV YSJS,#0 ;

MOV TMOD,#10H ;定时器1工作于方式1,16位定时器

MOV TL1,#0B0H ;设置定时初值

MOV TH1,#3CH ;定时时间=50mS

SETB ET1 ;使能定时器1中断

SETB TR1 ;启动定时器1

SETB EA ;开总中断

MOV P1,LED ;初始化流水灯

LOOP: JMP LOOP ;循环等待中断

T1INT: PUSH PSW ;定时器1中断程序

PUSH ACC ;保护现场

MOV TH1,#3CH ;定时时间=50mS

MOV TL1,#0B0H ;

INC YSJS ;

PUSH ACC ;保护ACC

MOV A,YSJI ;

CJNE A,#2,QT1 ;50mS2=100mS

MOV P1,LED ;

MOV A,LED ;

RL A ;累加器A的值循环左移1位

MOV LED,A ;

MOV YSJS,#0 ;

QT1: POP ACC ;恢复现场

POP PSW ;

RETI ;返回主程序

END ;汇编程序结束

扩展资料:

实现流水灯的三个方法:

第一种,总线方法实现流水灯。这是一种比较笨但又最易理解的方法,采用顺序程序结构,用位指令控制P1口的每一个位输出高低电平,加上延时函数,即可控制每个LED灯的亮灭。

第二种,移位方法实现流水灯采用循环程序结构编程。首先在程序开始给P10口送一个低电平,其它位为高。然后延时一段时间再让低电平往高位移动,这样就实现“流水”的效果了。

第三种,库函数实现流水灯。利用左移函数进行。

单片机上升沿:

顺时针旋转A超前B相信号90°:

A: _|--|__|--|_

B: __|--|__|--|

逆时针旋转B相信号超前A相信号90°:

A:__|--|__|--|_

B:_|--|__|--|__

下面是AT89C2051检测并进行二倍频程序:

;采用外部中断方式

ORG 00H

LJMP MAIN

ORG 03H

LJMP INT0

ORG 13H

LJMP INT1

ORG 50H

MAIN: MOV SP,#40H

MOV P3,#0FFH

MOV IE,#10000101B ;设定外部中断

MOV TCON,#00000101B

SETB EA

MA1: MOV P1,#0FFH

MOV P3,#0FFH

SJMP MA1

;

INT0: PUSH PSW

CLR EA

I0: JNB P10,FAN

CLR P34

SJMP INT0END

FAN: CLR P35

INT0END:

POP PSW

SETB EA

MOV P3,#0FFH

RETI

INT1: PUSH PSW

CLR EA

JNB P10,ZHENG

CLR P35

SJMP INT1END

ZHENG: CLR P34

INT1END:

POP PSW

SETB EA

MOV P3,#0FFH

RETI

你是编写编码器检测程序吧,给你一段代码参考。

光电编码器输出正交信号方式如下图所示:

顺时针旋转A超前B相信号90°:

A: _|--|__|--|_

B: __|--|__|--|

逆时针旋转B相信号超前A相信号90°:

A:__|--|__|--|_

B:_|--|__|--|__

下面是AT89C2051检测并进行二倍频程序:

;采用外部中断方式

ORG 00H

LJMP MAIN

ORG 03H

LJMP INT0

ORG 13H

LJMP INT1

ORG 50H

MAIN: MOV SP,#40H

MOV P3,#0FFH

MOV IE,#10000101B ;设定外部中断

MOV TCON,#00000101B

SETB EA

MA1: MOV P1,#0FFH

MOV P3,#0FFH

SJMP MA1

;

INT0: PUSH PSW

CLR EA

I0: JNB P10,FAN

CLR P34

SJMP INT0END

FAN: CLR P35

INT0END:

POP PSW

SETB EA

MOV P3,#0FFH

RETI

INT1: PUSH PSW

CLR EA

JNB P10,ZHENG

CLR P35

SJMP INT1END

ZHENG: CLR P34

INT1END:

POP PSW

SETB EA

MOV P3,#0FFH

RETI

单片机控制步进电机驱动器工作原理

  步进电机在控制系统中具有广泛的应用。它可以把脉冲信号转换成角位移,并且可用作电磁制动轮、电磁差分器、或角位移发生器等。 

  有时从一些旧设备上拆下的步进电机(这种电机一般没有损坏)要改作它用,一般需自己设计驱动器。本文介绍的就是为从一日本产旧式打印机上拆下的步进电机而设计的驱动器。

  本文先介绍该步进电机的工作原理,然后介绍了其驱动器的软、硬件设计。

  1 步进电机的工作原理

  该步进电机为一四相步进电机,采用单极性直流电源供电。只要对步进电机的各相绕组按合适的时序通电,就能使步进电机步进转动。

  开始时,开关SB接通电源,SA、SC、SD断开,B相磁极和转子0、3号齿对齐,同时,转子的1、4号齿就和C、D相  

绕组磁极产生错齿,2、5号齿就和D、A相绕组磁极产生错齿。

  当开关SC接通电源,SB、SA、SD断开时,由于C相绕组的磁力线和1、4号齿之间磁力线的作用,使转子转动,1、4号齿和C相绕组的磁极对齐。而0、3号齿和A、B相绕组产生错齿,2、5号齿就和A、D相绕组磁极产生错齿。依次类推,A、B、C、D四相绕组轮流供电,则转子会沿着A、B、C、D方向转动。

  四相步进电机按照通电顺序的不同,可分为单四拍、双四拍、八拍三种工作方式。单四拍与双四拍的步距角相等,但单四拍的转动力矩小。八拍工作方式的步距角是单四拍与双四拍的一半,因此,八拍工作方式既可以保持较高的转动力矩又可以提高控制精度。

  2基于AT89C2051的步进电机驱动器系统电路原理

  AT89C2051将控制脉冲从P1口的P14~P17输出,经74LS14反相后进入9014,经9014放大后控制光电开关,光电隔离后,由功率管TIP122将脉冲信号进行电压和电流放大,驱动步进电机的各相绕组。使步进电机随着不同的脉冲信号分别作正转、反转、加速、减速和停止等动作。图中L1为步进电机的一相绕组。AT89C2051选用频率22MHz的晶振,选用较高晶振的目的是为了在方式2下尽量减小AT89C2051对上位机脉冲信号周期的影响。

  RL1~RL4为绕组内阻,50Ω电阻是一外接电阻,起限流作用,也是一个改善回路时间常数的元件。D1~D4为续流二极管,使电机绕组产生的反电动势通过续流二极管(D1~D4)而衰减掉,从而保护了功率管TIP122不受损坏。

  在50Ω外接电阻上并联一个200μF电容,可以改善注入步进电机绕组的电流脉冲前沿,提高了步进电机的高频性能。与续流二极管串联的200Ω电阻可减小回路的放电时间常数,使绕组中电流脉冲的后沿变陡,电流下降时间变小,也起到提高高频工作性能的作用。

  3软件设计

  该驱动器根据拨码开关KX、KY的不同组合有三种工作方式供选择:

  方式1为中断方式:P35(INT1)为步进脉冲输入端,P37为正反转脉冲输入端。上位机(PC机或单片机)与驱动器仅以2条线相连。

  方式2为串行通讯方式:上位机(PC机或单片机)将控制命令发送给驱动器,驱动器根据控制命令自行完成有关控制过程。

  方式3为拨码开关控制方式:通过K1~K5的不同组合,直接控制步进电机。

当上电或按下复位键KR后,AT89C2051先检测拨码开关KX、KY的状态,根据KX、KY 的不同组合,进入不同的工作方式。以下给出方式1的程序流程框图与源程序。 

  在程序的编制中,要特别注意步进电机在换向时的处理。为使步进电机在换向时能平滑过渡,不至于产生错步,应在每一步中设置标志位。其中20H单元的各位为步进电机正转标志位;21H单元各位为反转标志位。在正转时,不仅给正转标志位赋值,也同时给反转标志位赋值;在反转时也如此。这样,当步进电机换向时,就可以上一次的位置作为起点反向运动,避免了电机换向时产生错步。 

  方式1源程序: 

  MOV        20H,#00H              ;20H单元置初值,电机正转位置指针

    MOV         21H,#00H              ;21H单元置初值,电机反转位置指针

    MOV         P1,#0C0H              ;P1口置初值,防止电机上电短路

    MOV         TMOD,#60H           ;T1计数器置初值,开中断

    MOV         TL1,#0FFH

    MOV         TH1,#0FFH

    SETB        ET1

    SETB        EA

    SETB        TR1

    SJMP        $

  ;计数器1中断程序

IT1P:       JB          P37,FAN              ;电机正、反转指针

  ;电机正转

              JB          00H,LOOP0

              JB          01H,LOOP1

              JB          02H,LOOP2

              JB          03H,LOOP3

              JB          04H,LOOP4

              JB          05H,LOOP5

              JB          06H,LOOP6

              JB          07H,LOOP7

  LOOP0:       MOV         P1,#0D0H

              MOV         20H,#02H

              MOV         21H,#40H

              AJMP        QUIT

  LOOP1:      MOV         P1,#090H

              MOV         20H,#04H

              MOV         21H,#20H

              AJMP        QUIT

  LOOP2:      MOV         P1,#0B0H

              MOV         20H,#08H

              MOV         21H,#10H

              AJMP        QUIT

  LOOP3:      MOV         P1,#030H

             MOV         20H,#10H

              MOV         21H,#08H

              AJMP        QUIT

  LOOP4:      MOV         P1,#070H

              MOV         20H,#20H

              MOV         21H,#04H

              AJMP        QUIT

  LOOP5:      MOV         P1,#060H

              MOV         20H,#40H

              MOV         21H,#02H

              AJMP        QUIT

  LOOP6:      MOV         P1,#0E0H

              MOV         20H,#80H

              MOV         21H,#01H

              AJMP        QUIT

  LOOP7:      MOV         P1,#0C0H

              MOV     ;     20H,#01H

              MOV         21H,#80H

              AJMP        QUIT

  ;电机反转

  FAN:        JB          08H,LOOQ0

               JB          09H,LOOQ1

              JB          0AH,LOOQ2

              JB          0BH,LOOQ3

              JB          0CH,LOOQ4

              JB          0DH,LOOQ5

              JB          0EH,LOOQ6

              JB          0FH,LOOQ7

  LOOQ0:      MOV         P1,#0A0H

              MOV         21H,#02H

              MOV         20H,#40H

              AJMP        QUIT

  LOOQ1:      MOV         P1,#0E0H

              MOV         21H,#04H

              MOV         20H,#20H

              AJMP        QUIT

  LOOQ2:      MOV         P1,#0C0H

              MOV         21H,#08H

              MOV         20H,#10H

              AJMP        QUIT

  LOOQ3:      MOV         P1,#0D0H

              MOV         21H,#10H

              MOV         20H,#08H

              AJMP        QUIT

  LOOQ4:      MOV         P1,#050H

              MOV         21H,#20H

              MOV         20H,#04H

              AJMP        QUIT

  LOOQ5:      MOV         P1,#070H

              MOV         21H,#40H

              MOV         20H,#02H

              AJMP        QUIT

  LOOQ6:      MOV         P1,#030H

              MOV         21H,#80H

              MOV         20H,#01H

              AJMP        QUIT

  LOOQ7:      MOV         P1,#0B0H

              MOV         21H,#01H

              MOV         20H,#80H

  QUIT:       RETI

                  END 

 

  4结论

  该驱动器经实验验证能驱动05Nm的步进电机。将驱动部分的电阻、电容及续流二极管的有关参数加以调整,可驱动12Nm的步进电机。该驱动器电路简单可靠,结构紧凑,对于I/O口线与单片机资源紧张的系统来说特别适用。

欢迎分享,转载请注明来源:品搜搜测评网

原文地址:https://pinsoso.cn/meirong/2191343.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-11-16
下一篇2023-11-16

随机推荐

  • 欧珀莱黑精灵精华怎么样?欧珀莱黑精灵精华使用方法

    欧珀莱黑精灵精华主打密实肌底,光润透亮,那么欧珀莱黑精灵精华怎么样?欧珀莱黑精灵精华使用方法是什么?面对这些问题,以下是针对欧珀莱黑精灵精华进行的全面分析,以了解欧珀莱黑精灵精华的其他性能,并帮助你解决更多的问题,有兴趣的朋友快来看看!

    2024-04-15
    46900
  • 抗老精华液哪个牌子最好用

    抗老精华液以下牌子最好用:1、宝丽极光幻彩精华液这款产品是它抗衰老系列当中最高端的产品,里面蕴含的成分也是非常的珍贵的,集合了多种核心专利技术,可以从根源上柔弱肌肤。2、莱伯妮鱼子酱反重力精华这款产品主要利用了深海鱼籽精粹作为配方,再结合珍

    2024-04-15
    46000
  • 用了珀莱雅补水套装3天了每次脸会红刺痛过一会就没了

    首先珀莱雅的产品是采用海洋提取物!不含任何激素成分。你用的是哪个套盒呢?皮肤出现刺痛感是因为你的肌肤太缺水的原因,皮肤一缺水就会干裂,所以你目前先要加上面膜一起用,多用几天,多给皮肤补补水,那时就不会有刺痛感了珀莱雅和泊本的护肤品都很好用。

    2024-04-15
    39100
  • 妮维雅小蓝罐国产版的所有评价?

    妮维雅小蓝罐国产版评价:1、妮维雅小蓝罐可以作为妆前打底,让妆容更加服帖。2、温和滋润,更易被肌肤吸收,给肌肤深层提供水分和养分的同时还能时刻得保湿肌肤的润泽。3、妮维雅小蓝罐可以用作妆前打底,滋润皮肤减少卡粉的情况。还能用作身体细节部位的

    2024-04-15
    28700
  • 兰芝水乳五件套盒怎么使用

    兰芝水乳五件套盒顺序:水→精华→乳液→面霜→睡眠面膜。正确使用顺序:第一步:清洁。首先清洁时相当重要的护肤步骤,是早晚都要有的。选择一只适合自己的清洁产品,挤出颗粒大小,加些微的水,在手上轻揉起泡,然后把泡沫涂抹到面部打圈,按摩3分钟左右用

    2024-04-15
    32500
  • 妮维雅什么产品好

    问题一:妮维雅的哪种产品好?妮维雅的 粉水、白水、蓝水,我都用过,绿水我同学用过。所以相对来说比较熟悉。 粉水――这款号称是适合敏感肌肤使用的水,我用没啥感觉,但是我一个同学用了居然蜕皮过敏!!可以想象,其中化学含量。。。 白水

    2024-04-15
    36800
  • 保湿精华凝露 怎么用? 用在哪个步骤呢?

    精华凝露就是精华素,直接涂抹在脸上即可,在肌肤拍完水之后使用。顺序则是:洁面---水---精华凝露---乳液。精华凝露有锁水保湿的作用,凝露质地的精华液看上去就像我们平时所用的啫喱霜,这种质地的精华液通常也是不含油分的,容易推开,好吸收,锁

    2024-04-15
    33100

发表评论

登录后才能评论
保存