单片机系统中的汉字显示

[09-12 17:48:40]   来源:http://www.88dzw.com  单片机学习   阅读:8338

文章摘要:首先提取16×16的国标汉字点阵和8×16的ASCII码点阵(如UCDOS软件中的HZK16和ASC16)并将其直接写入29F040。其中HZK16(共256KB)点0~7页。为了便于编程,ASC16虽然只有4KB,也单独占用第8页。其余剩下的空间用来存储汉字语句的编码。由于240×128点阵的LED显示器每个只能显示15个汉字(16×16点阵汉字),即30个字节。所以可将需要显示的语句按30个字节为1行进行编写,不足30个字符的则补空格。在PC机上进行录入时,每行30个字符再加上回车键和换行符,实占32个字符。所录入的语句以纯文本形式存盘,再将该文本文

单片机系统中的汉字显示,标签:单片机开发,单片机原理,单片机教程,http://www.88dzw.com

首先提取16×16的国标汉字点阵和8×16的ASCII码点阵(如UCDOS软件中的HZK16和ASC16)并将其直接写入29F040。其中HZK16(共256KB)点0~7页。为了便于编程,ASC16虽然只有4KB,也单独占用第8页。其余剩下的空间用来存储汉字语句的编码。

由于240×128点阵的LED显示器每个只能显示15个汉字(16×16点阵汉字),即30个字节。所以可将需要显示的语句按30个字节为1行进行编写,不足30个字符的则补空格。在PC机上进行录入时,每行30个字符再加上回车键和换行符,实占32个字符。所录入的语句以纯文本形式存盘,再将该文本文件以二进制的形式写入29F040的第9页。那么,以后根据需要显示的语句行号便可以进行正确的显示。此,作者推出荐使用DOS版本的WPS软件的“编辑非文收文件”功能,它能清楚地显示每行是否有30个字符。

根据以上原则,显示1行汉字的具体程序框图如图2所示。

为方便读者,将已经在实际应用中中通过的汇编子程序列出如下(关于LCD控制器T6963的用户法请见参考文献1)。

LCDCOM EQU 7FF9H

LCDDAT EQU 7FF8H

;显示1行汉字子程序

;汉字语句位置编号DPTR;行号:R6 PRHZ:MOV 24H,DPH

MOV 25H,DPL

PUSH DPH

PUSH DPL

MOV A,DPH ;计算页号

RR A

RR A

ADD A,#9;从第9区开始存放每行字符的机内码

ORL A,#0F0H

MOV P1,A

LCALL RL245 ;行号乘以32(每行32个字符)

SETB 24H,7 ;数据地址位于8000H~0FFFFH

MOV DPH,24H

MOV DPL,25H

MOV R0,#0E0H

MOV R7,#30 ;连续取出30个字符至0E0H内部数据存储器

PRHZ3:MOVX A,@DPTR

MOV @R0,A

INC R0

INC DPTR

DJNZ R7,PRHZ3

MOV 1DH,#30 ;显示0E0H后的一行字符(共30个)

MOV R5,#0 ;当前列R5

MOV R0,#0E0H

MOV A,#7FH ;是否为ASCII码?

CLR C

SUBB A,@R0

JC DPHZ1

MOV 26H,@R0

INC R0

MOV 24H,R6 ;ASCII码显示

MOV 25H,R5

LCALL PRASCII

SJMP PRHZ4

DPHZ1:MOV 24H,@R0 ;是汉字则将机内码送24H25H

INC R0

MOV 25H,@R0

INC R0

MOV A,25H

CLR C

SUBB A,#0A1H ;机内码转换为二进制的区码和位码

MOV 25H,A

上一页  [1] [2] [3] [4]  下一页


Tag:单片机学习单片机开发,单片机原理,单片机教程单片机学习
分类导航
最新更新
热门排行