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

📄 lcd2005.asm

📁 这个程序很好。有液晶。也有键盘。很具代表性
💻 ASM
字号:
;程序名:MCU2005
;功  能:XPH-3实验板液晶演示程序
;时  间:2005年6月
;字  模:阴码、逆向、列行式

;Designed by PP.T


;信号引脚及常量定义
LCDIR   EQU     0C000H
LCDDR   EQU     0E000H
cs1     BIT     p3.5
CS2     BIT     P1.0
RST     BIT     P2.6
XADR    EQU     0B8H
YADR    EQU     40H
X       EQU     23H
Y       EQU     24H
RAM     EQU     22H

        ORG     00H
        JMP     START


;主程序
START:
        ;初始化
        MOV     SP,#60H
        CLR     RST
        CALL    DELAY
        SETB    RST
        SETB    CS1
        SETB    CS2
        MOV     RAM,#3FH
        CALL    PUTIR
        MOV     RAM,#0C0H
        CALL    PUTIR
        ;清屏
        CALL    CLEAR
        CALL    CLEAR

        ;显示字符
        MOV     X,#01H
        MOV     Y,#14H
        MOV     DPTR,#hua
        CALL    DISP

        CALL    DELAY5
        CALL    DELAY5

        MOV     X,#01H
        MOV     A,#0FH
        ADD     A,Y
        MOV     Y,A
        MOV     DPTR,#zhong
        CALL    DISP

        CALL    DELAY5
        CALL    DELAY5

        MOV     X,#01H
        MOV     A,#0FH
        ADD     A,Y
        MOV     Y,A
        MOV     DPTR,#ke
        CALL    DISP

        CALL    DELAY5
        CALL    DELAY5

        MOV     X,#01H
        MOV     A,#0FH
        ADD     A,Y
        MOV     Y,A
        MOV     DPTR,#ji
        CALL    DISP

        CALL    DELAY5
        CALL    DELAY5

        MOV     X,#01H
        MOV     A,#0FH
        ADD     A,Y
        MOV     Y,A
        MOV     DPTR,#dada
        CALL    DISP

        CALL    DELAY5
        CALL    DELAY5

        MOV     X,#01H
        MOV     A,#0FH
        ADD     A,Y
        MOV     Y,A
        MOV     DPTR,#xue
        CALL    DISP

        CALL    DELAY5
        CALL    DELAY5

        ;显示EDA-IV实验系统
        MOV     X,#04H
        MOV     Y,#00H
        MOV     DPTR,#e
        CALL    DISP

        CALL    DELAY5
        CALL    DELAY5

        MOV     X,#04H
        MOV     Y,#0FH
        MOV     DPTR,#d
        CALL    DISP

        CALL    DELAY5
        CALL    DELAY5

        MOV     X,#04H
        MOV     Y,#1EH
        MOV     DPTR,#I
        CALL    DISP

        CALL    DELAY5
        CALL    DELAY5

        MOV     X,#04H
        MOV     Y,#2DH
        MOV     DPTR,#V
        CALL    DISP

        CALL    DELAY5
        CALL    DELAY5

        MOV     X,#04H
        MOV     Y,#3CH
        MOV     DPTR,#shi
        CALL    DISP

        CALL    DELAY5
        CALL    DELAY5

        MOV     X,#04H
        MOV     Y,#4BH
        MOV     DPTR,#yan
        CALL    DISP

        CALL    DELAY5
        CALL    DELAY5

        MOV     X,#04H
        MOV     Y,#5AH
        MOV     DPTR,#xi
        CALL    DISP

        CALL    DELAY5
        CALL    DELAY5

        MOV     X,#04H
        MOV     Y,#69H
        MOV     DPTR,#tong
        CALL    DISP

        CALL    DELAY6
        ;停机
        LJMP    START





;模块名:DISP
;参  数:X,Y  - 坐标
;        DPTR - 地址
;功  能:在X,Y的坐标显示一个16*16点阵的汉字或字符
;注  意:字模方向为 列行式,逆向
DISP:
        ;暂存坐标
        PUSH    X
        PUSH    Y
        ;行坐标
        MOV     R6,X
        ;共两行
        MOV     R4,#02H
   ROW:
        ;列坐标
        MOV     R7,Y

        ;设置片选信号
        SETB    CS1     ;设置为左边区域(默认)
        CLR     CS2
        ;CALL    DELAY

        CLR     C       ;判断显示的区域
        MOV     A,Y
        SUBB    A,#40H
        JC      ADDR

        ;设置为右边区域
        MOV     R7,A
        CLR     CS1
        SETB    CS2
        ;CALL    DELAY

        ;计算字符显示位置的起始地址
   ADDR:
        ;显示一行
        MOV     R5,#10H  ; 16 列
   COL:
        CLR     A
        MOV     A,#XADR  ;计算X坐标
        ADD     A,R6
        MOV     RAM,A    ;保存X坐标对应的地址
        CALL    PUTIR

        MOV     A,#YADR  ;计算Y坐标对应的地址
        ADD     A,R7
        MOV     RAM,A     ;保存Y坐标
        CALL    PUTIR

        CLR     A
        MOVC    A,@A+DPTR;写一列数据
        MOV     RAM,A
        CALL    PUTCHR

        INC     DPTR     ;修改指针
        INC     R7       ;修改Y地址

        CLR     C        ;检测是否超过#3F
        MOV     A,R7
        SUBB    A,#40H

        JC      NEXT     ;检测是否溢出

        ;溢出
        CLR     C        ;检测是哪个边界溢出
        MOV     C,CS1    ;检测左边界
        JNC     RIGHT
        ;左边界越界选通右边区域
        MOV     R7,A
        CLR     CS1
        ;CALL    DELAY1
        SETB    CS2


        SJMP    NEXT

        ;右边界越界选通左边区域
  RIGHT:
        MOV     R7,A
        SETB    CS1
        ;CALL    DELAY1
        CLR     CS2


   NEXT:DJNZ    R5,COL   ;判断是否已显示完一行?
        INC     R6       ;计算下一行地址
        DJNZ    R4,ROW   ;全部显示完了吗?
        ;恢复片选信号
        CLR     CS1
        CLR     CS2
        POP     Y
        POP     X
        RET



;模块名:PUTIR
;参  数:无
;功  能:向液晶发送写指令命令
;时  间:2004年7月
PUTIR:
        PUSH    DPH
        PUSH    DPL
        CALL    BUSY
        MOV     DPTR,#LCDIR
        MOV     A,RAM
        MOVX    @DPTR,A
        POP     DPL
        POP     DPH
        RET

;模块名:PUTCHR
;参  数:无
;功  能:向液晶发送写数据命令
;时  间:2004年7月
PUTCHR:
        PUSH    DPH
        PUSH    DPL
        CALL    BUSY
        MOV     DPTR,#LCDDR
        MOV     A,RAM
        MOVX    @DPTR,A
        POP     DPL
        POP     DPH
        RET


;模块名:BUSY
;参  数:无
;功  能:检测液晶忙状态
;时  间:2004年7月
BUSY:
        MOV     DPTR,#LCDIR
BUSY1:  MOVX    A,@DPTR
        ANL     A,#80H
        XRL     A,#80H
        JZ      BUSY1
        RET


;模块名:CLEAR
;参  数:无
;功  能:清屏
;时  间:2004年7月
CLEAR:
        SETB    CS1
        SETB    CS2
        MOV     R2,#08
        MOV     R4,#00
CLR0:   MOV     A,R4
        ADD     A,#XADR
        MOV     RAM,A
        CALL    PUTIR
        MOV     RAM,#YADR
        CALL    PUTIR
        MOV     R3,#64
CLR1:   MOV     RAM,#00H
        CALL    PUTCHR
        DJNZ    R3,CLR1
        INC     R4
        DJNZ    R2,CLR0
        MOV     RAM,#YADR
        CALL    PUTIR
        MOV     RAM,#XADR
        CALL    PUTIR
        CLR     CS1
        CLR     CS2
        RET


DELAY6: MOV     R5,#04FH
D6:     MOV     R6,#0FFH
D7:     MOV     R7,#0FFH
        DJNZ    R7,$
        DJNZ    R6,D7
        DJNZ    R5,D6
        RET




DELAY5: MOV     R6,#07FH
D5:     MOV     R7,#0FFH
        DJNZ    R7,$
        DJNZ    R6,D5
        RET



;模块名:DELAY
;参  数:无
;功  能:延时
;时  间:2004年7月
DELAY:  MOV     R6,#8
D1:     MOV     R7,#248
        DJNZ    R7,$
        DJNZ    R6,D1
        RET

;模块名:DELAY1
;参  数:无
;功  能:延时
;时  间:2004年7月
DELAY1: MOV     R6,#2
D2:     MOV     R7,#248
        DJNZ    R7,$
        DJNZ    R6,D2
        RET



;====字模====

DB 040H,040H,044H,054H,054H,054H,054H,07FH,054H,054H,054H,054H,044H,040H,040H,000H ; 
DB 000H,000H,000H,0FFH,015H,015H,015H,015H,015H,055H,095H,07FH,000H,000H,000H,000H ; "青" 0

DB 040H,040H,044H,054H,054H,0D4H,074H,05FH,054H,054H,0D4H,054H,054H,044H,040H,000H ; 
DB 004H,004H,002H,002H,07FH,04AH,04AH,04AH,04AH,04AH,07EH,001H,003H,006H,002H,000H ; "春" 1

DB 000H,002H,002H,002H,002H,082H,042H,0FEH,006H,042H,0C2H,082H,002H,003H,002H,000H ; 
DB 000H,008H,004H,002H,001H,000H,000H,07FH,000H,000H,000H,001H,007H,002H,000H,000H ; "不" 2

DB 000H,000H,0FEH,042H,02AH,011H,061H,080H,062H,01EH,042H,082H,042H,03EH,000H,000H ; 
DB 000H,000H,000H,0FFH,049H,049H,049H,07FH,049H,049H,049H,049H,0FFH,000H,000H,000H ; "留" 3

DB 000H,000H,0F8H,008H,008H,00CH,00BH,008H,008H,008H,008H,008H,0F8H,000H,000H,000H ; 
DB 000H,000H,07FH,021H,021H,021H,021H,021H,021H,021H,021H,021H,07FH,000H,000H,000H ; "白" 4

DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H ; 
DB 000H,000H,058H,038H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H ; "," 5

DB 000H,080H,060H,01EH,010H,010H,010H,010H,0FFH,012H,010H,010H,098H,010H,000H,000H ; 
DB 001H,040H,040H,041H,041H,041H,041H,041H,07FH,041H,041H,041H,041H,061H,040H,000H ; "生" 6

DB 040H,040H,0A0H,090H,0A8H,0A4H,0A2H,021H,0A2H,0A4H,0A8H,090H,0B0H,060H,020H,000H ; 
DB 000H,000H,03FH,008H,008H,008H,01FH,000H,0FFH,000H,010H,030H,01FH,000H,000H,000H ; "命" 7

DB 010H,060H,001H,0C6H,010H,012H,092H,072H,01EH,032H,052H,092H,092H,010H,010H,000H ; 
DB 004H,004H,0FFH,002H,022H,019H,040H,080H,07FH,008H,030H,000H,009H,033H,001H,000H ; "添" 8

DB 000H,040H,020H,0F0H,028H,027H,024H,0E4H,024H,034H,02CH,0E4H,000H,000H,000H,000H ; 
DB 000H,000H,000H,03FH,042H,042H,042H,043H,042H,042H,042H,043H,040H,078H,000H,000H ; "色" 9

DB 082H,08AH,0B2H,086H,0DBH,0A1H,091H,08DH,088H,020H,010H,008H,086H,064H,040H,000H ; 
DB 020H,010H,008H,006H,0FFH,002H,004H,058H,048H,020H,022H,011H,008H,007H,002H,000H ; "彩" 10


⌨️ 快捷键说明

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