段式液晶驱动_第1页
段式液晶驱动_第2页
段式液晶驱动_第3页
段式液晶驱动_第4页
段式液晶驱动_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

【1021-2】用SH79F32驱动静态段式液晶显示器/viewthread.php?tid=5261.引言如今,液晶显示器在各种产品中得到了极其广泛的应用,其身影已遍及各行各业以及社会生活的各个角落。其中,段式液晶更是工控产品和部分小家电或消费类产品开发中经常用到的器件。随着技术的进步,各种驱动芯片的出现和发展也使液晶的使用变得轻松、快捷,而且越来越多的"厂商顺应市场的需求和趋势,将驱动集成到各种单片机中,更加简化了开发人员的设计工作。本文将试着探讨如何应用SH79F32集成的LCD驱动器,驱动各种段式液晶显示器,使其适应尽可能多的应用场合,并以静态驱动型的段式液晶EDS815为例,演示如何使用其液晶驱动功能。作此拙文,不当之处,还望各位批评指正。2.SH79F32的液晶驱动特性SH79F32的LCD驱动器包含一个控制器,一个电压发生器,一个占空比发生器,及4/5/6个COM驱动管脚和32/31/30个SEG驱动管脚。驱动器可编程为三种驱动模式:1/4占空比和1/3偏置电压(4X32),1/5占空比和1/3偏置电压(5X31),1/6占空比和1/3偏置电压(6X30)。另外,它还提供两种工作模式:电容型和SLP型(即低功耗模式)。SH79F32内建一个稳压源可以给LCD供电,如果单片机的电源超过3.2V,内部稳压源会产生稳定电压2.9V给驱动器提供电源;如果电源电压低于3.2V,内部稳压源输出低于2.9V,一般的3V液晶将不能显示在最佳状态(一些低压型的液晶除外)。根据技术规格书的描述,当电源VDD=3.6V〜5.5V时,应该在代码选项中打开LCD稳压源,同时VP3引脚要接一个电容(47pF)到电源地;当3.0V<VDD<3.6V时(3.0V是单片机的额定最低工作电压),则可以在代码选项中关闭LCD稳压源,VP3则要改为与VDD短接,且不需要上面提到的47pF电容。(注:芯片手册第8.14部分的表格第4行第2列指出,代码选项的OP_LVREN/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.0Vapplication”。)在应用中,一般地,电源系统要么是5V左右,要么就是3.3V左右,而且上下变动范围均在1V以内,变化范围跨越3.0V〜5.5V的不多见,即使有(比如串联电池),也往往会对单片机的电源进行固定值稳压以降低功耗及提高准确度、稳定性°5V的情况可以选择打开稳压源,3.3V(即3.2V〜3.6V之间)似乎有些难以选择,如果打开,当电压小于3.2V时,显示效果可能不理想,如果不打开,当电压大于3.2V时又可能对液晶物理本身不利。具体问题还得具体分析,假设最高电压可能达到甚至超过3.6V(比如充满电的锂电池)且不对单片机电源进行稳压,另外,液晶厂家认为这个电压对液晶性能及寿命有影响(有时候虽不会损坏,但可能会出现鬼影),那么为了保护LCD就必须降压,也就需要打开稳压源;如果液晶完全可以承受3.6V且不出现鬼影(根据个人以往使用经验,普通3V字段液晶基本会出现重影),那么可以关闭稳压源,这样基本就能保证液晶在整个工作范围内正常显示;如果单片机电源电压被稳在3.3V左右,也就是说最高3.3V左右,那么要是打开稳压后LCD在整个工作电压范围内显示效果不佳,可以考虑关闭稳压源而直接用VDD作为LCD的电压源(目标板其实就是这么使用的),或者不关闭并尝试向液晶制造厂商定制工作点低一些的液晶片。顺便提一下,Keil的下载程序选项中选择JET51的电压与LCD稳压器的打开选择没有必然的关系,它只是LCD稳压器配置的一个应用实例,莫将3.3V/5V作为用户自己的应用系统打开LCD稳压源与否的判定条件。LCDDriver提供了两种工作模式,除了普通电容型工作模式,还有一种低功耗工作模式SLP。实际上,所谓SLP模式,也是电容型的,只是它比电容型普通工作模式省电,但这样的描述多少让人乍一看以为是有别于电容型的另一种模式。(只支持电容型,也是一个美中不足。)由于是电容型,使用LCD功能时VP1引脚和VP2引脚必须连接0.川F的电容,CUP1引脚和CUP2引脚也必须用0.川F相连。此外,不论是否打开LCD的电压泵,这两只电容是否都必须接,或者这两只电容的具体作用,技术规格书中未作阐述,稳妥起见,对于低压工作的系统,还是打开为宜。其他参数及用法可参阅技术规格书以及其他应用文档的描述,详见参考资料。3.EDS815数码液晶显示器EDS815是四位8数码段式液晶显示器,静态驱动,驱动电压3.0V〜5.0V,视角6:00。其外形图及真值表如下:

S9.86枷】ITI12345S9.86枷】ITI123456799■1011121314smOCM1\IE1D1C1DP2E2D2G2CF3E30i5碍r7但俸力21整公2425株由点SWL3C3CP4£4D攵464A4F4GSBA3F3GeatFEW:Z930313233343536373S3&sm2D2A2F2/3\1日1A1F1G\QQT.n该液晶只有一个COM端,引脚1和40实际是短接在一起的,其他所有的字段都单独连出引脚。在仪表中,这是一款比较常用的液晶屏。它的驱动可以用单片机的I/O口辅以若干门电路形成的脉冲信号来实现,比如CD4055,具体方法非本文重点,此处略。4.SH79F32驱动EDS815的可行性一般地,段型液晶的驱动有两种方式:动态驱动和静态驱动。所谓动态驱动显示,就是像素电极排布呈矩阵或变形矩阵方式,需用时间分割扫描方式驱动;所谓静态驱动显示,就是每个像素均有单独的引出电极,驱动期间要持续施加电压。我们都知道,不论哪种驱动方式,都必须遵守的原则是:施加给液晶的应该是交流电场,并要求在这个交流电场中的直流分量越小越好,因为直流电场将导致液晶材料的化学反应和电极老化,从而迅速降低液晶材料的寿命。SH79F32支持4X32.5X31.6X30三种形式液晶驱动,且为1/3偏压,这三种其实就是动态驱动方式。如果我们定制的液晶是4、5或6个COM端,而且SEG数目在32、31、30以内,可以方便地直接用SH79F32进行驱动。(如果能支持1/2偏压,产品适用范围会更广。)但如果COM端只有3个,或者2个,抑或像上面提到的EDS815那样只有一个呢?不烦从EDS815入手看看能否解决。前面已经说明,原则上,只要施加在像素上的电场是交流的且直流分量尽可能小,就能正常点亮液晶。从每个单独的背电极(即某个COM端)来说,动态扫描时,与各个段脚形成的驱动信号也必须严格服从这个原则。那么,如果不考虑与其他背电极的分时扫描,该背电极也可以看作是间歇的脉冲静态驱动,因此,该COM端的平均电压也应该接近零,所以也应当能用于驱动静态液晶,可能需要适当调整扫描的频率。[本帖最后由banian于2009-12-1714:27编辑]收藏分享§2#banian口发表于2009-12-1714:20|只看该作者【续】banian我们可以用驱动波形图来论证此设想,由于中颖的资料中没有正常模式下的LCD驱动输出波形示意图,只好从合泰的资料中截取一副插图来说明。(从示波器获取图形比较麻烦,实际波形与图示基本吻合,而且图示比实际波形好看。)注册会员C-0M0阅读权限20LCDsegmentsONCOM2sidelightedUID579帖子12技术27金钱42阅读权限20LCDsegmentsONCOM2sidelightedNote:1/4duty,t/3bias,Ctype:'VAn3/2VLCD:"VB"MLCD."VC"VlCD如上图示,以红线所示的一个周期区间为例,假设VSS为电压0,VC为电压1,VB为电压2,VA为电压3,计算段脚与公共端之间的平均电压,显然,最终平均电压为0。所以,符合交流驱动的要求。那么,只要根据实际显示情况,调整驱动脉冲频率(LCD时钟参数),就能得到满意的效果。对于SLP模式,照此推理,也应当可行,同时还能调整PLCON参数来实现对比度调节。在SH79F32目标板上实验EDS815的软、硬件设计为了验证上面的设想,利用JET51、SH79F32目标板、EDS815液晶片来搭建试验平台。液晶引脚与单片机之间的具体接线如下图,其他部分直接利用目标板,电路图中略去。系统时钟使用32.768kHz晶振,JET51电源选项为5V。为调试方便,随便取了P2.4驱动一只绿光LED作为状态指示。看门狗及OVL暂不考虑。

CD■anLJECD楞~TUJE£53ST4DSEGS卯CD■anLJECD楞~TUJE£53ST4DSEGS卯SECTrnMBoSECI35DSEGIQSiSEG2QS2SEG23S3SEG2254SEO2355SEG24SCSEC2557SEC2.558SEG2759SEC23fiDSEG2Q6ISEG3062SEC-33£3£EG32ri4SEE4P5ECH7ZF].O3EO-L57F].!SEG19/P1.2SEC20^P].3SEGJ]^].-1SEEl/Pl.SSEG-23/P1.6SEG24/Pj.7£ECr25^PLI.Q甑tHmu.1SEO27/P0.23ECH.5-70.33ECH9-70.4FLT^SEJG30/PU.5PWP/P/SEG31iT0.6PV.M-VSE<;32^0.7ogoCl■:■□OO楞s一0写孙XLCJCIC?SH79F32CI■WOW一<1#ICCM3/F46CCM3/PM5COMI/PM4CUPUP4.3CUP2iP4.2VP侨宵LVP2^0TW3.7MTWa6IMBUT+T】旧35CAL[WT0^F34]NT]^F3.3JMT0P32323130u?1CON!COMMCNCJFCMCHCLGIELFID1AIDPNCIE2GW口IFJC:2A2DPJECOL3D3G3C3F3DP3A口E3B目口40g4F迎4A40n—17SE.G21~f:~1SEC05355BCI3]2SSEI347J4SE-OJOSEg眉_32SE-O292?SEOSP5EGT1Q3LSE-G2i网§EG母J13OSE-G275EG91229SBG2rt23SEGLD132SSE-C2SETGL1H2TSEC2422EEGL21526SE-G235EGL3:lri25SEG2121SEGH1724SEG21SEGL1823SEGJ020SEGltilS32SEGIQSEGL7202LSEGIS]QisEDS815―]?程序很简单,目的就是将LCD全屏点亮,流程图略去。首先初始化I/O口,将相应引脚配置成SEG、COM功能,接着初始化LCD相关寄存器,最后打开点亮LCD,延时一定时间后再熄灭LCD(显示空白,而非关闭LCD),再延时一定时间后再让LCD全屏显示,依此循环往复。因为JTAG口占用了SEG3〜SEG6,所以用JET51调试时,有3个笔段和1个小数点没有显示出来。低功耗模式、对比度调节、LCD时钟频率调节等对显示的影响非本文重点,此处就不做实验比较了。另外,用下载程序的方式运行程序(可以参考我的第一篇体会的说明:【1021-1】JET51及SH79F32目标板用后感)的效果跟用调试模式运行程序的效果有差异,前者显示有些模糊,不知道是否跟电源有关系,因手边没有合适的外接电源,此现象还有待查证,但个人认为应该没问题。实物照片(调试模式运行程序)如下:程序分两个版本,我首先用汇编的,因为汇编不容易错,之后又写了个C语言的,均编译、调试及下载运行通过。因为程序量小,未考虑程序的优化,只为实现目的而已,仅供需要的朋友参考。C版本程序如下:^include<CPU32.h>^include<intrins.h>voiddelay(unsignedint);voidInit_LCD(void):voidInit_I0(void);voidInitialCpu(void);voidLCD_0ffon(unsignedchari);unsignedcharxdataSEG[32]_at_OxlEO:voidmain(void){delay(817);RSTSTAT=0x00;//Bin(00000000):CLKC0N=0x80;delay(100);InitialCpu();delay(1640);while(1)RSTSTAT=0x00;//Bin(00000000)P2_4=1;LCD_0ffon(0);delay(1640);P2_4=0;LCD_Offon(l);delay(2640);voiddelay(unsignedintn)功能说明:延时子程序其他说明:delay20*(n)*Tsys输入:n-0~65535输出:无voiddelay(unsignedintn)unsignedinttemp;for(temp=n;temp>0;temp—){RSTSTAT=0x00;_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();}/*voidInit_IO(void)功能说明:初始化IO子程序其他说明:输入:无输出:无*/voidInit_IO(void){//P0P1P2P3P4//bit7(SEG32)(SEG24)UNUN(COM4)//bit6(SEG31)(SEG23)UNUN(COM3)//bit5(SEG30)(SEG22)UNUN(COM2)//bit4(SEG29)(SEG21)LEDUN(COM1)//bit3(SEG28)(SEG20)UNUN(CUP1)//bit2(SEG27)(SEG19)UNUN(CUP2)//bitl(SEG26)(SEG18)UNUN(VP1)//bit0(SEG25)(SEG17)UNUN(VP2)P0SS=0xff;//Bin(11111111),P0sharedasseg25~29P1SS=0xff;//Bin(11111111),P1sharedasseg17~24:曲顾聃直氟割去got(pjoa)ptoa(00000000)UT9//!00x0=W(00000000)UT9//!00x0=H3dW用唠'(llllllll)uiq//!JJXO=H3W(00000000)UT9//!00x0=£d(00000000)UT9//!00x0=H3dCd田垩{(llllllll)uTg//!JJxo=H3Cd(00000000)UT9//!00x0=2d(00000000)UT9//!OOxo制。dZd'用唠v7d{(iiiiiiu)uT9//耳尹0制。zd(00000000)UT9//!00x0=ldHIW4(00000000)UT9//:00X0制。didOHS(KH土田'用唠'(llllllll)uw//耳尹0制。Id(00000000)UT9//!00x0=0d圉中毋T'(00000000)UT9//!00x0=H3d0dOHS(KH土田'用唠'(llllllll)uw//耳尹0制。Od输入:无输出:无voidInit_LCD(void){unsignedchari;TOC\o"1-5"\h\z/*使能LCD模块*/LCDC0N=0x20://Bin(00100000),P4共享为VP2~1、PLC0N=0x00;//Bin(00000000);LCDCLK=0x00;//Bin(00000000);PLC0N=0x0f;//Bin(00001111),设置PLDLCDC0N|=0xl0;//Bin(00010000),开启LCDPUMPdelay(1000);//延时LCDCON|=0x80;//Bin(10000000),使能LCD模块/*显示内容初始化*/for(i=0;i<32;i++)//LCD全部显示SEG=OxOf;//Bin(00001111);.CUP2~1和COM广4,占空比为1/4,PUMP=LCDCLK/4voidLCD_0ffon(unsignedchari)功能说明:点亮或熄灭LCD子程序其他说明:输入:1-点亮,0-熄灭输出:无voidLCD_0ffon(unsignedchari){unsignedchart;t=i;if(t==0)for(i=0;i<32;i++)//LCD全部不显示{SEG=0x00;//Bin(00000000)}if(t==1)for(i=0;i<32;i++)//LCD全部显示SEG=0x01;//Bin(00001111)/个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个voidInitialCpu(void)功能说明:系统初始化程序其他说明:输入:无输出:无"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""/个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个/voidInitialCpu(void){EA=0;//关闭全中断PSW=0;//clearPSWInit_IO();Init_LCD();//EA=1;//开启全中断}汇编程序如下,小程序还是建议初学的朋友用汇编,有益无害:ORG000HAJMPMAINORG0003HRETIORG0090HMAIN:MOV0B2H,#80HMOV0E3H,ttlOHMOV0F8H,ttOOHjspstaMOV95H,ttOOHjadchmovOadh,ttOffh;pissmovOaeh,ttOffh;pOssmovOelh,ttOffh;pOcrmov0e2h,ttOffh;piermov0e3h,ttOffh;p2crmov0e9h,ttOOh;pOpcrmovOeah,ttOOh;pipermovOebh,ttOOh;p2pcrmov0f7h,ttOlh;xpagemovrO,ttOdfh;OxleOmovr6,#20h;D32inlop:incrOmova,#Ofhmovx@r0,adjnzr6,inlopmov0f7h,#0hmovOabh,tt20h;IcdconmovOach,ttOOh;IcdclkmovOafh,ttOfh;plconorlOabh,ttlOhjpumponMOVR2,#03H;130DLP1:MOVR4,#64H;255DLP2:DJNZR4,LP2DJNZR2,LP1orlOabh,#80hMAINLOP:MOVR2,#43H;130DLEDLP1:MOVR4,#64H;255DLEDLP2:DJNZR4,LEDLP2DJNZR2,LEDLP1CLRP2"4acallledonMOVR2,#43HLEDLP3:MOVR4,#64HLEDLP4:DJNZR4,LEDLP4DJNZR2,LEDLP3SETBP2"4acallledoffAJMPMAINLOPlcdon:mov0f7h,ttOlh;xpagemovrO,ttOdfh;OxleOmovr6,#20h;D32inlopl:incrOmova,#Ofhmovx@r0,adjnzr6,inloplmov0f7h,#0hretledoff:mov0f7h,ttOlh;xpagemovrO,ttOdfh;OxleOmovr6,#20h;D32inlop2:incrOmova,#01hmovx@r0,adjnzr6,inlop2mov0f7h,#0hretEND[本帖最后由banian于2009-12-1715:13编辑]TOP3#回banian【再续】口发表于2009-12-1714:23|只看该作者总结从上述的分析和实验来看,SH79F32驱动静态液晶还是可以的。当然,由于手边暂时没有仪器,没能对电气参数进行

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论