当前位置:首页 > 显示光电 > 显示光电
[导读]引言 随着嵌入式技术的迅猛发展,人机交互界面也越来越显示出它的重要性。实际的LCD应用中要显示的汉字一般很有限,并不需要完整的汉字库,再加上完整字库在程序中要占用大量空间,因而非完整汉字库的研究就有了其自

引言

随着嵌入式技术的迅猛发展,人机交互界面也越来越显示出它的重要性。实际的LCD应用中要显示的汉字一般很有限,并不需要完整的汉字库,再加上完整字库在程序中要占用大量空间,因而非完整汉字库的研究就有了其自身的现实必要性。本文以AT91SAM7S256处理器的LCD显示模块为例,介绍了非完整汉字库的建立方法及其具体实现。

1  液晶显示原理

液晶显示器LCD (Liquid Crystal Display)主要用于文本、图形及图像信息的显示。液晶显示屏具有轻薄、体积小、耗电量低、无辐射、平面直角显示以及影像稳定不闪烁等特点。液晶是一种介于固态和液态之间的有机化合物。当被加热时,它会呈现透明的液态,而冷却的时候会结晶成混乱的固态。用于液晶显示器的是Nematic液晶,当向液晶通电时,液晶体分子便排列得井然有序,可以使光线容易通过;而不通电时,液晶分子便排列混乱,阻止光线通过。
??从整体来看,TN(扭曲向列型)单色液晶显示器液晶分子的排列就像螺旋形的扭转排列。光线从上向下照射时,通常只有一个角度的光线能够穿透下来,通过上滤光片导入上部夹层的沟槽中,再通过液晶分子扭转排列的通路从下滤光片穿出。一旦通过电极给这些液晶分子加电之后,液晶分子变成竖立的状态,这样光线就无法通过,结果在显示屏上出现黑色。这样会形成透光时(即不加电时)为白、不透光时(加电时)为黑,字符就可以显示在屏幕上了。

2  汉字信息的编码知识

2.1 汉字的编码标准

汉字系统对每个汉字预先规定输入计算机中的代码,即汉字的外部码。计算机为了识别汉字,要把汉字的外部码转换成内部码进行存储和处理。输出时,还将汉字的内部码转换成汉字的字形码。主要的汉字编码有以下几种:

1) 国标码:计算机与其他系统或设备之间进行汉字代码信息交换的标准汉字代码。它用两个字节代码来表示一个汉字。行、列各 94(0-93),用先行后列的两个 7 位二进制数表示。

2) 区位码:每个汉字(图形符号)用两个字节表示,每个字节只用低 7 位,即最高位为 0 的二进制码。汉字编码使用的高字节称为区码,低字节称为位码。区位码共 94 个区,每个区有 94 个位,组成一个 94*94 的矩阵。

3) 机内码:中文或西文信息在计算机系统中的代码表示称为机内码。是计算机对汉字进行存储、运算的实际代码。一般用连续两个字节表示汉字的内码且每个字节最高位为 1。

2.2 区位码、国标码和机内码之间的转换关系

(区位码的十六进制表示)+A0A0H=机内码。国标码+8080H =(区位码的十六进制表示)+A0A0H。国标码=(区位码的十六进制表示)+2020H。

3  完整汉字库下的汉字显示以及汉字英文混合显示

3.1 完整汉字库下的汉字显示原理

汉字的输出是将汉字的笔划离散化,用点阵来表示。点阵的中每个点位只有两种状态:有笔画(1)、无笔画(0)。描述汉字点阵信息的二进制代码集称为汉字的字模。所有汉字和符号的点阵信息就组成了汉字库。

点阵字库文件已经给使用者提供好了,关键在于如何取得汉字的图形,即汉字的点阵字模。首先看一下如何取得汉字的区位码。计算机在处理汉字和 ASCII 字符时 ,使每个 ASCII字符占用一个字节,而一个汉字占用两个字节,其值称为汉字的内码。其中第一个字节的值为区号加上 32(20H),第二个字节的值为位号加上 32(20H)。为了与 ASCII 字符区别开,表示汉字的两个字节的最高位都是 1,也就是两个字节的值都又加上了 128(80H)。这样,通过汉字的内码,就可以计算出汉字的区位码。具体算式如下:
  qh=c1-32-128=c1-160, wh=c2-32-128=c2-160 或 qh=c1-0xa0, wh=c2-0xa0
  其中 qh 、wh 为汉字的区号和位号,c1、c2 为汉字的第一字节和第二字节。
  根据区号和位号可以得到汉字字模在文件中的位置:
  location=(94*(qh-1)+(wh-1))*一个点阵字模的字节数。

字模的表示顺序为:先从左到右,再从上到下,依此类推,画满 16×16 个点。这样,一个 16×16 点阵的汉字总共需要 16*16/8=32 个字节表示。因此,当显示16×16 点阵的汉字时,只要根据区码和位码计算出该汉字点阵在ROM 中存放的起始地址,然后从此地址连续地取出 32 个字节的汉字点阵,并写入 LCD 模块对应的地址中,就可以显示出该汉字。

3.2 汉字英文混合显示

在应用中,常需要汉字和英文字符混合显示,在软件处理时需要判断显示的内容是汉字的编码还是英文字符的编码,如果是汉字编码则根据其机内码计算区位码,并根据区位码计算出该汉字在字模中的起始地址。显示16×16 点阵汉字的混合显示软件流程图如图1所示:

图1混合显示软件流程图

按照以上的显示原理可以编写出在完整汉字库下的汉字英文混合显示程序,具体程序代码在很多资料中都有,这里就不再赘述。

4  非完整汉字库的建立及汉字英文混合显示

4.1 非完整汉字库的建立

在很多的人机界面中,虽然显示的汉字数量较多,但实际无重复的汉字数却较少,而且不同的应用环境用到的汉字也有其自身的特殊性。如果是提供少量的互不重复的汉字,较好的做法如下:利用 DM Tool 字模转化工具生成所需要的汉字模,然后利用 123.exe 软件生成相应的机内码。接下来就可将以上所得到的汉字的机内码和其字模合在一起组成数组,如此反复就可以将所需要的所有汉字都形成数组,最后将这些汉字组成二维数组。如下所示:

const UINT16T DDSHZTable[][17] = {

{     //时

    0xCAB1, //机内码

    0x0010, 0x0010, 0x7c10, 0x4410, 0x47fe, 0x4410, 0x7c10, 0x4510,

    0x4490, 0x4490, 0x7c10, 0x0010, 0x0010, 0x0010, 0x0050, 0x0020//字模

},

……

}

在定义上面的二维数组时不规定数组的大小,这样就可以方便地添加自己需要的汉字。要显示特定汉字的时候,只需要从数组中查找内码与要求汉字内码相同的即可获得字模。

4.2 软硬件设计

下面结合AT91SAM7S256处理器介绍LCD 模块的软硬件设计过程。

4.2.1  硬件电路设计

LCD 模块采用 PM04OX1,LED 背光。320*96 点阵,256 色显示,亮度控制:6位。背光LED :6支(串联),亮度控制 2位,背光电流 2.5mA~20mA。CN7,CN8: 连接LCD面板 PM042OX1; CN6: LCD背光电源;U6: Timing Controller,PVI-2003A; U8: VS_ASIC, MCU-LCD 接口转换逻辑。以下介绍 MCU-VS_ASIC-Timing Controller 硬件接口。连接 LCD 面板的接口信号包括: LCDCLK, R[5:0],G[5:0],B[5:0], VSHS 和 VSVS。其中 VSHS, VSVS 来源于 MCU 的PIO; LCDCLK来源于 MCU-SPI的 NPCS3; R[5:0],G[5:0],B[5:0]是 U8 根据 MCU-SPI 的VSCK(SPI-SCK)、VSDO(SPI-MOSI)、LCDCLK (SPI-NPCS3)和 VSVS 产生。

LED 驱动 (LED0~LED15) 是 U8 根据 MCU-SPI 的 VSCK(SPI-SCK)、VSDO(SPI-MOSI)、LCDCLK(SPI-NPCS3) 和 VSVS 产生。 LCD扫描方向选择:RP1、RP2 为 LCD 扫描方向选择,它们只能焊接其中的 1 只。LCD驱动原理框图如图2所示:

图2 LCD驱动原理框图

4.2.2  软件设计

通过 SPI-DMA 完成一个整行的扫描过程。在该过程中,DMA(直接存储器存取) 向 SPI(串行外设接口) 传输 400 个 8 位数据。一个完整周期需要有 104 行扫描。其中第 0 行扫描的前 3 个数据为 PMRAM 数据,其他数据无意义(可以是任何数)。第 1 行和第 103 行扫描的全部数据均无意义;第 2~102行为数据扫描,每一行数据中前 64 个和后 16 个数据无意义,中间 320 个数据为显示数据。

LCD驱动过程是由 SPI-DMA 操作配合 SPI-DMA 中断服务程序完成的。应当指出的是,在MCU相应的设备按要求初始化后,由于没有启动SPI-DMA,LCD驱动过程不能自动开始。因此显示初始化程序应当:

1) 设置SPI

2) 设置TIMER1(可以启动TIMER);

3) 设扫描行指针n=0;

4) 设DMA传输数据格式(8位/次,400个数据);

5) 启动DMA。

以上过程在完成一行空扫描后, 进入连续的 LCD 扫描过程。

4.3 程序举例

以下列出了16x16方阵汉字显示的部分程序代码:

            wm = *(s + i + 1);  //计算位码

            ISN = qm<<8;               

ISN += wm;          //机内码

            ii=0;               //先定位在第一个汉字

            while((ISN!=DDSHZTable[ii][0]) && (DDSHZTable[ii][0] !=0xffff) )

                    ii++;       //寻找与ISN相同的机内码,即寻找要显示的汉字

            for( j = 0; j < 16; j ++ )

                hzbuf[j] = DDSHZTable[ii][j+1];//取字模

               for( y = 0; y < 16; y++ ){

                for( x = 0; x < 16; x++,Hk++ ){

                        Hk = Hk % 16;

                   if( hzbuf[y]  & (0x8000 >> Hk) ){

//确定y行x列是否有笔画

                        xx = x0 + x + ChiWords * 16;

                        LCDRam[y+y0][xx]  = ForeColor;//显示像素

                    }

               }

           }

显示英文字符的原理及程序代码与汉字的类似,就不再赘述。

5 结束语

建立非完整汉字库最大的特点是可以按照现实需要柔性地显示汉字、软件编程容易、可混合显示汉字和英文字符。作为人机交互界面的重要部分它可被广泛应用于工业控制、医疗、科研以及教学等领域。

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

台湾新竹 – 2024年4月23日 – 著名的微控制器供货商新唐科技公司,与全软件开发生命周期提供跨平台解决方案的全球软件公司Qt Group宣布深化合作,扩展新唐科技人机界面(HMI)平台支持「Qt for MCUs」...

关键字: 微控制器 嵌入式系统 MCU

随着物联网、嵌入式系统以及微控制器技术的飞速发展,微控制器已成为众多智能设备和系统不可或缺的核心组件。而微控制器的正常工作,离不开烧录器的精准操作。C8051F021烧录器,作为一款高效、稳定、易用的微控制器烧录工具,在...

关键字: c8051f021烧录器 联网 嵌入式系统

为增进大家对嵌入式系统的认识,本文将对嵌入式系统、嵌入式系统的特点予以介绍。

关键字: 嵌入式 指数 嵌入式系统

2024年4月18日,国民技术第四代可信计算芯片NS350 v32/v33系列产品正式发布并开始量产供货。NS350 v32/v33是一款高安全、高性能、超值可信密码模块2.0 (TCM 2.0)安全芯片,适用于PC、服...

关键字: PC 服务器平台 嵌入式系统

上海2024年4月17日 /美通社/ -- 每年4月17日是世界血友病日。今年,世界血友病日以"认识出血性疾病,积极预防和治疗"为主题,呼吁关注所有出血性疾病,提升科学认知,提高规范化诊疗水平,让每一位出血性疾病患者享有...

关键字: VII 动力学 软件 BSP

伦敦2024年4月16日 /美通社/ -- ATFX宣布任命Siju Daniel为首席商务官。Siju在金融服务行业拥有丰富的经验和专业知识,曾在全球各地的高管职位上工作了19年以上。Siju之前担任FXCM首席商务官...

关键字: NI AN SI BSP

LCD(液晶显示器)和LED(发光二极管)这两个术语通常用于描述显示技术中的不同方面。实际上,大多数液晶显示器都使用LED作为背光光源。因此,这两个术语经常一起使用,而不是相互替代。

关键字: lcd显示器 拖尾 LCD

2024年,嵌入式系统将走向何方?如何才能走在趋势的前沿?从工厂到家电,从医院里昂贵的医疗设备,到随处可见的可穿戴设备,我们身边的联网设备越来越多,生活更加绿色低碳,嵌入式系统功不可没。ST于3月19日成功举办STM32...

关键字: 嵌入式系统 可穿戴设备

LED(Light Emitting Diode)与LCD(Liquid Crystal Display)是当今显示技术领域的两大重要分支,各自凭借独特的优势在消费电子、广告传媒、工业控制、家用电器等多个领域占据着主导地...

关键字: LED LCD
关闭
关闭