访问电脑版页面

导航:老古开发网手机版其他

经验谈:国标点阵汉字库的快速访问方法

导读:
关键字:
经验谈:国标点阵汉字库的快速访问方法 在单片机应用系统中,常常需要汉字显示和打印功能,而对于8位或16位单片机来说,数据处理能力较弱,若采用矢量字库则速度太慢,因此,在单片机系统中采用国标点阵汉字库。汉字点阵存放在相应容量的存储器中。 点阵汉字库可以存放不同的字体,如宋体、仿宋体、楷体、黑体等。字库中的字模大小通常有16×16点阵、24×24点阵和32×32点阵等。在大多数单片机应用中,通常采用16×16点阵的宋体字库。 1 国标码与汉字库地址转换关系 16点阵汉字库地址线有18根,其中低四位(CA0~CA3)为同一个汉字(或字符)点阵的内部地址(对应于16个地址);最高地址线A17为汉字(或字符)点阵左右半R/\ L的控制位,其余13根的地址线CA4~CA16确定汉字(或字符)的起始地址。其中,CA9~CA10及CA12~CA16要求由国标码转换而成;CA4~CA8、CA11直接由国标码的GBL_D0~GBL_D4、GBH_D0位产生。 国标码与汉字库地址之间的转换关系实质上体现了字库排列结构,这种转换关系既可用程序实现,也可用可编程逻辑器件,如:通用阵列逻辑芯片GAL。 下面列出该转换关系的逻辑表达式(ABEL语言格式),其中GBH_D6~GBH_D0和GBL_D6~GBL_D0,分别是国标码的高、低两字节的有效位。 !CA16=GBH_D4 &GBH_D5 &!GBH_D6 #!GBH_D4 &!GBH_D5 &GBH_D6 #!GBH_D3 &GBH_D5 &!GBH_D6 #GBH_D1 &GBH_D5 &!GBH_D6 ; !CA15=!GBL_D6 &GBH_D4 &GBH_D5 #!GBL_D6 &!GBH_D6 #GBH_D3 &GBH_D5 &!GBH_D6 #GBH_D4 &GBH_D5 &!GBH_D6 #GBH_D4 &!GBH_D5 &GBH_D6 ; !CA14=!GBL_D5 &!GBH_D3 &!GBH_D6 #!GBH_D3 &!GBH_D4 &GBH_D6 #!GBH_D3 &!GBH_D5 &GBH_D6 #!GBH_D3 &GBH_D4 &GBH_D5 &!GBH_D6 #!GBL_D5 &!GBH_D5 &!GBH_D6 #GBH_D3 &!GBH_D4 &GBH_D5 &!GBH_D6 #!GBL_D5 &GBH_D4 &GBH_D5 &GBH_D6 ; !CA13=!GBH_D2 &!GBH_D5 #!GBH_D2 &!GBH_D3 #!GBH_D2 &GBH_D4 #!GBH_D2 &GBH_D6 #!GBL_D6 &GBH_D3 &!GBH_D4 &GBH_D5 &!GBH_D6 ; !CA12=!GBH_D1 &!GBH_D5 #!GBH_D1 &!GBH_D3 #!GBH_D1 &GBH_D4 #!GBH_D1 &GBH_D6 #!GBL_D5 &GBH_D3 &!GBH_D4 &GBH_D5 &!GBH_D6 ; !CA10=!GBL_D6 #GBH_D4 &GBH_D5 &GBH_D6 #!GBH_D4 &!GBH_D6 #!GBH_D5 &!GBH_D6 ; !CA9=!GBL_D5 #GBH_D4 &GBH_D5 &GBH_D6 #!GBH_D4 &!GBH_D6 #!GBH_D5 &!GBH_D6 ;2 80C31快速访问点阵汉字库的方法 80C31是一种常用的单片机,应用非常广泛。这里提出一种80C31快速访问16点阵汉字库的实现方案,如图1所示,在实际应用中效果良好。 图180C31快速访问汉字库的电路简图表1指令对比一览表 80C31软件产生CA0~CA3〖〗计数器产生CA0~CA3MOVR0, #10H ;计数长度为16 MOVR1, #40H;点阵数据存放的起始位置 MOVDPTR,#ClibAddress;字库地址 LoopRead: MOVX A, @DPTR MOV@R1,A INCDPTR INCR1 DJNZ R0,LoopRead RET;读完16字节返回〖〗MOVR0,#10H;计数长度为16 MOVR1,#40h;点阵数据存放的起始地址 MOVDPTR,#ClibAddress;字库地址 LoopRead: MOVX A, @DPTR MOV@R1,A;INC DPTR指令功能由硬件自动实现 INCR1 DJNZ R0,LoopRead RET;读完16字节返回 快速访问汉字库的关键在于用异步清零计数器74LS161代替CPU 80C31产生汉字(或字符)点阵的内部地址,以寻址汉字(或字符)点阵的16个字节。电路加电后,程序通过/ReadCLR将计数器状态初始化为零。程序每读一字节点阵数据,计数器自动加1,读完16字节后计数器还原到0,使计数器状态恢复到初始状态。完成这样程序访问速度明显加快,如表1所列。 这种快速访问方案中,CPU读取16字节点阵数据时,程序可省去INC DPTR。INC DPTR指令循环执行16次,因此节省时间2μs×16=32μs(80C31工作频率为12MHz)。这在对CPU执行时间有非常严格限制的情况下,是一种很好的办法。该电路已经应用于80C31软件扫描的LED点阵屏产品中,效果非常好。 (中南大学、湖南计算机股份有限公司黄深喜) (中南大学樊晓平) (长沙电力学院杨安平)
来源:单片机与嵌入式系统应用   作者:中南大学 湖南计算机股份有限公司 黄深喜;中南大学 樊晓平;长沙电力学院 杨安平  2006/2/12 0:00:00
栏目: [ ]

相关阅读

安森美推出新的高功率图腾柱PFC控制器,满足具挑战的能效标准

动态功耗低至60μA/MHz!助力设备超长续航,首选国民技术低功耗MCU!