段式液晶驱动Word文件下载.docx

上传人:b****6 文档编号:16880987 上传时间:2022-11-26 格式:DOCX 页数:18 大小:279.15KB
下载 相关 举报
段式液晶驱动Word文件下载.docx_第1页
第1页 / 共18页
段式液晶驱动Word文件下载.docx_第2页
第2页 / 共18页
段式液晶驱动Word文件下载.docx_第3页
第3页 / 共18页
段式液晶驱动Word文件下载.docx_第4页
第4页 / 共18页
段式液晶驱动Word文件下载.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

段式液晶驱动Word文件下载.docx

《段式液晶驱动Word文件下载.docx》由会员分享,可在线阅读,更多相关《段式液晶驱动Word文件下载.docx(18页珍藏版)》请在冰豆网上搜索。

段式液晶驱动Word文件下载.docx

LCDDriver提供了两种工作模式,除了普通电容型工作模式,还有一种低功耗工作模式SLP。

实际上,所谓SLP模式,也是电容型的,只是它比电容型普通工作模式省电,但这样的描述多少让人乍一看以为是有别于电容型的另一种模式。

(只支持电容型,也是一个美中不足。

)由于是电容型,使用LCD功能时VP1引脚和VP2引脚必须连接0.1μF的电容,CUP1引脚和CUP2引脚也必须用0.1μF相连。

此外,不论是否打开LCD的电压泵,这两只电容是否都必须接,或者这两只电容的具体作用,技术规格书中未作阐述,稳妥起见,对于低压工作的系统,还是打开为宜。

其他参数及用法可参阅技术规格书以及其他应用文档的描述,详见参考资料。

3.EDS815数码液晶显示器

EDS815是四位8数码段式液晶显示器,静态驱动,驱动电压3.0V~5.0V,视角6:

00。

其外形图及真值表如下:

下载(41.28KB)

EDS815

2009-12-1714:

14

该液晶只有一个COM端,引脚1和40实际是短接在一起的,其他所有的字段都单独连出引脚。

在仪表中,这是一款比较常用的液晶屏。

它的驱动可以用单片机的I/O口辅以若干门电路形成的脉冲信号来实现,比如CD4055,具体方法非本文重点,此处略。

4.SH79F32驱动EDS815的可行性

一般地,段型液晶的驱动有两种方式:

动态驱动和静态驱动。

所谓动态驱动显示,就是像素电极排布呈矩阵或变形矩阵方式,需用时间分割扫描方式驱动;

所谓静态驱动显示,就是每个像素均有单独的引出电极,驱动期间要持续施加电压。

我们都知道,不论哪种驱动方式,都必须遵守的原则是:

施加给液晶的应该是交流电场,并要求在这个交流电场中的直流分量越小越好,因为直流电场将导致液晶材料的化学反应和电极老化,从而迅速降低液晶材料的寿命。

SH79F32支持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端)来说,动态扫描时,与各个段脚形成的驱动信号也必须严格服从这个原则。

那么,如果不考虑与其他背电极的分时扫描,该背电极也可以看作是间歇的脉冲静态驱动,因此,该COM端的平均电压也应该接近零,所以也应当能用于驱动静态液晶,可能需要适当调整扫描的频率。

[本帖最后由banian于2009-12-1714:

27编辑]

收藏分享

banian

∙发短消息

∙加为好友

banian当前离线

UID

579 

帖子

12 

精华

积分

77 

阅读权限

20 

在线时间

3小时 

注册时间

2009-9-10 

最后登录

2010-3-29 

注册会员

技术

27 

金钱

42 

2#

发表于2009-12-1714:

20|只看该作者

【续】

我们可以用驱动波形图来论证此设想,由于中颖的资料中没有正常模式下的LCD驱动输出波形示意图,只好从合泰的资料中截取一副插图来说明。

(从示波器获取图形比较麻烦,实际波形与图示基本吻合,而且图示比实际波形好看。

下载(36.56KB)

液晶波形

20

如上图示,以红线所示的一个周期区间为例,假设VSS为电压0,VC为电压1,VB为电压2,VA为电压3,计算段脚与公共端之间的平均电压,显然,最终平均电压为0。

所以,符合交流驱动的要求。

那么,只要根据实际显示情况,调整驱动脉冲频率(LCD时钟参数),就能得到满意的效果。

对于SLP模式,照此推理,也应当可行,同时还能调整PLCON参数来实现对比度调节。

5.在SH79F32目标板上实验EDS815的软、硬件设计

为了验证上面的设想,利用JET51、SH79F32目标板、EDS815液晶片来搭建试验平台。

液晶引脚与单片机之间的具体接线如下图,其他部分直接利用目标板,电路图中略去。

系统时钟使用32.768kHz晶振,JET51电源选项为5V。

为调试方便,随便取了P2.4驱动一只绿光LED作为状态指示。

看门狗及OVL暂不考虑。

下载(137.92KB)

接线图

程序很简单,目的就是将LCD全屏点亮,流程图略去。

首先初始化I/O口,将相应引脚配置成SEG、COM功能,接着初始化LCD相关寄存器,最后打开点亮LCD,延时一定时间后再熄灭LCD(显示空白,而非关闭LCD),再延时一定时间后再让LCD全屏显示,依此循环往复。

因为JTAG口占用了SEG3~SEG6,所以用JET51调试时,有3个笔段和1个小数点没有显示出来。

低功耗模式、对比度调节、LCD时钟频率调节等对显示的影响非本文重点,此处就不做实验比较了。

另外,用下载程序的方式运行程序(可以参考我的第一篇体会的说明:

【1021-1】JET51及SH79F32目标板用后感)的效果跟用调试模式运行程序的效果有差异,前者显示有些模糊,不知道是否跟电源有关系,因手边没有合适的外接电源,此现象还有待查证,但个人认为应该没问题。

实物照片(调试模式运行程序)如下:

下载(851.08KB)

实物照片1

下载(716.84KB)

实物照片2

程序分两个版本,我首先用汇编的,因为汇编不容易错,之后又写了个C语言的,均编译、调试及下载运行通过。

因为程序量小,未考虑程序的优化,只为实现目的而已,仅供需要的朋友参考。

C版本程序如下:

#include<

CPU32.h>

intrins.h>

voiddelay(unsignedint);

voidInit_LCD(void);

voidInit_IO(void);

voidInitialCpu(void);

voidLCD_Offon(unsignedchari);

unsignedcharxdataSEG[32]_at_0x1E0;

voidmain(void)

{

delay(817);

RSTSTAT=0x00;

//Bin(00000000);

CLKCON=0x80;

delay(100);

InitialCpu();

delay(1640);

while

(1)

{

RSTSTAT=0x00;

//Bin(00000000)

P2_4=1;

LCD_Offon(0);

delay(1640);

P2_4=0;

LCD_Offon

(1);

delay(2640);

}

}

/*-----------------------------------------------------

voiddelay(unsignedintn)

功能说明:

延时子程序

其他说明:

delay20*(n)*Tsys

输入:

n-0~65535

输出:

-----------------------------------------------------*/

unsignedinttemp;

for(temp=n;

temp>

0;

temp--)

{RSTSTAT=0x00;

_nop_();

_nop_();

voidInit_IO(void)

初始化IO子程序

// 

P0 

P1 

P2 

P3 

P4

//bit7 

(SEG32) 

(SEG24) 

UN 

(COM4)

//bit6 

(SEG31) 

(SEG23) 

(COM3)

//bit5 

(SEG30) 

(SEG22) 

(COM2)

//bit4 

(SEG29) 

(SEG21) 

LED 

UN 

(COM1)

//bit3 

(SEG28) 

(SEG20) 

(CUP1)

//bit2 

(SEG27) 

(SEG19) 

(CUP2)

//bit1 

(SEG26) 

(SEG18) 

(VP1)

//bit0 

(SEG25) 

(SEG17) 

(VP2)

P0SS=0xff;

//Bin(11111111),P0sharedasseg25~29

P1SS=0xff;

//Bin(11111111),P1sharedasseg17~24

P0CR=0xff;

//Bin(11111111),输出,用于LCDSEG

P0PCR=0x00;

//Bin(00000000),上拉电阻关闭

P0=0x00;

//Bin(00000000)

P1CR=0xff;

P1PCR=0x00;

P1=0x00;

P2CR=0xff;

//Bin(11111111),P2.4输出,辅助状态灯

P2PCR=0x00;

P2=0x00;

P3CR=0xff;

//Bin(11111111),无用

P3PCR=0x00;

P3=0x00;

P4CR=0xff;

//Bin(11111111),输出

P4PCR=0x00;

P4=0x00;

voidInit_LCD(void)

初始化LCD子程序

unsignedchari;

/*-----------------使能LCD模块-----------------*/

LCDCON=0x20;

//Bin(00100000),P4共享为VP2~1、CUP2~1和COM1~4,占空比为1/4,PUMP=LCDCLK/4

PLCON=0x00;

//Bin(00000000);

LCDCLK=0x00;

PLCON=0x0f;

//Bin(00001111),设置PLD

LCDCON|=0x10;

//Bin(00010000),开启LCDPUMP

delay(1000);

//延时

LCDCON|=0x80;

//Bin(10000000),使能LCD模块

/*---------------显示内容初始化----------------*/

for(i=0;

i<

32;

i++) 

//LCD全部显示

SEG=0x0f;

//Bin(00001111);

/*-----------------------------------------------------voidLCD_Offon(unsignedchari)

点亮或熄灭LCD子程序

1-点亮,0-熄灭

voidLCD_Offon(unsignedchari)

unsignedchart;

t=i;

if(t==0)

for(i=0;

//LCD全部不显示

SEG=0x00;

if(t==1)

SEG=0x01;

//Bin(00001111)

/****************************************************************************

voidInitialCpu(void)

系统初始化程序

*****************************************************************************/

EA=0;

//关闭全中断

PSW=0;

//clearPSW

Init_IO();

Init_LCD();

EA=1;

//开启全中断

汇编程序如下,小程序还是建议初学的朋友用汇编,有益无害:

ORG 

000H

AJMP 

MAIN

0003H

RETI

0090H

MAIN:

MOV0B2H,#80H

MOV0E3H,#10H

MOV0F8H,#00H;

spsta

MOV95H,#00H;

adch

mov0adh,#0ffh;

p1ss

mov0aeh,#0ffh;

p0ss

mov0e1h,#0ffh;

p0cr

mov0e2h,#0ffh;

p1cr

mov0e3h,#0ffh;

p2cr

mov0e9h,#00h;

p0pcr

mov0eah,#00h;

p1pcr

mov0ebh,#00h;

p2pcr

mov0f7h,#01h;

xpage

movr0,#0dfh;

0x1e0

movr6,#20h;

D32

inlop:

incr0

mova,#0fh

movx@r0,a

djnzr6,inlop

mov0f7h,#0h

mov0abh,#20h;

lcdcon

mov0ach,#00h;

lcdclk

mov0afh,#0fh;

plcon

orl0abh,#10h;

pumpon

MOVR2,#03H;

130D

LP1:

MOVR4,#64H;

255D

LP2:

DJNZR4,LP2

DJNZR2,LP1

orl0abh,#80h

MAINLOP:

MOVR2,#43H;

LEDLP1:

LEDLP2:

DJNZR4,LEDLP2

DJNZR2,LEDLP1

CLRP2^4

acalllcdon

MOVR2,#43H

LEDLP3:

MOVR4,#64H

LEDLP4:

DJNZR4,LEDLP4

DJNZR2,LEDLP3

SETBP2^4

acalllcdoff

AJMPMAINLOP

lcdon:

inlop1:

djnzr6,inlop1

ret

lcdoff:

inlop2:

mova,#01h

djnzr6,inlop2

END

[本帖最后由banian于2009-12-1715:

13编辑]

TOP

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

当前位置:首页 > 工作范文 > 其它

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1