一种低成本汉字液晶显示的实现方法_第1页
一种低成本汉字液晶显示的实现方法_第2页
一种低成本汉字液晶显示的实现方法_第3页
一种低成本汉字液晶显示的实现方法_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、一种低成本汉字液晶显示的实现方法在智能仪表等小型单片机应用系统中,般采用发光二极管作功能提示,数码管显示数据。随着智能仪表功能的不断扩充和提高,这种显示方式逐渐不能满足需求。为系统添加一片液晶显示器作为显示设备, 显然能够很大程度扩展系统功能,提升产品的档次。若在液晶显示器上显示汉字信息, 如果采用带汉字库的液晶显示器会有一些弊端:成本高,汉字大小固定,缺乏一些特殊的功能函数。针对这种情况,本文分析了一种低成本的汉字液晶显示实现方法,并给出了其C 语言实现函数的源程序,以及汉字字符串提取程序和点阵字模提取程序的源程序。显示函数的实现中还重点设计了灵活的 putchar 函数,以便在程序中使用

2、printf函数作为显示输出函数。1 基本原理这种低成本汉字液晶显示实现方法的基本原理是:采用一片图形液晶显示器作为显示设备, 用软件实现汉字显示, 汉字点阵字模直接从汉字库中提取出来后写到程序 文件中。整个实现过程包括以下部分;汉字字符串的提取;汉字点阵字模的提取;图形液 晶显示器驱动程序设计;汉字显示函数及 putchar 函数的设计。2 汉字字符串及点阵字模的提取图形液晶显示器要显示汉字,必然需要汉字点阵字模,而要提取汉字点阵字模必 须首先从程序中提取要显示的汉字字符串。 一个汉字以两个字节的数据表示, 这两个字节的数据有一个共同的特点就是数据最高位是“1 ”,这是与其他字符区分的重要1

3、”特征。在 C 程序中,要显示的字符一般以双引号作为起始和终止,因此设计汉字字 符串提取程序时只需要判断开始双引号和结束双引号之问的字符,将最高位为“C 源程序 FIND_CH C ,的字符提取出来保存到另一汉字字符串文本文件中即可。运行时可在命令行带多个 C 程序的文件名,输出汉字字符串文本文件到 STRINGCH TXT 中。汉字字符串提取出来后,就将针对这些汉字从字库中提取其对应的点阵字模了。在此之前,先要设计保存这些点阵字模数据的方式,即数据结构。图形显示的每一个 点对应用一位表示,对于不同点阵的字库,需要的数据字节长度是不相同的: 的点阵英文字母需要 8 X 8/88个字节;12 X

4、 12的点阵汉字需要 12 X 12/8=18个字节16 X 16的点阵汉字需要 16 X 16/8=32个字节;24 X 24的点阵汉字需要 24X248=96 个字节。生成的点阵字模数据,可以用 H 头文件的形式存储,以上字库 对应为: EN8X8 H; C12X12 H; C16X16 H; C24X24 H 。文件中首先定义包 含的汉字数目,例如 C12X12 H 中:#define chl2x12_num 5GB 码信息数组,将汉字 G表明本 12*12 点阵字库中有 50个汉字。因为只提取了需要的汉字字模数据, 并且 将重复的字剔除掉。为了方便索引,在汉字字库建立汉字B 码的两字节

5、数据用 unsigned int 表示,例如 C12X12 H 中:code unsigned int chl2x12_codechl2x12num=0xalal ,0xbaba , 0xd7d6 ,0xd2ba , 0xbea7, *汉字液晶 *注意:在数据中总要预留 1 个汉字的空格 (Oxalal), 以便在以后程序设计时遇到显示没有找到字模数据的汉字时,显示空格,它对应的数据是全空。在汉字GB 码信息数据后注释行中写入了对应汉字,以方便阅读。接下来的汉字点阵字模数据以二维数组表示:code unsigned char ehl2x12_datehl2x12_num18=*汉字 12X 1

6、2 点阵库 *Ox00 , 0x00,0x00,0x00 , 0x00 , 0x00 , 0x00 0x00 ,Ox00 0x00,0x00 ,Ox00 , 0x00,Ox00,Ox00 , 0x00,0x00 ,0x00, *(BABA) :88926418021e628262H0200201f20488884*0x88 ,0x92 ,0x64 ,0x18 ,0x02 ,0xle,0x62 ,0x82 ,0x62,OxIf,0x02,Ox00 ,Ox20,Oxlf,0x20,0x48,0x88,0x84, *字 (D7D6) : 0886828a8a8bcaaa9a82ca86f000000

7、00408*0x08,0x86 ,0x82 ,0x8a ,0xSa ,0x8b ,0xca ,0xaa ,Ox9a,Ox82,0xca ,0x86 ,0xf0 ,0x00 , 0x00,Ox00 , Ox04 , Ox08), *液 (D2BA) : 88d22450e49c44a75c947404805f20508f88*0x88 ,Oxd2 , 0x24 ,Ox50 0xe4 , 0x9c ,0x44 ,Oxa7, Ox5c , Ox94 , 0x74 ,0x04,0x80,0x5f,0x20,0x50 ,0x8f ,0x88 ,/ *晶(BEA7) : 00c0405fd51515d55

8、f40c00000ff5555ff00*0x00 ,0xc0 ,0x40 0x5f ,0xd5 , 0x1 5 , 0x1 5 ,0xd5 ,0x5f ,0x40 , 0xc0 0x00 , 0x00 , Oxff . 0x55 , 0x55 , 0xff, 0x00):为了方便阅读和使用,除了对每个汉字将其GB码写入注释外,还将其数据直接写到注释中。提取字模程序的 C源程序MK_CHIJIB . C,运行时除了在命令行参数中输入汉字字符串文本文件名之外,缺省字库16 X 16点阵,以参数 S指定为12 X 12点阵,以参数H指定为24 X 24点阵。笔者发现Keil_C51(V7 . 0以前

9、的版本)在编译时,字符串中汉字GB码第二字节如果为0xfd ,会错误地被忽略,造成显示错误。因此,在汉字点阵字模数据头文件内 的注释中,对应的 GB码后加入了一个“ !”,以提示程序员在 C程序的字符串中以 X? xfd替换相应的字符。3液晶驱动程序设计以常用的12864液晶模块为例,它与 51单片机的接口非常简单。一般12864模块接口信号线的功能如表 1所列。引赳m爭号连接说明1VSS接电源地2VDD接正电源3V0接负压岀人川I用电位器抽头连S到18 W和地之间1DI选状态可接到高地址P2.05RW选择1一读曲一写.可接到PR6(WR)6E选择1 允许一三态可接到P3"同F3+7

10、与非后输出7-14DBn8位据线,可接列数据口 P015CS1选#左半*可接到高地址PN316CS2选择右半,可接到髙地址P2.417RST港晶夏位控制¥可接到控制U PL018VEE片上负压输出,用于驱动3脚VO19BL1背光控制,可搖到控制口 HL 1如果采用以上方法连接以后,编写驱动程序时就可用以下地址。左右半部操作时:数据地址0xffff ,状态地址 0xfeff 。仅左半部操作时:数据地址Oxefff ,状态地址 Oxeeff仅右半部操作时:数据地址0xf7fff ,状态地址 0xf6ff 。驱动程序除提供复位、开关显示、整屏填充、画点、读写显存等基础函数外,还 提供了显示

11、位置设定、英文显示、各点阵汉字显示、显示输出函数等。驱动程序源程 序为 kddrv . c 及 Icdd rv. h 和 deL_port . h。4 汉字显示函数设计C 语言程序员都非常熟悉和习惯使用 printf 系统输出函数, 在汉字显示函数设计时 尽量利用 printf 函数的功能,方便程序设计。在 KeiI_C5I 中, printf 函数词用 putcha r 函数完成数据输出,而缺省的 putchar 函数是将数据通过串口输出。我们可以通过 设计自己的 putchar 函数来实现输出送到液晶显示。在 KeiI-C51 的 LIB 子目录下有一个 putchaI c 文件,提供了一个串口输出数据的putchar 函数源程序。通过修改 putchaI 函数,设置一个标志变量,当需要将数据送 液晶显示时,设置

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论