液晶显示器的汉字显示方法

发布者:andyliow1980最新更新时间:2014-03-01 来源: elecfans关键字:液晶显示器  汉字显示  8051单片机 手机看文章 扫描二维码
随时随地手机看文章

  1 引 言

  常用的液晶显示模块分为数显液晶模块、点阵字符液晶模块和点阵图形液晶模块。图形液晶模块在我国应用较为普及, 因为中文不能像西文字符那样用字符模块即可显示, 要想显示中文必须用图形模块。

        研究了图形液晶模块的汉字显示方法, 以8051 单片机为基础, 介绍了液晶模块与单片机的典型接口电路, 描述了通过外扩的EEPROM 存储汉字字模数据, 将其作为外部数据存储器进行寻址, 通过C51 程序详细介绍了使用方法。对于程序存储器和数据存储器分开寻址的单片机, 该方式能起到节省程序存储器, 扩大程序容量的作用。

  2 液晶模块显示汉字方法

  使用图形液晶模块可以显示汉字和图形。以DG12864( 128×64) 液晶模块为例, 其内置的液晶显示驱动控制器为日本东芝公司的T6963C, 在液晶屏上横向8 个点为1 个字节数据, 每个字节在显示缓冲区内有对应的地址, 液晶屏幕的左上角横向8 个点对应液晶模块显示缓冲区的首地址。采用图形显示方式, 在液晶显示器上汉字用点阵来显示, 最常用的是16×16 的汉字, 一个16×16 的汉字用32 个字节表示, 这32 个字节存放方式如下所示:

  而一个24 ×24 的汉字则需72 个字节, 存放方式如下:

  其他规格的汉字存放方式依此类推。在液晶显示器上需显示汉字时, 只要将要显示的汉字的点阵按其存放方式依次写入液晶控制器的显示缓冲区即可。

  通过单片机将已提取的汉字的字模输入液晶控制器, 即可按设定在液晶模块显示屏上显示汉字。常见的做法是事先通过字模提取软件提取要显示的汉字的字模, 将其作为常量数组存放在单片机的程序存储区内。以C 语言格式建立包含"合"和"肥"两字的汉字字模常量数组, 如下:

  Code const char Hz-Dot [ ] = {0x01, 0x01, 0x02, 0x04, 0x08, 0x 10, 0x 2F,0xC0, / / 合0

  0x00, 0x1F, 0x 10, 0x10, 0x10, 0x 10, 0x1F, 0x10,0x00, 0x00, 0x 80, 0x40, 0x 20, 0x10, 0xEE, 0x 04,0x10, 0xF8, 0x 10, 0x10, 0x10, 0x 10, 0xF0, 0x10,0x04, 0x 7F, 0x 45, 0x45, 0x45, 0x7D, 0x 45,0x45, / / 肥0x 20

  0x45, 0x7D, 0x 45, 0x45, 0x 45, 0x45, 0x 54, 0x 88,0x04, 0xFE, 0x 24, 0x24, 0x 24, 0x24, 0x 24, 0xFC,0x04, 0x 00, 0x 00, 0x02, 0x02, 0x02, 0xFE,0x00} ;

  每个汉字字模由32 个字节组成, 单片机通过接口电路, 根据规定的时序, 将要显示的汉字字模的所有字节按液晶控制器规定的方式, 按预定位置写入液晶控制器显示缓冲区即可。这种方式适用于程序不大或单片机无外部扩展数据存储区功能的情况。[page]

  采用哈佛结构的单片机, 如8051 单片机及其派生产品, 程序存储器( ROM) 和数据存储器( RAM) 可分别寻址, 8051 单片机ROM 和RAM最大的寻址空间均为64 K.通常来说, 对于中型的嵌入式系统, 尤其是带液晶模块的单片机系统,64 K 的程序空间并不富裕, 而将汉字字模作为常量数组会大大占用ROM 的空间。而相对来说,数据存储器只需几K 就够用了, 剩下很多空间可用于功能芯片的扩展。将提取的汉字字模数据存放在EPROM 或EEPROM 内作为扩展的数据存储器供CPU 调用, 则只要设定该芯片的片选地址, 并知道每个汉字字模数据在该芯片的存储位置, 通过程序计算出偏移地址, 即可实现同样的显示功能。

  3 单片机通过EEPROM 调用汉字字模的方法

  图1 是DG12864 液晶模块与8051 单片机的接口电路。在电路中, 地址线A13??A15 通过GAL16V8 译码得到外扩芯片的片选信号, 其中液晶模块的译码地址为0xE000, 将地址线A0 与液晶模块控制口的C/ D 相连。当A0 为低时液晶控制器接收数据, A0 为高时液晶控制器接收命令码。因此液晶模块数据端口地址为0xE000, 液晶模块命令端口为0xE001.采用Keil C51 进行程序设计, 在程序中可进行如下定义:

  # define XBYTE ( ( unsigned char volat ile x data* ) 0)

  # def ine LCD-Data XBYT E[ 0xE000]/ / 液晶模块数据端口

  # def ine Lcd-Code XBYT E[ 0xE001]/ / 液晶模块命令端口

  存放汉字字模数据的EEPROM 芯片2864的片选地址为0x 9000, 则通过程序定义:

  # def ine Hz-Dot 0x 9000

  # define VBYTE ( unsigned char volatile x data* )

图1  51 单片机与液晶模块接口电路

图1 51 单片机与液晶模块接口电路

编制16 ×16 汉字显示子函数Wr ite-Hz.其中要调用另外两个子函数Lcd-Wait 和Disp-address.Lcd-Wait 为读取液晶控制器是否忙函数, 而Disp-address 为液晶控制器显示缓冲区地址设置函数, 可根据液晶控制器资料编制。根据液晶控制器T 6963 的操作方法, 每次对液晶控制器进行读写时, 应执行Lcd-Wait 函数判断液晶控制器是否忙, 在将汉字字模数据写入液晶控制器显示缓冲区前, 应根据汉字在液晶屏上的显示位置设定写入数据的液晶控制器显示缓冲区地址, 具体Write-Hz 如下: [page]

  void Write-Hz( Uchar x ,U char y, Uint p) // 写汉字

  // x , y 为汉字在液晶屏的显示位置坐标,

  // p 为要显示的汉字在数组中的下标。

  {

  Uchar i, low-ad, hig h??ad;

  Uint addr ess, tp;

  address= ( Uint) x * Wide+ y ; / / * *

  // 根据要显示汉字在液晶屏幕的横坐标和纵坐标

  // 设定液晶控制器的显示缓冲区的偏移地址

  tp= address;

  for ( i= 0; i< 16; i+ + ) / / 写左半部

  {

  low-ad= ( Uchar) ( tp & 0x f f) ;

  hig h-ad= ( Uchar) ( tp 8) ;

  Disp-address( low-ad, high-ad) ;

  / / 设定写入地址

  Lcd-Wait ( ) ;

  Lcd-Data = * ( VBYT E( Hz-Dot+ p+ i ) ) ;

  / / 从EEPROM 中提取汉字字模

  Lcd-Wait ( ) ;

  Lcd-Code= 0xC4; / / 写数据命令

  tp= tp+ Wide;

  }

  address+ + ;

  tp= address;

  fo r( i= 0; i< 16; i+ + ) / / 写右半部

  {

  low-ad= ( U char) ( tp & 0xf f ) ;

  hig h-ad= ( Uchar) ( tp 8) ;

  Disp-address( low??ad, high??ad) ;

  Lcd-Wait ( ) ;

  Lcd-Data = * ( VBYTE ( Hz-Dot+ p+16+ i) ) ;

  Lcd-Wait ( ) ;

  Lcd-Code= 0xC4;

  tp= tp+ Wide;

  }

  }

  函数Wr ite??Hz 的参数x 和y 对应液晶屏幕的显示位置, 以屏幕左上角为原点, x 为纵坐标, y为横坐标, 其在液晶控制器显示缓冲区中的地址通过行* * 计算出, 该行中Wide 为事先定义的液晶屏每行字节数, 对于DG12864 液晶模块而言,Wide 为16。

  函数Write-Hz 根据16×16 点阵汉字在液晶控制器显示缓冲区的存放形式, 依次改变显示地址, 先将左半部1~ 16 个字节写入显示缓冲区, 再写入右半部17~ 32 个字节。设"合肥"两字存放在2864 中最前列, 则"合"字模首字节在2864 中的偏移地址为0, 共32 个字节, 紧跟在后面的肥!字模的首地址为0x20, 若要液晶模块显示合肥!两字, 只要在程序中带显示地址参数调用该函数即可。如:

  Write-Hz( 0, 4, 0) ; / / 合

  Write-Hz( 0, 10, 0x20) ; / / 肥

  4 结 语

  本文介绍了图形液晶的汉字显示方法, 并以8051 单片机为基础, 结合液晶模块与单片机的典型接口电路, 叙述了使用EEPROM 或EPROM存放汉字字模的方法, 并给出C51 程序例子, 具有很强的使用指导性。

关键字:液晶显示器  汉字显示  8051单片机 引用地址:液晶显示器的汉字显示方法

上一篇:用单片机控制的闪烁灯
下一篇:非接触式智能卡模块ID-0/10/15的原理及应用

推荐阅读最新更新时间:2024-03-16 13:36

三星可无线连接液晶显示器亮相CES2011
  在CES展上,三星展出了CA550和CA750两款采用无线连接的多USB借口的显示器。显示器还是以超薄为理念,同时在底座增加了很多USB借口,对于使用笔记本的朋友来说极为方便,同时,只要在一米范围以内,该款显示器都可自动识别并与笔记本连接,给用户提供了极大工作空间。 三星可无线连接液晶显示亮相CES2011 三星可无线连接液晶显示亮相CES2011  
[家用电子]
基于8051单片机制作一个酒精测试仪
我们经常看到交警在查司机酒驾的时候,会使用酒精测试仪来检查他们是否受酒精影响。其实,酒精测试仪其实很容易制作,以下是如何自制具有3位显示输出的酒精测试仪。当然,毕竟是作为简单案例使用,所以准确度要差点。 在本文中,使用8051单片机的呼吸分析仪电路,它从呼吸中输出血液酒精含量(BAC)。“酒精含量的百分比”在3位七段显示器上以百分比显示。使用的单片机是8051系列的AT89S51和酒精传感器MQ135气体传感器。 一、MQ135气体传感器电路 MQ135是一款稳定灵敏的气体传感器,可检测氨、二氧化碳、酒精、烟雾、二氧化氮等。该传感器由氧化铝微管内的二氧化锡敏感层、测量电极和管状铝壳内的加热元件组成。传感器的前端用不锈钢网覆
[单片机]
基于<font color='red'>8051单片机</font>制作一个酒精测试仪
STM32自带GB2312字库显示汉字
  本文介绍如何把字库文件写入单片机的flash中,然后无需再提取字模,即可实现单片机显示中文字符的功能。 下载字库到单片机flash中的指定位置   在上一篇博客中,最后留了一个想法,让单片机自带字库。现在就来实现这个想法。 我把用到的编译过的字符放在这里   我们借助J-Flash软件把bin文件放在单片机flash中的指定位置。   首先要新建工程,然后根据自己的板子选择型号   然后打开数据文件,找到刚刚下载的bin文件   根据自己单片机的flash大小输入地址,注意这个地址要与代码中的“基地址”一致   设置好以后按下快捷键F7   成功烧录以后,代码不可以在使用此区域。——一般情况下,你的
[单片机]
STM32自带GB2312字库<font color='red'>显示</font><font color='red'>汉字</font>
检查8051单片机板子问题的一般方法
下面说一下检查8051单片机板子问题的一般方法。 首先检测电源,有经验的人都会这样做。我以前找工作时就有一位面试官问了我这个问题:板子出了问题,首先检查哪里?呵呵!电源!接着检查8051单片机的3个要点:1、用示波器查看晶振是否正常起振,一般的话,这里没有问题的话都会正常工作的;2、单片机31脚,如果没有外部扩展的话,该引脚一般都接高电平;3、检查复位电路是否正常。最后就程序问题了。
[单片机]
8051单片机(STC89C52)以定时器中断模式实现两倒计时器异步计时
相较单倒计时器对timer0初值的设定, 此处将中断处理程序触发时间间隔改为5ms, 目的是给人在视觉上以更好的体验(设定为10ms会明显感觉到闪烁). #include STC89C5xRC.H unsigned char code DIG_CODE = {0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f};//对应数码管显示0~9 int tcount = 0;//记录经过的5ms区间段个数 int sec1 = 15, sec2 = 25;//倒计时初始值 void T0_INT() interrupt 1 //timer0中断, 每5m
[单片机]
<font color='red'>8051单片机</font>(STC89C52)以定时器中断模式实现两倒计时器异步计时
VMJ推世界上最大65英寸3D液晶显示
VMJ日前推出了一款号称世界上最大的65英寸3D液晶显示器,得益于夏普的Paralax Barrier显示技术的支持,可以实现裸眼立体视觉。它刷新了宝龙Bolod 61英寸立体液晶电视在2007年创下的全球最大显示器纪录。 据了解,这款显示器标准分辨率为1920×1080,响应时间达到6毫秒,可视角度120度,具备DVI接口,通过调整设置可以在2D图像和3D模式下进行切换。据制造商介绍,这款显示器报价约3万美元,和离子平板设备比起来价格竞争力不高。 VMJ展示65英寸3D液晶显示器
[新品]
VMJ推世界上最大65英寸3D<font color='red'>液晶显示</font>器
液晶显示器开关变压器的检测方法
判别开关电源是否振荡可用示波器探头靠近开关变压器的磁心,如果振荡正常,会有感应波形出现。    检测开关变压器的感应波形时,需要在通电状态下检测,将示波器接地夹接地,示波器探头靠近开关变压器的磁心部分,由于变压器输出的脉冲电压很高,所以通过绝缘层就可以感应到行脉冲信号,具体操作及信号波形如下图所示。若检测有感应脉冲信号,说明开关变压器本身和开关振荡电路没有问题。
[测试测量]
<font color='red'>液晶显示</font>器开关变压器的检测方法
基于CPLD的温度自动控制系统的研制
“温度”是各类工业控制生产中常见的、而又十分重要的控制参数。人们研制出各种针对不同控制对象的温度自动控制系统,其中软件控制算法已比较成熟,但温度控制系统的硬件构成特别是功率控制部分往往存在着硬件结构复杂,分离元件较多,结构较为封闭等问题。随着CPLD器件的大规模运用,采用CPLD器件可简化控制系统的硬件结构。本文设计了一种以8051单片机为核心的温度控制系统,该系统的控制部分由CPLD来完成,针对不同的控制对象可采用不同的控制算法,因此该控制系统具有结构开放、成本低廉、性能可靠等特点。 1 系统硬件构成 对一个温度自动控制系统来说,其硬件结构由两大部分构成:温度测量部分和功率控制部分。系统结构总框图如图1所示。
[单片机]
基于CPLD的温度自动控制系统的研制
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved