老古开发网首页
导航:老古开发网首页文章索引索引第2692页文章分类显示技术第14页→[一种低成本汉字液晶显示的实现方法]
| -文章搜索 - 最新文章 - |

第12302篇:一种低成本汉字液晶显示的实现方法

发布时间:2006年9月4日 点击次数:1410
来源:   作者:四川海力电子仪表制造公司 魏东
 

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

    1 基本原理

    这种低成本汉字液晶显示实现方法的基本原理是:采用一片图形液晶显示器作为显示设备,用软件实现汉字显示,汉字点阵字模直接从汉字库中提取出来后写到程序文件中。

    整个实现过程包括以下部分;汉字字符串的提取;汉字点阵字模的提取;图形液晶显示器驱动程序设计;汉字显示函数及putchar函数的设计。

    2 汉字字符串及点阵字模的提取

    图形液晶显示器要显示汉字,必然需要汉字点阵字模,而要提取汉字点阵字模必须首先从程序中提取要显示的汉字字符串。一个汉字以两个字节的数据表示,这两个字节的数据有一个共同的特点就是数据最高位是“1”,这是与其他字符区分的重要特征。在C程序中,要显示的字符一般以双引号作为起始和终止,因此设计汉字字符串提取程序时只需要判断开始双引号和结束双引号之问的字符,将最高位为“1”的字符提取出来保存到另一汉字字符串文本文件中即可。C源程序FIND_CH.C,运行时可在命令行带多个C程序的文件名,输出汉字字符串文本文件到STRINGCH.TXT中。

    汉字字符串提取出来后,就将针对这些汉字从字库中提取其对应的点阵字模了。在此之前,先要设计保存这些点阵字模数据的方式,即数据结构。图形显示的每一个点对应用一位表示,对于不同点阵的字库,需要的数据字节长度是不相同的:8×8的点阵英文字母需要8×8/8—8个字节;12×12的点阵汉字需要12×12/8=18个字节16×16的点阵汉字需要16×16/8=32个字节;24×24的点阵汉字需要24×24/8=96个字节。生成的点阵字模数据,可以用H头文件的形式存储,以上字库对应为:EN8X8.H;C12X12.H;C16X16.H;C24X24.H。文件中首先定义包含的汉字数目,例如C12X12.H中:
    #define chl2x12_num 5

    表明本12*12点阵字库中有50个汉字。因为只提取了需要的汉字字模数据,并且将重复的字剔除掉。为了方便索引,在汉字字库建立汉字GB码信息数组,将汉字GB码的两字节数据用unsigned int表示,例如C12X12.H中:

    code unsigned int chl2x12_code[chl2x12一num]={0xalal,0xbaba,0xd7d6,0xd2ba,0xbea7},/*汉字液晶*/

    注意:在数据中总要预留1个汉字的空格(Oxalal),以便在以后程序设计时遇到显示没有找到字模数据的汉字时,显示空格,它对应的数据是全空。在汉字GB码信息数据后注释行中写入了对应汉字,以方便阅读。

    接下来的汉字点阵字模数据以二维数组表示:

    code unsigned char ehl2x12_dat[ehl2x12_num][18]={
    /*汉字12×12点阵库*/
    {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):0886828a8a8bcaaa9a82ca86f00000000408*/
    {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):00c0405fd51515d55f40c00000ff5555ff00*/
    {0x00,0xc0,0x40.0x5f,0xd5,0x15,0x15,0xd5,0x5f,0x40,0xc0.0xOO,0x00,Oxff.0x55,0x55,0xff,0x00)
    }:

    为了方便阅读和使用,除了对每个汉字将其GB码写入注释外,还将其数据直接写到注释中。
 
    提取字模程序的C源程序MK_CHIJlB.C,运行时除了在命令行参数中输入汉字字符串文本文件名之外,缺省字库16×16点阵,以参数S指定为12×12点阵,以参数H指定为24×24点阵。

    笔者发现KeiI_C51(V7.O以前的版本)在编译时,字符串中汉字GB码第二字节如果为0xfd,会错误地被忽略,造成显示错误。因此,在汉字点阵字模数据头文件内的注释中,对应的GB码后加入了一个“!”,以提示程序员在C程序的字符串中以\x??\xfd替换相应的字符。

    3 液晶驱动程序设计

    以常用的12864液晶模块为例,它与51单片机的接口非常简单。一般12864模块接口信号线的功能如表1所列。

点击看原图

    如果采用以上方法连接以后,编写驱动程序时就可用以下地址。

    左右半部操作时:数据地址0xffff,状态地址0xfeff。

    仅左半部操作时:数据地址Oxefff,状态地址Oxeeff

    仅右半部操作时:数据地址0xf7fff,状态地址0xf6ff。

    驱动程序除提供复位、开关显示、整屏填充、画点、读写显存等基础函数外,还提供了显示位置设定、英文显示、各点阵汉字显示、显示输出函数等。驱动程序源程序为kddrv.c及lcdd rv.h和deL_port.h。

    4 汉字显示函数设计

    C语言程序员都非常熟悉和习惯使用printf系统输出函数,在汉字显示函数设计时尽量利用printf函数的功能,方便程序设计。在Keil_C5l中,printf函数词用putchar函数完成数据输出,而缺省的putchar函数是将数据通过串口输出。我们可以通过设计自己的putchar函数来实现输出送到液晶显示。

    在Keil-C51的LlB子目录下有一个putchal.c文件,提供了一个串口输出数据的putchar函数源程序。通过修改putchaI函数,设置一个标志变量,当需要将数据送液晶显示时,设置lcd_id=l,否则当Icd_jd=0时,数据仍然通过串口输出。

    注:程序及配套字库文件见本刊网站(www.dpj.com.cn)。

    结语

    通过以上介绍,从硬件接口、底层函数、高级函数等方面,完全实现了汉字液晶显示的整个过程。通过对整个过程及原理的了解,您可以很轻松地实现和修改液晶显示函数,以配合您的系统需要,以极低的成本获取较好的效果。

 


欢迎进入老古论坛进行讨论
[显示技术] 相关文章:
遥控LED广告牌
简介:
0 引言    LED广告牌是一种面向公众的信息显示终端,有着非常广泛的民用和商用价值。而现在大多数LED广告牌显示的信息都是事先固化在系统中的,这失去了信息的实时性,特别不方便用户更换显示内容;少数LED广告牌采用与微机直接相连,用微机来传送信息,这种系统解决了信息刷新问题,但由于有线连接,制约了系统放置的随意性,特别是对于面向多地区多客户的广告公司来说,给系统的实时更新和维护带来了许多不便。   本文提出了通过手持发射机遥控LED广告牌的新方案,实现了对广告牌内容及显示方......

在汽车中驱动LED照明的开关
对视频图像及其显示的浅见
友达光电推首款7.5代42英寸面板 十月份量产
显示器的分辨率和清晰度-视频图像
 
下一个:[新品快递]爱默生新一代PH传感器可在5℃-145℃范围内进行工作
简介:
近日,爱默生过程控制有限公司罗斯蒙特测量部推出PERpH-X1高温PH传感器。据悉,该产品系列包括Model 3400HT和Model 3400HTVP、Model 3300HT和Model 3300HTVP这四款型号。其中Model 3400HT和Model 3400HTVP为可抽取式传感器,当它配置球阀后,可在不停产的情况下方便的从过程中抽出。而Model 3300HT和Model 3300HTVP为插入式/沉浸式pH传感器。该传感器的插入深度可以调节......

上一个:[新闻热点]台积电与超捷在90nm混载闪存技术领域展开合作

老古开发网版权所有 2006年9月 asp.Net V2.0 设计:老古
页面缓存:30分钟 执行时间:31毫秒