LCD1602液晶蓝屏中高档.docx

上传人:b****0 文档编号:12590844 上传时间:2023-04-20 格式:DOCX 页数:13 大小:153.78KB
下载 相关 举报
LCD1602液晶蓝屏中高档.docx_第1页
第1页 / 共13页
LCD1602液晶蓝屏中高档.docx_第2页
第2页 / 共13页
LCD1602液晶蓝屏中高档.docx_第3页
第3页 / 共13页
LCD1602液晶蓝屏中高档.docx_第4页
第4页 / 共13页
LCD1602液晶蓝屏中高档.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

LCD1602液晶蓝屏中高档.docx

《LCD1602液晶蓝屏中高档.docx》由会员分享,可在线阅读,更多相关《LCD1602液晶蓝屏中高档.docx(13页珍藏版)》请在冰豆网上搜索。

LCD1602液晶蓝屏中高档.docx

LCD1602液晶蓝屏中高档

大学城小赛格:

首页>电子元件>显示类>LCD液晶>LCD1602液晶(蓝屏,中高档)

 

 

产品名称:

LCD1602液晶(蓝屏,中高档)

所属类别:

显示类>>>>LCD液晶

商品规格:

蓝屏,中高档

商品单位:

每个

评分星级:

 有8位网友评论

 

这是一个单价,量大价格另议

LCD1602液晶(蓝屏,中高档) 

  LCD1602液晶显示模块基本技术:

1)、主要功能A、40通道点阵LCD驱动;B、可选择当作行驱动或列驱动;C、输入/输出信号:

输出,能产生20×2个LCD驱动波形;输入,接受控制器送出的串行数据和控制信号,偏压(V1∽V6);D、通过单片机控制将所测的频率信号读数显示出来2)、技术参数  极限参数表:

名称

符号

标 准 值

单位

MIN

TYPE

MAX

电路电源

VDD-VSS

-0.3

 

7.0

V

LCD驱动电压

VDD-VEE

VDD-13.5

 

VDD+0.3

V

输入电压

VIN

-0.3

 

VDD+0.3

V

静电电压

 

-

-

100

V

工作温度

 

-20

 

+70

储存温度

 

-30

 

+80

电参数表:

名称

符号

测试条件

标准值

单位

MIN

TYPE

MAX

输入高电平

VIH

-

2.2

 

VDD

V

输入低电平

VIL

-

-0.3

 

0.6

V

输出高电平

VOH

IOH=0.2mA

2.4

 

-

V

输出低电平

VOL

IOL=1.2mA

-

 

0.4

V

工作电流

IDD

VDD=5.0V

 

2.0

 

mA

液晶驱动电压

 VDD-VEE

Ta=0℃

 

4.9

 

V

Ta=25℃

 

4.7

 

Ta=50℃

 

4.5

 

时序特性表:

项目

符号

测试条件

标准值

单位

MIN

TYPE

MAX

允许时间周期

TCYCE

  5.1a5.1b

1000

 

 

ns

允许脉冲宽度,高电平

PWEH

450

--

--

ns

允许上升和下降时间

tErtEf

--

--

25

ns

地址建立时间

tAS

140

--

--

ns

数据延迟时间

tDDR

--

--

320

ns

数据建立时间

tDSW

195

--

--

ns

数据保持时间

tH

10

--

--

ns

DATAHOLDTIME

tDHR

20

--

--

ns

地址保持时间

tAH

10

--

--

ns

引脚引脚和指令功能  

模块引脚功能表:

]

符号

名称

功能

1

Vss

接地

0V

2

VDD

电路电源

5V±10%

3

VEE

液晶驱动电压

保证VDD-VEE=4.5∽5V电压差

4

RS

寄存器选择信号

H:

数据寄存器L:

指令寄存器

5

R/W

读/写信号

H:

读        L:

6

E

片选信号

下降沿触发,锁存数据

7-14

DB0-DB7

数据线

数据传输

寄存器选择功能表:

RS

R/W

操 作

0

0

指令寄存器(IR)写入

0

1

忙标志和地址计数器读出

1

0

数据寄存器(DR)写入

1

1

数据寄存器读出

(注:

忙标志为"1"时,表明正在进行内部操作,此时不能输入指令或数据,要等内部操作结束,即忙标志为"0"时。

4.3)指令功能

格式:

RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0

共11种指令:

清除,返回,输入方式设置,显示开关,控制,移位,功能设置,CGRAM地址设

置,DDRAM地址设置,读忙标志,写数据到CG/DDRAM,读数据由CG/DDRAM。

显示位与DDRAM地址的对应关系:

显示位序号

1   2   3    4   5 ……………… 40

DDRAM

地址(HEX)

第一行

00  01  02  03  04 ..………….. 27

第二行

40  41  42  43  44 …………….. 67

6)、初始化方法

用户所编的显示程序,开始必须进行初始化,否则模块无法正常显示,下面介绍两种初始化方法;

6.1利用内部复位电路进行初始化

下面指令是在初始化过程中执行的。

1.清屏(DISPLAYCLEAR);

2.功能设置(FUNCTIONSET);

DL=1:

8Bit接口数据;

N=0:

1行显示;F=0:

5×7dot字形;

1.显示开/关控制(DISPLAYON/OFFCONTROL)

D=0:

显示关;C=0:

光标关;B=0:

消隐关

1.输入方式设置(ENTRYMODESET)

I/D=1:

(增量):

    S=0:

无移位:

6.2)软件复位

如果电路电源不能满足复位电路的要求的话,那么初始化就要用软件来实现,过程如下:

八位接口初始化流程图

1602采用标准的16脚接口,其中:

第1脚:

VSS为地电源

第2脚:

VDD接5V正电源

第3脚:

V0为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度

第4脚:

RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。

第5脚:

R/W为读写信号线,高电平时进行读操作,低电平时进行写操作。

当RS和RW共同为低电平时可以写入指令或者显示地址,当RS为低电平RW为高电平时可以读忙信号,当RS为高电平RW为低电平时可以写入数据。

第6脚:

E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。

第7~14脚:

D0~D7为8位双向数据线。

第15脚:

背光电源正极

第16脚:

背光电源负极

1602液晶模块内部的字符发生存储器(CGROM)已经存储了160个不同的点阵字符图形,如表1所示,这些字符有:

阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码,比如大写的英文字母“A”的代码是01000001B(41H),显示时模块把地址41H中的点阵字符图形显示出来,我们就能看到字母“A”。

以下是在液晶模块的第二行第一个字符的位置显示字母“A”的程序:

ORG0000H

RSEQUP3.7;确定具体硬件的连接方式

RWEQUP3.6;确定具体硬件的连接方式

EEQUP3.5;确定具体硬件的连接方式

MOVP1,#00000001B;清屏并光标复位

ACALLENABLE;调用写入命令子程序

MOVP1,#00111000B;设置显示模式:

8位2行5x7点阵

ACALLENABLE;调用写入命令子程序

MOVP1,#00001111B;显示器开、光标开、光标允许闪烁

ACALLENABLE;调用写入命令子程序

MOVP1,#00000110B;文字不动,光标自动右移

ACALLENABLE;调用写入命令子程序

MOVP1,#0C0H;写入显示起始地址(第二行第一个位置)

ACALLENABLE;调用写入命令子程序

MOVP1,#01000001B;字母A的代码

SETBRS;RS=1

CLRRW;RW=0;准备写入数据

CLRE;E=0;执行显示命令

ACALLDELAY;判断液晶模块是否忙?

SETBE;E=1;显示完成,程序停车

AJMP$

ENABLE:

CLRRS;写入控制命令的子程序

CLRRW

CLRE

ACALLDELAY

SETBE

RET

DELAY:

MOVP1,#0FFH;判断液晶显示器是否忙的子程序

CLRRS

SETBRW

CLRE

NOP

SETBE

JBP1.7,DELAY;如果P1.7为高电平表示忙就循环等待

RET

END

   程序在开始时对液晶模块功能进行了初始化设置,约定了显示格式。

注意显示字符时光标是自动右移的,无需人工干预,每次输入指令都先调用判断液晶模块是否忙的子程序DELAY,然后输入显示位置的地址0C0H,最后输入要显示的字符A的代码41H。

SMC1602A(16*2)模拟口线接线方式

连接线图:

      ---------------------------------------------------

      |LCM-----51  |LCM-----51  |LCM------51     |

      ------------------------------------------------|

      |DB0-----P1.0|DB4-----P1.4|RW-------P2.0   |

      |DB1-----P1.1|DB5-----P1.5|RS-------P2.1   |

      |DB2-----P1.2|DB6-----P1.6|E--------P2.2   |

      |DB3-----P1.3|DB7-----P1.7|VLCD接1K电阻到GND|

      ---------------------------------------------------

 

[注:

AT89S52使用12M晶振]

=============================================================*/

#defineLCM_RW P2_0//定义引脚

#defineLCM_RS P2_1

#defineLCM_E  P2_2

#defineLCM_Data P1

#defineBusy   0x80//用于检测LCM状态字中的Busy标识

#include

voidWriteDataLCM(unsignedcharWDLCM);

voidWriteCommandLCM(unsignedcharWCLCM,BuysC);

unsignedcharReadDataLCM(void);

unsignedcharReadStatusLCM(void);

voidLCMInit(void);

voidDisplayOneChar(unsignedcharX,unsignedcharY,unsignedcharDData);

voidDisplayListChar(unsignedcharX,unsignedcharY,unsignedcharcode*DData);

voidDelay5Ms(void);

voidDelay400Ms(void);

unsignedcharcodeuctech[]={"uctech"};

unsignedcharcodenet[]={""};

voidmain(void)

{

 Delay400Ms();//启动等待,等LCM讲入工作状态

 LCMInit();//LCM初始化

 Delay5Ms();//延时片刻(可不要)

 DisplayListChar(0,5,uctech);

 DisplayListChar(0,0,net);

 ReadDataLCM();//测试用句无意义

 while

(1);

}

//写数据

voidWriteDataLCM(unsignedcharWDLCM)

{

 ReadStatusLCM();//检测忙

 LCM_Data=WDLCM;

 LCM_RS=1;

 LCM_RW=0;

 LCM_E=0;//若晶振速度太高可以在这后加小的延时

 LCM_E=0;//延时

 LCM_E=1;

}

//写指令

voidWriteCommandLCM(unsignedcharWCLCM,BuysC)//BuysC为0时忽略忙检测

{

 if(BuysC)ReadStatusLCM();//根据需要检测忙

 LCM_Data=WCLCM;

 LCM_RS=0;

 LCM_RW=0;

 LCM_E=0;

 LCM_E=0;

 LCM_E=1;

}

//读数据

unsignedcharReadDataLCM(void)

{

 LCM_RS=1;

 LCM_RW=1;

 LCM_E=0;

 LCM_E=0;

 LCM_E=1;

 return(LCM_Data);

}

//读状态

unsignedcharReadStatusLCM(void)

{

 LCM_Data=0xFF;

 LCM_RS=0;

 LCM_RW=1;

 LCM_E=0;

 LCM_E=0;

 LCM_E=1;

 while(LCM_Data&Busy);//检测忙信号

 return(LCM_Data);

}

voidLCMInit(void)//LCM初始化

{

 LCM_Data=0;

 WriteCommandLCM(0x38,0);//三次显示模式设置,不检测忙信号

 Delay5Ms();

 WriteCommandLCM(0x38,0);

 Delay5Ms();

 WriteCommandLCM(0x38,0);

 Delay5Ms();

 WriteCommandLCM(0x38,1);//显示模式设置,开始要求每次检测忙信号

 WriteCommandLCM(0x08,1);//关闭显示

 WriteCommandLCM(0x01,1);//显示清屏

 WriteCommandLCM(0x06,1);//显示光标移动设置

 WriteCommandLCM(0x0C,1);//显示开及光标设置

}

//按指定位置显示一个字符

voidDisplayOneChar(unsignedcharX,unsignedcharY,unsignedcharDData)

{

 Y&=0x1;

 X&=0xF;//限制X不能大于15,Y不能大于1

 if(Y)X|=0x40;//当要显示第二行时地址码+0x40;

 X|=0x80;//算出指令码

 WriteCommandLCM(X,0);//这里不检测忙信号,发送地址码

 WriteDataLCM(DData);

}

//按指定位置显示一串字符

voidDisplayListChar(unsignedcharX,unsignedcharY,unsignedcharcode*DData)

{

 unsignedcharListLength;

 ListLength=0;

 Y&=0x1;

 X&=0xF;//限制X不能大于15,Y不能大于1

 while(DData[ListLength]>0x20)//若到达字串尾则退出

 {

  if(X<=0xF)//X坐标应小于0xF

   {

    DisplayOneChar(X,Y,DData[ListLength]);//显示单个字符

    ListLength++;

    X++;

   }

 }

}

//5ms延时

voidDelay5Ms(void)

{

 unsignedintTempCyc=5552;

 while(TempCyc--);

}

//400ms延时

voidDelay400Ms(void)

{

 unsignedcharTempCycA=5;

 unsignedintTempCycB;

 while(TempCycA--)

 {

 TempCycB=7269;

 while(TempCycB--);

 };

 

以上程序仅供参考!

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

当前位置:首页 > 解决方案 > 学习计划

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

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