新聞中心

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

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

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

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

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

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

        3)AMPIRE12864液晶顯示器指令說明
        AMPIRE12864液晶顯示器的寄存器選擇信號(hào)RS,讀寫控制信號(hào)R/W與8位三態(tài)數(shù)據(jù)口輸入輸出的控制代碼的不同組合就組成了不同的控制指令,這些指令控制液晶顯示器完成各種操作。下面就用一個(gè)表格對(duì)這些指令做出詳細(xì)的說明,如表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的地址計(jì)數(shù)器(AC)到"00H"
        地址
        歸位
        0
        0
        0
        0
        0
        0
        0
        0
        1
        X
        設(shè)定DDRAM的地址計(jì)數(shù)器(AC)到"00H",并且將游標(biāo)移到開頭原點(diǎn)位置;這個(gè)指令不改變DDRAM 的內(nèi)容
        顯示狀態(tà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ù)的讀取與寫入時(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頁面地址(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)的值
        寫數(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ū)動(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),讀/寫操作選擇信號(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總線,從而檢驗(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)寫控制命令
        在AMPIRE12864的初始化,DDRAM列地址的設(shè)定和行地址的設(shè)定都是由寫控制命令來完成的。當(dāng)R/W=0,RS=0時(shí)在使能信號(hào)的配合下就可以把控制命令寫入到指令暫存器(IR)。寫時(shí)序圖如圖3-5示。

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

        評(píng)論


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

        關(guān)閉
        主站蜘蛛池模板: 黄冈市| 宁海县| 彰化市| 永城市| 栖霞市| 南木林县| 白玉县| 和静县| 镇远县| 沂南县| 璧山县| 宾川县| 盐源县| 陆良县| 陕西省| 华宁县| 德庆县| 龙陵县| 昭平县| 景德镇市| 汕头市| 彭泽县| 青阳县| 鸡西市| 静安区| 喀喇沁旗| 阿克陶县| 岳池县| 封开县| 富蕴县| 黔西县| 偃师市| 宜兰市| 新邵县| 西青区| 荆门市| 松潘县| 曲松县| 江川县| 和田市| 盐城市|