⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lcd_1602.asm

📁 程序说明: 程序运行时
💻 ASM
字号:
;本程序适用于 DXDZ 51+AVR-A 开发板
;配置要求:
;       需要将开发板上的P0.7切换到BUZZER一端;跳线组JP5、JP6、JP7切换到LCD一端,开关BLSW实现背光源的开通与闭合。
;程序说明:
;       程序运行时,先显示“WELCOME 51+AVR”然后依次动态将字符库里的字符显示在屏幕上,显示完毕后再从头开始循环运行。
;       屏幕在动态显示过程中,可以按INT0按键来暂停动态显示,再按一次INT0按键又恢复动态显示。 
;       动态显示暂停时,蜂鸣器鸣叫;恢复动态显示时蜂鸣器停止鸣叫。      


        COMMAND    EQU      30H
        DATA1      EQU      31H

        RS         EQU      P3.3
        RW         EQU      P3.4             
        E          EQU      P3.5 
	BUZZER     EQU      P0.7


        ORG    0000H
        LJMP   MAIN
        ORG    0003H
        LJMP   INT

        ORG    0030H
MAIN:
        MOV       SP,#60H
        SETB      EA
        SETB      EX0
        SETB      IT0

        MOV       P1,#38H
        CLR       RS
        CLR       RW
        MOV       R0,#3
    F:
        SETB      E
        CLR       E
        LCALL     SDELAY
        DJNZ      R0,F

        MOV       COMMAND,#38H
        LCALL     PR1
 MLP:
        MOV       COMMAND,#01H
        LCALL     PR1
        MOV       COMMAND,#06H
        LCALL     PR1
        MOV       COMMAND,#0CH
        LCALL     PR1

        MOV       COMMAND,#(80H+04H)	;显示WELCOME
        LCALL     PR1
        MOV       R2,#7
	MOV       DPTR,#char1
 MPL1:	CLR       A
	MOVC      A,@A+DPTR
	MOV       DATA1,A
	LCALL     PR2
	INC       DPTR
	DJNZ      R2,MPL1

        MOV       COMMAND,#(80H+45H)	;显示51+AVR
        LCALL     PR1
        MOV       R2,#6
	MOV       DPTR,#char2
 MPL2:	CLR       A
	MOVC      A,@A+DPTR
	MOV       DATA1,A
	LCALL     PR2
	INC       DPTR
	DJNZ      R2,MPL2


	LCALL     DELAY		;延时
	LCALL     DELAY


        MOV       R2,#3		;依次将20H~7FH的字符显示在屏幕上
        MOV       DATA1,#20H
 L1:
        MOV       COMMAND,#80H
        LCALL     PR1
        MOV       R1,#16   
   L2:  LCALL     PR2
        INC       DATA1
        DJNZ      R1,L2
        LCALL     DELAY
        MOV       COMMAND,#(80H+40H)
        LCALL     PR1
        MOV       R1,#16   
   L3:  LCALL     PR2
        INC       DATA1
        DJNZ      R1,L3
        LCALL     DELAY
        DJNZ      R2,L1


        MOV       R2,#2		;依次将A0H~DFH的字符显示在屏幕上
        MOV       DATA1,#0A0H
 L4:
        MOV       COMMAND,#80H
        LCALL     PR1
        MOV       R1,#16   
   L5:  LCALL     PR2
        INC       DATA1
        DJNZ      R1,L5
        LCALL     DELAY
        MOV       COMMAND,#(80H+40H)
        LCALL     PR1
        MOV       R1,#16   
   L6:  LCALL     PR2
        INC       DATA1
        DJNZ      R1,L6
        LCALL     DELAY
        DJNZ      R2,L4

	LJMP      MLP



;*******************************************
INT:
      PUSH     ACC
      PUSH     DPH
      PUSH     DPL
      PUSH     PSW
      CLR      EX0
      JNB      P3.2,$
      CLR      BUZZER
      JB       P3.2,$
      JNB      P3.2,$
      SETB     BUZZER
      SETB     EX0 
      CLR      IE0
      POP      PSW
      POP      DPL
      POP      DPH
      POP      ACC
      RETI   



;********延时程序**************************    
DELAY:
	 MOV     R5,#10
	 MOV     R6,#00H
         MOV     R7,#00H
 DELAY1:
         NOP
         DJNZ    R7,DELAY1
         DJNZ    R6,DELAY1
	 DJNZ    R5,DELAY1
         RET

SDELAY:
	 MOV     R6,#00H
         MOV     R7,#00H
 SDELAY1:
         NOP
         DJNZ    R7,SDELAY1
         DJNZ    R6,SDELAY1
         RET
;********读BF和AC值************************
PR0:
         PUSH    ACC
         MOV     P1,#0FFH
         CLR     RS
         SETB    RW
         SETB    E
         MOV     COMMAND,P1
         CLR     E
         POP     ACC
         RET
;*********写指令代码************************
PR1:
         PUSH     ACC
         CLR      RS
         SETB     RW
    PR11:MOV      P1,#0FFH
         SETB     E
         MOV      A,P1
         CLR      E
         JB       ACC.7,PR11
         CLR      RW
         MOV      P1,COMMAND
         SETB     E
         CLR      E
         POP      ACC
         RET
;*********写显示数据************************
PR2:
         PUSH     ACC
         CLR      RS
         SETB     RW
    PR21:MOV      P1,#0FFH
         SETB     E
         MOV      A,P1
         CLR      E
         JB       ACC.7,PR21
         SETB     RS
         CLR      RW
         MOV      P1,DATA1
         SETB     E
         CLR      E
         POP      ACC
         RET
;*********读显示数据************************
PR3:
        PUSH      ACC
        CLR       RS
        SETB      RW
   PR31:MOV       P1,#0FFH
        SETB      E
        MOV       A,P1
        CLR       E
        JB        ACC.7,PR31
        SETB      RS
        SETB      RW
        MOV       P1,#0FFH
        SETB      E
        MOV       COMMAND,P1
        CLR       E
        POP       ACC
        RET


char1:
        DB  0x57,0x45,0x4c,0x43,0x4f,0x4d,0x45
char2:
        DB  0x35,0x31,0x2b,0x41,0x56,0x52


        END                                                      

 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -