AMPIRE12864驅(qū)動(dòng)程序
⑧ 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ù)。
關(guān)鍵詞:
AMPIRE12864驅(qū)動(dòng)程
相關(guān)推薦
技術(shù)專(zhuān)區(qū)
- FPGA
- DSP
- MCU
- 示波器
- 步進(jìn)電機(jī)
- Zigbee
- LabVIEW
- Arduino
- RFID
- NFC
- STM32
- Protel
- GPS
- MSP430
- Multisim
- 濾波器
- CAN總線(xiàn)
- 開(kāi)關(guān)電源
- 單片機(jī)
- PCB
- USB
- ARM
- CPLD
- 連接器
- MEMS
- CMOS
- MIPS
- EMC
- EDA
- ROM
- 陀螺儀
- VHDL
- 比較器
- Verilog
- 穩(wěn)壓電源
- RAM
- AVR
- 傳感器
- 可控硅
- IGBT
- 嵌入式開(kāi)發(fā)
- 逆變器
- Quartus
- RS-232
- Cyclone
- 電位器
- 電機(jī)控制
- 藍(lán)牙
- PLC
- PWM
- 汽車(chē)電子
- 轉(zhuǎn)換器
- 電源管理
- 信號(hào)放大器
評(píng)論