《LCD1602工作原理 LCD1602液晶屏原理图 LCD1602显示控制.docx》由会员分享,可在线阅读,更多相关《LCD1602工作原理 LCD1602液晶屏原理图 LCD1602显示控制.docx(7页珍藏版)》请在优知文库上搜索。
1、1.CD1602工作原理1.CDI602液晶屏原理图1.CD1602显示控制1.CD液晶解显示原理液品(1.iqUidCrysta1.)是种高分了材料,因为其特殊的物理、化学、理生特性,20世纪中叶开始广泛应用在轻薄型显示器上.液晶显示器(1.iquidCrysta1.DiSP1.ay,1.CD)主耍原理是以电流剌激液晶分子产生点、线、面并配合背部灯管构成画面.现在来/解一下液晶的物理特性:1.CD本身是不能发光的,它需要借助光源进行显示,即我们平时所说的背光。当光束通过这层液晶时,液晶本身会排排站立或扭转呈不规则状,因而阻隔或使光束顺利通过。大多数液晶都属有机复合物,由长棒状的分子构成“在自
2、然状态下,这些棒状分子的长轴大致平行。将液晶倒入一个经精良加工的开槽平面,液晶分子会顺着槽排列,所以假如那屿槽非常平行,则各分子也是完全平行的。也就是说,若一个平面上的分子南北向排列,则另一平面上的分子东西向排列,而位丁两个平面之间的分子被强迫进入一种90度扭转的状态.由丁光线顺若分子的排列方向传播,所以光线经过液晶时也被扭转90度。但当液晶上加一个电压时,分子便会重新垂直排列,使光线能直射出去,而不发生任何扭转。极化滤光器实际是一系列越来越细的平行线。这些线形成一张网,阻断不与这些线平行的所有光线。极化滤光黑的线正好与第一个垂直,所以能完全阻断那些已经极化的光线。只有两个滤光器的线完全平行,
3、或者光线本身已扭转到与第二个极化滤光器相匹配,光线才得以穿透。所以通过这些特定方向的偏光片再施加电压就可以让部分区域光通过,另外部分区域光遮挡,这些明暗相间的点按照一定的像素排列起来的图像就是我们想要显示的信息了。1602液晶显示模块内部包含邨动芯片为HD41780(HITACHI)或其他兼容芯片,内部提供了192种字符的库,用户可以直接调用。它可以显示两行字符,每行包括16个5X8点阵块组成的显示字符块,每个点阵块为一个字符位,字符间距和行距都为一个点的宽度。接下来IXD1602显示控制了解1.CD显示原理之后,那要怎样才能让它显示字符呢?这就要先了解其内部邨动芯片的特点和控制方式。总片机控
4、制显示解欢动也是需要进行通信的,这里就又涉及到我们之前直强调的时序了,上节讲解皿JH我们知道Uart通信是要有严格的时序要求的,所以它才需要精准的波特率来控制,液晶显示器控制时序虽然不用像UUr1.那样精准,但也需要一定的要求。我们先来看一下它的常用接12和引脚说明。 VSS:空遮地引脚。 VDD:供电电源引脚。Vo:液晶显示偏压信号引脚,外加05V电压以调节显示对比度。 RS:寄存器选择引脚,为高电平时选择数据寄存器:为低电平时选择指令寄存器。R/w:读、写操作选择引脚,高电平时为读操作:低电平时为写操作。 E:使能信号引脚,低电平有效. DBODB7:数据总线升脚,用于输入驱动1602液晶
5、模块显示的数据。A:背光5V电源引脚。K:背光地信号引脚。现在我们再来了解它的控制时序:从图中可以看出,它的读写操作中RS,RW,E三个控制引脚的时序变化是不一样的。并且数据与指令也有区别,这样就具体可以分为下4种情况:读状态输入:RS=1.RW=H,E=H:输出:D0D7二状态字。读数据-输入:RS=H,入雷=11,E=H5输出:无。写指令输入:RS=1.,RW=1.,E=H,D0D7=指令码,E=H:输出:D0D7=数据。写数据一一输入:RS=H,R=1.,E=H,D0D7=数据,E=H5输出:无.显示器内部驱动芯片带有80字节的幽缓冲区,共地址对应如下:但是我们知道显示屏界而做多只能显示
6、16*2个字符,那它内部要怎么处理所仃的缓冲区呢?向图中的OOHOFH、40H4FH地址中的任意处写显示数据时,液晶都可以立即显示出来:但写入到10H27H或50H67H地址处时,必须通过移屏指令将他们移入可显示区域才能正常显示。显示器内部内理字符串分布表如下:显示郭动的控制指令如卜丁以上内容比较多,并且还有部分信息没有完全列出,这里也不一一列出1.便用时不用记忆,只需对照资料进行编程就好。1.CDI602显示示例以上介绍了1602液晶显示器相关的主要内容,现在我们绘制个简单的电路图再编程测试一下。什么的电路中我们将显示器数据皿连接在PO上,其他3根控制引脚连接在P2.2P2.4上。现在我们编
7、程让它来显示一些简单的字符:/* 这是一个1.CD1602显示程序* 目的是通过显示屏显示一些字符* /inc1.ude*inc1.udeUdefineDB1602PO/1602数据口typedefunsignedcharu8;typcdefunsignedintu1.6;sbitrs_1602=P22:sbitrJ602=P23;sbiten1602=P24;voidde1.ay(u8ms):void1.cd1.602_checkbusy():voidWriteByte1602(u8Byte1bitdat):voidICd【602JnitO;voidWritechar1.1602(biIx,
8、u8y,u81.at1);voidHrite_string_1602(bitx,u8y,u8*str):voidmain(void)(1.cd1.602,Init();Writestring1602(0,0,He1.1.oguy!*);Write_Char1.1.602(1.,6,-);Write_string_1602(1,7,1.CD1602*);whi1.ed)()voidde1.ay(u8ms)u8izj;for(i-0;ims;i+)(for(j=0;j110;j+)(;)void1.cd1.602_checkbusy()(u8busy;bitvia:do(rs-1602-0;r%,
9、.1602-1;DB16021-OxfO;en_1.602-1.;busy-D31602;en_1602-0;en_1602-1.;/en_1602-0;/via-(bit)(busys0x80);hiIe(via):)数据命令选择位1.ed1602checkbusy0;忙则等待rs1602=dat;rw1602=0;en1602=1:DB1602-Byte;_nopO;en1602=0;void1.cd1.602_Init()(设8t16x2显示,5x7点降,8位数据接1.1.显示清解显示光标移动设置显示开及光标设置Write_Byte_16020x38,0);WriteByte1602(0
10、x08,0);WriteByte1602(0x01,0);WriteByte1602(0x06,0);Write_Bytc1602(0x0c,0);voidWritechar1.1602(biIx,u8y,u8dat1.)if(-0)Write_Byte_1602(Ox8+y,0);e1.seWrite_Byte16020c0y,0);/dat1.+=0x30;WriteByte1602(dat1.,1);)voidWrite_string_1602(bitx1.u8y,u8*str)(i(x=0)Write_Byte_1602(0x80+y,O);)e1.seWrite_Byte_1602(Oxc+y,0);)whi1.e(4str)Write_Byte1602t3tr,b;str+;)这段代码看起来比原来的程序都更杂一点,但还是一些比较基础的内容,所以大家先自己理解下,不理解地方可以先看下资料,这段程序中使用到了我之前没提到过的内容一一指针,后面我会单独列出出来进行讲解.