家电维修班,手机维修班,电脑维修班,电工班,焊工班,液晶电视维修班,电动工具维修班、电动车摩托车维修班、网络营销培训、网站设计培训、淘宝培训---全国招生 家电维修班,手机维修班,电脑维修班,电工班,焊工班,液晶电视维修班,电动工具维修班、电动车摩托车维修班、网络营销培训、网站设计培训、淘宝培训---全国招生
您的位置:网站首页 > 电器维修资料网 > 正文 >

双缓冲实现图形液晶的快速显示

★★★★★【文章导读】:双缓冲实现图形液晶的快速显示具体内容是:在液晶接口电路设计时,需要正确使用液晶控制器。典型应用时,特别是在嵌入式系统中,常常采用端口寻址的液晶控制器,如sed1335、t6963c等。这种寻址方式的好处是只占用很少的几个地址空间,并且控制方便。液晶控制器…

来源: 日期:2013-11-19 19:16:59 人气:标签:

双缓冲实现图形液晶的快速显示

    在液晶接口电路设计时,需要正确使用液晶控制器。典型应用时,特别是在嵌入式系统中,常常采用端口寻址的液晶控制器,如sed1335、t6963c等。这种寻址方式的好处是只占用很少的几个地址空间,并且控制方便。液晶控制器一方面通过外部总线和微处理器相连;一方面通过内部总线与显示缓冲ram相连;还有一些驱动的控制线和数据线与液晶相连。微处理器通过液晶控制器,采用地址译码方式来执行液晶控制、显示、绘制,以及存贮操作等指令。常用指令有:初始化,显示方式,移动光标,光标处的数据读和写等等。更改显示ram中的数据,也就更改了液晶屏的相应内容。

    作为现在流行的显示器件,液晶有其固有的优越性,但也有严重不足之处。相对crt等显示器件而言,最主要缺陷是视觉效果差,亮度不足,视角偏小,响应速度慢(“拖尾”现象)。同时,根据前面的叙述,我们可以看到:由于硬件系统的局限性,显示ram通过内部总线与控制器相连,微处理器对液晶显示ram 的寻址采用了间接的端口译码方式,而不是速度更快的直接内存寻址。译码的延时会进一步减缓显示速度。表现在用户界面上,很可能出现刷新的延迟,屏幕的闪烁,以及余辉现象,都会引起视觉的不舒适。一方面降低了产品的档次,另外用户长时间操作时会导致眼睛的疲劳,产生厌倦情绪。

    2. 基本介绍

    无论是lcd还是crt,进行绘图,都是在“画布”上做清除旧位置的图和重新画新位置的图的操作。当程序执行速度不够快时,我们会看到清除的操作与重画的操作,这就造成了闪烁现象。解决这个问题的方法之一,就是把清除与重画的操作放在另一张“画布”上完成,等到画完后再复制到最后要显示的“画布”上。这种绘图方式就是双缓冲。

    实际上,图形的双缓冲显示方式,对于windows程序设计员来说,一点也不陌生。以mfc绘图机制来说,cpaintdc就是要显示的画布,如果我们使用另外一个兼容的dc来做清除与重画的操作,再把整个dc的图像复制到cpaintdc,就可以避免屏幕闪烁的问题。对于多数嵌入式设备来说,由于mcu的处理速度要慢许多,因此在软件设计中,更需借鉴这种方法,以期提高显示速度,最大限度地降低液晶的显示缺陷。

    3. 实现方法

    双缓冲方式不仅可以提高液晶显示速度,还可以改善软件模块的封装性和可移植性。实现时,就是在系统存贮器中开辟一块显示ram 的镜像缓冲区域,此区域保存了预备显示图像的“快照”。当更改屏幕内容时,先更改镜像区域的内容;需要显示时,才把“快照”数据刷新到显示ram。这样对于用户界面而言,显示速度只取决于“快照”的送入速度。

    下面,我们以两种常用的液晶控制器(t6963c和sed1335)为例,说明如何使用双缓冲的方式进行液晶的快速显示。为了简单起见,我们直接选用内藏驱动和控制器的典型图形液晶显示模块。

    1) 基于t963c的液晶显示模块smg24064b

    smg24064b是显示点阵为240*64、控制器为t6963c的液晶显示模块,工作环境是5v/10ma,生产厂家为长沙太阳人。许多液晶生产厂家都有和这款相兼容的产品,如大连东显、深圳拓普微、台湾晶采等。其接口信号说明如下:

    表1 smg24064b信号线说明

     

     

    smg24064b应用时,可以采用总线方式或者模拟口线方式。双缓冲方式只能采用总线方式,通过端口译码来实现。下图是一种典型的接口电路。图中的gal实现地址译码,当然也可以采用74138等完成译码。译码输出信号连接到t6963c控制器的片选使能端ce,而数据命令选择端c/d可以接地址线a0。

     

     

    图1 smg24064b与8031的总线连接

    这样,就得到了两个译码端口,一个端口作为控制口,向t6963c送入命令;一个端口作为数据口,向t6963c送入数据。采用地址译码方式来执行液晶控制、显示、绘制,以及存贮操作等指令。

    显而易见,240×64液晶的显示ram 空间为240/8×64=1920字节。而t6963c控制器内部自带8kb的ram缓冲区,其中显示缓冲区首地址寄存器对应的后续1920字节的内容就映射到lcd屏幕的相应位置。这样,我们从嵌入式系统mcu扩充的外部ram中分配1920字节作为镜像显示缓冲(软件编程也就是从外部ram中分配1920字节的数组),来实现双缓冲显示。对于应用系统而言,如果扩展的外部ram较大(如32kb)时,分配不到2kb的镜像显示缓冲,开销不算大;但却可以大大改善显示的速度。

    这样,lcd的绘图程序,比如画点、画线、填充、字符串显示等,都是在镜像缓冲ram中操作的;只有两个程序,lcd的初始化程序initlcd(初始化液晶,设置液晶的显示模式等)和显示程序displaylcd(把镜像缓冲数据刷新到t6963c内的显示ram缓冲),与底层硬件相关。下面是显示程序displaylcd的实现流程:

    1、 设置液晶显示的起始0地址(数据口写入数据0x00和0x00,命令口写入数据0x24);

    2、 设置液晶连续写模式(命令口写入数据0xb0);

    3、 把镜像缓冲中的1920个数据连续送入数据口(数据口写入显示数据);

    4、 中止液晶连续写模式(命令口写入数据0xb2)。

    上述命令指令含义请参见液晶模块或者控制器相关资料。显示程序只在要最终显示的时候才调用,它决定了显示速度,我们可以专门对它进行优化,或者用汇编代码完成,实现最快的显示速度。

    当然,如果系统扩展的ram空间足够时,我们还可以采用三缓冲的方式,也就是在系统ram中分配两块镜像区域。一块缓冲保存当前显示图形数据,另一块保存下一个图形数据,然后交替地把缓冲区的数据送入显示ram,完成显示。这种方式适用于以下情况:用户界面的更新多数只是局部更新,因此通过比较两块缓冲数据的不同,显示时只需要送入当前缓冲中不相同的部分数据,可以进一步提高显示速度。

    2) 基于sed1335的液晶显示模块edm320240-2

    edm320240-2是显示点阵为320*240、控制器为sed1335的液晶显示模块,ram的显示容量为32kb,生产厂家为大连东显。许多320*240的液晶,如dmf50081、lm32019p/t等,都可采用sed1335控制器。 实际上,对于较大的图形液晶,通常采用sed1330/1335系列控制器。此控制器功能强大,具有丰富指令集,与mpu接口有较强的i/o缓冲器,可以管理64k显示缓冲区。具备文本/图形显示特性。可以显示文本区和三个图形显示区的内容(通过软件初始化实现),其中三个图形显示区l1、l2、l3可以单独显示,也可以合成显示。如下图所示:

     

     

    图2 edm320240-2的图形显示区

    显而易见,320×240的图形液晶显示缓存至少需要320/8×240=9600字节。而利用三区显示特性时,通过内部总线需要扩充显示ram为9600×3=28800字节。因此,对于液晶模块厂家来说,硬件设计时通常扩充了32k的显示ram,如62256。实际上,多数时候我们只用单区来显示就足够了。

    在嵌入式应用中,如果需要液晶显示程序有较好的移植性,并且系统ram足够大,足够分配9600字节的镜像缓冲的话,那么,最好就象上面的t6963c应用示例一样处理吧。分配9600字节的镜像缓冲后,所有的画点、画线、位图等操作,都是在镜像缓冲ram中完成,你只需要在显示的时候,把镜像缓冲ram中数据送到显示区。

    如果应用系统没有足够的ram,也不要紧。我们可以巧妙地应用sed1335提供的特性,把显示区l1,l2当成双缓冲,同样实现双缓冲的显示,一样可以使得屏幕画面变化时没有延时和闪烁现象。不过,此时的画点画线操作都与硬件相关,软件模块的移植性不够好。

    具体叙述如下:首先关闭显示区l1,l2,l3;在显示区l1上完成“快照”(即画点画线操作),然后打开l1,即单独显示l1;画面变化时,就把变化后的画面“快照”到l2。当需要刷新显示时,关闭l1,打开l2即可。下次再关闭l2,打开l1。如此交替反复。

    当然,sed1335具备3个显示区,有效利用可以完成更加有趣的应用,在此不多谈。下图为定时刷新显示的示意图:

     

     

    图3 edm320240-2的图形显示

    4. 结束语

    采用这种方法,具有很多好处:

    1. 显示内容更改快。表现在用户界面上,几乎感觉不到刷新和闪烁。

    2. 软件模块封装好。菜单编程模块和刷新显示模块分开。菜单编程模块与具体硬件无关,只对镜像ram操作。刷新模块才和硬件相关。软件的更改和移植方便。

    3. 可以轻松完成许多特技效果,如画面的滚动,平移推拉,交错,百叶窗等。

    4. 由于用户界面保存于镜像ram中,还方便实现远程诊断等功能。

    综上所述,双缓冲方式不仅可以实现液晶的快速显示,尽可能地避免屏幕闪烁,延迟,余辉等现象,还可以实现许多有趣和特殊的显示。这种思想也适用于文本型液晶的快速显示,同样也适用于crt等其他有较大显示容量的显示器件。运用之妙,在乎各人了。


【看看这篇文章在百度的收录情况】

联系方式

  • 0731-85579057 , 0731-85569651
  • 点击这里给我发消息点击这里给我发消息点击这里给我发消息
网站栏目导航: 培训课程 手机硬件 手机软件 综合维修 学校资讯 考证指南 就业导航 招生指南 教学管理 入学须知 学校图片 教学大纲 师资力量 学生感言 学校概况 教学实景 手机维修培训资讯 电脑维修培训 维修间故事 手机维修培训 液晶电视维修培训 家电维修资料网 电器维修资料网 招生地区 刷机教程 家电维修 手机技巧 老版网站 招生平台网络工程
友情链接: 监控安装培训 电动工具维修 家电维修学校 电工培训学校 液晶电视维修 焊工培训学校 电工焊工学校 电脑维修学校 家电维修培训 电脑维修培训 家装电工培训网络安装维护 主板维修 液晶显示器 笔记本电脑维修 电脑组装维护 电脑硬件维修 电脑维修 电工考证 电工证 装修电工 水电工 维修电工 电工 焊接技术 电焊工 焊工 电动设备维修 电动工具维修 制冷维修 空调维修 冰箱维修  更多>>
阳光-手机维修教育品牌学校
点击这里给我发消息 点击这里给我发消息 点击这里给我发消息
电工培训学校 电动车维修学校 摩托车维修学校 摩托车维修培训 手机维修培训 家电维修培训 电脑维修培训 电动工具维修培训 液晶电视维修培训 安防监控培训 空调维修培训 网络营销培训 网站设计培训 淘宝网店培训 电器维修培训 家电维修学校 电工培训 焊工培训 电工学校 电工培训学校 电动车维修学校 摩托车维修学校 摩托车维修培训 手机维修培训 家电维修培训 电脑维修培训 电动工具维修培训 液晶电视维修培训 安防监控培训 空调维修培训 网络营销培训 网站设计培训 淘宝网店培训 电器维修培训 家电维修学校 电工培训 焊工培训 电工学校 电工培训学校 电动车维修学校 摩托车维修学校 摩托车维修培训 手机维修培训 家电维修培训 电脑维修培训 电动工具维修培训 液晶电视维修培训 安防监控培训 空调维修培训 网络营销培训 网站设计培训 淘宝网店培训 电器维修培训 家电维修学校 电工培训 焊工培训 电工学校 电工培训学校 电动车维修学校 摩托车维修学校 摩托车维修培训 手机维修培训 家电维修培训 电脑维修培训 电动工具维修培训 液晶电视维修培训 安防监控培训 空调维修培训 网络营销培训 网站设计培训 淘宝网店培训 电器维修培训 家电维修学校 电工培训 焊工培训 电工学校
中山市,固原市,银川市,玉树,海东,陇南市,酒泉市,张掖市,天水市,金昌市,兰州市,榆林市,延安市,渭南市,铜川市,阿里,山南,拉萨市,怒江,文山州,楚雄州,普洱市,昭通市,玉溪市,昆明市,毕节,铜仁,遵义市,贵阳市,甘孜州,资阳市,达州市,宜宾市,南充市,遂宁市,绵阳市,泸州市,自贡市,三亚市,崇左市,河池市,玉林市,钦州市,梧州市,柳州市,梅州市,肇庆市,湛江市,佛山市,珠海市,韶关市,湘西州,怀化市,郴州市,张家界市,邵阳市,株洲市,仙桃市,随州市,荆州市,荆门市,襄樊市,黄石市,驻马店市,信阳市,南阳市,漯河市,中卫市,石嘴山市,海西,海南藏州,黄南州,海北,甘南,庆阳市,平凉市,武威市,白银市,嘉峪关市,安康市,汉中市,咸阳市,宝鸡市,林芝,日喀则,昌都,迪庆,德宏,大理,西双版纳,红河州,临沧市,丽江市,保山市,曲靖市,黔东州,黔西州,安顺市,六盘水市,凉山州,阿坝州,雅安市,广安市,眉山市,内江市,广元市,德阳市,攀枝花市,成都市,海口市,来宾市,百色市,贵港市,北海市,桂林市,南宁市,云浮市,揭阳市,潮州市,清远市,阳江市,汕尾市,惠州市,茂名市,江门市,汕头市,深圳市,广州市,娄底市,永州市,益阳市,岳阳市,湘潭市,长沙市,恩施州,黄冈市,孝感市,鄂州市,十堰市,武汉市,周口市,商丘市,三门峡市,许昌市,焦作市,安阳市,鹤壁市,平顶山市,开封市,郑州市,聊城市,滨州市,德州市,莱芜市,日照市,泰安市,烟台市,潍坊市,东营市,淄博市,上饶市,济南市,抚州市,宜春市,赣州市,新余市,九江市,景德镇市,宁德市,南平市,泉州市,莆田市,厦门市,宣城市,亳州市,六安市,宿州市,黄山市,滁州市,安庆市,淮北市,马鞍山市,蚌埠市,芜湖市,合肥市,丽水市,舟山市,衢州市,金华市,湖州市,嘉兴市,宁波市,宿迁市,镇江市,盐城市,连云港市,苏州市,徐州市,南京市,绥化市,牡丹江市,佳木斯市,大庆市,鹤岗市,哈尔滨市,白城市,白山市,辽源市,吉林市,葫芦岛市,铁岭市,盘锦市,阜新市,锦州市,本溪市,鞍山市,沈阳市,锡林郭勒盟,通辽市,乌海市,吕梁市,忻州市,晋中市,晋城市,阳泉市,太原市,廊坊市,承德市,保定市,邯郸市,唐山市,宁夏,甘肃省,西藏,贵州省,重庆市,广西,湖南省,河南省,江西省,安徽省,江苏省,黑龙江省,辽宁省,山西省,天津市,四平市,内蒙古,吴忠市,果洛,西宁市,定西市,商洛市,西安市,那曲,黔南州,巴中市,乐山市,贺州市,防城港市,东莞市,河源市,常德市,衡阳市,咸宁市,宜昌市,濮阳市,新乡市,洛阳市,菏泽市,临沂市,威海市,济宁市,枣庄市,青岛市,吉安市,鹰潭市,萍乡市,南昌市,龙岩市,漳州市,三明市,福州市,池州市,巢湖市,阜阳市,铜陵市,淮南市,台州市,绍兴市,温州市,杭州市,泰州市,扬州市,淮安市,南通市,常州市,无锡市,大兴安岭,黑河市,七台河市,伊春市,双鸭山市,鸡西市,齐齐哈尔市,延边,松原市,通化市,长春市,朝阳市,辽阳市,营口市,丹东市,抚顺市,大连市,阿拉善盟,兴安盟,乌兰察布市,巴彦淖尔市,呼伦贝尔市,鄂尔多斯市,赤峰市,包头市,呼和浩特市,临汾市,运城市,朔州市,长治市,大同市,衡水市,沧州市,张家口市,邢台市,秦皇岛市,石家庄市,青海省,陕西省,云南省,四川省,海南省,广东省,湖北省,山东省,福建省,浙江省,上海市,吉林省,河北省,北京市