📄 51单片机综合学习系统之1602字符型液晶显示篇_希希.htm
字号:
<TBODY>
<TR>
<TD class=modtl width=7> </TD>
<TD class=modtc noWrap>
<DIV class=modhead><SPAN class=modtit>查看文章</SPAN></DIV></TD>
<TD class=modtc noWrap align=right></TD>
<TD class=modtr width=7> </TD></TR></TBODY></TABLE>
<DIV class=modbox id=m_blog>
<DIV class=tit>51单片机综合学习系统之1602字符型液晶显示篇</DIV>
<DIV class=date>2008-05-04 19:57</DIV>
<TABLE style="TABLE-LAYOUT: fixed">
<TBODY>
<TR>
<TD>
<DIV class=cnt id=blog_text>
<P align=center><STRONG><FONT color=#800000><FONT
size=4>51单片机综合学习系统之1602字符型液晶显示篇<SPAN class=style9
style="mso-bidi-font-size: 12.0pt"> <SPAN class=style14><SPAN class=style9
style="mso-bidi-font-size: 12.0pt"><SPAN class=style9
style="mso-bidi-font-size: 12.0pt">《电子制作》2008年1月</SPAN></SPAN></SPAN></SPAN></FONT></FONT></STRONG></P>
<P align=left>
在日常生活中,我们对液晶显示器并不陌生。液晶显示模块已作为很多电子产品的通过器件,如在计算器、万用表、电子表及很多家用电子产品中都可以看到,显示的主要是数字、专用符号和图形。在单片机的人机交流界面中,一般的输出方式有以下几种:发光管、LED数码管、液晶显示器。发光管和LED数码管比较常用,软硬件都比较简单,在前面章节已经介绍过,在此不作介绍,本章重点介绍字符型液晶显示器的应用。</P>
<P align=left> 在单片机系统中应用晶液显示器作为输出器件有以下几个优点:</P>
<P align=left><STRONG>显示质量高</STRONG></P>
<P align=left>
由于液晶显示器每一个点在收到信号后就一直保持那种色彩和亮度,恒定发光,而不像阴极射线管显示器(CRT)那样需要不断刷新新亮点。因此,液晶显示器画质高且不会闪烁。</P>
<P align=left><STRONG>数字式接口</STRONG></P>
<P align=left>
液晶显示器都是数字式的,和单片机系统的接口更加简单可靠,操作更加方便。</P>
<P align=left><STRONG>体积小、重量轻</STRONG></P>
<P align=left>
液晶显示器通过显示屏上的电极控制液晶分子状态来达到显示的目的,在重量上比相同显示面积的传统显示器要轻得多。</P>
<P align=left><STRONG>功耗低</STRONG></P>
<P align=left>
相对而言,液晶显示器的功耗主要消耗在其内部的电极和驱动IC上,因而耗电量比其它显示器要少得多。</P>
<P align=left><STRONG>10.8.1 液晶显示简介</STRONG></P>
<P align=left>①液晶显示原理</P>
<P align=left> 液晶显示的原理是利用液晶的物理特性,
通过电压对其显示区域进行控制,有电就有显示,这样即可以显示出图形。液晶显示器具有厚度薄、适用于大规模集成电路直接驱动、易于实现全彩色显示的特点,目前已经被广泛应用在便携式电脑、数字摄像机、PDA移动通信工具等众多领域。</P>
<P align=left>②液晶显示器的分类</P>
<P align=left>
液晶显示的分类方法有很多种,通常可按其显示方式分为段式、字符式、点阵式等。除了黑白显示外,液晶显示器还有多灰度有彩色显示等。如果根据驱动方式来分,可以分为静态驱动(Static)、单纯矩阵驱动(Simple
Matrix)和主动矩阵驱动(Active Matrix)三种。</P>
<P align=left>③液晶显示器各种图形的显示原理:</P>
<P align=left><STRONG>线段的显示</STRONG></P>
<P align=left>
点阵图形式液晶由M×N个显示单元组成,假设LCD显示屏有64行,每行有128列,每8列对应1字节的8位,即每行由16字节,共16×8=128个点组成,屏上64×16个显示单元与显示RAM区1024字节相对应,每一字节的内容和显示屏上相应位置的亮暗对应。例如屏的第一行的亮暗由RAM区的000H——00FH的16字节的内容决定,当(000H)=FFH时,则屏幕的左上角显示一条短亮线,长度为8个点;当(3FFH)=FFH时,则屏幕的右下角显示一条短亮线;当(000H)=FFH,(001H)=00H,(002H)=00H,……(00EH)=00H,(00FH)=00H时,则在屏幕的顶部显示一条由8段亮线和8条暗线组成的虚线。这就是LCD显示的基本原理。</P>
<P align=left><STRONG>字符的显示</STRONG></P>
<P align=left>
用LCD显示一个字符时比较复杂,因为一个字符由6×8或8×8点阵组成,既要找到和显示屏幕上某几个位置对应的显示RAM区的8字节,还要使每字节的不同位为“1”,其它的为“0”,为“1”的点亮,为“0”的不亮。这样一来就组成某个字符。但由于内带字符发生器的控制器来说,显示字符就比较简单了,可以让控制器工作在文本方式,根据在LCD上开始显示的行列号及每行的列数找出显示RAM对应的地址,设立光标,在此送上该字符对应的代码即可。</P>
<P align=left><STRONG>汉字的显示</STRONG></P>
<P align=left>
汉字的显示一般采用图形的方式,事先从微机中提取要显示的汉字的点阵码(一般用字模提取软件),每个汉字占32B,分左右两半,各占16B,左边为1、3、5……右边为2、4、6……根据在LCD上开始显示的行列号及每行的列数可找出显示RAM对应的地址,设立光标,送上要显示的汉字的第一字节,光标位置加1,送第二个字节,换行按列对齐,送第三个字节……直到32B显示完就可以LCD上得到一个完整汉字。</P>
<P align=left>10.8.2 1602字符型LCD简介</P>
<P align=left>
字符型液晶显示模块是一种专门用于显示字母、数字、符号等点阵式LCD,目前常用16*1,16*2,20*2和40*2行等的模块。下面以长沙太阳人电子有限公司的1602字符型液晶显示器为例,介绍其用法。一般1602字符型液晶显示器实物如图10-53:</P>
<P align=center><IMG height=223
src="51单片机综合学习系统之1602字符型液晶显示篇_希希.files/image123.jpg" width=449></P>
<P align=center><IMG height=220
src="51单片机综合学习系统之1602字符型液晶显示篇_希希.files/image124.jpg" width=453></P>
<P align=center>图10-53 1602字符型液晶显示器实物图</P>
<P><STRONG>10.8.2.1 1602LCD的基本参数及引脚功能</STRONG></P>
<P>
1602LCD分为带背光和不带背光两种,基控制器大部分为HD44780,带背光的比不带背光的厚,是否带背光在应用中并无差别,两者尺寸差别如下图10-54所示:</P>
<P><IMG height=237 src="51单片机综合学习系统之1602字符型液晶显示篇_希希.files/image126.jpg"
width=553></P>
<P align=center>图10-54 1602LCD尺寸图</P>
<P align=left><STRONG>1602LCD主要技术参数:</STRONG></P>
<P align=left> 显示容量:16×2个字符</P>
<P align=left> 芯片工作电压:4.5—5.5V</P>
<P align=left> 工作电流:2.0mA(5.0V)</P>
<P align=left> 模块最佳工作电压:5.0V</P>
<P align=left> 字符尺寸:2.95×4.35(W×H)mm</P>
<P align=left><STRONG>引脚功能说明</STRONG></P>
<P>
1602LCD采用标准的14脚(无背光)或16脚(带背光)接口,各引脚接口说明如表10-13所示:</P>
<TABLE cellPadding=0 border=1>
<TBODY>
<TR>
<TD vAlign=top width=55>
<P>编号</P></TD>
<TD vAlign=top width=60>
<P>符号</P></TD>
<TD vAlign=top width=132>
<P>引脚说明</P></TD>
<TD vAlign=top width=61>
<P>编号</P></TD>
<TD vAlign=top width=60>
<P>符号</P></TD>
<TD vAlign=top width=155>
<P>引脚说明</P></TD></TR>
<TR>
<TD vAlign=top width=55>
<P>1</P></TD>
<TD vAlign=top width=60>
<P>VSS</P></TD>
<TD vAlign=top width=132>
<P>电源地</P></TD>
<TD vAlign=top width=61>
<P>9</P></TD>
<TD vAlign=top width=60>
<P>D2</P></TD>
<TD vAlign=top width=155>
<P>数据</P></TD></TR>
<TR>
<TD vAlign=top width=55>
<P>2</P></TD>
<TD vAlign=top width=60>
<P>VDD</P></TD>
<TD vAlign=top width=132>
<P>电源正极</P></TD>
<TD vAlign=top width=61>
<P>10</P></TD>
<TD vAlign=top width=60>
<P>D3</P></TD>
<TD vAlign=top width=155>
<P>数据</P></TD></TR>
<TR>
<TD vAlign=top width=55>
<P>3</P></TD>
<TD vAlign=top width=60>
<P>VL</P></TD>
<TD vAlign=top width=132>
<P>液晶显示偏压</P></TD>
<TD vAlign=top width=61>
<P>11</P></TD>
<TD vAlign=top width=60>
<P>D4</P></TD>
<TD vAlign=top width=155>
<P>数据</P></TD></TR>
<TR>
<TD vAlign=top width=55>
<P>4</P></TD>
<TD vAlign=top width=60>
<P>RS</P></TD>
<TD vAlign=top width=132>
<P>数据/命令选择</P></TD>
<TD vAlign=top width=61>
<P>12</P></TD>
<TD vAlign=top width=60>
<P>D5</P></TD>
<TD vAlign=top width=155>
<P>数据</P></TD></TR>
<TR>
<TD vAlign=top width=55>
<P>5</P></TD>
<TD vAlign=top width=60>
<P>R/W</P></TD>
<TD vAlign=top width=132>
<P>读/写选择</P></TD>
<TD vAlign=top width=61>
<P>13</P></TD>
<TD vAlign=top width=60>
<P>D6</P></TD>
<TD vAlign=top width=155>
<P>数据</P></TD></TR>
<TR>
<TD vAlign=top width=55>
<P>6</P></TD>
<TD vAlign=top width=60>
<P>E</P></TD>
<TD vAlign=top width=132>
<P>使能信号</P></TD>
<TD vAlign=top width=61>
<P>14</P></TD>
<TD vAlign=top width=60>
<P>D7</P></TD>
<TD vAlign=top width=155>
<P>数据</P></TD></TR>
<TR>
<TD vAlign=top width=55>
<P>7</P></TD>
<TD vAlign=top width=60>
<P>D0</P></TD>
<TD vAlign=top width=132>
<P>数据</P></TD>
<TD vAlign=top width=61>
<P>15</P></TD>
<TD vAlign=top width=60>
<P>BLA</P></TD>
<TD vAlign=top width=155>
<P>背光源正极</P></TD></TR>
<TR>
<TD vAlign=top width=55>
<P>8</P></TD>
<TD vAlign=top width=60>
<P>D1</P></TD>
<TD vAlign=top width=132>
<P>数据</P></TD>
<TD vAlign=top width=61>
<P>16</P></TD>
<TD vAlign=top width=60>
<P>BLK</P></TD>
<TD vAlign=top width=155>
<P>背光源负极</P></TD></TR></TBODY></TABLE>
<P> 表10-13:引脚接口说明表</P>
<P>第1脚:VSS为地电源。</P>
<P>第2脚:VDD接5V正电源。</P>
<P>第3脚:VL为液晶显示器对比度调整端,接正电源时对比度最弱,接地时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度。</P>
<P>第4脚:RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。</P>
<P>第5脚:R/W为读写信号线,高电平时进行读操作,低电平时进行写操作。当RS和R/W共同为低电平时可以写入指令或者显示地址,当RS为低电平R/W为高电平时可以读忙信号,当RS为高电平R/W为低电平时可以写入数据。</P>
<P>第6脚:E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。</P>
<P>第7~14脚:D0~D7为8位双向数据线。</P>
<P>第15脚:背光源正极。</P>
<P>第16脚:背光源负极。</P>
<P><STRONG>10.8.2.3 1602LCD的指令说明及时序</STRONG></P>
<P align=left>
1602液晶模块内部的控制器共有11条控制指令,如表10-14所示:</P>
<TABLE cellSpacing=0 cellPadding=0 border=1>
<TBODY>
<TR>
<TD width=55>
<P align=center>序号</P></TD>
<TD vAlign=top width=168>
<P align=left>指令</P></TD>
<TD width=39>
<P align=center>RS</P></TD>
<TD width=36>
<P align=center>R/W</P></TD>
<TD width=35>
<P align=center>D7</P></TD>
<TD width=36>
<P align=center>D6</P></TD>
<TD width=35>
<P align=center>D5</P></TD>
<TD width=35>
<P align=center>D4</P></TD>
<TD width=35>
<P align=center>D3</P></TD>
<TD width=35>
<P align=center>D2</P></TD>
<TD width=35>
<P align=center>D1</P></TD>
<TD width=37>
<P align=center>D0</P></TD></TR>
<TR>
<TD width=55>
<P align=center>1</P></TD>
<TD vAlign=top width=168>
<P align=left>清显示</P></TD>
<TD width=39>
<P align=center>0</P></TD>
<TD width=36>
<P align=center>0</P></TD>
<TD width=35>
<P align=center>0</P></TD>
<TD width=36>
<P align=center>0</P></TD>
<TD width=35>
<P align=center>0</P></TD>
<TD width=35>
<P align=center>0</P></TD>
<TD width=35>
<P align=center>0</P></TD>
<TD width=35>
<P align=center>0</P></TD>
<TD width=35>
<P align=center>0</P></TD>
<TD width=37>
<P align=center>1</P></TD></TR>
<TR>
<TD width=55>
<P align=center>2</P></TD>
<TD vAlign=top width=168>
<P align=left>光标返回</P></TD>
<TD width=39>
<P align=center>0</P></TD>
<TD width=36>
<P align=center>0</P></TD>
<TD width=35>
<P align=center>0</P></TD>
<TD width=36>
<P align=center>0</P></TD>
<TD width=35>
<P align=center>0</P></TD>
<TD width=35>
<P align=center>0</P></TD>
<TD width=35>
<P align=center>0</P></TD>
<TD width=35>
<P align=center>0</P></TD>
<TD width=35>
<P align=center>1</P></TD>
<TD width=37>
<P align=center>*</P></TD></TR>
<TR>
<TD width=55>
<P align=center>3</P></TD>
<TD vAlign=top width=168>
<P align=left>置输入模式</P></TD>
<TD width=39>
<P align=center>0</P></TD>
<TD width=36>
<P align=center>0</P></TD>
<TD width=35>
<P align=center>0</P></TD>
<TD width=36>
<P align=center>0</P></TD>
<TD width=35>
<P align=center>0</P></TD>
<TD width=35>
<P align=center>0</P></TD>
<TD width=35>
<P align=center>0</P></TD>
<TD width=35>
<P align=center>1</P></TD>
<TD width=35>
<P align=center>I/D</P></TD>
<TD width=37>
<P align=center>S</P></TD></TR>
<TR>
<TD width=55>
<P align=center>4</P></TD>
<TD vAlign=top width=168>
<P align=left>显示开/关控制</P></TD>
<TD width=39>
<P align=center>0</P></TD>
<TD width=36>
<P align=center>0</P></TD>
<TD width=35>
<P align=center>0</P></TD>
<TD width=36>
<P align=center>0</P></TD>
<TD width=35>
<P align=center>0</P></TD>
<TD width=35>
<P align=center>0</P></TD>
<TD width=35>
<P align=center>1</P></TD>
<TD width=35>
<P align=center>D</P></TD>
<TD width=35>
<P align=center>C</P></TD>
<TD width=37>
<P align=center>B</P></TD></TR>
<TR>
<TD width=55>
<P align=center>5</P></TD>
<TD vAlign=top width=168>
<P align=left>光标或字符移位</P></TD>
<TD width=39>
<P align=center>0</P></TD>
<TD width=36>
<P align=center>0</P></TD>
<TD width=35>
<P align=center>0</P></TD>
<TD width=36>
<P align=center>0</P></TD>
<TD width=35>
<P align=center>0</P></TD>
<TD width=35>
<P align=center>1</P></TD>
<TD width=35>
<P align=center>S/C</P></TD>
<TD width=35>
<P align=center>R/L</P></TD>
<TD width=35>
<P align=center>*</P></TD>
<TD width=37>
<P align=center>*</P></TD></TR>
<TR>
<TD width=55>
<P align=center>6</P></TD>
<TD vAlign=top width=168>
<P align=left>置功能</P></TD>
<TD width=39>
<P align=center>0</P></TD>
<TD width=36>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -