




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、LCD1602液晶显示器简介LCD1602 液晶显示器简介一 概述液晶( Liquid Crystal )是一种高分子材料, 因其特殊的物理、化学、光学特性,广泛应用 轻薄显示器上。液晶显示器( Liquid Crystal Display , LCD )的主要原理是以电流刺激液晶分子产生 点、线、面并配合背部灯管构成画面。各种型号的液晶通常是按照显示字符的行 数或液晶点阵的行、列数来命名。例如, 1602 表示每行显示 16 个字符,一共可以显示两行。 这类液晶通常称为字符型液晶,只能显示 ASCII 码字符。12232 表示液晶显示画面由 122 列、 32 行组成,共有 122*32 个
2、点来显示各种 图形。用户可以通过程序控制这些点中任何一 个点显示或不显示,从而构成各种图形画面。 因此, 12232 称为图形型液晶。液晶体积小,功耗低,显示操作简单。但 其有致命的弱点,即使用温度范围很窄。通用 型液晶工作温度为 0 到 +55 摄氏度,存储温度为-20到+60摄氏度LCD160211602的外形尺寸(毫米)显示容量:16X2个字符芯片工咋电压;4. 55.5V工作电流:2. CiiiACS.檯块易铮工作电压:5.0V字符尺寸:2, 55X1,35 (WXH) mi主要技术参数编号荷号引脚说阴臨号符号引脚说明1VSS电源地9D2Data I/O2V0D电源圧极10D3Data
3、 l/Q3VL液晶显示偏压信号11Data 1/04RS数据/命令选禅端H/L)12D5Data I/O5比划读/写选择端(H/L)13DOData l/Cl6E便能信号14D7Data I/O7DDData I/O153 LA背光源正极aD1Cats I/OBLK背光源负极3接口信号说明输出:二状态字输出;无输出:DO-07=数据输出:无读状态:输入:RS=L, RW=H, E=H写指令;输入;氐三,RVUL,D0D7二指令码,E二高脉冲 读数据:输入:RS=H, RW=H, E=H写數摒:输入:RS二比RVT二L, DOD7二數振 E二高脉冲4基本操作时序 4 RAM地址映射图控制器内部带
4、有80B的RAM缓冲区。对 应关系如下图所示。向图中的000F、404F地址中的任意处 写入显示数据时,液晶可立即显示出来;当写 入到1027或5067地址时,必须通过移屏指 令将他们一移入可显示区域方可正常显示。1602液晶模块内部的字符发生存储器 (CGROM)已经存储了 160个不同的点阵字 符图形,如下表所示。CtiROM ICICGRAM中字捋ft码与字持圏惡対应关系000000)0OOHOl OoMl01100M110K1OI 11100)101!110miXXX XfldOOCGRAMn0App+夕三比pXXX xoooiIAQqa7AA aAx x X XOOIO*tRbr吋存
5、彳用X冃9XX XXOOi 1It3CScJ毛wXXX X01MJs4DTdt工卜-feDXXXX0101KsEUeu-p才JLB0xxx XOllO(T)&6FVf时r力3PzXXXX011L7Gw莒wT九Ewy其冥XIQOO(11(SHXh)91YIT丄-1yxxxxioio3)IJzJsXJJ于X X X X)011+1KEk1t口XXX X xutw5)7*N*n*七八nXX X XU1 11 /Oov7口df-这些字符有:阿拉伯数字、英文字母的大小 写、常用的符号、和日文假名等,每一个字符 都有一个固定的代码,比如大写的英文字母“ A”的代码是01OO00O1B( 41H),显示时模
6、 块把地址41H中的点阵字符图形显示出来,我 们就能看到字母“ A ”。84SFA7srA6STASSFMSfA3STA2STA1STAG)7D6D502DIDOSTAOHi 当前麴瞻血tlH旨野附敦宿-STA7 |逮写摆侄使能| 1 : 葉N 巫一6状态字说明说明:原则上每次对控制器进行读写操作前, 都必须进行读写检测,确保 STA7为0。实际 上,由于单片机的操作速度慢于液晶控制器的 反应速度,因此可以不进行检测,或只进行简 短的延时即可。7指令说明1602液晶模块内部的控制器共有11条控 制指令。指令码功能0o|i1100Dga i GX?显示5X7点阵,a位聊居擡口(1) 显示模式设置
7、功能U00U1DG0=1开显不;D=U关显示0=1显示光标:0=0不星示光标0=1光标iXllES; B=0光标不显示000001NN二1当读或写一个字符后地址1旨衬加 -且光标加一N-0当读或写一个宁符長地址指针咸 一p且光标减一8=1当写一个字符,整属显示左移(N=l)(2) 显示开/关及光标设置指令码功能眈H+地址码(0-27H .40H-G7H)设晉数据地址指針(3) 数据指针设置或右移(N=0),以得到光标不辂动社屏幕移动的效采| S弍当写一个字符.整屏显示不移动(4) 其它设置指令码功能0IH显示清屏;1.数据指针清雾2.所有显示清零02H显示回车 1.敎据指针清零8控制接口时序说
8、明时序参暫捋号单位测试条件最小值典型值棗丈追E倩号周期t4C0PS引脚EE腳寛嚏如150r!3E上升沿下降沿对间g Lf25ns地址II立时间tspiaans引腳E、隅Ml扯址保峙制旬tUDl10-rre裁据建立对社读操作)tcIGQP5引脚D3W)B7岐掳保持对耳:读操作)tHD320rs闕居建立玻间:写摄作)t$P24GJTS我抵保特对司存握作)tH圧ICrs时序参数读操作时序写操作时序9初始化过程1)延时15ms2)写指令38H(不检测忙信号)3)延时5ms4)写指令38H(不检测忙信号)5)延时5ms6)写指令38H(不检测忙信号)7)(以后每次写指令、读/写数据操作之前 均需检测忙信
9、号)8)写指令38H:显示模式设置9)写指令08H:显示关闭10)写指令01H:显示清屏11)写指令06H:显示光标移动设置12)写指令0CH显示开及光标设置驱动程序举例3W LS08O(78 HQ : : dR-如预詔.1/弗WLO9OWS1 I/O方式驱动程序程序如下:/*=SMC1602A(16*2)l/O 口线接线方式 连接线图:|LCM-51 | LCM-51 | LCM51 |1|DBO-P1.0|DB4-P1.4|RWP2.0 |DB1-P1.1|DB5-P1.5|RSP2.1 |DB2-P1.2 | DB6-P1.6 | EP2.2|DB3-P1.3| DB7-P1.7| VL
10、CD 接1K电阻到GND|注:AT89S51使用12M晶体震荡器 =*/#in elude sbit LCM_RW=P2A0;/ 定义引脚sbit LCM_RS =卩2八1;sbit LCM_E =P2A2;#define LCM Data P1#define Busy 0x80 / 用于检测 LCM 状态 字中的Busy标识voidWriteDataLCM(u nsig ned charWDLCM);void WriteComma ndLCM( un sig ned char WCLCM,BuysC);un sig ned char ReadDataLCM(void);un sig nedc
11、har ReadStatusLCM(void);void LCMI ni t(void);void Display On eChar( un sig nedchar X,un sig ned char Y, un sig ned char DData);void DisplayListChar(unsignedchar X,un sig ned char Y, un sig ned char code *DData);void Delayms( un sig ned int n); void dellay (un sig ned int h);un sig nedchar code blog_
12、adrEDNch in a;un sig nedchar code ema叩te ngji ngshu;void mai n(void)Delay400Ms(); / 启动等待,等LCM讲入工作状态LCMInit(); /LCM 初始化DisplayListChar(6, 0, blog_adr);DisplayListChar(O, 0, email);while(1);/写数据 RS=H,RW=L,DOD7= 数据,E= 高脉冲voidWriteDataLCM(u nsig nedcharWDLCM)dellay(100);LCM_E = 0;LCM_RS = 1;LCM_RW = 0;L
13、CM_Data = WDLCM;/dellay(100);短暂延时,代替检测忙状态ReadStatusLCM(); / 检测忙LCM_E = 1;LCM_E = 0;/ 写指令 RS=L,RW=L,D0D7=指令码,E=高脉冲voidWriteComma ndLCM( un sig nedchar WCLCM,BuysC)/BuysC 为0时忽略忙检测/if (BuysC) ReadStatusLCM(); / 根据 需要检测忙dellay(100);/短暂延时,代替检测忙状态LCM_E = 0;LCM_RS = 0;LCM_RW = 0;LCM_Data = WCLCM;LCM_E = 1;
14、LCM_E = 0;/读数据 RS=H,RW=H,E=H un sig ned char ReadDataLCM(void) LCM_RS = 1;LCM_RW = 1;LCM_E = 1; return(LCM_Data);读状态 RS=L,RW=H,E=Hun sig ned char ReadStatusLCM(void) LCM_Data = OxFF;LCM_RS = 0;LCM_RW = 1;LCM_E = 1;检测忙/while (LCM_Data & Busy); / 信号return(LCM_Data);void LCMI nit(void) LCM初始化LCM_Data =
15、 0;Delayms(15);WriteComma ndLCM(0x38,0); 显示模式设置,不检测忙信号Delayms(5);WriteComma ndLCM(0x38,0);Delayms(5);WriteComma ndLCM(0x38,0);WriteComma ndLCM(0x38,1);模式设置,开始要求每次检测忙信号WriteCommandLCM(0x08,1);显示WriteCommandLCM(0x01,1);清屏WriteComma ndLCM(0x06,1); / 光标移动设置WriteComma ndLCM(0x0C,1);/三次/显示/关闭/显示显示/显示开及光标设
16、置/按指定位置显示一个字符void Display On eChar( un sig nedchar X,un sig ned char Y, un sig ned char DData)Y &= 0x1;X &= 0xF; /限制X不能大于15, 丫不能 大于1if (Y) X |= 0x40;/当要显示第二行时地址码 +0x40;X |= 0x80;/算出指令码WriteCommandLCM(X,1); /这里不检测忙信号,发送地址码WriteDataLCM(DData);/按指定位置显示一串字符void DisplayListChar(unsignedchar X,un sig ned
17、char Y, un sig ned char code *DData)un sig ned char ListLe ngth;ListLe ngth = 0;Y &= 0x1;X &= OxF; /限制X不能大于15, Y 不能大于1while (DDataListLength0x1f)/若到达字串尾则退出if (X 0;j-) for(i=112;i0;i-);/*函数名称:dellay* 入口参数:h (unsigned int 型)*出口参数:无*功能描述:短暂延时,使用12MHz晶体,约 0.01MS*void dellay (un sig ned inth)while(h-); /
18、0.01MS要注意的是在读写程序中,没有用 检测 忙”,其实对于1602来说,没有检测忙信号对 于实际来说还好,因为常常因为检测忙,而使 1602没显示(一直处于忙检测中)。忙检测 用一个小延时代替。对于LCM1602来说,读写时序最重要LCM1602 写操作时序/写数据 RS=H,RW=L,DOD7= 数据,E= 高脉冲voidWriteDataLCM(u nsig nedcharWDLCM)dellay(100);/短暂延时,代替检测忙状态LCM_E = 0;LCM_RS = 1;LCM_RW = 0;LCM_Data = WDLCM;LCM_E = 1;LCM_E = 0;/ 写指令 R
19、S=L,RW=L,D0D7= 指令 码,E=高脉冲voidWriteComma ndLCM( un sig nedchar WCLCM)dellay(IOO);II短暂延时,代替检测忙状态LCM_E = 0;LCM_RS = 0;LCM_RW = 0;LCM_Data = WCLCM;LCM_E = 1;LCM_E = 0;上面两个分别为写数据函数和写命令函数, 检测忙已用小延时代替。其实这个时序好像不 太严格,但要保证的是E高脉冲时,写的数据 I命令是有效的。好像函数也可以写成这样:voidWriteComma ndLCM( un sig nedchar WCLCM)dellay(IOO);
20、/短暂延时,代替检测忙状态LCM_Data = WCLCM;LCM_RS = 0;LCM_RW = 0;LCM_E = 0; dellay(100);LCM_E = 1;/按指定位置显示一串字符函数DisplayListChar的作用是在指定位置显示一串字符,其中有一句“ while (DDataListLe ngth0x1f) / 若到 达字串尾则退出”为什么要大于0x20呢?un sig ned char code blog_adr EDNch in a;un sig nedchar codeema叩 te ngji ngshu;用单引号)括起来的字符为字符的 ASCII码值,而不是字符串
21、。用双引号(shift+)括起来的一串字符, 成为字符串常量。C编译器会自动地在字符末 尾加上结束符 (NULL) (ASCII码为0x00也 就是00H)。char a = “ Bei Jing ;char a= B , e , I , 0 ; J:两者是等价的,数组的每个元素为对应字符 的ASCII码如a3数组a的第四个元素是空格,则a3里面放着的是空格的ASCII码0x20。还要注意的是数组的元素数目一定要比字符多一个。以便C编译器自动在其后面加入结 束符0。可以知道0 ASCI码为 0x00n ASCI码为 0x0A那知道为什么有这句了吧“ while (DD ataListLe ng
22、th0x1F)/ 若到达字串尾则退出”因为大于0x1f才能显示字符,小于和等于 0x1f的都是键盘控制符。当然我们也可以检测0 (0x00)“ while (DDataListLe ngth!=0) / 检测到字符串结束符则退出”2总线方式驱动程序VZ09L3WS08无R/RSV0BIX8LLCM1602总线方式C51程序/*Lcd1602B.c *#in elude #include #in clude /*=显示字符串=*/voidLcdDisplayStri ng(un sig nedcharx,u nsig ned char y, un sig ned char *ptr) un si
23、g ned char i,l=0;while(ptrl 31)l+;/for (i=0;il;i+) LcdDisplayChar(x+,y,ptri);if ( x = 16 )x = 0; y A= 1; / 异或,第一行的话变第二行,第二行的话变第一行/*=显示光标定位=*/void LocateX Y( char posx,char posy) un sig ned char temp;temp = posx & OxOf;确保只选016个格子posy &= 0x01;确保不是在第一行就在第二行if ( posy )temp |= 0x40;在第二行的时候加40Htemp |= 0x8
24、0;数据指针设置 指令码 80H+ 地址码(0-27H ,40H-67H)LcdWriteComma nd(temp,1);/*=按指定位置显示数出一个字符=*/voidLcdDisplayChar( un sig nedcharx,u nsig ned char y,u nsig ned char Wdata) LocateXY( x, y );/定位显示地址LcdWriteData( Wdata );/写字符/*=初始化程序,必须按照产品资料介绍的初 始化过程进行*/void LcdReset( void ) Delayms(400);启动时必须的延时,等待lcm进入工作状态0);LcdW
25、riteComma nd(0x38,/显示模式设置(不检测忙信号)Delayms(15);LcdWriteComma nd(0x38,0);/共三次Delayms(15);LcdWriteComma nd( 0x38, 0);Delayms(15);LcdWriteComma nd(0x38,1);/显示模式设置(以后均检测忙信号)1);LcdWriteComma nd(/显示关闭0x08,LcdWriteComma nd(0x06,1);/显示光标移动设置LcdWriteComma nd(0x0c,1);/显示开及光标设置LcdClear();/*=clear=*/void LcdClear
26、(void)0x01,LcdWriteComma nd(1);/显示清屏/*=写控制字符子程序:E=1 RS=ORW=0=*/void LcdWriteComma nd( un sig ned charCMD,u nsig nedcharAttribC)/AttribC=1检查忙状态,AttribC=0 不检查忙状态if(AttribC)while(Lcd1602StatusPort&Busy );/检测忙信号?busy=0x80每次读写操作都要进行读写检测,确保SAT7=0Lcd1602CmdPort = CMD;/*=当前位置写字符子程序:E =1 RS=1RW=0=*/void LcdW
27、riteData( char dataW ) while( Lcd1602StatusPort &Busy );/检测忙信号busy=0x80每次读写操作都要进行读写检测,确保SAT7=0Lcd1602WdataPort = dataW;精确微秒级延时(详细可以参考我另一篇博 文51单片机C51微秒级(ms )精确延时)/*delay.h*#in clude /for crystal 11.0592Mvoid Delayms( un sig ned int n) unsigned int i,j;for(j=n;j0;j-)for(i=112;i0;i-);/*lcd1602b.h*#ifnd
28、ef _LCD1602B_H.#defi ne _LCD1602B_H#defi neXBY TE0x8000RW=0写指令Lcd1602CmdPortE=1RS=0#defi neLcd1602WdataPortXBY TE0x8100E =1 RS=1 RW=0 /写数据#defi neLcd1602StatusPortXBY TE0x8200E=1 RS=0 RW=1/读状态#defi neBusy0x80/busyexter n void LcdClear(void);exter n void LcdWriteData( char dataW );exter nvoidLcdWrite
29、Comma nd(un sig nedcharCMD,unsigned char AttribC );exter n void LcdReset( void );exter n void Display( un sig ned char dd );exter n void LcdDisplayChar( un sig ned char x,u nsig nedchar y,u nsig nedcharWdata);extern void LcdDisplayString(unsigned char x,unsignedchar y, unsignedchar*ptr);#en dif其中要注意写指令的地址0x8000写数据的地址0x8100读状态的地址 0x8200这三个地址值是根据硬件电路连接确定的*absacc h*#ifndef _ABSACC_H#defi ne _ABSACC_H_#defi ne CBYTE (un sig ned char volatile code *) 0)#defi ne DBYTE (un sig ned char volatile data *) 0)#defi ne PBYTE (un sig ned char volatile pdata *) 0)#defi ne XBYTE (un sig ned char
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 电子级丙酮回收技术企业制定与实施新质生产力项目商业计划书
- 商品期货投资服务企业制定与实施新质生产力项目商业计划书
- 高清安防监控摄像头远程调试行业跨境出海项目商业计划书
- 高精度质量传感器行业深度调研及发展项目商业计划书
- 脑力疲劳对古典式摔跤单招考试专项能力的影响及恢复方式效果
- 山东省济南市莱芜凤城高级中学2023-2024学年高一下学期第四次单元检测数学试题(解析版)
- 铁(镍)催化亲电试剂参与的还原偶联反应研究
- 纳米材料和掺杂半导体强场高次谐波的特性和调控
- 过渡金属锰离子掺杂钙钛矿纳米晶的合成及光学性质研究
- 电力行业员工培训与设备维护计划
- 2025展览馆装饰工程合同范本
- 2019-2025年房地产经纪协理之房地产经纪操作实务过关检测试卷B卷附答案
- 初中历史明清时期的科技与文化 课件 2024-2025学年统编版七年级历史下册
- 2025年上半年发展对象题库(含答案)
- 大连银行招聘笔试真题2024
- 输血管理制度
- 信息必刷卷04(广东省卷专用)2025年中考数学(原卷版)
- 膝关节韧带损伤护理查房
- GB/T 21196.2-2025纺织品马丁代尔法织物耐磨性的测定第2部分:试样破损的测定
- 中国传统文化-剪纸艺术知到课后答案智慧树章节测试答案2025年春石河子大学
- 重庆市2025年中考数学模拟试题(含答案)
评论
0/150
提交评论