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

📄 b12232.asm

📁 80c51单片机“验证式”点阵式LCD液晶显示屏
💻 ASM
字号:
 ;	“验证式”点阵式LCD液晶显示屏


        PD1     EQU  60	      ; ;模块参数
        COLUMN  EQU  30H
        PAGE1   EQU  31H	;;页地址寄存器
        CODE1   EQU  32H	;;字符代码寄存器
        COUNT   EQU  33H	;;计数器
        COM EQU 20H			;;指令寄存器
        DAT EQU 21H			;;数据寄存器
       CWADD1 EQU 0fa00H	;;写指令代码地址(E1)
CRADD1 EQU 0fa80H	;;读状态字地址(E1)
DWADD1 EQU 0fa40H	;;写显示数据地址(E1)
DRADD1 EQU 0fac0H	;;读显示数据地址(E1)
CWADD2 EQU 0f800H	;;写指令代码地址(E2)
CRADD2 EQU 0f880H	;;读状态字地址(E2)
DWADD2 EQU 0f840H	;;写显示数据地址(E2)
DRADD2 EQU 0f8c0H	;;读显示数据地址(E2)
        ORG 0000H
	  MOV	SP,#60H 
        LCALL INT			;;调用初始化子程序
        LCALL CLEAR			;;调用清屏子程序
        MOV PD1,#3DH		;;
        MOV PAGE1,#02H		;;页地址寄存器置初值
        MOV COLUMN,#0H		;;列地址寄存器置初值
        MOV CODE1,#00H		;;字符代码寄存器置初值
        LCALL CCW_PR		;;显示“武”
        MOV PAGE1,#02H
        MOV COLUMN,#0fH
        MOV CODE1,#01H
        LCALL CCW_PR		;;显示“汉”
        MOV PAGE1,#02H
        MOV COLUMN,#1eH
        MOV CODE1,#02H
        LCALL CCW_PR	        ;;显示“恒”
        MOV PAGE1,#2H
        MOV COLUMN,#2dH
        MOV CODE1,#03H
        LCALL CCW_PR		;;显示“科”
        MOV PAGE1,#2H
        MOV COLUMN,#61
        MOV CODE1,#04H
        LCALL CCW_PR		;;显示“电”
        MOV PAGE1,#2H
        MOV COLUMN,#76
        MOV CODE1,#05H
        LCALL CCW_PR		;;显示“子”
        MOV PAGE1,#2H
        MOV COLUMN,#91
        MOV CODE1,#06H
        LCALL CCW_PR		;;显示“教"
        MOV PAGE1,#2H
        MOV COLUMN,#106
        MOV CODE1,#07H
        LCALL CCW_PR		;;显示“仪"
        MOV PD1,#3DH		;;
        MOV PAGE1,#00H          ;;页地址寄存器置初值
        MOV COLUMN,#0H		;;列地址寄存器置初值
        MOV CODE1,#08H          ;;字符代码寄存器置初值
        LCALL CCW_PR		;;显示“感”
        MOV PAGE1,#00H
        MOV COLUMN,#0fH
        MOV CODE1,#09H
        LCALL CCW_PR		;;显示“谢”
        MOV PAGE1,#0H
        MOV COLUMN,#1eH
        MOV CODE1,#0aH
        LCALL CCW_PR	      ;;显示“您”
        MOV PAGE1,#0H
        MOV COLUMN,#2dH
        MOV CODE1,#0bH
        LCALL CCW_PR		;;显示“使”
        MOV PAGE1,#0H
        MOV COLUMN,#61
        MOV CODE1,#0cH
        LCALL CCW_PR		;;显示“用”
        MOV PAGE1,#0H
        MOV COLUMN,#76
        MOV CODE1,#0dH
        LCALL CCW_PR		;;显示“该”
        MOV PAGE1,#0H
        MOV COLUMN,#91
        MOV CODE1,#0eH
        LCALL CCW_PR		;;显示“产"
        MOV PAGE1,#0H
        MOV COLUMN,#106
        MOV CODE1,#0fH
        LCALL CCW_PR		;;显示“品"
        SJMP $
CCW_PR: MOV DPTR,#CCATB		;;确定字符字模块首地址
        MOV A,CODE1			;;取代码
        MOV B,#20H			;;字模块宽度为32个字节
        MUL AB				;;代码X32
        ADD A,DPL			;;字符字模块首地址=字模库首地址+代码X32
        MOV DPL,A
        MOV A,B
        ADDC A,DPH
        MOV DPH,A
        PUSH COLUMN			;;列地址入栈
        PUSH COLUMN			;;列地址入栈
        MOV CODE1,#00H		;;代码寄存器借用为间址寄存器
CCW_1:  MOV COUNT,#10H		;;计数器设定为16
        MOV A,PAGE1			;;读页地址寄存器
        ANL A,#03H
        ORL A,#0B8H			;;“或” 页地址设置代码
        MOV COM,A			;;写页地址设置指令
        LCALL PR0
        LCALL PR3
        POP COLUMN			;;取列地址值
        MOV A,COLUMN		;;读列地址寄存器
        CLR C
        SUBB A,#PD1			;;列地址-模块参数
        JC CCW_2			;;<0为左半屏显示区域(E1)
        MOV COLUMN,A		;;≥0为右半屏显示区域(E2)
        MOV A,PAGE1
        SETB ACC.3			;;设置区域标志位
        MOV PAGE1,A			;;“0”为E1,“1”为E2
CCW_2:  MOV COM,COLUMN		;;设置列地址值
        MOV A,PAGE1			;;判区域标志以确定设置哪个控制器
        JNB ACC.3,CCW_3
        LCALL PR3			;;区域E2
        LJMP CCW_4
CCW_3:  LCALL PR0			;;区域E1
CCW_4:  MOV A,CODE1			;;取间址寄存器值
        MOVC A,@A+DPTR		;;取汉字字模数据
        MOV DAT,A			;;写数据
        MOV A,PAGE1
        JNB ACC.3,CCW_5
        LCALL PR4			;;区域E2
        LJMP CCW_6
CCW_5:   LCALL PR1			;;区域E1
CCW_6:   INC CODE1			;;间址寄存器加1
        INC COLUMN			;;列地址寄存器加1
        MOV A,COLUMN		;;判列地址是否超出区域范围
        CJNE A,#PD1,CCW_7
CCW_7:  JC CCW_8			;;未超出则继续
        MOV A,PAGE1			;;超出则判是否在区域E2
        JB ACC.3,CCW_8		;;在区域E2则退出
        SETB ACC.3			;;在区域E1则修改成区域E2
        MOV PAGE1,A
        MOV COM,#00H		;;设置区域E2列地址为“0”
        LCALL PR3
CCW_8:  DJNZ COUNT,CCW_4	;;当页循环
        MOV A,PAGE1			;;读页地址寄存器
        JB ACC.7,CCW_9		;;判完成标志D7位,“1”则完成退出
        INC A				;;否则页地址加“1”
        SETB ACC.7
        CLR ACC.3
        MOV PAGE1,A
        MOV CODE1,#10H		;;间接寄存器设置为16
        LJMP CCW_1			;;大循环
CCW_9:  RET
ccAtB:  DB 20H,20H,24H,24H,24H,0E4H,26H,24H   ;“武”
        DB 20H,0FFH,20H,22H,2CH,20H,20H,00H
        DB 20H,60H,3FH,20H,20H,1FH,11H,11H
        DB 10H,03H,1CH,20H,40H,80H,0E0H,00H
        DB 10H,22H,64H,0CH,80H,04H,74H,84H    ; “汉”
        DB 04H,04H,04H,0C4H,3EH,04H,00H,00H
        DB 04H,04H,7EH,01H,80H,40H,20H,11H
        DB 0AH,04H,0BH,10H,60H,0C0H,40H,00H
        DB 80H,70H,00H,0FFH,10H,22H,0F2H,92H  ; “恒”
        DB 92H,92H,92H,92H,0FBH,12H,00H,00H
        DB 00H,00H,00H,0FFH,20H,20H,27H,24H
        DB 24H,24H,24H,24H,27H,30H,20H,00H
        DB 24H,24H,24H,0A4H,0FEH,0A3H,22H,00H ; “科”
        DB 24H,48H,00H,0FFH,00H,80H,00H,00H
        DB 10H,08H,06H,01H,0FFH,00H,01H,02H
        DB 02H,02H,02H,0FFH,01H,01H,01H,00H
        db 00h,0F8h,48h,48h,48h,48h,0FFh,48h    ; "电"
        db 48h,48h,48h,0FCh,08h,00h,00h,00h
        db 00h,07h,02h,02h, 02h,02h,3Fh,42h
        db 42h,42h,42h,47h, 40h,70h,00h,00h
        db 80h,80h,82h,82h,82h,82h,82h,0E2h      ;   "子"
        db 0A2h,92h,8Ah,86h,80h,0C0h,80h,00h
        db 00h,00h, 00h,00h,00h,40h,80h,7Fh
        db 00h,00h, 00h,00h,00h,00h,00h,00h
        db 20h,24h,24h,0A4h,0FFh,0A4h,0B4h,0ACh   ;  "教"
        db 20h,09Fh,10h,10h,0F0h,18h,10h,00h
        db 02h,12h,51h,90h,7Eh,0Ah,89h,40h
        db 20h,1Bh,04h,1Bh,60h,0C0h,40h,00h
        db  80h,40h,20h,0F8h,07h,00h,38h,0C0h     ;  "仪"
        db  02h,04h,0Ch,80h,60h,1Ch,00h,00h
        db  00,00,00,0FFh,80h,40h,20h,10h
        db  0Bh,04h,0Ah,11h,60h,0C0h,40h,00h
        DB 00H,0FCH,14H,0D4H,54H,54H,54H,0D4H     ;  "感"
        DB 14H,0FFH,04H,85H,66H,04H,00H,00H
        DB 04H,43H,30H,07H,72H,82H,8AH,93H
        DB 0B4H,82H,0E1H,12H,24H,64H,07H,00H
        DB 40H,42H,0CCH,00H,0FCH,56H,55H,54H      ;   "谢"
        DB 0FEH,24H,20H,20H,0FFH,20H,20H,00H
        DB 00H,00H,3FH,52H,2BH,12H,4AH,86H
        DB 7FH,01H,46H,80H,7FH,00H,00H,00H
        DB 40H,20H,10H,0FCH,23H,10H,8CH,67H       ;   "您"
        DB 04H,0F4H,04H,44H,94H,8CH,00H,00H
        DB 40H,30H,00H,77H,80H,81H,88H,92H
        DB 0B4H,83H,80H,0E0H,00H,11H,60H,00H
        DB 40H,20H,0F8H,07H,04H,0F4H,14H,14H      ;  "使"
        DB 14H,0FFH,14H,14H,14H,0F6H,04H,00H
        DB 00H,00H,0FFH,00H,80H,43H,45H,29H
        DB 19H,17H,21H,21H,41H,0C3H,40H,00H
        DB 00H,00H,0FEH,22H,22H,22H,22H,0FEH      ;   "用"
        DB 22H,22H,22H,22H,0FFH,02H,00H,00H
        DB 80H,60H,1FH,02H,02H,02H,02H,7FH
        DB 02H,02H,42H,82H,7FH,00H,00H,00H
        DB 40H,42H,0C4H,00H,04H,84H,0C4H,0B5H     ;   "该"
        DB 8EH,84H,84H,64H,04H,06H,04H,00H
        DB 00H,00H,7FH,20H,90H,88H,50H,48H
        DB 24H,13H,08H,14H,23H,0C0H,00H,00H
        DB 00H,08H,08H,88H,98H,0E8H,89H,8EH       ;   "产"
        DB 88H,0C8H,0A8H,98H,0CCH,88H,00H,00H
        DB 80H,40H,30H,0FH,00H,00H,00H,00H
        DB 00H,00H,00H,00H,00H,00H,00H,00H
        DB 00H,00H,00H,7EH,22H,22H,0A2H,22H       ;   "品"
        DB 22H,22H,22H,7FH,02H,80H,00H,00H
        DB 00H,0FFH,41H,41H,41H,41H,0FFH,01H
        DB 0FFH,41H,41H,41H,41H,0FFH,01H,00H
INT:    MOV COM,#0E2H		;;初始化子程序,复位
        LCALL PR0
        LCALL PR3
        MOV COM,#0A4H		;;关闭休闲状态
        LCALL PR0
        LCALL PR3
        MOV COM,#0A9H		;;设置1/32占空比
        LCALL PR0
        LCALL PR3
        MOV COM,#0A0H		;;正向排序设置
        LCALL PR0
        LCALL PR3
        MOV COM,#0C0H		;;设置显示起始行为第一行
        LCALL PR0
        LCALL PR3
        MOV COM,#0AFH		;;开显示设置
        LCALL PR0
        LCALL PR3
        RET
CLEAR:  MOV R4,#00H			;;清屏子程序,页面地址暂存器设置
CLEAR1: MOV A,R4			;;取页地址值
        ORL A,#0B8H			;;“或” 页面地址设置代码
        MOV COM,A			;;页面地址设置
        LCALL PR0
        LCALL PR3
        MOV COM,#00H		;;列地址设置为“0”
        LCALL PR0
        LCALL PR3
        MOV R3,#50H			;;一页清80个字节
CLEAD2: MOV DAT,#00H		;;显示数据为“0”
        LCALL PR1
        LCALL PR4
        DJNZ R3,CLEAD2		;;页内字节清零循环
        INC R4				;;页地址暂存器加1
        CJNE R4,#04H,CLEAR1	;;RAM区清零循环
        RET
PR0:    PUSH DPL			;;写指令代码子程序(E1)
        PUSH DPH
        MOV DPTR,#CRADD1
PR01:   MOVX A,@DPTR
        JB ACC.7,PR01
        MOV DPTR,#CWADD1
        MOV A,COM
        MOVX @DPTR,A
        POP DPH
        POP DPL
        RET
PR1:    PUSH DPL			;;写显示数据子程序(E1)
        PUSH DPH
        MOV DPTR,#CRADD1
PR11:    MOVX A,@DPTR
        JB ACC.7,PR11
        MOV DPTR,#DWADD1
        MOV A,DAT
        MOVX @DPTR,A
        POP DPH
        POP DPL
        RET
PR2:    PUSH DPL			;;读显示数据子程序(E1)
        PUSH DPH
        MOV DPTR,#CRADD1
PR21:   MOVX A,@DPTR
        JB ACC.7,PR21
        MOV DPTR,#DRADD1
        MOVX A,@DPTR
        MOV DAT,A
        POP DPH
        POP DPL
        RET
PR3:    PUSH DPL 			;;写指令代码子程序(E2)
        PUSH DPH
        MOV DPTR,#CRADD2
PR31:   MOVX A,@DPTR
        JB ACC.7,PR31
        MOV DPTR,#CWADD2
        MOV A,COM
        MOVX @DPTR,A
        POP DPH
        POP DPL
        RET
PR4:    PUSH DPL			;;写显示数据子程序(E2)
        PUSH DPH
        MOV DPTR,#CRADD2
PR41:    MOVX A,@DPTR
        JB ACC.7,PR41
        MOV DPTR,#DWADD2
        MOV A,DAT
        MOVX @DPTR,A
        POP DPH
        POP DPL
        RET
PR5:    PUSH DPL		;;读显示数据子程序(E2)
        PUSH DPH
        MOV DPTR,#CRADD2
PR51:   MOVX A,@DPTR
        JB ACC.7,PR21
        MOV DPTR,#DRADD2
        MOVX A,@DPTR
        MOV DAT,A
        POP DPH
        POP DPL
        RET
        end


⌨️ 快捷键说明

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