新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > AMPIRE12864驱动程序

AMPIRE12864驱动程序

作者: 时间:2016-11-30 来源:网络 收藏
⑧ Y地址计数器
Y地址计数器是一个6位循环加一计数器。它管理某一页面上的64个单元。Y地址计数器可以由MPU以指令形式设置,它和页地址指针结合唯一选通显示存储器的一个单元,Y地址计数器具有自动加一功能。在显示存储器读/写操作后Y地址计数将自动加一。当计数器加至3FH后循环归零再继续加一。
2) AMPIRE12864液晶显示器控制接口信号说明
AMPIRE12864液晶显示器共有5个控制引脚,对应5个控制信号。它们分别是寄存器选择信号RS,读写控制信号R/W,使能信号E,左屏片选信号CS1,右屏片选信号CS2。下面通过几个表格来详细说明这些控制信号的作用。
RS,R/W的配合选择决定读写方式的4种模式,如表2-9。
表2-9RS,R/W的配合选择决定读写方式的4种模式

本文引用地址:https://www.eepw.com.cn/article/201611/323960.htm
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写数据或指令
DDRAM——>I/O缓冲
配合RS进行读数据或指令
低——>高
无动作

3)AMPIRE12864液晶显示器指令说明
AMPIRE12864液晶显示器的寄存器选择信号RS,读写控制信号R/W与8位三态数据口输入输出的控制代码的不同组合就组成了不同的控制指令,这些指令控制液晶显示器完成各种操作。下面就用一个表格对这些指令做出详细的说明,如表2-11所示。
表2-11AMPIRE12864液晶显示器指令说明

指令
指令码
功能
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"
地址
归位
0
0
0
0
0
0
0
0
1
X
设定DDRAM的地址计数器(AC)到"00H",并且将游标移到开头原点位置;这个指令不改变DDRAM 的内容
显示状态开/关
0
0
0
0
0
0
1
D
C
B
D=1: 整体显示 ON
C=1: 游标ON
B=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
DL
X
RE
X
X
DL=0/1:4/8位数据
RE=1: 扩充指令操作
RE=0: 基本指令操作
设定DDRAM列地址
0
0
1
0
AC5
AC4
AC3
AC2
AC1
AC0
设定DDRAM 列地址(Y地址)
第一行:80H-87H
第二行:90H-97H
设定DDRAM行地址
0
0
0
1
1
1
1
P2
P1
P0
设定DDRAM页面地址(X地址)
读取忙标志和地址
0
1
BF
AC6
AC5
AC4
AC3
AC2
AC1
AC0
读取忙标志(BF)可以确认内部动作是否完成,同时可以读出地址计数器(AC)的值
写数据到RAM
1
0
数据
将数据D7——D0写入到内部的RAM
读出RAM值
1
1
数据
从内部RAM读取数据D7——D0

二、驱动程序源码分析
接口定义:ucharxdata DB _at_ 0x3fff;//定义地址为3fffh的扩展口为AMPIRE12864的三态数据输入口,当然可根据自己具体情况定义;
uchar xdata CS _at_0x5fff;//定义地址5fffh的扩展口为AMPIRE12864的左右屏选择控制信号输入口;
uchar xdata RSRWE _at_0x7fff;//定义地址为7fffh的扩展口为AMPIRE12864的寄存器选择信号,读/写操作选择信号和使能信号的输入口。
1)检测忙信号标志BF
BF标志提供内部工作情况。BF=1表示模块在进行内部操作,此时模块不接受外部指令和数据。BF=0时模块为准备状态,随时可接受外部指令和数据。利用表2-11中的“读取忙标志和地址”指令,可以将BF读到DB7总线,从而检验模块之工作状态。检测忙信号标志BF驱动函数代码如下:
void check_busy()
{
uchar a;
RSRWE=1;//R/W=1,RS=0,E=0读出忙标志(BF)准备
while(1)
{
RSRWE=5; //R/W=1,RS=0,E=1读出忙标志(BF)就绪
if(!(DB&0x80))//读取忙信号
break;//不忙跳出
RSRWE=1;
a++;
if(a>10)//防止死循环
break;
}
RSRWE=1; //R/W=1,RS=0,E=0读出忙标志(BF)准备
}
2)写控制命令
在AMPIRE12864的初始化,DDRAM列地址的设定和行地址的设定都是由写控制命令来完成的。当R/W=0,RS=0时在使能信号的配合下就可以把控制命令写入到指令暂存器(IR)。写时序图如图3-5示。

图3-5 AMPIRE12864写时序图
写控制命令驱动函数代码如下:
void write_cm(uchar command)
{
check_busy();//检测忙信号
RSRWE=0; //R/W=0,RS=0,E=0写控制命令准备
DB=command;//送出控制命令
RSRWE=4; //R/W=0,RS=0,E=1写控制命令
_nop_();
_nop_();
RSRWE=0;
}
3)写数据
当寄存器控选择控制信号RS=0写指令寄存器(IR)即为写控制命令,RS=1时写数据寄存器即为写数据。

关键词: AMPIRE12864驱动程

评论


技术专区

关闭