新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應用 > AMPIRE12864驅(qū)動程序

AMPIRE12864驅(qū)動程序

作者: 時間:2016-11-30 來源:網(wǎng)絡 收藏
⑧ Y地址計數(shù)器
Y地址計數(shù)器是一個6位循環(huán)加一計數(shù)器。它管理某一頁面上的64個單元。Y地址計數(shù)器可以由MPU以指令形式設(shè)置,它和頁地址指針結(jié)合唯一選通顯示存儲器的一個單元,Y地址計數(shù)器具有自動加一功能。在顯示存儲器讀/寫操作后Y地址計數(shù)將自動加一。當計數(shù)器加至3FH后循環(huán)歸零再繼續(xù)加一。
2) AMPIRE12864液晶顯示器控制接口信號說明
AMPIRE12864液晶顯示器共有5個控制引腳,對應5個控制信號。它們分別是寄存器選擇信號RS,讀寫控制信號R/W,使能信號E,左屏片選信號CS1,右屏片選信號CS2。下面通過幾個表格來詳細說明這些控制信號的作用。
RS,R/W的配合選擇決定讀寫方式的4種模式,如表2-9。
表2-9RS,R/W的配合選擇決定讀寫方式的4種模式

本文引用地址:http://2s4d.com/article/201611/323960.htm
RS信號
R/W信號
功能說明
L
L
MPU寫指令到指令暫存器(IR)
L
H
讀出忙標志(BF)及地址記數(shù)器(AC)的狀態(tài)
H
L
MPU寫入數(shù)據(jù)到數(shù)據(jù)暫存器(DR)
H
H
MPU從數(shù)據(jù)暫存器(DR)中讀出數(shù)據(jù)

使能信號E控制方式見表2-10。
表2-10 使能信號E控制方式

E狀態(tài)
執(zhí)行動作
功能
高——>低
I/O緩沖——> DDRAM
配合R/W寫數(shù)據(jù)或指令
DDRAM——>I/O緩沖
配合RS進行讀數(shù)據(jù)或指令
低——>高
無動作

3)AMPIRE12864液晶顯示器指令說明
AMPIRE12864液晶顯示器的寄存器選擇信號RS,讀寫控制信號R/W與8位三態(tài)數(shù)據(jù)口輸入輸出的控制代碼的不同組合就組成了不同的控制指令,這些指令控制液晶顯示器完成各種操作。下面就用一個表格對這些指令做出詳細的說明,如表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",并且設(shè)定DDRAM的地址計數(shù)器(AC)到"00H"
地址
歸位
0
0
0
0
0
0
0
0
1
X
設(shè)定DDRAM的地址計數(shù)器(AC)到"00H",并且將游標移到開頭原點位置;這個指令不改變DDRAM 的內(nèi)容
顯示狀態(tài)開/關(guān)
0
0
0
0
0
0
1
D
C
B
D=1: 整體顯示 ON
C=1: 游標ON
B=1:游標位置反白允許
進入點
設(shè)定
0
0
0
0
0
0
0
1
I/D
S
指定在數(shù)據(jù)的讀取與寫入時,設(shè)定游標的移動方向及指定顯示的移位
游標或顯示移位控制
0
0
0
0
0
1
S/C
R/L
X
X
設(shè)定游標的移動與顯示的移位控制位;這個指令不改變DDRAM 的內(nèi)容
功能
設(shè)定
0
0
0
0
1
DL
X
RE
X
X
DL=0/1:4/8位數(shù)據(jù)
RE=1: 擴充指令操作
RE=0: 基本指令操作
設(shè)定DDRAM列地址
0
0
1
0
AC5
AC4
AC3
AC2
AC1
AC0
設(shè)定DDRAM 列地址(Y地址)
第一行:80H-87H
第二行:90H-97H
設(shè)定DDRAM行地址
0
0
0
1
1
1
1
P2
P1
P0
設(shè)定DDRAM頁面地址(X地址)
讀取忙標志和地址
0
1
BF
AC6
AC5
AC4
AC3
AC2
AC1
AC0
讀取忙標志(BF)可以確認內(nèi)部動作是否完成,同時可以讀出地址計數(shù)器(AC)的值
寫數(shù)據(jù)到RAM
1
0
數(shù)據(jù)
將數(shù)據(jù)D7——D0寫入到內(nèi)部的RAM
讀出RAM值
1
1
數(shù)據(jù)
從內(nèi)部RAM讀取數(shù)據(jù)D7——D0

二、驅(qū)動程序源碼分析
接口定義:ucharxdata DB _at_ 0x3fff;//定義地址為3fffh的擴展口為AMPIRE12864的三態(tài)數(shù)據(jù)輸入口,當然可根據(jù)自己具體情況定義;
uchar xdata CS _at_0x5fff;//定義地址5fffh的擴展口為AMPIRE12864的左右屏選擇控制信號輸入口;
uchar xdata RSRWE _at_0x7fff;//定義地址為7fffh的擴展口為AMPIRE12864的寄存器選擇信號,讀/寫操作選擇信號和使能信號的輸入口。
1)檢測忙信號標志BF
BF標志提供內(nèi)部工作情況。BF=1表示模塊在進行內(nèi)部操作,此時模塊不接受外部指令和數(shù)據(jù)。BF=0時模塊為準備狀態(tài),隨時可接受外部指令和數(shù)據(jù)。利用表2-11中的“讀取忙標志和地址”指令,可以將BF讀到DB7總線,從而檢驗模塊之工作狀態(tài)。檢測忙信號標志BF驅(qū)動函數(shù)代碼如下:
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)//防止死循環(huán)
break;
}
RSRWE=1; //R/W=1,RS=0,E=0讀出忙標志(BF)準備
}
2)寫控制命令
在AMPIRE12864的初始化,DDRAM列地址的設(shè)定和行地址的設(shè)定都是由寫控制命令來完成的。當R/W=0,RS=0時在使能信號的配合下就可以把控制命令寫入到指令暫存器(IR)。寫時序圖如圖3-5示。

圖3-5 AMPIRE12864寫時序圖
寫控制命令驅(qū)動函數(shù)代碼如下:
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)寫數(shù)據(jù)
當寄存器控選擇控制信號RS=0寫指令寄存器(IR)即為寫控制命令,RS=1時寫數(shù)據(jù)寄存器即為寫數(shù)據(jù)。

關(guān)鍵詞: AMPIRE12864驅(qū)動程

評論


技術(shù)專區(qū)

關(guān)閉