1、AMPIRE 128X64 显示器1. LCD 接口液晶显示器件 【3】 (LCD)独具的低压、微功耗特性使他在单片机系统中特得到了广泛的应用,常用的液晶显示模块分为数显液晶模块、点阵字符液晶模块和点阵图形液晶模块,其中图形液晶模块在我国应用较为广泛,因为汉字不能像西文字符那样用字符模块即可显示,要想显示汉字必须用图形模块。本课设所选择的LCD是AMPIRE12864的汉字图形型液晶显示模块,可显示汉字及图形,图形液晶显示显示器接口如图3-1所示。CS11CS22GND3VCC4V05RS6R/W7E8DB09DB110DB211DB312DB413DB514DB615DB716RST17-V
2、out18LCD2AMPIRE128X64图3-1 LCD电路图表 3.1 AMPIRE12864 接口说明表管脚号 管脚 电平 说明 1 CS1 H/L 片选择信号,低电平时选择前 64 列2 CS2 H/L 片选择信号,低电平时选择后 64 列3 GND 0V 逻辑电源地4 VCC 5.0V 逻辑电源正5 V0 LCD 驱动电压,应用时在 VEE 与 V0 之间加一 2K 可调电阻6 RS H/L 数据指令选择:高电平:数据 D0-D7 将送入显示 RAM; 低电平:数据 D0-D7 将送入指令寄存器执行7 R/W H/L 读写选择: 高电平:读数据;低电平:写数据8 E H/L 读写使能
3、,高电平有效,下降沿锁定数据9 DB0 H/L 数据输入输出引脚10 DB1 H/L 数据输入输出引脚11 DB2 H/L 数据输入输出引脚12 DB3 H/L 数据输入输出引脚13 DB4 H/L 数据输入输出引脚14 DB5 H/L 数据输入输出引脚15 DB6 H/L 数据输入输出引脚16 DB7 H/L 数据输入输出引脚17 RST L 复位信号,低电平有效18 VOUT -10V LCD 驱动电源2. 指令描述 (1) 显示开/关设置CODE:R/W RS DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 功能:设置屏幕显示开/关。 DB0=H,开显示; DB0=L,关
4、显示。不影响显示 RAM(DD RAM)中的内容。 (2) 设置显示起始行 CODE:R/W RS DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0L L H H 行地址(063)功能:执行该命令后,所设置的行将显示在屏幕的第一行。显示起始行是由 Z 地址计数器控制的,该命令自动将 A0-A5 位地址送入 Z 地址计数器,起始地址可以是 0-63 范围内任意一行。Z 地址计数器具有循环计数功能,用于显示行扫描同步,当扫描完一行后自动加一。L L L L H H H H H H/L(3) 设置页地址 CODE:R/W RS DB7 DB6 DB5 DB4 DB3 DB2 DB1 D
5、B0 L L H L H H H 页地址(07)功能:执行本指令后,下面的读写操作将在指定页内,直到重新设置。地址就是 DD RAM 的行地址,页地址存储在 X 地址计数器中,A2-A0 可表示 8页,读写数据对页地址没有影响,除本指令可改变页地址外,复位信号(RST)可把页地址计数器内容清零。DDRAM 地址映像表如表 3.2 所示。表 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 DB
6、7 DB6 DB5 DB4 DB3 DB2 DB1 DB0L L L H 列地址(063) 功能:DDRAM 的列地址存储在 Y 地址计数器中,读写数据对列地址有影响在对 DDRAM 进行读写操作后,Y 地址自动加一。 (5)状态检测 CODE:R/W RS DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0H L BF L ON/OFF RST L L L L功能:读忙信号标志位(BF)、复位标志位(RST)以及显示状态位 (ON/OFF)。BF=H:内部正在执行操作; BF=L:空闲状态。RST=H:正处于复位初始化状态; RST=L:正常状态。ON/OFF=H:表示显示关闭;
7、 ON/OFF=L:表示显示开。(6)写显示数据 CODE:R/W RS DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0L H D7 D6 D5 D4 D3 D2 D1 D0功能:写数据到 DDRAM,DDRAM 是存储图形显示数据的,写指令执行后 Y 地址计数器自动加 1。D7-D0 位数据为 1 表示显示,数据为 0 表示不显示。写数据到 DD RAM 前,要先执行“设置页地址”及“ 设置列地址” 命令。(7)读显示数据 CODE: R/W RS DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0H H D7 D6 D5 D4 D3 D2 D1 D0基本操作时序
8、: 读状态:输入: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和CS2控制。每个内部带有 64X64 位(512字节)的RAM 缓冲区,对应关系如图3-2所示。LCD128*64 点IC18 页*64 列64*64 点I
9、C28 页*64 列64*64 点图3-2 LCD地址映射图整个屏幕分左、右两个屏,每个半屏右8页,每页有8行,注意数据是竖行排列,如表3.2。显示一个字要16*16点,全屏有128*64个点,故可显示32个中文汉字。每两页显示一行汉字,可显示4行汉字,每行8个汉字,共32个汉字。而显示数据需要16*8个点,可显示数据是汉字的两陪。屏幕是通过CS1、CS2两信号来控制的,不同的组合方式所选的屏幕是不同的,对应关系如表3.3所示。表3.3 屏幕选择表CS1 CS2 选屏0 0 全屏0 1 左屏1 0 右屏1 1 不选(8)操作 设定开始页地址和列地址; 设定读写模式,进行读写操作。只有理解了液晶
10、显示器各个指令 【4】 的功能,再结合单片机的指令系统,就能编写C 语言程序来达到混合显示汉字与数字的目的。通过程序将字的代码写入相应的DDRAM地址,就可以再相应的位置显示相应的字。3. 汉字字模提取液晶显示器件(LCD)独具的低压、微功耗特性使他在单片机系统中特得到了广泛的应用,常用的液晶显示模块分为数显液晶模块、点阵字符液晶模块和点阵图形液晶模块,其中图形液晶模块在我国应用较为广泛,因为汉字不能象西文字符那样用字符模块即可显示,要想显示汉字必须用图形模块。液晶模块显示汉字方法:使用图形液晶模块以点阵形式来显示汉字和图形,每8个点组成1个字节,每个点用一个二进制位表示,存1的点显示时在屏上
11、显示一个亮点,存0的点则在屏上不显示,最常用的1616的汉字点阵由32个字节组成。以在我国应用较为普及的液晶显示驱动控制器12864为例,在液晶屏上竖向8个点为1个字节数据,通过字模提取软件按照先左后右,先上后下的方式对汉字进行字模提取。上一页下一页图3-3 字提取方格由于 D0-D7 是从上到下排列的,最上面 8 行是上一页,我们先提取上面一页的数据 16 个,在按照相同的方法提取下一页的数据 16 个,在分别写入对应的 DDRAM 地址,就可以显示我们所需要的字。简单的字可手工制作,也可以用起模软件 zimo221【5】 提取标准的宋体汉字,不过本文所用的液晶显示屏用这款软件要设计纵向取模
12、并且要反字节,否则将显示乱码。数字只需起汉字的一半数据就可以了,如图 3-3 所示的左边 8 列或者右边 8 列。1)AMPIRE12864液晶显示器主要硬件构成AMPIRE12864液晶显示器主要包括以下几个硬件模块: 显示数据 RAM(DDRAM)DDRAM(6488 bits)是存储图形显示数据的。此 RAM 的每一位数据对应显示面板上一个点的显示(数据为 H)与不显示(数据为 L) 。DDRAM 的地址与显示位置关系对照如表 2-8 所示。表 2-8 DDRAM 的地址与显示位置关系对照图CS2=1 CS1=1Y= 0 1 63 0 1 63 行号X=0 DB0DB7DB0DB7DB0
13、DB7DB0DB7DB0DB7DB0DB7DB0DB7DB0DB707DB0DB7DB0DB7DB0DB7DB0DB7DB0DB7DB0DB7DB0DB7DB0DB7856X=7 DB0DB7DB0DB7DB0DB7DB0DB7DB0DB7DB0DB7DB0DB7DB0DB75763 I/O 缓冲器(DB0DB7)D0.D7I/O 缓冲器为双向三态数据缓冲器。是 LCM(液晶显示模块)内部总线与MPU 总线的结合部。其作用是将两个不同时钟下工作的系统连接起来,实现通讯。I/O 缓冲器在片选信号/CS 有效状态下,I/O 缓冲器开放,实现 LCM(液晶显示模块)与 MPU 之间的数据传递。当片选
14、信号为无效状态时,I/O 缓冲器将中断 LCM(液晶显示模块)内部总线与 MPU 数据总线的联系,对外总线呈高阻状态,从而不影响 MPU 的其它数据操作功能。 输入寄存器输入寄存器用于接收在 MPU 运行速度下传送给 LCM(液晶显示模块)的数据并将其锁存在输入寄存器内,其输出将在 LCM(液晶显示模块)内部工作时钟的运作下将数据写入指令寄存器或显示存储器内。 输出寄存器输出寄存器用于暂存从显示存储器读出的数据,在 MPU 读操作时,输出寄存器将当前锁存的数据通过 I/O 缓冲器送入 MPU 数据总线上。 指令寄存器指令寄存器用于接收 MPU 发来的指令代码,通过译码将指令代码置入相关的寄存器
15、或触发器内。 状态字寄存器状态字寄存器是 LCM(液晶显示模块)与 MPU 通讯时唯一的“握手”信号。状态字寄存器向 MPU 表示了 LCM(液晶显示模块)当前的工作状态。尤其是状态字中的“ 忙” 标志位是 MPU 在每次对 LCM(液晶显示模块)访问时必须要读出判别的状态位。当处于“忙” 标志位时,I/O 缓冲器被封锁,此时 MPU 对LCM(液晶显示模块)的任何操作(除读状态字操作外)都将是无效的。 X 地址寄存器X 地址寄存器是一个三位页地址寄存器,其输出控制着 DDRAM 中 8 个页面的选择,也是控制着数据传输通道的八选一选择器。X 地址寄存器可以由MPU 以指令形式设置。X 地址寄
16、存器没有自动修改功能,所以要想转换页面需要重新设置 X 地址寄存器的内容。 Y 地址计数器Y 地址计数器是一个 6 位循环加一计数器。它管理某一页面上的 64 个单元。Y 地址计数器可以由 MPU 以指令形式设置,它和页地址指针结合唯一选通显示存储器的一个单元,Y 地址计数器具有自动加一功能。在显示存储器读 /写操作后 Y 地址计数将自动加一。当计数器加至 3FH 后循环归零再继续加一。2) AMPIRE12864 液晶显示器控制接口信号说明AMPIRE12864 液晶显示器共有 5 个控制引脚,对应 5 个控制信号。它们分别是寄存器选择信号 RS,读写控制信号 R/W,使能信号 E,左屏片选
17、信号CS1,右屏片选信号 CS2。下面通过几个表格来详细说明这些控制信号的作用。RS, R/W 的配合选择决定读写方式的 4 种模式,如表 2-9。表2-9 RS,R/W的配合选择决定读写方式的4种模式RS 信号 R/W 信号 功能说明L L MPU 写指令到指令暂存器(IR)L H 读出忙标志(BF)及地址记数器(AC)的状态H L MPU 写入数据到数据暂存器(DR)H H MPU 从数据暂存器(DR)中读出数据使能信号E控制方式见表2-10。表2-10 使能信号E 控制方式E状态 执行动作 功能高 低 I/O缓冲 DDRAM 配合R/W写数据或指令高 DDRAMI/O缓冲 配合RS进行读
18、数据或指令低 高 无动作3) AMPIRE12864液晶显示器指令说明AMPIRE12864液晶显示器的寄存器选择信号RS ,读写控制信号R/W与8位三态数据口输入输出的控制代码的不同组合就组成了不同的控制指令,这些指令控制液晶显示器完成各种操作。下面就用一个表格对这些指令做出详细的说明,如表2-11所示。表2-11 AMPIRE12864液晶显示器指令说明指 令 码指令RS R/W D7 D6 D5 D4 D3 D2 D1 D0 功 能清除显示0 0 0 0 0 0 0 0 0 1将 DDRAM 填 满 “20H“,并 且 设定 DDRAM 的 地 址 计 数 器 (AC)到 “00H“地址
19、归位0 0 0 0 0 0 0 0 1 X设 定 DDRAM 的 地 址 计 数 器(AC)到 “00H“,并 且 将 游 标 移 到开 头 原 点 位 置 ;这 个 指 令 不 改 变DDRAM 的 内 容显示状态开/关 0 0 0 0 0 0 1 D C BD=1: 整体显示 ONC=1: 游标 ONB=1:游标位置反白允许进入点设定0 0 0 0 0 0 0 1 I/D S指定在数据的读取与写入时,设定游标的移动方向及指定显示的移位游标或显示移位控制0 0 0 0 0 1 S/C R/L X X设定游标的移动与显示的移位控制位;这个指令不改变DDRAM 的内容功能设定0 0 0 0 1
20、DL X RE X XDL=0/1:4/8 位数据RE=1: 扩充指令操作RE=0: 基本指令操作设定DDRAM列地址0 0 1 0 AC5AC4AC3AC2AC1AC0设定 DDRAM 列地址( Y地址)第一行:80H87H第二行:90H97H设定DDRAM行地址 0 0 0 1 1 1 1 P2 P1 P0 设定 DDRAM 页面地址(X 地址)读取忙标志和地址0 1 BF AC6AC5AC4AC3AC2AC1AC0读取忙标志(BF)可以确认内部动作是否完成,同时可以读出地址计数器(AC)的值写数据到 RAM1 0 数据 将数据 D7D0 写入到内部的 RAM读出RAM 值1 1 数据 从
21、内部 RAM 读取数据D7D0二、驱动程序源码分析接口定义:uchar xdata DB _at_ 0x3fff;/定义地址为 3fffh 的扩展口为AMPIRE12864 的三态数据输入口,当然可根据自己具体情况定义;uchar xdata CS _at_ 0x5fff;/定义地址 5fffh 的扩展口为 AMPIRE12864 的左右屏选择控制信号输入口;uchar xdata RSRWE _at_ 0x7fff;/定义地址为 7fffh 的扩展口为AMPIRE12864 的寄存器选择信号,读/写操作选择信号和使能信号的输入口。1)检测忙信号标志 BFBF 标志提供内部工作情况。BF=1
22、表示模块在进行内部操作,此时模块不接受外部指令和数据。BF=0 时模块为准备状态,随时可接受外部指令和数据。 利用表 2-11 中的 “读取忙标志和地址 ”指令,可以将 BF 读到 DB7 总线,从而检验模块之工作状态。检测忙信号标志 BF 驱动函数 代码如下:void Check_busy()uchar a;RW=1;RS=0;E=1;/读出忙标志(BF)准备while(1)E=0;/读出忙标志(BF)就绪if(!(P0/不忙跳出E=1;a+;if(a10)/防止死循环break;/E=1;/读出忙标志(BF)准备2)写控制命令在 AMPIRE12864 的初始化,DDRAM 列地址的设定和行地址的设定都是由写控制命令来完成的。当 R/W=0,RS=0 时在使能信号的配合下就可以把控制命令写入到指令暂存器(IR)。写时序图如图 3-5 示。