📄 12864.asm
字号:
;************************************************************
;ST7920的测试程序,该程序使用并口,可测试128×64点阵。其接口为
;RS---P2.5 R/W---P2.6 E---------P2.7 DB0~7-----P0
;重庆电子网 www.cqmcu.com QQ 444011745 469040972
;************************************************************
RS EQU P2.5
RW EQU P2.6
E EQU P2.7
ORG 0000H
AJMP START
;主程序
ORG 0100H
START:
MOV IE,#81H ;EXT. INT0 PERMIT
MOV IP,#01H ;INT0 IS FIRST INT. LEVEL
MOV TCON,#00H ;TIMER/COUNTER CONTROLER INIT.
MOV SP, #67h
LCALL DELAY
LCALL DELAY
LCALL SETUP
MOV A,#80H ;第一,三行汉字测试
LCALL WRITE_COM
MOV DPTR,#CHINESE1
LCALL WRITE_HZ
MOV A,#90H ;第二,四行汉字测试
LCALL WRITE_COM
MOV DPTR,#CHINESE2
LCALL WRITE_HZ
LCALL DELAY
LCALL DELAY
LCALL DELAY
LCALL DELAY
LCALL DELAY
LCALL DELAY
LCALL DELAY
LCALL DELAY
LCALL DELAY
LCALL DELAY
MOV A,#80H ;第一,三行字符测试
LCALL WRITE_COM
MOV DPTR,#TABLE1
LCALL WRITE_ASCII
MOV A,#90H ;第二,四行字符测试
LCALL WRITE_COM
MOV DPTR,#TABLE2
LCALL WRITE_ASCII
LCALL DELAY
LCALL DELAY
LCALL DELAY
LCALL DELAY
LCALL DELAY
LCALL DELAY
LCALL DELAY
LCALL DELAY
LCALL DELAY
LCALL DELAY
AAA: LJMP START
;初始化
SETUP:
LCALL DELAY
LCALL DELAY
LCALL DELAY
MOV A,#01H ;清除显示
LCALL WRITE_COM
MOV A,#00110000B ;8位MPU控制界面,基本指令集动作
LCALL WRITE_COM
MOV A,#00000010B ;DDRAM的计数器(AC)到"00H",降游标移动到开头原点位置
LCALL WRITE_COM
MOV A,#00000100B ;
LCALL WRITE_COM
MOV A,#00001100B ;DISPLAY ON
LCALL WRITE_COM
MOV A,#00000001B ;CLEARING SCREEN
LCALL WRITE_COM
MOV A,#10000000B ;SET DDRAM ADDRESS
LCALL WRITE_COM
RET
;写指令
WRITE_COM:
LCALL DELAY
CLR RS
CLR RS
CLR RW
CLR RW
MOV P0,A
MOV P0,A
SETB E
SETB E
NOP
NOP
CLR E
CLR E
RET
;写显示数据
WRITE_DAT:
LCALL DELAY1
SETB RS
SETB RS
CLR RW
CLR RW
MOV P0,A
MOV P0,A
SETB E
SETB E
NOP
NOP
CLR E
CLR E
RET
;延时1×1+16×1+16×16×2+16×2+1×2=563us
DELAY1:
MOV R7,#10H
D11: MOV R6,#10H
DJNZ R6,$
DJNZ R7,D11
RET
;延时1×1+256×1+256×256×2+256×2+1×2=131843us
DELAY:
MOV R1,#00H
D2: MOV R2,#00H
DJNZ R2,$
DJNZ R1,D2
RET
;写32个字符到128×64液晶模块,前16个汉字在第一(二)行,后16个汉字在第三(四)行。
WRITE_ASCII:
MOV R4,#32
DDDD: CLR A
MOVC A,@A+DPTR
LCALL WRITE_DAT
INC DPTR
DJNZ R4,DDDD
RET
;写16个汉字到128×64液晶模块,前8个汉字在第一(二)行,后8个汉字在第三(四)行。
WRITE_HZ:
MOV R4,#16
DD: CLR A
MOVC A,@A+DPTR
LCALL WRITE_DAT
INC DPTR
CLR A
MOVC A,@A+DPTR
LCALL WRITE_DAT
INC DPTR
DJNZ R4,DD
RET
;定位,使汉字代码以偶字节开始
ORG 1000H
;"这里是16*16点阵的汉字代码表"
CHINESE1: DB "重庆电子网—--—"
CHINESE2: DB "黑金刚51单片机学习板"
;"这里是16*8点阵的字符代码"
TABLE1: DB "www.cqmcu.com"
TABLE2: DB "QQ:444011745 469040972 "
;结束
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -