📄 hzout.asm
字号:
;点阵汉字显示算法
BUF EQU 5000H ;图形显示缓冲区的首址(在片外RAM中)。
WIDTH EQU 20 ;液晶显示屏每行图形所占字节数。
HZ DATA 40H ;待显示汉字的编码的存放单元。
X DATA 41H ;显示位置横向坐标(字节数) 的存放单元。
Y DATA 42H ;显示位置纵向坐标(行数) 的存放单元。
ORG 0000H
LJMP TEST
ORG 100H
TEST: MOV DPTR,#BUF;初始化显示缓冲区(清屏)
CLR A
MOV R2,#10
MOV R3,#0
CLEAR: MOVX @DPTR,A
INC DPTR
DJNZ R3,CLEAR
DJNZ R2,CLEAR
MOV HZ,#0 ;编码为0的汉字("单")
MOV X,#4 ;横向坐标为4个字节
MOV Y,#24 ;纵向坐标为24行
LCALL HZOUT ;将该汉字的点阵信息填入显示缓冲区中
MOV HZ,#1 ;编码为0的汉字("片")
MOV X,#9 ;横向坐标为9个字节
MOV Y,#24 ;纵向坐标为24行
LCALL HZOUT ;将该汉字的点阵信息填入显示缓冲区中
MOV HZ,#2 ;编码为0的汉字("机")
MOV X,#14 ;横向坐标为14个字节
MOV Y,#24 ;纵向坐标为24行
LCALL HZOUT ;将该汉字的点阵信息填入显示缓冲区中
LCALL LCD ;将图形显示缓冲区的内容传送到液晶显示屏
STOP: LJMP STOP
HZOUT: MOV DPTR,#BUF;取图形显示缓冲区的首址。
MOV A,Y ;取汉字显示位置的纵向坐标。
MOV B,#WIDTH;乘以每行图形所占字节数。
MUL AB
ADD A,X ;加上汉字显示位置的横向坐标。
JNC HZOUT1
INC B
HZOUT1: ADD A,DPL ;累加到首址上。
MOV R0,A
MOV A,DPH
ADDC A,B
MOV P2,A ;求得在图形显示缓冲区中的写入首址。
MOV DPTR,#HZFNT;取小型汉字点阵库的首址。
MOV A,HZ ;取待显示汉字的编码。
MOV B,#20H ;每个汉字有32个字节的字模信息。
MUL AB ;计算待显示汉字字模的偏移量。
ADD A,DPL ;累加到首址上。
MOV DPL,A
MOV A,DPH
ADDC A,B
MOV DPH,A ;求得待显示汉字字模的存放地址。
MOV R2,#10H ;每个汉字高度为16行。
HZOUT2: CLR A ;将一个字节字模信息写入显示缓冲区
MOVC A,@A+DPTR
MOVX @R0,A
INC DPTR ;调整字模指针
INC R0 ;调整显示缓冲区指针
CJNE R0,#0,HZOUT3
INC P2
HZOUT3: CLR A ;再将一个字节字模信息写入显示缓冲区
MOVC A,@A+DPTR
MOVX @R0,A
INC DPTR ;调整字模指针
MOV A,R0 ;将显示缓冲区的指针调整到下一行
ADD A,#WIDTH-1
MOV R0,A
JNC HZOUT4
INC P2
HZOUT4: DJNZ R2,HZOUT2;处理完16行
MOV A,X ;横向坐标右移一个汉字
ADD A,#2
MOV X,A
SUBB A,#WIDTH
JC HZOUT5 ;移出屏幕否?
MOV X,#0 ;回车
MOV A,Y
ADD A,#10H ;换行(一个汉字行为16个点阵行)
MOV Y,A
HZOUT5: RET
LCD: NOP ;液晶显示屏驱动子程序(省略)
RET
HZFNT: DB 10H,10H,08H,20H ; 单
DB 04H,48H,3FH,0FCH
DB 21H,08H,21H,08H
DB 3FH,0F8H,21H,08H
DB 21H,08H,3FH,0F8H
DB 21H,00H,01H,04H
DB 0FFH,0FEH,01H,00H
DB 01H,00H,01H,00H
DB 00H,80H,20H,80H ; 片
DB 20H,80H,20H,80H
DB 20H,84H,3FH,0FEH
DB 20H,00H,20H,00H
DB 3FH,0C0H,20H,40H
DB 20H,40H,20H,40H
DB 20H,40H,20H,40H
DB 40H,40H,80H,40H
DB 10H,00H,10H,10H ; 机
DB 11H,0F8H,11H,10H
DB 0FDH,10H,11H,10H
DB 31H,10H,39H,10H
DB 55H,10H,51H,10H
DB 91H,10H,11H,10H
DB 11H,12H,12H,12H
DB 14H,0EH,18H,00H
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -