新聞中心

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

AMPIRE12864驅(qū)動(dòng)程序

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

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

使能信號(hào)E控制方式見(jiàn)表2-10。
表2-10 使能信號(hào)E控制方式

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

3)AMPIRE12864液晶顯示器指令說(shuō)明
AMPIRE12864液晶顯示器的寄存器選擇信號(hào)RS,讀寫(xiě)控制信號(hào)R/W與8位三態(tài)數(shù)據(jù)口輸入輸出的控制代碼的不同組合就組成了不同的控制指令,這些指令控制液晶顯示器完成各種操作。下面就用一個(gè)表格對(duì)這些指令做出詳細(xì)的說(shuō)明,如表2-11所示。
表2-11AMPIRE12864液晶顯示器指令說(shuō)明

指令
指令碼
功能
RS
R/W
D7
D6
D5
D4
D3
D2
D1
D0
清除
顯示
0
0
0
0
0
0
0
0
0
1
將DDRAM填滿(mǎn)"20H",并且設(shè)定DDRAM的地址計(jì)數(shù)器(AC)到"00H"
地址
歸位
0
0
0
0
0
0
0
0
1
X
設(shè)定DDRAM的地址計(jì)數(shù)器(AC)到"00H",并且將游標(biāo)移到開(kāi)頭原點(diǎn)位置;這個(gè)指令不改變DDRAM 的內(nèi)容
顯示狀態(tài)開(kāi)/關(guān)
0
0
0
0
0
0
1
D
C
B
D=1: 整體顯示 ON
C=1: 游標(biāo)ON
B=1:游標(biāo)位置反白允許
進(jìn)入點(diǎn)
設(shè)定
0
0
0
0
0
0
0
1
I/D
S
指定在數(shù)據(jù)的讀取與寫(xiě)入時(shí),設(shè)定游標(biāo)的移動(dòng)方向及指定顯示的移位
游標(biāo)或顯示移位控制
0
0
0
0
0
1
S/C
R/L
X
X
設(shè)定游標(biāo)的移動(dòng)與顯示的移位控制位;這個(gè)指令不改變DDRAM 的內(nèi)容
功能
設(shè)定
0
0
0
0
1
DL
X
RE
X
X
DL=0/1:4/8位數(shù)據(jù)
RE=1: 擴(kuò)充指令操作
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頁(yè)面地址(X地址)
讀取忙標(biāo)志和地址
0
1
BF
AC6
AC5
AC4
AC3
AC2
AC1
AC0
讀取忙標(biāo)志(BF)可以確認(rèn)內(nèi)部動(dòng)作是否完成,同時(shí)可以讀出地址計(jì)數(shù)器(AC)的值
寫(xiě)數(shù)據(jù)到RAM
1
0
數(shù)據(jù)
將數(shù)據(jù)D7——D0寫(xiě)入到內(nèi)部的RAM
讀出RAM值
1
1
數(shù)據(jù)
從內(nèi)部RAM讀取數(shù)據(jù)D7——D0

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

圖3-5 AMPIRE12864寫(xiě)時(shí)序圖
寫(xiě)控制命令驅(qū)動(dòng)函數(shù)代碼如下:
void write_cm(uchar command)
{
check_busy();//檢測(cè)忙信號(hào)
RSRWE=0; //R/W=0,RS=0,E=0寫(xiě)控制命令準(zhǔn)備
DB=command;//送出控制命令
RSRWE=4; //R/W=0,RS=0,E=1寫(xiě)控制命令
_nop_();
_nop_();
RSRWE=0;
}
3)寫(xiě)數(shù)據(jù)
當(dāng)寄存器控選擇控制信號(hào)RS=0寫(xiě)指令寄存器(IR)即為寫(xiě)控制命令,RS=1時(shí)寫(xiě)數(shù)據(jù)寄存器即為寫(xiě)數(shù)據(jù)。

評(píng)論


技術(shù)專(zhuān)區(qū)

關(guān)閉