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

📄 液晶显示.asm

📁 51单片机写的液晶显示程序(1602)
💻 ASM
字号:
RS EQU P3.3
RW EQU P3.4
E  EQU P3.5
ORG 0000H
LJMP START
ORG 000BH
LJMP TIMER0
ORG 0100H
START:
      MOV SP,#6FH
      MOV 22H,#01H
      MOV 23H,#00H
      MOV 34H,#32H;存放矩形波频率
      MOV 35H,#32H;存放梯形波频率
      MOV 36H,#32H;存放锯齿波频率
      MOV 37H,#32H;存放三角波频率
      MOV 38H,#32H;存放正弦波频率
      MOV 39H,#32H;存放矩形波占空比
      MOV 3AH,#32H;存放梯形波占空比
      MOV 3BH,#00H;频率百位 (传送)
      MOV 3CH,#05H;频率十位 (传送)
      MOV 3DH,#00H;频率个位 (传送)
      MOV 3EH,#05H;占空比十分位(传送)
      MOV 3FH,#00H;占空比百分位(传送)
      MOV 40H,#00H
      MOV 41H,#00H
      MOV R4,#50
      MOV TMOD,#01H
      MOV TH0 , #3CH
      MOV TL0 , #0AFH
      MOV IE,#82H
      SETB TR0
      LCALL INT_LCD
MIAN:
      LCALL DISP
      LCALL BOXING
      LCALL READKEY
      LJMP MIAN
DISP:                    ;显示子程序
      MOV R5,#00H
      LCALL ZHI
      MOV R6,#80H
DISP1:
      MOV A,R6
      LCALL WCOM
      CJNE R5,#18,L2
L1:   MOV A,3BH
      LJMP L8
      CJNE R5,#19,L2
      MOV A,3CH
      LJMP L8
L2:   CJNE R5,#20,L3
      MOV A,3DH
      LJMP L8
L3:   JNB 16H,L5
      CJNE R5,#26,L4
      MOV  A,3EH
      LJMP L8
L4:   CJNE R5,#27,L5
      MOV A,3FH
      LJMP L8
L5:   JNB 17H,L7
      CJNE R5,#26,L6
      MOV A,3EH
      LJMP L8
L6:   CJNE R5,#27,L7
      MOV A,3FH
      LJMP L8
L7:   MOV A,R5
      MOVC A,@A+DPTR
L8:   LCALL WDATE
      INC R5
      INC R6
      CJNE R6,#90H,DISP2
      MOV R6,#0C0H
      DISP2:
      CJNE R5,#32,DISP1
      RET
ZHI:
      JNB 10H,ZHI1
      MOV DPTR,#DISTAB0
      AJMP ZHIEND
ZHI1:
      JNB 11H,ZHI2
      MOV DPTR,#DISTAB1
      AJMP ZHIEND
ZHI2:
      JNB 12H,ZHI3
      MOV DPTR,#DISTAB2
      AJMP ZHIEND
ZHI3:
      JNB 13H,ZHI4
      MOV DPTR,#DISTAB3
      AJMP ZHIEND
ZHI4:
      JNB 14H,ZHI5
      MOV DPTR,#DISTAB4
      AJMP ZHIEND
ZHI5:
      JNB 15H,ZHI6
      MOV DPTR,#DISTAB5
      MOV R3,34H
      LCALL BCDZH
      AJMP ZHIEND
ZHI6:
      JNB 16H,ZHI7
      MOV DPTR,#DISTAB6
      MOV R3,35H
      LCALL BCDZH
      AJMP ZHIEND
ZHI7:
      JNB 17H,ZHI8
      MOV DPTR,#DISTAB7
      MOV R3,36H
      LCALL BCDZH
      AJMP ZHIEND
ZHI8:
      JNB 18H,ZHI9
      MOV DPTR,#DISTAB8
      MOV R3,37H
      LCALL BCDZH
      AJMP ZHIEND
ZHI9:
      JNB 19H,ZHIEND
      MOV DPTR,#DISTAB9
      MOV R3,38H
      LCALL BCDZH
ZHIEND:
      RET
INT_LCD:
      LCALL DELAY5MS
      LCALL DELAY5MS
      LCALL DELAY5MS
      MOV A,#38H
      LCALL WCOM_NC;不检测忙信号
      LCALL DELAY5MS
      MOV A,#38H
      LCALL WCOM_NC
      LCALL DELAY5MS
      MOV A,#38H
      LCALL WCOM   ;忙检测
      LCALL DELAY5MS
      MOV A,#0CH
      LCALL WCOM
      LCALL DELAY5MS
      MOV A,#06H
      LCALL WCOM
      LCALL DELAY5MS
      MOV A,#01H
      LCALL WCOM
      LCALL DELAY5MS
      RET
WCOM_NC:;不忙检测子程序
      MOV P1,A
      CLR E
      NOP
      NOP
      CLR RS
      CLR RW
      SETB E
      LCALL DELAY250us
      CLR E
      RET
WCOM:;写指令子程序
      LCALL CHECKBUSY
      LCALL WCOM_NC
      RET
WDATE:;写数据子程序
      LCALL CHECKBUSY
      MOV P1,A
      CLR E
      NOP
      NOP
      SETB RS
      CLR RW
      SETB E
      LCALL DELAY250us
      CLR E
      RET
CHECKBUSY:;忙检测子程序
        PUSH ACC
        MOV P1,#0FFH
        CLR E
        NOP
        NOP
        CLR RS
        SETB RW
        SETB E
BUSYLOOP:
        NOP
        JB P1.7,BUSYLOOP
        CLR E
        POP ACC
        RET
BCDZH:
      PUSH DPH
      PUSH DPL
      MOV A,R3
      MOV B,#100
      DIV AB
      MOV 3BH,A
      MOV A,#10
      XCH A,B
      DIV AB
      MOV 3CH,A
      MOV 3DH,B
      MOV DPTR,#DISTABA
      MOV A,3BH
      MOVC A,@A+DPTR
      MOV 3BH,A
      MOV A,3CH
      MOVC A,@A+DPTR
      MOV 3CH,A
      MOV A,3DH
      MOVC A,@A+DPTR
      MOV 3DH,A
      POP DPL
      POP DPH
      RET
BOXING:
      RET
READKEY: MOV 20H,P2
READKEY0:
         JB 00H,READKEY1
         LCALL K0
READKEY1:
         JB 01H,READKEY2
         LCALL K1
READKEY2:
         JB 02H,READKEY3
         LCALL K2
READKEY3:
         JB 03H,READKEY4
         LCALL K3
READKEY4:
         JB 04H,READKEY5
         LCALL K4
READKEY5:
         JB 00H,READKEYEND
         LCALL K5
READKEYEND:
        RET
K0:;查看主目录键
   LCALL DELAY
   JB 00H,K0END
   SETB 08H
   CLR 0BH
   CLR 0CH
   CLR 0DH
   MOV 40H,#00H
   MOV 41H,#01H
   MOV 22H,#02H
   MOV 23H,#00H
K0END:
   RET
K1:;"+"
   LCALL DELAY
   JB 01H,K10
   LJMP K101
K10:LJMP K1END
K101:
   SETB 09H
   JNB 08H,K15
   CLR 0BH
   INC 41H
   MOV A,41H
K11:
   CJNE A,#01H,K12
   MOV 22H,#02H
   MOV 23H,#00H
   LJMP K1END
K12:
   CJNE A,#02H,K13
   MOV 22H,#04H
   MOV 23H,#00H
   LJMP K1END
K13:
   CJNE A,#03H,K14
   MOV 22H,#08H
   MOV 23H,#00H
   LJMP K1END
K14:
   MOV 22H,#10H
   MOV 23H,#00H
   MOV 41H,#00H
   LJMP K1END
K15:JNB 0CH,K111
    JNB 15H,K16
    MOV A,34H
    ADD A,#05H
    MOV 34H,A
    MOV R3,34H
    LJMP  K110
K16:JNB 16H,K17
    MOV A,35H
    ADD A,#05H
    MOV 35H,A
    MOV R3,35H
    LJMP K110
K17:JNB 17H,K18
    MOV A,36H
    ADD A,#05H
    MOV 36H,A
    MOV R3,36H
    LJMP K110
K18:JNB 18H,K19
    MOV A,37H
    ADD A,#05H
    MOV 37H,A
    MOV R3,37H
    LJMP  K110
K19:MOV A,38H
    ADD A,#05H
    MOV 38H,A
    MOV R3,38H
K110:;LCALL BCDZH
K111:
K1END:
   RET
K2:;"-"
   LCALL DELAY
   JB 02H,K200
   LJMP K201
K200:
   LJMP K2END
K201:
   SETB 0AH
   JNB 08H,K25
   CLR 0BH
   DEC 41H
   MOV A,41H
K21:
   CJNE A,#01H,K22
   MOV 22H,#02H
   MOV 23H,#00H
   MOV 41H,#05H
   LJMP K2END
K22:
   CJNE A,#02H,K23
   MOV 22H,#04H
   MOV 23H,#00H
   LJMP K2END
K23:
   CJNE A,#03H,K24
   MOV 22H,#08H
   MOV 23H,#00H
   LJMP K2END
K24:
   MOV 22H,#10H
   MOV 23H,#00H
   LJMP K2END
K25:
   JNB 0CH,K211
   JNB 15H, K26
   MOV A,34H
   CLR C
   SUBB A,#05H
   MOV 34H,A
   MOV R3,34H
   LJMP K210
K26:
   JNB 16H, K27
   MOV A,35H
   CLR C
   SUBB A,#05H
   MOV 35H,A
   MOV R3,35H
   LJMP K210
K27:
   JNB 17H, K28
   MOV A,36H
   CLR C
   SUBB A,#05H
   MOV 36H,A
   MOV R3,36H
   LJMP K210
K28:
   JNB 18H, K29
   MOV A,37H
   CLR C
   SUBB A,#05H
   MOV 37H,A
   MOV R3,37H
   LJMP K210
K29:
   MOV A,38H
   CLR C
   SUBB A,#05H
   MOV 38H,A
   MOV R3,38H
K210:;LCALL BCDZH
K211:
K2END:
   RET
K3:;查看波形键
   LCALL DELAY
   JB 03H,K3END
   SETB 0BH
   CLR 08H
   INC 40H
   MOV A,40H
   CJNE A,#01H,K31
   MOV 22H,#20H
   MOV 23H,#00H
   LJMP K3END
K31:
   CJNE A,#02H,K32
   MOV 22H,#40H
   MOV 23H,#00H
   LJMP K3END
K32:
   CJNE A,#03H,K33
   MOV 22H,#80H
   MOV 23H,#00H
   LJMP K3END
K33:
   CJNE A,#04H,K34
   MOV 22H,#00H
   MOV 23H,#01H
   LJMP K3END
K34:
   MOV 22H,#00H
   MOV 23H,#02H
   MOV 40H,#00H
K3END:
   RET
K4:;调节频率键
   LCALL DELAY
   JB 04H,K4END
   JNB 0BH,K4END
   SETB 0CH
   CLR 08H
   CLR 0DH
K4END:
    RET
K5:;调节占空比键
   LCALL DELAY
   JB 05H,K5END
   JNB 0BH,K4END
   SETB 0DH
   CLR 08H
   CLR 0CH
K5END:
    RET
TIMER0:PUSH ACC
       PUSH PSW
       PUSH DPH
       PUSH DPL
       MOV TH0 ,#3CH
       MOV TL0 ,#0AFH
       DJNZ R4,TIMEROEND
       CLR  10H
       SETB 11H
       CLR TR0
TIMEROEND:
       POP DPL
       POP DPH
       POP PSW
       POP ACC
       RETI
DELAY5MS:
        MOV 30H,#10
DELAY5MS1:
        MOV 31H,#125
        DJNZ 31H,$
        DJNZ 30H,DELAY5MS1
        RET
DELAY250us:
        MOV R7,#75
        DJNZ R7, $
        RET
DELAY:                                ;延时子程序
     MOV 32H,#00H
DELAY1:
     INC 32H
     MOV A,32H
     CJNE A,#200,DELAY2
     SJMP DELAYEND
DELAY2:
     MOV  33H,#200
     DJNZ 33H,$
     SJMP DELAY1
DELAYEND:
     RET

        ;Welcome
DISTAB0:DB 20H,20H,20H,20H,20H,57H,65H,6CH,63H,6FH,6DH,20H,20H,20H,20H,20H
        DB 20H,20H,20H,20H,20H,20H,20H,20H,20H,20H,20H,20H,20H,20H,20H,20H 
        ;主目录1  K0主目录  ,K1  +,K2-
DISTAB1:DB 20H,20H,20H,4DH,61H,69H,6EH,20H,6DH,65H,6EH,75H,20H,31H,2FH,34H
        DB 4BH,30H,3AH,4DH,65H,6EH,75H,20H,4BH,31H,3AH,2BH,4BH,32H,3AH,2DH 
        ;主目录2 K3 查看波形
DISTAB2:DB 4BH,33H,3AH,56H,69H,65H,77H,20H,57H,61H,76H,65H,66H,6FH,72H,6DH  
        DB 20H,20H,20H,20H,20H,20H,20H,20H,20H,20H,20H,20H,20H,32H,2FH,34H 
        ;主目录3 K4 调节频率
DISTAB3:DB 4BH,34H,3AH,46H,72H,65H,71H,75H,65H,6EH,63H,79H,28H,66H,29H,20H 
        DB 41H,64H,6AH,75H,73H,74H,6DH,65H,6EH,74H,20H,20H,20H,33H,2FH,34H
        ;主目录4 K5 调节占空比
DISTAB4:DB 4BH,35H,3AH,44H,75H,74H,79H,20H,43H,79H,63H,6CH,65H,28H,64H,29H
        DB 72H,65H,67H,75H,6CH,61H,74H,69H,6FH,6EH,20H,20H,20H,34H,2FH,34H
        ; 矩形波
DISTAB5:DB 52H,65H,63H,74H,61H,6EH,67H,75H,6CH,61H,72H,20H,77H,61H,76H,65H
        DB 66H,3AH,31H,30H,30H,48H,5AH,20H,64H,3AH,35H,30H,25H,20H,20H,20H
        ; 梯形波
DISTAB6:DB 41H,74H,72H,61H,70H,65H,7AH,6FH,69H,64H,61H,20H,77H,61H,76H,65H
        DB 66H,3AH,31H,30H,30H,48H,5AH,20H,64H,3AH,35H,30H,25H,20H,20H,20H
        ; 锯齿波
DISTAB7:DB 20H,20H,20H,20H,53H,61H,77H,74H,6FH,6FH,74H,68H,20H,20H,20H,20H
        DB 66H,3AH,31H,30H,30H,48H,5AH,20H,64H,3AH,20H,20H,20H,20H,20H,20H
        ; 三角波
DISTAB8:DB 54H,72H,69H,61H,6EH,67H,75H,6CH,61H,72H,20H,77H,61H,76H,65H,20H
        DB 66H,3AH,31H,30H,30H,48H,5AH,20H,64H,3AH,20H,20H,20H,20H,20H,20H
        ; 正弦波
DISTAB9:DB 20H,20H,20H,20H,20H,20H,53H,69H,6EH,65H,20H,20H,20H,20H,20H,20H
        DB 66H,3AH,31H,30H,30H,48H,5AH,20H,64H,3AH,20H,20H,20H,20H,20H,20H

DISTABA:;0到9的编码
         DB 30H,31H,32H,33H,34H,35H,36H,37H,38H,39H

END

⌨️ 快捷键说明

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