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

📄 hzout.asm

📁 单片机程序设计基础 随书光盘
💻 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 + -