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

📄 system.asm

📁 单片机控制液晶显示汉字的程序
💻 ASM
字号:
LCDCOM EQU 7FF9H

LCDDAT EQU 7FF8H

; 显示1行汉字子程序
; 汉字语句位置编号DPTR;行号:R6 

PRHZ:     MOV 24H,DPH
           MOV 25H,DPL
           PUSH DPH
           PUSH DPL
           MOV A,DPH           ;计算页号
           RR A
           RR A
           ADD A,#9            ;从第9区开始存放每行字符的机内码
           ORL A,#0F0H
           MOV P1,A

           LCALL RL245          ;行号乘以32(每行32个字符)
           SETB 24H.7           ;数据地址位于8000H~0FFFFH
           MOV DPH,24H
           MOV DPL,25H
           MOV R0,#0E0H

           MOV R7,#30          ;连续取出30个字符至0E0H内部数据存储器
    PRHZ3:MOVX A,@DPTR
           MOV @R0,A
           INC R0
           INC DPTR
           DJNZ R7,PRHZ3

           MOV 1DH,#30         ;显示0E0H后的一行字符(共30个)
           MOV R5,#0           ;当前列R5
           MOV R0,#0E0H
           MOV A,#7FH          ;是否为ASCII码?
           CLR C
           SUBB A,@R0
           JC DPHZ1

           MOV 26H,@R0
           INC R0
           MOV 24H,R6          ;ASCII码显示
           MOV 25H,R5
           LCALL PRASCII
           SJMP PRHZ4

    DPHZ1:MOV 24H,@R0  	;是汉字则将机内码送24H25H
           INC R0
           MOV 25H,@R0
           INC R0
           MOV A,25H
           CLR C
           SUBB A,#0A1H        ;机内码转换为二进制的区码和位码
           MOV 25H,A
           MOV A,24H
           CLR C
           SUBB A,#0A1H
           LCALL DPONHZ          ;显示1个汉字
           DEC 1DH
           INC R5

    PRHZ4:INC R5
           DJNZ 1DH,PRHZ5
           POP DPL
           POP DPH
           RET

PR0:	   MOV DPTR,#LCDCOM       ;读状态
           MOVX A,@DPTR
           RET

PR01:     LCALL PR0       ;读、写一数据前
           JNB ACC.0,PR01
           JNB ACC.1,PR01
           RET

PR02:     LCALL PR0      ;连续读前
           JNB ACC.2,PR02
           RET

PR03:     LCALL PR0      ;连续写前
           JNB ACC.3,PR02      
           RET

PR1:      LCALL PR01      ;双字节参数R2,R3
           MOV A,R2
           LCALL PR14
     PR11:LCALL PR01     ;单字节参数R3
           MOV A,R3
           LCALL PR14
     PR12:LCALL PR01     ;无参数指令R4
           MOV A,R4
           SJMP PR15
     PR14:MOV DPTR,#LCDDAT
     PR15:MOVX @DPTR,A
           RET

RL245:    MOV R7,#5    ;24H25H左移5
     RLL1:CLR C
           MOV A,25H
           RLC A
           MOV 25H,A
           MOV A,24H
           RLC A
           MOV 24H,A
           DJNZ R7,RLL1
           RET
                                ;行位置R6(0~7),列位置R5(0~29),汉字区别24H,位码25H
DPONHZ:   MOV A,24H   ;显示1个汉字
           MOV B,#94           ;每区94个汉字
           MUL AB
           ADD A,25H
           MOV 25H,A
           CLR A
           ADDC A,B
           MOV 24H,A
           RR A                 ;获得32KB为1页的页号
           RR A
           ORL A,#0F0H
           MOV P1,A            ;页号送P1口
           LCALL RL245          ;汉字序号乘以32
           SETB 24H,7          ;因为存储器位于单片机系统的7FFFH~0FFFFH
           MOV DPH,24H
           MOV DPL,25H
           MOV R2,#32          ;在该位置连续取出32个字节
           MOV R1,#0C0H
    DPHZ2:MOVX A,@DPTR
           INC DPTR
           MOV @R1,A
           INC R1
           DJNZ R2,DPHZ2
           MOV R1,#0C0H
           MOV A,R6            ;根据行列位置计算LCD指针
           MOV B,#16
           MUL AB
           MUL B,#30
           MUL AB
           ADD A,R5
           MOV 25H,A
           MOV R2,A
           CLR A
           ADDC A,B
           MOV 24H,A
           MOV R3,A
           MOV 26H,#16         ;将取出的点阵送LCD显示
    PRHZ6:MOV R4,#24H
           LCALL PR1            ;双字节参数R2,R3
           MOV A,@R1
           MOV R3,A
           INC R1
           MOV R4,#0C0H
           LCALL PR11           ;单字节参数R3
           MOV A,@R1
           MOV R3,A
           INC R1
           MOV R4,#0C0H
           LCALL PR11
           MOV A,#30
           ADD A,25H
           MOV R2,A
           CLR A
           ADDC A,24H
           MOV R3,A
           MOV 24H,A
           DJNZ 26H,PRHZ6
           RET

⌨️ 快捷键说明

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