一种应用于智能电表的LCD段码式液晶的缓存映射方法与流程

文档序号:16744423发布日期:2019-01-28 13:22阅读:1040来源:国知局
一种应用于智能电表的LCD段码式液晶的缓存映射方法与流程

本发明涉及智能电表领域,涉及lcd段码式液晶缓存的不规存内容进行重新排序处理的方法,更具体地是一种应用于智能电表的lcd段码式液晶的缓存映射方法。



背景技术:

lcd段码式液晶有价格低廉,驱动成本低,操作简单,格式自由等几大特点,广泛应用于各类自动化仪器仪表设备。

在液晶驱动芯片中,seg和com是lcd驱动中的两组信号。com可以说是“公共端”,提供稳定的供电,而seg是指“段”,也就是“扫描端”,通过com与seg的组合,点亮不同的lcd或led显示段,从而形成文字或图形。在液晶驱动芯片的操作中,用户只需要对显示寄存器进行复制,液晶驱动芯片既可以点亮液晶。

但是,由于lcd实现内容的多样性,导致大多数的lcd的段码表是不规整,用户只能通过找寻找段码排布规律等方式去开发液晶驱动,但是需要大量的投入精力去分析,而所形成的代码具有很强的针对性,基本不可以移植,可阅读性非常差。



技术实现要素:

本发明的目的是针对段码式液晶段码排序不规整,导致开发液晶时分析、处理过程复杂,所形成的代码基本不可移植的问题,提出一种应用于智能电表的lcd段码式液晶的缓存映射方法。

本发明的技术方案是:

一种应用于智能电表的lcd段码式液晶的缓存映射方法,该方法包括以下步骤:

s1、根据液晶显示内容,建立lcd液晶显示缓存表格;其中,纵坐标表示单个byte的八个bit,各bit对应单个lcd段码的相应笔段,横坐标表示byte的个数,用于对应lcd段码的个数;

s2、建立字库,对于每个ascii字符,根据其显示进行编码;

s3、字符显示时,查询字库中的编码,将字库中相应的数据直接赋值到缓存相应的byte,得到数据填充后的lcd液晶显示缓存表;

s4、将数据填充后的lcd液晶显示缓存表进行缓存映射,得到与该液晶实际lcd液晶硬件真值表一致的缓存内容;

s5、将映射后的缓存推送至液晶,进行显示。

进一步地,步骤s1中,横坐标中,一部分byte对应于段码的个数,另一部分byte则对应其余单独显示的字符;所述的字符包括符号和标志。

进一步地,所述的步骤s1中,lcd液晶显示缓存表格中,段码缓存区域的排布方式与字库排序方式一致;其中段码采用八段码。

进一步地,代码移植时,修改步骤s4所述的缓存映射关系,即可按照原有方式进行显示数据推送。

本发明的有益效果:

本发明应用于智能电表的lcd段码式液晶显示领域,对lcd段码式液晶缓存的不规存内容进行重新排序处理,重新形成规整的缓存表格,然后通过代码对两张表格进行映射,实现在应用层开发过程中只需关注规整的lcd缓存表格,降低开发难度。

本发明的其它特征和优点将在随后具体实施方式部分予以详细说明。

附图说明

通过结合附图对本发明示例性实施方式进行更详细的描述,本发明的上述以及其它目的、特征和优势将变得更加明显,其中,在本发明示例性实施方式中,相同的参考标号通常代表相同部件。

图1是lcd液晶显示示意图;

图2是lcd液晶com端连线图;

图3是lcd液晶seg端连线图;

图4是现有技术的lcd液晶段码硬件排布真值表;

图5是本发明的lcd液晶显示缓存表格;

图6是八段码字母显示对照图。

具体实施方式

下面将参照附图更详细地描述本发明的优选实施方式。虽然附图中显示了本发明的优选实施方式,然而应该理解,可以以各种形式实现本发明而不应被这里阐述的实施方式所限制。

一种应用于智能电表的lcd段码式液晶的缓存映射方法,该方法包括以下步骤:

s1、根据液晶显示内容,建立lcd液晶显示缓存表格;其中,纵坐标表示单个byte的八个bit,各bit对应单个lcd段码的相应笔段,横坐标表示byte的个数,用于对应lcd段码的个数;

如图5所示,lcd液晶显示缓存表中,横坐标0-13byte对于图例中的液晶,表示有14个段码,14-17byte则对应于其余单独显示的符号与标志;s2、建立字库,如图6所示,对于每个ascii字符,根据其显示进行编码,编码方式以下表为例;

s3、字符显示时,查询字库中的编码,将字库中相应的数据直接赋值到缓存相应的byte,得到数据填充后的lcd液晶显示缓存表;(由于缓存中段码byte的排序方式与字库排序一致,所以,每个段码位置需要显示字符时,可以将字库中响应的数据直接赋值到缓存相应的byte,数字,字母等)

s4、将数据填充后的lcd液晶显示缓存表进行缓存映射,得到与该液晶实际lcd液晶硬件真值表一致的缓存内容,如图4所示;

s5、将映射后的缓存推送至液晶,进行显示。

代码移植时,修改步骤s5所述的缓存映射关系,即可按照原有方式进行显示数据推送。

具体实施时:

在lcd液晶中,每个显示的符号都是通过seg和com进行驱动点亮的。因此,在液晶驱动芯片中,我们只需要知道seg和com的对应表格,即可按照各种需求对lcd进行显示。但是,由于液晶内部的电路布线的各种局限性(如图2和图3所示),无法使sge和com的对应表(下称lcd真值表)排布规整,只能按照实际电路布局产生比较混乱的表格,如图4所示。而按照图1所示,每个数字部分都是以a~g进行标注,数字1到数字14都是同样的布局,为此可以建立一个显示缓存,使其每个字节代表一个数字的显示,再将lcd真值表的其余显示内容填充进显示缓存中。此时可以得到如图5所示的lcd液晶缓存表。

此时,根据lcd液晶真值表和lcd液晶缓存表建立映射关系,将液晶缓存表中的数据映射至真值表中:

例如,

真值表pin1的缓存9d,在液晶缓存表中的位置为第9个字节bit3;

真值表pin1的缓存9e,在液晶缓存表中的位置为第9个字节bit4;

真值表pin1的缓存9f,在液晶缓存表中的位置为第9个字节bit5;

真值表pin1的缓存9a,在液晶缓存表中的位置为第9个字节bit0;

对此,可以使用c语言中的条件判断语句进行处理。

假设:

lcd真值表寄存器为数组reg[],数组长度为33;

lcd缓存为数组lcd_buf[],数组长度为18;

那么:

如果lcd_buf[9]的bit3为1,那么reg[1]的bit3为1,否则为0:

reg[1]|=(lcd_buf[9]&0x04)?0x08:0)

如果lcd_buf[9]的bit4为1,那么reg[1]的bit2为1,否则为0:

reg[1]|=(lcd_buf[9]&0x10)?0x04:0)

如果lcd_buf[9]的bit5为1,那么reg[1]的bit1为1,否则为0:

reg[1]|=(lcd_buf9]&0x20)?0x02:0)

如果lcd_buf[9]的bit0为1,那么reg[1]的bit0为1,否则为0:

reg[1]|=(lcd_buf[9]&0x01)?0x01:0)

即的到的映射代码为:

reg[1]=((lcd_buf[9]&0x04)?0x08:0)

|(lcd_buf[9]&0x10)?0x04:0)

|(lcd_buf9]&0x20)?0x02:0)

|(lcd_buf[9]&0x01)?0x01:0))

以此类推,可以得到所有的映射代码。

在最终显示数据推送之前,将lcd_buf中的所有数据,转换为reg数组,再发送至芯片中,就可以得到需要显示的内容。而上层数据处理使用的数据表格则为整理后的lcd_buf。

于此同时,由于lcd显示缓存的1-14个数字结构是一致的,可以根据图6建立字母对应表,根据所得到的字母对应表,可以直接对lcd_buf的1-14字节进行赋值,以显示相应的字母。至此,在代码中,显示的字母推送方式可以得到固定。

通过此方法处理,代码移植只需修改段码映射部分以及其余符号显示即可。

以上已经描述了本发明的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1