1、作AC60为7位的AC值,表示当前数据指针的地址值工作方式设置指令:BitD7D6D5D4D3D2D1D0功能000DLNF00DL:设置控制器与MCU的接口形式,一般设置为1;DL=1:数据总线宽度为8位,即DB7DB0有效;DL=0:数据总线宽度为4位,即DB7DB4有效;N:设置显示字符的行数,1602 LCD一般都设置为1;N=0:为一行字符;N=1:为两行字符;F:设置显示字符的字体,一般设置为0;F=0:为5X7点阵字符体;F=1:为5X11点阵字符体;显示状态设置指令:BitD7D6D5D4D3D2D1D0功能00001DCB该指令控制着画面光标和闪烁的开与关D:画面显示状态位;
2、D=1为显示开,D=0为显示关;该指令仅影响显示屏的开关,并不影响显存中的数据C:光标显示状态位;C=1光标显示;C=0光标不显示B:闪烁显示状态位;B=1时闪烁启动;B=0时闪烁关闭;闪烁只对于当前地址指针指和的字符位有效光标或画面滚动设置指令:BitD7D6D5D4D3D2D1D0功能0001S/CR/L00该指令设置光标和画面的特性S/C:滚动对像的选择S/C=1 画面滚动S/C=0 光标滚动R/L:滚动方向的选择R/L=1 向右滚动R/L=0 向左滚动输入方式设置指令:BitD7D6D5D4D3D2D1D0功能000001I/DS该指令的功能在于设置显示字符的输入方式,即在操作数据写入
3、/读出后,AC数据地址指针的修改方式I/D:I/D=0AC为自动减1的计数器,操作数据后AC自动减一;I/D=1AC为自动加1计数器,操作数据后AC自动加1;S:设置写入字符数据时是否允许画面滚动/光标移动(AC自动变化)S=0禁止S=1允许清屏指令:BitD7D6D5D4D3D2D1D0功能00000001该指令将空格码(0x20)写入显存中;达到清屏显示的功能归位指令:BitD7D6D5D4D3D2D1D0功能00000010该指令完成AC清零的功能CGRAM地址设置指令:BitD7D6D5D4D3D2D1D0功能01A5A4A3A2A1A0该指令将6位的CGRAM地址写入地址指针计数器A
4、C内,随后的对数据的操作是对CGRAM的读/读操作注:CGRAM为用户自定义字符字符的空间,并非对应LCD屏上字符位置的显存(DDRAM)DDRAM地址设置指令:BitD7D6D5D4D3D2D1D0功能1A6A5A4A3A2A1A0该指令将7位的DDRAM地址写入地址指针计数器AC当中,随后的数据操作是对DDRAM(显存)的读/写操作与HD44780相兼容的芯片时序表如下:读状态输入RS=L,R/W=H,E=H输出D0D7=状态字写指令输入RS=L,R/W=L,D0D7=指令码,E=高脉冲输出无读数据输入RS=H,R/W=H,E=H输出D0D7=数据写数据输入RS=H,R/W=L,D0D7=
5、数据,E=高脉冲输出无表3:基本操作时序表读写操作时序如图3和图4所示:图3 读操作时序图4 写操作时序3. 1602LCD的RAM地址映射及标准字库表液晶显示模块是一个慢显示器件,所以在执行每条指令之前一定要确认模块的忙标志为低电平,表示不忙,否则此指令失效要显示字符时要先输入显示字符地址,也就是告诉模块在哪里显示字符,图5是1602的内部显示地址图51602LCD内部显示地址例如第二行第一个字符的地址是40H,那么是否直接写入40H就可以将光标定位在第二行第一个字符的位置呢?这样不行,因为写入显示地址时要求最高位D7恒定为高电平1所以实际写入的数据应该是01000000B(40H)+100
6、00000B(80H)=11000000B(C0H)在对液晶模块的初始化中要先设置其显示模式,在液晶模块显示字符时光标是自动右移的,无需人工干预每次输入指令前都要判断液晶模块是否处于忙的状态1602液晶模块内部的字符发生存储器(CGROM)已经存储了160个不同的点阵字符图形,如图6所示,这些字符有:阿拉伯数字英文字母的大小写常用的符号和日文假名等,每一个字符都有一个固定的代码,比如大写的英文字母“A”的代码是01000001B(41H),显示时模块把地址41H中的点阵字符图形显示出来,我们就能看到字母“A”.图6 字符代码与图形对应图4. 1602LCD的一般初始化(复位)过程延时15ms写
7、指令38H(不检测忙信号)延时5ms写指令38H(不检测忙信号)延时5ms写指令38H(不检测忙信号)以后每次写指令读/写数据操作均需要检测忙信号写指令38H:显示模式设置写指令08H:显示关闭写指令01H:显示清屏写指令06H:显示光标移动设置写指令0CH:显示开及光标设置31602LCD的软硬件设计实例在1602LCD第一行显示网站名:在第二行显示联系电话:0571-85956028实验前应先将显示切换开关切换到LCD工作状态图7 1602LCD实验演示图1. 硬件原理图1602液晶显示模块可以和单片机AT89C51直接接口,电路如图8所示图8 硬件原理图2. 程序流程图图9 软件流程图3
8、. 软件代码/*/*杭州电子&计算机工作室*/*http:/*/*1602LCD演示程序*/*目标器件:AT89S51*/*晶振:11.0592MHZ*/*编译环境:Keil 7.50A*/*/*包含头文件*/#include #include /*端口定义*/sbit rs = P10;sbit rw = P11;sbit ep = P12;/*显示数据表*/unsigned char code dis1 = www.G;unsigned char code dis2 = 0123-12345678999;/*函数功能:LCD延时子程序入口参数:ms出口参数:*/void delay(uns
9、igned char ms) unsigned char i; while(ms-) for(i = 0; i最退$嶳*陫1挤樀退$嶵*陫1挤渀倀退$嶷*陭1摐瀀簀退$嶹*陵1敼琀簀退$嶻*陱1敼錀瀀簀退$嶽*陴1敼爀簀退$嶿*陷1暨砀退$巁*陹1暨笀退$巃*陻1樬簀退$巅*陾1沄紀萀退$巇*陾1沄脀萀谀退$巉*r隄1璸舀萀退$巋*隆1痤蜀退$巍*隉1痤贀退$巏*隋1砼鄀退$巑*隌1票-阀退$巓*隘1聰娀鬀砀退$巕*際1蝸蘀鬀砀退$巗*障1袤萀鸀退$巙*隞1袤甀退$巛*隠1觐耀退$川*隤1郘蔀退$巟*隦1郘退$巡*隥1鈄.退$巣*險1鈄退$巤*隥1鈄褀退$巧*隫1錰退$巩*險1錰退$巫*隮1鑜
10、蠀退$巭*隱1閈謀退$巯*隱1隴谀退退$己*隵1鲐退$已*隸1鶼退$巵*隹1鶼退$巷*隹1黨退$巹*雀1退$巻*雁1輀退$巽*雁1退$巿*雇1退$币*雉1言退$布*雍1退倀退$帅*雔1唀退$帇*雓1唀退$帉*觤雘1騀退$帋*雘1鈀退$帍*雝11錀谀退$帐*雤1鐀谀退$帒*雥1退$帔*雨1退$帖*雪1伀退$帘*雯1蠀栀退$帚*雰1頀鐀退$帜*雳1琀退$帞*啾零1瀀退$帠*.峀餀退$帢*峀餀樀退$帤*悦&峀餀退$带*峀餀退$帨*峀餀退$帪*峀餀茀退$帬*峀餀退$帮*峀餀鈀退$帰*峀餀氀退$帲*峀餀需退$帴*峀餀縀退$帶*峀餀倀退$常*峀餀退$帺*峀餀退$帼*峀餀退$帾*峀餀退$幀*峀!餀退$幂*峀#餀退$幄*峀%餀退$幆*峀餀鐀退$幈*畈1騀0退$幊*恂騀退$幌*騀退$幎*$伀騀紀退$幐*則1儀騀开退$幒*1匀騀茀退$幔*劻1唀騀退$幖*)圀騀退$幘*夀騀退$幚*嬀騀退$幜*崀騀夀退