📄 st7920.txt
字号:
;************************************************************
;ST7920的测试程序,该程序使用并口,可测试128×64点阵。其接口为
;RS---P3.3 R/W---P3.1 E---------P3.0 DB0~7-----P1
;************************************************************
RS EQU P3.0
RW EQU P3.1
E EQU P3.3
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 P1,A
MOV P1,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 P1,A
MOV P1,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 ;"这里是16*8点阵的字符代码"
TABLE1: DB
TABLE2: DB ;结束
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -