当前位置:首页 > 显示光电 > 显示光电
[导读]摘 要: 研究了图形液晶模块的汉字显示方法, 以8051 单片机为基础, 介绍了液晶模块与单片机的典型接口电路, 描述了通过外扩的EEPROM 存储汉字字模数据, 将其作为外部数据存储器进行寻址, 通过C51 程序详细介绍了

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

1 引 言

液晶显示器件( LCD) 独具的低压、微功耗特性使它可以直接与大规模集成电路结合开发出一系列具有便携显示功能的产品。这些产品不仅改变了人类生活甚至也改变了社会。例如, 液晶显示的电子表、电子计算器已成为生活必需品, 而液晶显示的移动通讯已成为人类社会活动的必备工具。

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

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

采用哈佛结构的单片机, 如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 单片机与液晶模块接口电路

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

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 程序例子, 具有很强的使用指导性。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

7月29日消息,LG Display已将其在美国的70项LCD液晶显示器相关专利转让给三星显示,值得注意的是,三星显示已于三年前退出LCD业务。

关键字: LCD 三星

HT16K24操作电压为2.4V~5.5V,内建I²C通信接口,提供三种LCD显示与按键模式:24SEG × 4COM + 24 KEY;22SEG × 6COM + 22 KEY;20SEG × 8COM + 20 K...

关键字: LCD MCU 蜂鸣器

离线GPS工具:跟踪、保存和查找具有距离和方位的航路点——没有网络,没有云,您的数据,您的规则。

关键字: GPS设备 LCD 微控制器 Arduino Uno

在技术上,LCD和OLED各有其独特之处。液晶电视通过控制液态晶体实现图像显示,其原理是在两片玻璃基板中夹入液态晶体,通过细小的电线控制水晶分子的方向。而OLED凭借自发光二极管带来更优的视角与色彩表现,其RGB色彩信号...

关键字: OLED LCD

双锁系统,通过键盘输入密码开门,客人来了用短信开门

关键字: LCD 双锁系统 L293D 变压器

在汽车显示系统领域,TFT LCD显示屏目前是车载显示面板的主流选择。与此同时,OLED和micro-LED显示屏也逐渐吸引了市场的广泛关注。为了适应不同的显示技术,我们需要开发相应的电源技术。TFT LCD显示屏通常使...

关键字: LCD OLED micro-LED

如今,汽车行业对先进显示屏的需求空前高涨,亟需能够实现更大尺寸、更高亮度、曲面设计、更高分辨率和更高对比度的解决方案。与此同时,各类新型车载显示屏也日益受到青睐。目前,TFT LCD是汽车平板显示技术的主流选择。OLED...

关键字: LCD OLED micro-LED

大家好,欢迎回来。在这个项目中,我们将学习如何使用键盘和LCD显示制作一个安全的基于Arduino的门锁。你可以用它来保护你的办公室、房间或家里的保险箱。要锁门和开锁,你需要在安全系统中输入密码。这确保了只有经过授权的人...

关键字: 键盘 LCD Arduino 电子门锁

April 1, 2025 ---- 乐金显示广州LCD 8.5代线今日(4月1日)正式交割至TCL华星光电,并改名为t11。至此,TCL华星光电将拥有2条6代、4条8.5代、1条8.6代和2条10.5代LCD产线。Tr...

关键字: 电视 PID面板 LCD

将您的树莓派Pico变成带有触摸屏界面的USB-HID设备!在这个项目中,我们将在Arduino IDE中设置编程环境,为3.5”Pico Touch LCD屏蔽配置库,测试基本功能,创建简单的按钮(用于复制和粘贴),显...

关键字: 树莓派 触摸屏 LCD Windows
关闭