


版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、LCD1602 液晶显示器简介LCD1602液晶显示器简介一概述液晶Liquid Crystal丨是一种高分子材料,因其特殊的物理、化学、光学特性,广 泛应用轻薄显示器上。液晶显示器Liquid Crystal Display,LCD丨的主要原理是以电流刺激液晶分子产生 点、线、面并配合背部灯管构成画面。各种型号的液晶通常是按照显示字符的行数或液晶点阵的行、列数来命名。例如,1602表示每行显示16个字符,一共可以显示两行。这类液晶通常称为字符型液晶,只 能显示ASCII码字符。12232表示液晶显示画面由122列、32行组成,共有122*32个点来显示各种图形。用户可以通过程序控制这些点中任
2、何一个点显示或不显示,从而构 成各种图形画面。因此,12232称为图形型液晶。液晶体积小,功耗低,显示操作简单。但其有致命的弱点,即使用温度范围很窄。通用型液晶工作温度为0到+55摄氏度,存储温度为-20到+60摄氏度。LCD160211602的外形尺寸毫米-O 70-*1HIODQQOOORI 25 匕o g g _ g 一 9 e E E d >00000000- r-n匚元诗址底詐LED坞先|2主要技术参数显示容量:16X2个字符芯片工作电压;5V工作电流:2. CniACS. OV模块最哇T作电压:5.0V字符尺寸:2.95X4. 35(KXH)nnLCD1602 液晶显示器简介
3、3 接口信号说明纟扁号符号引脚说明鳩号符号引關说明1VSS电源地9D2Data I/O2VDD电源正扱10D3Data I/O3VL滋晶显示偏压信号11D4Data I/O4RS数据/命令选譯端(H/L)12Dais 1/O5Mi读/写选择端(H/L)1306Data I/O§E使能信号14D7Data l/G7DOData I/O15BLA背光源正极0DIData I/O3LH背光源貝极4根本操作时序出出出出输输输输DOD7M犬态字无DO*D7二数据 无读状态:输入;RS=_, RVT=HP E=H写指令;输入;RS=L,RW=L, DO-D7=指哮码疋二高脈冲 读數据:输入:RS
4、= RW=H, E=H写数据:输入;RS=K RW=L. DO"-D7=数据,E二高脈冲4 RAM地址映射图控制器内部带有80B的RAM缓冲区。对应关系如下列图所示。LCD16字农行CC0102C3010506C708090BCC0DQEOF1027(4C4142434445464748494B404D4L4F5057向图中的000F、404F地址中的任意处写入显示数据时,液晶可立即显示出来; 当写入到1027或5067地址时,必须通过移屏指令将他们一移入可显示区域方可正常 显示。1602液晶模块内部的字符发生存储器CGROM)已经存储了 160个不同的点阵字符图形,如下表所示。LC
5、D1602 液晶显示器简介1GCGRAM申卑蒋帰玛与字椅阳融对应芸系CHXW0010wm010001 ot0119-V 1OJH10HK) J1100H01IU0HllXXX XW0CGRAM<P0$pP?三aPXXX X0001t +IAQgn7A R aqXXXXQ01Q:BRbr警声片1X冃gXX XXOOi 1<4)it3cSetJ壬<8XXX X01MJs4DTdt工卜nXX XX0101%"s"EUeV才tB0XXXXG11OjtN6VfV7力3Pkxxxxom>7Gw :岂w7Knxx y xioto(1)c&HXh喜Y夕*fX
6、xxxxiooi1)1YiXrVJTyxxxxioioi"IZiEJLJj4X XX XJ011G)+KKEktOX片XX X X1IOO(5)7<L*11<1X X XX11&1MmJ工天、VX X X XHIO(7)">an弓八Ixxxxnn(8)/To50-4"'yV口6:;:这些字符有:阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一 个字符都有一个固定的代码,比方大写的英文字母“A '的代码是01000001B 41H,显示时模块把地址 41H中的点阵字符图形显示出来,我们就能看到字母“A"
7、。6 状态字说明STA7SrABSTASSFA4SIA3STA?STA1STAGP7D6D5DI03JIDO当吊象櫃电址扌吕打闊茲伯STA7 谨吕揍性便歴I:蔡止 D:允性说明:原那么上每次对控制器进展读写操作前,都必须进展读写检测,确保STA7为0。实际上,由于单片机的操作速度慢于液晶控制器的反响速度,因此可以不进展检测,或 只进展简短的延时即可。7 指令说明1602液晶模块内部的控制器共有11条控制指令。(1)显示模式设置指令玛功能00111c0D爾 1孵显示5X7点阵用位暫搞按口45T8LCD1602 液晶显示器简介(2) 显示开/关及光标设置功能n00001GB0-1开显示;D-0关显
8、示G=1显乔无标;水显吞光标B-1光标闪烁:B=0光标不显示000001NS扫1当读或写一个字符后地址1旨計加-3光标力XN=0当壤或写一个字痔盲地址重針咸 且托靱减一S=1当写一个字符,整属显示左穆(N=l)或右移小二T以得到光标不移动而屏 皋移动的監果.s=o当写一个宇符,整屏显示不移动(3)数据指针设置:指令码功能S0H+ 地址码(0-27H .4OH-G7H)设邑載据地址指封(4)其它设置指令码功能0IH显示清屏;1.数据指针清雾2”所有显示清零02H显示回车:1数据指针清零8控制接口时序说明 时序参数时序參敎极覘值单也测试条件星小值典型值k信号确tc4CQns引filEtPA150一
9、nsE.I升沿/下隧时间tfi. If25ns地址建立时旬t£F1aans引脚匕時、R/IT堆址保持时间tHDl10ns018立时辽:读操低)to100ns弓肿DEDD乘纹据保持对X/i刘桑佗)tuD;2fl=rrs薮摇富立吐司药掾侄LLSP;40=ns蛟据保特对间:写操作)tW910rs读操作时序RSR/WEDBODB?1R通t£iVslid Data J*to写操作时序9初始化过程1延时15ms2写指令38H(不检测忙信号)3延时5ms4写指令38H(不检测忙信号)5延时5ms6写指令38H(不检测忙信号)7(以后每次写指令、读/写数据操作之前均需检测忙信号)8写指令3
10、8H:显示模式设置9写指令08H:显示关闭10写指令01H:显示清屏11写指令06H:显示光标移动设置12写指令0CH显示开及光标设置三驱动程序举例1 I/O 方式驱动程序gw LS085 10W.P3.P3.R-册祝们.制H(J-7MD:QNLO9OWS程序如下:/*SMC1602A(16*2)I/O口线接线方式连接线图:|LCM-51 | LCM-51 | LCM51|丨|DB0-P1.0 | DB4-丨-P1.4 | RW-P2.0 丨|DB1-P1.1 | DB5-P1.5 丨 RSP2.1 丨|DB2-P1.2 | DB6-P1.6 丨 EP2.2 丨|DB3-P1.3 | DB7-
11、P1.7 丨 VLCD接1K电阻到GND|注:AT89S51 使用12M晶体震荡器*/#in elude <reg51.h>sbit LCM_RW=P2A0;/ 定义引脚sbit LCM_RS =卩2人1;sbit LCM_E =P2A2;LCD1602 液晶显示器简介#define LCM_DataP1#define Busy 0x80 / 用于检测 LCM 状态字中的 Busy 标识void WriteDataLCM(unsigned char WDLCM);void WriteCommandLCM(unsigned char WCLCM,BuysC);unsigned cha
12、r ReadDataLCM(void);unsigned char ReadStatusLCM(void); void LCMInit(void);void DisplayOneChar(unsigned char X, unsigned char Y, unsigned char DData);codevoid DisplayListChar(unsigned char X, unsigned char Y, unsigned char *DData);void Delayms(unsigned int n);void dellay(unsigned inth);unsigned char
13、code blog_adr = "EDNchina"unsigned char code email = ""void main(void) /Delay400Ms(); / 启动等待,等 LCM 讲入工作状态 LCMInit(); /LCM 初始化 DisplayListChar(6, 0, blog_adr);DisplayListChar(0, 0, email);while(1);/写数据 RS="H",RW=L,D0D7= 数据 ,E= 高脉冲 void WriteDataLCM(unsigned char WDLCM) d
14、ellay(100);LCM_E = 0; LCM_RS = 1; LCM_RW = 0;LCM_Data = WDLCM;/dellay(100);/短暂延时,代替检测忙状态/ReadStatusLCM(); / 检测忙LCM_E = 1;LCM_E = 0;/写指令 RS="L",RW=L,D0D7= 指令码 ,E= 高脉冲 void WriteCommandLCM(unsigned char WCLCM,BuysC) /BuysC 为 0 时忽略忙检测/if (BuysC) ReadStatusLCM(); / 根据需要检测忙 dellay(100); /短暂延时,代
15、替检测忙状态 LCM_E = 0;LCM_RS = 0;LCM_RW = 0;LCM_Data = WCLCM;LCM_E = 1;LCM_E = 0;/ 读数据 RS="H",RW=H,E=Hunsigned char ReadDataLCM(void)LCM_RS = 1;LCM_RW = 1;LCM_E = 1;return(LCM_Data);/ 读状态 RS="L",RW=H,E=Hunsigned char ReadStatusLCM(void)LCM_Data = 0xFF;LCM_RS = 0;LCM_RW = 1;LCM_E = 1;/
16、while (LCM_Data & Busy); / 检测忙信号 return(LCM_Data);LCD1602 void LCMInit(void) /LCM 初始化 LCM_Data = 0;Delayms(15);WriteCommandLCM(0x38,0); / Delayms(5);WriteCommandLCM(0x38,0);Delayms(5);WriteCommandLCM(0x38,0);WriteCommandLCM(0x38,1); /WriteCommandLCM(0x08,1); /WriteCommandLCM(0x01,1); /WriteComma
17、ndLCM(0x06,1); /WriteCommandLCM(0x0C,1); / /按指定位置显示一个字符液晶显示器简介三次显示模式设置,不检测忙信号显示模式设置 ,开场要求每次检测忙信号 关闭显示显示清屏显示光标移动设置 显示开及光标设置void DisplayOneChar(unsigned char X, unsigned char Y, unsigned char DData) Y &= 0x1;X &= 0xF; / 限制 X 不能大于 15, Y 不能大于 1if (Y) X |= 0x40; / 当要显示第二行时地址码 +0x40;X |= 0x80; / 算
18、出指令码WriteCommandLCM(X, 1); / 这里不检测忙信号,发送地址码 WriteDataLCM(DData);/按指定位置显示一串字符codevoid DisplayListChar(unsigned char X, unsigned char Y, unsigned char *DData)unsigned char ListLength;ListLength = 0;Y &= 0x1;X &= 0xF;/ 限制 X 不能大于 15 , Y 不能大于 1while (DDataListLength>0x1f) / 假设到达字串尾那么退出if (X &l
19、t;= 0xF) /X 坐标应小于 0xFDisplayOneChar(X, Y, DDataListLength); / 显示单个字符 ListLength+; X+;/延时程序void Delayms(unsigned int n)unsigned int i,j; for(j=n;j>0;j-) for(i=112;i>0;i-);/* 函数名称 : dellay* 入口参数: h unsigned int 型* 出口参数:无* 功能描述 : 短暂延时,使用 12MHz 晶体,约 0.01MS*/void dellay(unsigned int h)while(h-);/0.
20、01MS要注意的是在读写程序中,没有用 “检测忙,其实对于 1602 来说,没有检测忙 信号对于实际来说还好, 因为常常因为检测忙, 而使 1602 没显示 一直处于忙检测中 “忙检测用一个小延时代替。对于 LCM1602 来说,读写时序最重要。LCM1602写操作时序/写数据 RS="H",RW=L,D0D7= 数据,E=高脉冲void WriteDataLCM(u nsig ned char WDLCM)dellay(100);短暂延时,代替检测忙状态LCM_E = 0;LCM_RS = 1;LCM_RW = 0;LCM_Data = WDLCM;LCM_E = 1;L
21、CM_E = 0;/写指令RS="L",RW=L,D0D7= 指令码,E=高脉冲 void WriteComma ndLCM(u nsig ned char WCLCM) dellay(100);/短暂延时,代替检测忙状态LCM_E = 0;LCM_RS = 0;LCM_RW = 0;LCM_Data = WCLCM;LCM_E = 1;LCM_E = 0;其实这个时序上面两个分别为写数据函数和写命令函数,检测忙已用小延时代替。好似不太严格,但要保证的是 E高脉冲时,写的数据/命令是有效的。53 / 18LCD1602 液晶显示器简介 好似函数也可以写成这样: void W
22、riteCommandLCM(unsigned char WCLCM) dellay(100);/ 短暂延时,代替检测忙状态LCM_Data = WCLCM; LCM_RS = 0; LCM_RW = 0; LCM_E = 0;dellay(100);LCM_E = 1;/按指定位置显示一串字符函数 DisplayListChar 的作用是在指定位置显示一串字符,其中有一句 “while (DDataListLength>0x1f) / 假设到达字串尾那么退出为什么要大于 0x20 呢?unsigned char code blog_adr = "EDNchina"u
23、nsigned char code email = ""用单引号 ''括(起) 来的字符为字符的 ASCII 码值,而不是字符串。用双引号 (shift+ ) 括起来的一串字符, 成为字符串常量。 C 编译器会自动地在 字符末尾加上完毕符 '0'(NULL) (ASCII 码为 0x00 也就是 00H) 。char a=“ Bei Jing; ri f< I >i >char a=B','e','I','0','J','i ','
24、;n','g','两者是等价的,数组的每个元素为对应字符的ASCII码,如a3数组a的第四个元素是空格,那么a3里面放着的是空格的ASCII码0x20。还要注意的是数组的元素数目一定要比字符多一个。以便C 编译器自动在其后面参加完毕符 ' 0'。可以知道0' ASCI码为 0x00n' ASCI码为 0x0A那知道为什么有这句了吧“ while (DDataListLe ngth>0x1F) / 假设到达字串尾那么退出因为大于0x1f才能显示字符,小于和等于0x1f的都是键盘控制符。当然我们也可以检测0' (0x00
25、)“while (DDataListLength!=' 0') 检测到字符串完毕符那么退出"2 总线方式驱动程序卯ri?0J祁P2 JP2 1P2.yVZO9OWS%-ER/RSVOBUB1LCM1602 总线方式 C51程序/*Lcd1602B.c*#in clude <delay.h>#include <lcd1602b.h>#in clude <absacc.h>/*=显示字符串=*/void LcdDisplayStri ng(un sig ned char x,un sig ned char y, un sig ned c
26、har *ptr) un sig ned char i,l=0;while (ptrl >31)l+;/for (i=0;i<l;i+) LcdDisplayChar(x+,y,ptri);if ( x = 16 )x = 0; y A= 1; II异或,第一行的话变第二行,第二行的话变第一行LCD1602 液晶显示器简介/*= 显示光标定位=*/void LocateXY( char posx,char posy) unsigned char temp;temp = posx & 0x0f;/确保只选 016 个格子posy &= 0x01;/确保不是在第一行就在
27、第二行if ( posy )temp |= 0x40; / 在第二行的时候加 40Htemp |= 0x80; / 数据指针设置 指令码 80H+ 地址码 0-27H ,40H-67H LcdWriteCommand(temp,1);/*= 按指定位置显示数出一个字符=*/ void LcdDisplayChar(unsigned char x,unsigned char y,unsigned char Wdata) LocateXY( x, y ); / 定位显示地址LcdWriteData( Wdata );/ 写字符/*=初始化程序 , 必须按照产品资料介绍的初始化过程进展=*/void
28、 LcdReset( void ) Delayms(400); / 启动时必须的延时,等待 lcm 进入工作状态LcdWriteCommand( 0x38, 0); / 显示模式设置 (不检测忙信号 ) Delayms(15);LcdWriteCommand( 0x38, 0);/ 共三次Delayms(15);LcdWriteCommand( 0x38, 0);Delayms(15);LcdWriteCommand( 0x38, 1);LcdWriteCommand( 0x08, 1);LcdWriteCommand( 0x06, 1);LcdWriteCommand( 0x0c, 1);
29、LcdClear();/ 显示模式设置 (以后均检测忙信号 )/ 显示关闭/ 显示光标移动设置/ 显示开及光标设置/*=clear =*/ void LcdClear(void)LcdWriteCommand( 0x01, 1);/ 显示清屏 /*= 写控制字符子程序 : E="1" RS="0" RW="0"=*/ void LcdWriteCommand( unsigned char CMD,unsigned char AttribC ) /AttribC=1 检查忙状态, AttribC=0 不检查忙状态if (AttribC)
30、 while( Lcd1602StatusPort & Busy );/ 检测忙信号/busy=0x80 每次读写操作都要进展读写检测,确保 SAT7=0 Lcd1602CmdPort = CMD;/*= 当前位置写字符子程序 : E =1 RS="1" RW="0"=*/ void LcdWriteData( char dataW ) while( Lcd1602StatusPort & Busy );/检测忙信号/busy=0x80 每次读写操作都要进展读写检测,确保 SAT7=0Lcd1602WdataPort = dataW;51
31、 单片机 C51 微秒级 ms 准确准确微秒级延时详细可以参考我另一篇博文 延时 /*delay.h*#include <delay.h>/for crystal 11.0592Mvoid Delayms(unsigned int n) unsigned int i,j;for(j=n;j>0;j-) for(i=112;i>0;i-);/* lcd1602b.h *#ifndef _LCD1602B_H_/E=1 RS="0" RW="0"/写指令/E =1 RS="1" RW="0" /
32、 写数据 /E=1 RS="0" RW="1"/ 读状态/busy#define _LCD1602B_H_#define Lcd1602CmdPort XBYTE0x8000#define Lcd1602WdataPort XBYTE0x8100#define Lcd1602StatusPort XBYTE0x8200#define Busy 0x80extern void LcdClear(void);extern void LcdWriteData( char dataW );extern void LcdWriteCommand( unsigned
33、 char CMD,unsigned char AttribC ); extern void LcdReset( void );extern void Display( unsigned char dd ); extern void LcdDisplayChar(unsignedcharx,unsignedchar y,unsignedcharWdata);extern void LcdDisplayString(unsignedcharx,unsignedchar y, unsignedchar*ptr);#endif其中要注意写指令的地址0x8000写数据的地址0x8100读状态的地址0x8200这三个地址值是根据硬件电路连接确定的。LCD1602 液晶显示器简介/* absacc.h*#ifndef _ABSACC_H_#define _ABSACC_H_#define CBYTE (unsigned char volatile code *) 0)#define DBYTE (unsigned char volatile data *) 0)#define PBYTE (unsigned char volatile pdata *) 0)#d
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2023年5月全国事业单位考试联考D类小学综合应用能力真题试题试卷答案解析
- (高清版)DB3310∕T 11-2013 空调室外机安装服务规范
- 2024篮球裁判员成长计划及试题与答案
- 2024年奋战体育经纪人资格考试的决心试题及答案
- 深入理解2024年足球裁判规则试题及答案
- 2024年模具设计师资格考试的互动方式试题及答案
- 关于成立宠物经济公司可行性研究报告(参考模板)
- 农业植保员职业技能测试题试题及答案
- 电子信息产业园项目可行性研究报告
- 成功经验分享2024年体育经纪人试题及答案
- 2025年度毛绒玩具采购合同
- (T8联考)2025届高三部分重点中学3月联合测评生物试卷(含答案详解)河北版
- 员工入职申请表(完整版)
- 《内河运输船舶重大事故隐患判定标准》知识培训
- 2024年重庆A卷中考满分作文《美不止一个答案》
- 做好基层纪检监察工作措施
- 2025年安徽铜陵市医保局招聘编外聘用人员2人历年自考难、易点模拟试卷(共500题附带答案详解)
- 2025年吉林工程职业学院单招职业技能考试题库附答案
- 日语专业的毕业论文
- 膏方基本知识
- T-GDEIIA 56-2024 垂直起降低空航空器起降场基础设施配置技术要求
评论
0/150
提交评论