段式液晶驱动.doc

上传人:scccc 文档编号:12037728 上传时间:2021-12-01 格式:DOC 页数:28 大小:1.87MB
返回 下载 相关 举报
段式液晶驱动.doc_第1页
第1页 / 共28页
段式液晶驱动.doc_第2页
第2页 / 共28页
段式液晶驱动.doc_第3页
第3页 / 共28页
段式液晶驱动.doc_第4页
第4页 / 共28页
段式液晶驱动.doc_第5页
第5页 / 共28页
点击查看更多>>
资源描述

《段式液晶驱动.doc》由会员分享,可在线阅读,更多相关《段式液晶驱动.doc(28页珍藏版)》请在三一文库上搜索。

1、【1021-2】用SH79F32驱动静态段式液晶显示器 1.引言    如今,液晶显示器在各种产品中得到了极其广泛的应用,其身影已遍及各行各业以及社会生活的各个角落。其中,段式液晶更是工控产品和部分小家电或消费类产品开发中经常用到的器件。随着技术的进步,各种驱动芯片的出现和发展也使液晶的使用变得轻松、快捷,而且越来越多的IC厂商顺应市场的需求和趋势,将驱动集成到各种单片机中,更加简化了开发人员的设计工作。本文将试着探讨如何应用SH79F32集成的LCD驱动器,驱动各种段式液晶显示器,使其适应尽可能多的应用场合,并以静态驱动型的段式液晶EDS815为例,演示如何使用其液晶驱动

2、功能。作此拙文,不当之处,还望各位批评指正。2.SH79F32的液晶驱动特性       SH79F32的LCD驱动器包含一个控制器,一个电压发生器,一个占空比发生器,及4/5/6个COM驱动管脚和32/31/30个SEG驱动管脚。驱动器可编程为三种驱动模式:1/4占空比和1/3偏置电压(4×32),1/5占空比和1/3偏置电压(5×31),1/6占空比和1/3偏置电压(6×30)。另外,它还提供两种工作模式:电容型和SLP型(即低功耗模式)。       SH79F32内建一个稳压源

3、可以给LCD供电,如果单片机的电源超过3.2V,内部稳压源会产生稳定电压2.9V给驱动器提供电源;如果电源电压低于3.2V,内部稳压源输出低于2.9V,一般的3V液晶将不能显示在最佳状态(一些低压型的液晶除外)。根据技术规格书的描述,当电源VDD=3.6V5.5V时,应该在代码选项中打开LCD稳压源,同时VP3引脚要接一个电容(47F)到电源地;当3.0V<VDD<3.6V时(3.0V是单片机的额定最低工作电压),则可以在代码选项中关闭LCD稳压源,VP3则要改为与VDD短接,且不需要上面提到的47F电容。(注:芯片手册第8.14部分的表格第4行第2列指出,代码选项的OP_LVRE

4、N/OP_LVRLE为1/0时,当VDD>3.6V时为开,此时LCD驱动电压是2.9V,VDD<3.6V时为关,此时LCD驱动电压是VDD,似乎是说当如此设置时,LCD电源会根据实际电压自动进行切换,如果是这样,那么这个选项配置还分出那四种情况就没有意义了,因为能自动切换了还需要烧写配置吗,但如果不是这样,那么明明最后一列注着应用场合“VDD<3.6V”了,这里第二列这么写是什么意思呢?这其中的含义,我始终没想通。另外,8.1.3的上面那副示意图的右侧注释似乎有误,个人以为应该是“VDD = 3.6V- 5.0V application”。)    在应用

5、中,一般地,电源系统要么是5V左右,要么就是3.3V左右,而且上下变动范围均在1V以内,变化范围跨越3.0V5.5V的不多见,即使有(比如串联电池),也往往会对单片机的电源进行固定值稳压以降低功耗及提高准确度、稳定性。5V的情况可以选择打开稳压源,3.3V(即3.2V推荐精选3.6V之间)似乎有些难以选择,如果打开,当电压小于3.2V时,显示效果可能不理想,如果不打开,当电压大于3.2V时又可能对液晶物理本身不利。具体问题还得具体分析,假设最高电压可能达到甚至超过3.6V(比如充满电的锂电池)且不对单片机电源进行稳压,另外,液晶厂家认为这个电压对液晶性能及寿命有影响(有时候虽不会损坏,但可能会

6、出现鬼影),那么为了保护LCD就必须降压,也就需要打开稳压源;如果液晶完全可以承受3.6V且不出现鬼影(根据个人以往使用经验,普通3V字段液晶基本会出现重影),那么可以关闭稳压源,这样基本就能保证液晶在整个工作范围内正常显示;如果单片机电源电压被稳在3.3V左右,也就是说最高3.3V左右,那么要是打开稳压后LCD在整个工作电压范围内显示效果不佳,可以考虑关闭稳压源而直接用VDD作为LCD的电压源(目标板其实就是这么使用的),或者不关闭并尝试向液晶制造厂商定制工作点低一些的液晶片。顺便提一下,Keil的下载程序选项中选择JET51的电压与LCD稳压器的打开选择没有必然的关系,它只是LCD稳压器配

7、置的一个应用实例,莫将3.3V/5V作为用户自己的应用系统打开LCD稳压源与否的判定条件。       LCDDriver提供了两种工作模式,除了普通电容型工作模式,还有一种低功耗工作模式SLP。实际上,所谓SLP模式,也是电容型的,只是它比电容型普通工作模式省电,但这样的描述多少让人乍一看以为是有别于电容型的另一种模式。(只支持电容型,也是一个美中不足。)由于是电容型,使用LCD功能时VP1引脚和VP2引脚必须连接0.1F的电容,CUP1引脚和CUP2引脚也必须用0.1F相连。此外,不论是否打开LCD的电压泵,这两只电容是否都必须接,或者这两只电容的具

8、体作用,技术规格书中未作阐述,稳妥起见,对于低压工作的系统,还是打开为宜。    其他参数及用法可参阅技术规格书以及其他应用文档的描述,详见参考资料。3.EDS815数码液晶显示器      EDS815是四位8数码段式液晶显示器,静态驱动,驱动电压3.0V5.0V,视角6:00。其外形图及真值表如下:推荐精选下载 (41.28 KB)EDS8152009-12-17 14:14    该液晶只有一个COM端,引脚1和40实际是短接在一起的,其他所有的字段都单独连出引脚。在仪表中,这是一款比较常用的液晶屏。它的驱动

9、可以用单片机的I/O口辅以若干门电路形成的脉冲信号来实现,比如CD4055,具体方法非本文重点,此处略。4.SH79F32驱动EDS815的可行性    一般地,段型液晶的驱动有两种方式:动态驱动和静态驱动。所谓动态驱动显示,就是像素电极排布呈矩阵或变形矩阵方式,需用时间分割扫描方式驱动;所谓静态驱动显示,就是每个像素均有单独的引出电极,驱动期间要持续施加电压。我们都知道,不论哪种驱动方式,都必须遵守的原则是:施加给液晶的应该是交流电场,并要求在这个交流电场中的直流分量越小越好,因为直流电场将导致液晶材料的化学反应和电极老化,从而迅速降低液晶材料的寿命。SH推荐精选79F3

10、2支持4×32、5×31、6×30三种形式液晶驱动,且为1/3偏压,这三种其实就是动态驱动方式。如果我们定制的液晶是4、5或6个COM端,而且SEG数目在32、31、30以内,可以方便地直接用SH79F32进行驱动。(如果能支持1/2偏压,产品适用范围会更广。)但如果COM端只有3个,或者2个,抑或像上面提到的EDS815那样只有一个呢?不烦从EDS815入手看看能否解决。    前面已经说明,原则上,只要施加在像素上的电场是交流的且直流分量尽可能小,就能正常点亮液晶。从每个单独的背电极(即某个COM端)来说,动态扫描时,与各个段脚形成的驱动信

11、号也必须严格服从这个原则。那么,如果不考虑与其他背电极的分时扫描,该背电极也可以看作是间歇的脉冲静态驱动,因此,该COM端的平均电压也应该接近零,所以也应当能用于驱动静态液晶,可能需要适当调整扫描的频率。 本帖最后由 banian 于 2009-12-17 14:27 编辑 收藏 分享 banian · 发短消息 · 加为好友 banian 当前离线 UID579 帖子12 精华0 积分77 阅读权限20 在线时间3 小时 注册时间2009-9-10 最后登录2010-3-29 2# 发表于 2

12、009-12-17 14:20 | 只看该作者 【续】    我们可以用驱动波形图来论证此设想,由于中颖的资料中没有正常模式下的LCD驱动输出波形示意图,只好从合泰的资料中截取一副插图来说明。(从示波器获取图形比较麻烦,实际波形与图示基本吻合,而且图示比实际波形好看。)推荐精选注册会员UID579 帖子12 技术27  金钱42  阅读权限20 推荐精选下载 (36.56 KB)液晶波形2009-12-17 14:20    如上图示,以红线所示的一个周期区间为例,假设VSS为电压0,VC为电压1,VB为

13、电压2,VA为电压3,计算段脚与公共端之间的平均电压,显然,最终平均电压为0。所以,符合交流驱动的要求。那么,只要根据实际显示情况,调整驱动脉冲频率(LCD时钟参数),就能得到满意的效果。对于SLP模式,照此推理,也应当可行,同时还能调整PLCON参数来实现对比度调节。推荐精选5. 在SH79F32目标板上实验EDS815的软、硬件设计    为了验证上面的设想,利用JET51、SH79F32目标板、EDS815液晶片来搭建试验平台。液晶引脚与单片机之间的具体接线如下图,其他部分直接利用目标板,电路图中略去。系统时钟使用32.768kHz晶振,JET51电源选项为5V。为调

14、试方便,随便取了P2.4驱动一只绿光LED作为状态指示。看门狗及OVL暂不考虑。下载 (137.92 KB)接线图2009-12-17 14:20推荐精选推荐精选    程序很简单,目的就是将LCD全屏点亮,流程图略去。首先初始化I/O口,将相应引脚配置成SEG、COM功能,接着初始化LCD相关寄存器,最后打开点亮LCD,延时一定时间后再熄灭LCD(显示空白,而非关闭LCD),再延时一定时间后再让LCD全屏显示,依此循环往复。因为JTAG口占用了SEG3SEG6,所以用JET51调试时,有3个笔段和1个小数点没有显示出来。低功耗模式、对比度调节、LCD时钟频率调节等对显示的

15、影响非本文重点,此处就不做实验比较了。另外,用下载程序的方式运行程序(可以参考我的第一篇体会的说明:【1021-1】JET51及SH79F32目标板用后感)的效果跟用调试模式运行程序的效果有差异,前者显示有些模糊,不知道是否跟电源有关系,因手边没有合适的外接电源,此现象还有待查证,但个人认为应该没问题。    实物照片(调试模式运行程序)如下:下载 (851.08 KB)实物照片12009-12-17 14:20推荐精选下载 (716.84 KB)实物照片22009-12-17 14:20推荐精选    程序分两个版本,我首先用汇编的,因为汇编不容易错,

16、之后又写了个C语言的,均编译、调试及下载运行通过。因为程序量小,未考虑程序的优化,只为实现目的而已,仅供需要的朋友参考。C版本程序如下:#include <CPU32.h>#include <intrins.h>void delay(unsigned int);void Init_LCD(void);void Init_IO(void);void InitialCpu(void);void LCD_Offon(unsigned char i);unsigned char xdata SEG32 _at_ 0x1E0;void main(void)   

17、; delay(817);    RSTSTAT= 0x00;  /Bin(00000000);    CLKCON= 0x80;    delay(100);    InitialCpu();    delay(1640);    while(1)            RSTSTAT= 0x00;  /Bin(00000000)   

18、     P2_4= 1;        LCD_Offon(0);        delay(1640);        P2_4= 0;        LCD_Offon(1);        delay(2640);    /*-vo

19、id delay(unsigned int n)功能说明: 延时子程序其他说明: delay 20*(n)*Tsys输入:n-065535输出:无-*/void delay(unsigned int n)    unsignedint temp;    for(temp=n;temp>0;temp-)    RSTSTAT = 0x00;     _nop_();    _nop_();    _nop_();    _nop_(

20、);    _nop_();    _nop_();    _nop_();    _nop_();    _nop_();    _nop_();    _nop_();    _nop_();    _nop_();    _nop_();    _nop_();    _nop_();    /*-void Init_IO(void

21、)功能说明:初始化IO子程序其他说明:输入:无输出:无-*/void Init_IO(void)/                P0            P1           P2        P3       

22、0;P4/bit7    (SEG32)    (SEG24)      UN        UN    (COM4)/bit6    (SEG31)    (SEG23)      UN        UN    (COM3)/bit5    (SEG30)

23、    (SEG22)      UN        UN    (COM2)/bit4    (SEG29)    (SEG21)     LED       UN    (COM1)/bit3    (SEG28)    (SEG20)    

24、 UN        UN    (CUP1)/bit2    (SEG27)    (SEG19)      UN        UN    (CUP2)/bit1    (SEG26)    (SEG18)      UN     &#

25、160;  UN    (VP1)/bit0    (SEG25)    (SEG17)      UN        UN    (VP2)    P0SS=0xff;    /Bin(11111111),P0 shared as seg 2529    P1SS=0xff;    /Bin(11111111),P1

26、 shared as seg 1724    P0CR=0xff;    /Bin(11111111),输出,用于LCD SEG    P0PCR=0x00;    /Bin(00000000),上拉电阻关闭    P0=0x00;    /Bin(00000000)    P1CR=0xff;    /Bin(11111111),输出,用于LCD SEG    P1PCR=0x00;    /B

27、in(00000000),上拉电阻关闭    P1=0x00;    /Bin(00000000)    P2CR=0xff;    /Bin(11111111),P2.4输出,辅助状态灯    P2PCR=0x00;    /Bin(00000000)    P2=0x00;    /Bin(00000000)    P3CR=0xff;    /Bin(11111111),无用  &

28、#160; P3PCR=0x00;    /Bin(00000000)    P3=0x00;    /Bin(00000000)    P4CR=0xff;    /Bin(11111111),输出    P4PCR=0x00;    /Bin(00000000)    P4=0x00;    /Bin(00000000)/*-void Init_LCD(void)功能说明:初始化LCD子程序其他说明:输入:无输出

29、:无-*/void Init_LCD(void)    unsignedchar i;/*-使能LCD模块-*/    LCDCON=0x20;    /Bin(00100000),P4共享为VP21、CUP21和COM14,占空比为1/4,PUMP = LCDCLK/4    PLCON=0x00;    /Bin(00000000);    LCDCLK=0x00;    /Bin(00000000);    PLCON=0x0f;

30、    /Bin(00001111),设置PLD    LCDCON|=0x10;    /Bin(00010000),开启LCD PUMP    delay(1000);    /延时    LCDCON|=0x80;    /Bin(10000000),使能LCD模块/*-显示内容初始化-*/    for(i=0;i<32;i+)    / LCD全部显示      

31、0; SEG= 0x0f;    /Bin(00001111);    /*-void LCD_Offon(unsigned char i)功能说明:点亮或熄灭LCD子程序其他说明:输入:1-点亮,0-熄灭输出:无-*/void LCD_Offon(unsignedchar i)    unsignedchar t;    t=i;    if(t= 0)        for(i=0;i<32;i+)   

32、/LCD全部不显示                SEG= 0x00;    /Bin(00000000)            if(t= 1)        for(i=0;i<32;i+)    / LCD全部显示        

33、;        SEG= 0x01;    /Bin(00001111)        /*void InitialCpu(void)功能说明:系统初始化程序其他说明:输入:无输出:无*/void InitialCpu(void)    EA=0;    /关闭全中断    PSW=0;    /clearPSW    Init_IO();  &

34、#160; Init_LCD();/    EA=1;    /开启全中断    汇编程序如下,小程序还是建议初学的朋友用汇编,有益无害:ORG    000HAJMP    MAINORG    0003HRETIORG    0090HMAIN:MOV 0B2H,#80HMOV 0E3H,#10HMOV 推荐精选0F8H,#00H;spstaMOV 95H,#00H;adchmov 0adh,#0ffh;p1ssmov 0aeh,#0ffh;p0ssm

35、ov 0e1h,#0ffh;p0crmov 0e2h,#0ffh;p1crmov 0e3h,#0ffh;p2crmov 0e9h,#00h;p0pcrmov 0eah,#00h;p1pcrmov 0ebh,#00h;p2pcrmov 0f7h,#01h;xpagemov r0,#0dfh;0x1e0mov r6,#20h;D32inlop:inc r0mov a,#0fhmovx r0,adjnz r6,inlopmov 推荐精选0f7h,#0hmov 0abh,#20h;lcdconmov 0ach,#00h;lcdclkmov 0afh,#0fh;plconorl 0abh,#10h;pu

36、mponMOV R2,#03H;130DLP1:MOV R4,#64H;255DLP2: DJNZ R4,LP2DJNZ R2,LP1orl 0abh,#80hMAINLOP:MOV R2,#43H;130DLEDLP1:MOV R4,#64H;255DLEDLP2: DJNZ R4,LEDLP2DJNZ R2,LEDLP1CLR P24acall lcdonMOV R2,#43HLEDLP3:MOV R4,#64HLEDLP4: DJNZ R4,LEDLP4DJNZ R2,LEDLP3SETB P24acall lcdoffAJMP MAINLOPlcdon:mov 推荐精选0f7h,#01

37、h;xpagemov r0,#0dfh;0x1e0mov r6,#20h;D32inlop1:inc r0mov a,#0fhmovx r0,adjnz r6,inlop1mov 0f7h,#0hretlcdoff:mov 0f7h,#01h;xpagemov r0,#0dfh;0x1e0mov r6,#20h;D32inlop2:inc r0mov a,#01hmovx r0,adjnz r6,inlop2mov 推荐精选0f7h,#0hretEND 本帖最后由 banian 于 2009-12-17 15:13 编辑 TOP banian · 发短消息 · 加为好友 b

38、anian 当前离线 UID579 帖子12 精华0 积分77 阅读权限20 在线时间3 小时 注册时间2009-9-10 最后登录2010-3-29 注册会员UID579 3# 发表于 2009-12-17 14:23 | 只看该作者 【再续】6.总结    从上述的分析和实验来看,SH79F32驱动静态液晶还是可以的。当然,由于手边暂时没有仪器,没能对电气参数进行测试验证。朋友们若有兴趣,可以实测一下各SEG、COM引脚的波形,看是否符合要求。如果遇到3个COM或者2个COM的情况

39、,我想也可以如法炮制。到此,问题基本解决。由此,撇开跟其他IC厂家的产品对比,SH79F32的液晶驱动功能还是可以的,使用也比较简便。再加上它其他丰富的外设以及很有杀伤力的价格,其性价比还是值得肯定的。期盼中颖能不断改进,丰富文档,加大推广,让更多的朋友用上好的芯片。推荐精选帖子12 技术27  金钱42  阅读权限20 7.参考资料    建议朋友们可以先看看这些资料再下手。【SH79F32CV1.0.pdf,SH79F32V1.0.pdf】,SH79F32的中英文数据手册,【Exercise 10 -LCD&RTC.pdf】,79F32学习板的LCD及RTC模块的使用,开发工具相关资料, JET用户手册。 (注:可编辑下载,若有不当之处,请指正,谢谢!) 推荐精选

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1