微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 基于不带字库的图形LCD模块汉字显示解决方案

基于不带字库的图形LCD模块汉字显示解决方案

时间:03-28 来源:互联网 点击:

----
混合显示一串汉字和英文字符
row:行(1-8), column: 列(1-15)
str:字符代码(标准机内码)指针
---------------------------------------------------------------------------------------*/

void DispStr(unsigned char row, unsigned char column, unsigned char *str)
{
while (*str)
{
if (*str > 0xa0) //如果是汉字机内码
{
if (column == 30) //如果是最后一列,则换行
{
row ++;
column = 1;
}
DispHZ(row, column, str); //显示一个汉字
column += 2;
str += 2;
}
else //如果是英文字符
{
DispChar(row * 2, column, str); //显示一个英文字符
column++;
str++;
}
}
/*----------------------------------------------------------------
在指定位置显示一个汉字(16*16点阵)
row:行(1-8), column: 列(1-29)
str:汉字标准机内码指针
LINE_CHAR = 30 一行的字符数
-----------------------------------------------------------------*/
void DispHZ(unsigned char row, unsigned char column, unsigned char *str)
{
unsigned char idata i, hz_buf[32];
unsigned int StartAddr;

//定位起始行
StartAddr = (((row - 1) * 16) * LINE_CHAR + (column-1)) + 0x4000;
GetMatrix(str, hz_buf);
for (i = 0; i 16; i++)
{
LCDInData( (unsigned char) (StartAddr) );
LCDInData( (unsigned char) (StartAddr>>8) );
LCDInCmd(0x24);
LCDInData(hz_buf[i * 2]);
LCDInCmd(0xc0);
LCDInData(hz_buf[i * 2 + 1]);
LCDInCmd(0xc4);
StartAddr += LINE_CHAR;
}
}
/*-----------------------------------------------------------------------------------
从字库芯片中取汉字字模数据
s: 汉字标准机内码指针
hz_buf: 存放汉字字模数据缓冲区指针
-------------------------------------------------------------------------------------*/
void GetMatrix(unsigned char *s, unsigned char *hz_buf)
{
unsigned char i ,j, k;
unsigned long address;

for (k = 0; k 31; k++)
{
i = *s - 0xA1; //计算区码
j = *(s + 1) - 0xA1; //计算位码
address = (((unsigned long)i * 94) + j)*32 + k; //计算该汉字在字模芯片中的起始位置

high_addr = 1;
P0 = (unsigned char) (address >> 16); //送高位地址
high_addr = 0;
P0 = 0xff;
zk_cs = 0;
*hz_buf = XBYTE[(unsigned int) address]; //取汉字模数据
hz_buf++;
zk_cs = 1;
}
}

4 结束语

在图形液晶模块中嵌入中文字库点阵字模芯片,其最大的特点是可以显示所有的一、二级汉字、硬件接口简单、软件编程容易、可混合显示汉字、英文字符和图形。作为人机接口的一个重要部分,可被广泛应用在工业仪器仪表、监控装置、保护装置及汽车等各种领域中。

5 参考文献
1 徐爱均彭秀华单片机高级语言C51应用程序设计电子工业出版社2001
2 莱德电子 YJ240D液晶模块手册
3 Toshiba CMOS digital integrated circuit silicon monolithic T6963C dot matrix LCD control LSI, 1997-04-07
4 GB2312-80《信息交换用汉字编码字符集》,1980

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top