1、AMPIRE128X64显示器中文手册及示例代码范本模板AMPIRE 128X64显示器1。 LCD接口液晶显示器件【3】(LCD)独具的低压、微功耗特性使他在单片机系统中特得到了广泛的应用,常用的液晶显示模块分为数显液晶模块、点阵字符液晶模块和点阵图形液晶模块,其中图形液晶模块在我国应用较为广泛,因为汉字不能像西文字符那样用字符模块即可显示,要想显示汉字必须用图形模块。本课设所选择的LCD是AMPIRE12864的汉字图形型液晶显示模块,可显示汉字及图形,图形液晶显示显示器接口如图3-1所示。 图31 LCD电路图 表3。1 AMPIRE12864接口说明表管脚号 管脚 电平 说明 1CS1
2、H/L 片选择信号,低电平时选择前64列2CS2H/L片选择信号,低电平时选择后64列3GND0V 逻辑电源地4VCC 5.0V 逻辑电源正5V0 LCD驱动电压,应用时在VEE与V0之间加一2K可调电阻6RSH/L 数据指令选择:高电平:数据D0D7将送入显示RAM; 低电平:数据D0D7将送入指令寄存器执行7R/WH/L 读写选择: 高电平:读数据;低电平:写数据8E H/L 读写使能,高电平有效,下降沿锁定数据9DB0H/L 数据输入输出引脚10DB1H/L 数据输入输出引脚11DB2H/L 数据输入输出引脚12DB3H/L 数据输入输出引脚13DB4 H/L数据输入输出引脚14DB5H
3、/L数据输入输出引脚15DB6H/L数据输入输出引脚16DB7H/L数据输入输出引脚17RSTL复位信号,低电平有效18VOUT-10VLCD驱动电源2。 指令描述 (1) 显示开/关设置LLLLHHHHHH/LCODE:R/W RS DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 功能:设置屏幕显示开/关。 DB0=H,开显示;DB0=L,关显示。不影响显示RAM(DD RAM)中的内容。 (2) 设置显示起始行 CODE:R/W RS DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0LLHH行地址(063)功能:执行该命令后,所设置的行将显示在屏幕的第一行。显
4、示起始行是由Z地址计数器控制的,该命令自动将A0A5位地址送入Z地址计数器,起始地址可以是0-63范围内任意一行。Z地址计数器具有循环计数功能,用于显示行扫描同步,当扫描完一行后自动加一。(3) 设置页地址 CODE:R/W RS DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 LLHLHHH页地址(07)功能:执行本指令后,下面的读写操作将在指定页内,直到重新设置.地址就是DD RAM 的行地址,页地址存储在X地址计数器中,A2-A0可表示8页,读写数据对页地址没有影响,除本指令可改变页地址外,复位信号(RST)可把页地址计数器内容清零。DDRAM地址映像表如表3.2所示.
5、表3。2 RAM地址映像表 Y 地址 0 1 2 61 62 63 DB0 PAGE0 DB7 X=0 DB0 PAGE1 DB7 X=1 DB0 PAGE6 DB7 X=6 DB0 PAGE7 DB7 X=7 (4) 设置列地址 CODE:R/W RS DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0LLLH列地址(063) 功能:DDRAM 的列地址存储在Y地址计数器中,读写数据对列地址有影响在对DDRAM进行读写操作后,Y地址自动加一。 (5)状态检测 CODE:R/W RS DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0HLBFLON/OFF RST LL
6、LL功能:读忙信号标志位(BF)、复位标志位(RST)以及显示状态位(ON/OFF)。BF=H:内部正在执行操作; BF=L:空闲状态。RST=H:正处于复位初始化状态; RST=L:正常状态。ON/OFF=H:表示显示关闭; ON/OFF=L:表示显示开。(6)写显示数据 CODE:R/W RS DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0L HD7D6D5D4D3D2D1D0功能:写数据到DDRAM,DDRAM是存储图形显示数据的,写指令执行后Y地址计数器自动加1。D7D0位数据为1表示显示,数据为0表示不显示.写数据到DD RAM前,要先执行“设置页地址及“设置列地址命
7、令。(7)读显示数据 CODE: R/W RS DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0HHD7D6D5D4D3D2D1D0基本操作时序: 读状态:输入:RS=L,R/W=H,CS1 或CS2=H,E=H 输出:D0D7=状态字 写指令:输入:RS=L,R/W=L,D0D7=指令码,CS1或CS2=H,E=高脉冲输出:无 读数据:输入:RS=H,R/W=H,CS1 或CS2=H,E=H 输出:D0D7=数据 写数据:输入:RS=H,R/W=L,D0D7=数据,CS1 或CS2=H,E=高脉冲 输出:无由RAM 地址映射表可知LCD 显示屏由两片控制器控制,分别用CS1和C
8、S2控制.每个内部带有64X64 位(512字节)的RAM 缓冲区,对应关系如图32所示。 图3-2 LCD地址映射图整个屏幕分左、右两个屏,每个半屏右8页,每页有8行,注意数据是竖行排列,如表3。2.显示一个字要16*16点,全屏有128*64个点,故可显示32个中文汉字。每两页显示一行汉字,可显示4行汉字,每行8个汉字,共32个汉字。而显示数据需要168个点,可显示数据是汉字的两陪.屏幕是通过CS1、CS2两信号来控制的,不同的组合方式所选的屏幕是不同的,对应关系如表3.3所示。表3。3 屏幕选择表 CS1 CS2 选屏 0 0 全屏 0 1 左屏 1 0 右屏 1 1 不选(8)操作 设
9、定开始页地址和列地址; 设定读写模式,进行读写操作。 只有理解了液晶显示器各个指令【4】的功能,再结合单片机的指令系统,就能编写C语言程序来达到混合显示汉字与数字的目的.通过程序将字的代码写入相应的DDRAM地址,就可以再相应的位置显示相应的字.3。 汉字字模提取液晶显示器件(LCD)独具的低压、微功耗特性使他在单片机系统中特得到了广泛的应用,常用的液晶显示模块分为数显液晶模块、点阵字符液晶模块和点阵图形液晶模块,其中图形液晶模块在我国应用较为广泛,因为汉字不能象西文字符那样用字符模块即可显示,要想显示汉字必须用图形模块。液晶模块显示汉字方法:使用图形液晶模块以点阵形式来显示汉字和图形,每8个
10、点组成1个字节,每个点用一个二进制位表示,存1的点显示时在屏上显示一个亮点,存0的点则在屏上不显示,最常用的1616的汉字点阵由32个字节组成。以在我国应用较为普及的液晶显示驱动控制器12864为例,在液晶屏上竖向8个点为1个字节数据,通过字模提取软件按照先左后右,先上后下的方式对汉字进行字模提取。 图3-3 字提取方格由于D0D7是从上到下排列的,最上面8行是上一页,我们先提取上面一页的数据16个,在按照相同的方法提取下一页的数据16个,在分别写入对应的DDRAM地址,就可以显示我们所需要的字。简单的字可手工制作,也可以用起模软件zimo221【5】提取标准的宋体汉字,不过本文所用的液晶显示
11、屏用这款软件要设计纵向取模并且要反字节,否则将显示乱码.数字只需起汉字的一半数据就可以了,如图3-3所示的左边8列或者右边8列。1)AMPIRE12864液晶显示器主要硬件构成AMPIRE12864液晶显示器主要包括以下几个硬件模块: 显示数据RAM(DDRAM)DDRAM(6488 bits)是存储图形显示数据的。此RAM的每一位数据对应显示面板上一个点的显示(数据为H)与不显示(数据为L).DDRAM的地址与显示位置关系对照如表2-8所示。表28 DDRAM的地址与显示位置关系对照图CS2=1CS1=1Y=01630163行号X=0DB0DB7DB0DB7DB0DB7DB0DB7DB0DB
12、7DB0DB7DB0DB7DB0DB707DB0DB7DB0DB7DB0DB7DB0DB7DB0DB7DB0DB7DB0DB7DB0DB7856X=7DB0DB7DB0DB7DB0DB7DB0DB7DB0DB7DB0DB7DB0DB7DB0DB75763 I/O缓冲器(DB0DB7)I/O缓冲器为双向三态数据缓冲器。是LCM(液晶显示模块)内部总线与MPU总线的结合部。其作用是将两个不同时钟下工作的系统连接起来,实现通讯。I/O缓冲器在片选信号/CS有效状态下,I/O缓冲器开放,实现LCM(液晶显示模块)与MPU之间的数据传递。当片选信号为无效状态时,I/O缓冲器将中断LCM(液晶显示模块)内
13、部总线与MPU数据总线的联系,对外总线呈高阻状态,从而不影响MPU的其它数据操作功能. 输入寄存器输入寄存器用于接收在MPU运行速度下传送给LCM(液晶显示模块)的数据并将其锁存在输入寄存器内,其输出将在LCM(液晶显示模块)内部工作时钟的运作下将数据写入指令寄存器或显示存储器内。 输出寄存器输出寄存器用于暂存从显示存储器读出的数据,在MPU读操作时,输出寄存器将当前锁存的数据通过I/O缓冲器送入MPU数据总线上。 指令寄存器指令寄存器用于接收MPU发来的指令代码,通过译码将指令代码置入相关的寄存器或触发器内。 状态字寄存器状态字寄存器是LCM(液晶显示模块)与MPU通讯时唯一的“握手”信号。
14、状态字寄存器向MPU表示了LCM(液晶显示模块)当前的工作状态。尤其是状态字中的“忙”标志位是MPU在每次对LCM(液晶显示模块)访问时必须要读出判别的状态位。当处于“忙”标志位时,I/O缓冲器被封锁,此时MPU对LCM(液晶显示模块)的任何操作(除读状态字操作外)都将是无效的。 X地址寄存器X地址寄存器是一个三位页地址寄存器,其输出控制着DDRAM中8个页面的选择,也是控制着数据传输通道的八选一选择器。X地址寄存器可以由MPU以指令形式设置。X地址寄存器没有自动修改功能,所以要想转换页面需要重新设置X地址寄存器的内容。 Y地址计数器Y地址计数器是一个6位循环加一计数器。它管理某一页面上的64
15、个单元。Y地址计数器可以由MPU以指令形式设置,它和页地址指针结合唯一选通显示存储器的一个单元,Y地址计数器具有自动加一功能。在显示存储器读/写操作后Y地址计数将自动加一。当计数器加至3FH后循环归零再继续加一。2) AMPIRE12864液晶显示器控制接口信号说明AMPIRE12864液晶显示器共有5个控制引脚,对应5个控制信号.它们分别是寄存器选择信号RS,读写控制信号R/W,使能信号E,左屏片选信号CS1,右屏片选信号CS2。下面通过几个表格来详细说明这些控制信号的作用。RS,R/W的配合选择决定读写方式的4种模式,如表29.表29 RS,R/W的配合选择决定读写方式的4种模式RS信号R
16、/W信号功能说明LLMPU写指令到指令暂存器(IR)LH读出忙标志(BF)及地址记数器(AC)的状态HLMPU写入数据到数据暂存器(DR)HHMPU从数据暂存器(DR)中读出数据使能信号E控制方式见表210。表210 使能信号E控制方式E状态执行动作功能高低I/O缓冲 DDRAM配合R/W写数据或指令高DDRAM-I/O缓冲配合RS进行读数据或指令低-高无动作3)AMPIRE12864液晶显示器指令说明AMPIRE12864液晶显示器的寄存器选择信号RS,读写控制信号R/W与8位三态数据口输入输出的控制代码的不同组合就组成了不同的控制指令,这些指令控制液晶显示器完成各种操作。下面就用一个表格对
17、这些指令做出详细的说明,如表2-11所示.表211 AMPIRE12864液晶显示器指令说明指令指 令 码功 能RSR/WD7D6D5D4D3D2D1D0清除显示0000000001将DDRAM填满”20H”,并且设定DDRAM的地址计数器(AC)到00H地址归位000000001X设定DDRAM的地址计数器(AC)到”00H”,并且将游标移到开头原点位置;这个指令不改变DDRAM 的内容显示状态开/关0000001DCBD=1: 整体显示 ONC=1: 游标ONB=1:游标位置反白允许进入点设定00000001I/DS指定在数据的读取与写入时,设定游标的移动方向及指定显示的移位游标或显示移位
18、控制000001S/CR/LXX设定游标的移动与显示的移位控制位;这个指令不改变DDRAM 的内容功能设定00001DLXREXXDL=0/1:4/8位数据RE=1: 扩充指令操作RE=0: 基本指令操作设定DDRAM列地址0010AC5AC4AC3AC2AC1AC0设定DDRAM 列地址(Y地址)第一行:80H87H第二行:90H97H设定DDRAM行地址0001111P2P1P0设定DDRAM页面地址(X地址)读取忙标志和地址01BFAC6AC5AC4AC3AC2AC1AC0读取忙标志(BF)可以确认内部动作是否完成,同时可以读出地址计数器(AC)的值写数据到RAM10数据将数据D7D0写
19、入到内部的RAM读出RAM值11数据从内部RAM读取数据D7-D0二、驱动程序源码分析接口定义:uchar xdata DB _at_ 0x3fff;/定义地址为3fffh的扩展口为AMPIRE12864的三态数据输入口,当然可根据自己具体情况定义;uchar xdata CS _at_ 0x5fff;/定义地址5fffh的扩展口为AMPIRE12864的左右屏选择控制信号输入口;uchar xdata RSRWE _at_ 0x7fff;/定义地址为7fffh的扩展口为AMPIRE12864的寄存器选择信号,读/写操作选择信号和使能信号的输入口。1)检测忙信号标志BFBF标志提供内部工作情况
20、.BF=1表示模块在进行内部操作,此时模块不接受外部指令和数据。BF=0时模块为准备状态,随时可接受外部指令和数据。 利用表211中的“读取忙标志和地址”指令,可以将BF读到DB7总线,从而检验模块之工作状态。检测忙信号标志BF驱动函数代码如下:void Check_busy() uchar a; RW=1; RS=0; E=1;/读出忙标志(BF)准备 while(1) E=0;/读出忙标志(BF)就绪 if(!(P00x80)/读取忙信号 break;/不忙跳出 E=1; a+; if(a10)/防止死循环 break; /E=1;/读出忙标志(BF)准备2)写控制命令在AMPIRE128
21、64的初始化,DDRAM列地址的设定和行地址的设定都是由写控制命令来完成的。当R/W=0,RS=0时在使能信号的配合下就可以把控制命令写入到指令暂存器(IR)。写时序图如图35示。图3-5 AMPIRE12864写时序图写控制命令驱动函数代码如下:void Write_inst(uchar inst) Check_busy(); RS=0; RW=0; E=1; P0=inst; E=0; _nop_();3) 写数据当寄存器控选择控制信号RS=0写指令寄存器(IR)即为写控制命令,RS=1时写数据寄存器即为写数据。写数据驱动函数代码如下:void Write_data(uchar dat)
22、Check_busy(); RS=1; RW=0; E=1; P0=dat; E=0; _nop_();1)设定显示字符行列地址在AMPIRE12864上显示一个字符是必须先设定其行列地址,设定行列地址的操作指令见表211。设定显示字符行列地址驱动函数代码如下:void set_xy(uchar x,uchar y)/x为行,y为列if(y=64)/列地址大于等于64时右屏显示CS=1;y=y64;else/列地址小于64时左屏显示CS=2;write_cm(0x40y);写列地址_nop_();write_cm(0xb8|x);写行地址2)AMPIRE12864的初始化在对AMPIRE128
23、64操作前须初始化,对其做一些必要的设置。这些设置包括:基本指令操作设置;开显示,关光标,不闪烁;清除显示;光标的移动方向,DDRAM的地址计数器加1。设置的操作指令详见表2-11。AMPIRE12864初始化驱动函数代码如下:void LCD_Init()write_cm (0x30);/30H-基本指令操作delayus(4);write_cm (0x0c);/开显示,关光标,不闪烁。delayus(10);write_cm (0x01);/清除显示delayms(10);write_cm (0x06);/光标的移动方向左,DDRAM的地址计数器(AC)加1。delayus(10);3)A
24、MPIRE12864显示功能模块AMPIRE12864显示功能通过函数void disp(uchar index416)实现。入口参数uchar index416为字库索引数组,给出在指定位置显示的字符的图形点阵在uchar code zk16中的索引地址,本系统中所有字符的图形点阵都由字模提取软件提取并存储在图形点阵数组uchar code zk16中。在void disp(uchar index416)调用了两个函数:void Disp_hz(uchar R,uchar L,uchar p)用来显示汉字,其程序代码如下:void Disp_hz(uchar R,uchar L,uchar
25、*p)uchar i;for(i=0;i16;i+)set_xy(2*R,16L+i);/设定显示位置write_data(pi);/写入DDRAMset_xy(2*R+1,16*L+i);write_data(pi+16);入口参数uchar R,uchar L分别指明字符或汉字的显示位置的行号和列号,uchar *p为图形点阵数组的首地址指针。void Disp_zf(uchar R,uchar L,uchar p)用来显示ASCII字符,其程序代码如下:void Disp_zf(uchar R,uchar L,uchar p)uchar i;for(i=0;i14)Disp_hz(i,j/2,zkindexij0);/显示汉字j+;elseDisp_zf(i,j,&zkindexij0);/显示ASCII字符显示以一整屏为单位,在显示之前应先给index416赋值以确定液晶显示器的显示内容。如给index416以下赋值:index02=131;index04=133;index06=135;index08=137;index010=139;index012=139;