为了我们后面章节内容的讲解方便,先给大家来介绍一下DGUS Tool这个界面设计软件的使用,正所谓”磨刀不误砍柴工”,开发工具就是我们前进道路上的良友,只有做到知己知彼,才能发挥自如,”DGUS Tool”是迪文官方自己开发的一个绿色软件,免安装,将压缩包解压后就可以进行使用了。
1.例程设计2.1功能简介我们将利用DGUS Tool软件上的”16级灰度字库生成工具”来生成一个24大小的抗锯齿ASCII字库,然后利用” ts3字库生成工具”来生成一个GBK编码的24大小的汉字库,接着我们往DGUS Tool软件中只添加一个启动界面,此界面的背景图为一张空白的图片即可,然后在此界面中添加2个”文本显示”控件,我们通过C51代码让第一个”文本显示”控件显示” DGUS Tool软件”的文本内容,让第二个”文本显示”控件遍历显示GBK汉字库中的每一个汉字。
2.2 GUI界面设计 至于怎么去创建GUI项目工程,在第2章节中我们已经介绍过了,步骤也是比较简单的,在以后的章节中我们将不再重复叙述创建过程。
往DGUS Tool软件中添加一个启动界面,然后往此界面上放置2个”文本显示”控件。
2.3 C51代码设计我们可以直接利用在第1章节中已经创建好的C51项目工程模板,然后在此基础上进行修改一下,本章节例程的代码量比较少,我们就直接写在main函数中了,如下所示:
#include "sys.h"
#define FIRST_TXT "DGUS Tool软件\0\0" //必须以俩个字节的0x00或者俩个字节的0xFF为文本结束标记
xdata u8 i,j;
xdata u8 gbk_encode[4];//汉字的gbk编码
void main(void)
{
sys_init();//系统初始化
sys_write_vp(0x2000,FIRST_TXT,sizeof(FIRST_TXT)/2+1);//给第一个"文本显示"控件设置文本内容
//末尾2字节为文本结束标记
gbk_encode[2] = 0x00;
gbk_encode[3] = 0x00;
while(1)
{
//让第二个"文本显示"控件遍历显示汉字库中的每一个汉字
for(i=0x81;i<0xff;i++)
{
gbk_encode[0] = i;
for(j=0x40;j<0xfe;j++)
{
if(j==0x7f)//这个编码区域不存在汉字,直接跳过
continue;
gbk_encode[1] = j;
sys_write_vp(0x2032,gbk_encode,2);
sys_delay_ms(500);
}
}
}
}
这里有一个问题需要注意一下,那就是c51版的Keil软件在显示中文汉字时的一个bug,它会将汉字编码中的0xFD字节给忽略掉,导致我们的有些汉字在液晶屏上显示不出来,比如”三”, ”数”等汉字,解决办法有3个,如下所示:
(1) 从网络上下载补丁,此种方式有一定的风险,不推荐。
(2) 传入有问题的汉字的编码,而不要直接传汉字
正确写法: “\xCA\xFD学\0\0” 错误写法: “数学\0\0”
此种方式就是必须得知道相应汉字的编码,可以通过ASCII.exe工具转换得到汉字的编码。
(3) 在有问题的汉字后面追加一个0xFD字节,如 “数\xFD学\0\0”,这种方式最方便,推介使用。