新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 基于AT89C52的液晶顯示的實現

        基于AT89C52的液晶顯示的實現

        作者: 時間:2009-04-23 來源:網絡 收藏

        此種方法起來簡單明了,不需額外的硬件,缺點是占用MPU的IO資源較多,適用于IO資源有富余的情況。在筆者的應用中,MPU的IO需要余留給其他應用,不能分配這么多的IO來,故采用另外一種方法,由硬件邏輯,見圖3:

        本例中的頁大小為32KB。AT27C020的片選信號CS1由地址線A15產生(即A15連到片選信號CE上),如要讀38400H單元的內容,先由程序產生高位地址AA17、AA16、AA15。對字庫芯片尋址時,先產生頁地址,再進行頁內尋址,利用此種方法可進行多位地址的擴展。舉例如下:

        4 軟件的與控制

        VPG12864T模塊的系統指令集其實就是T6963C控制器的指令集,模塊的初始化設置一般都由管腳設置完成。T6963C的指令可帶一個或兩個參數,或無參數。每條指令的執行都是先送入參數,再送入指令代碼,且每次操作之前要進行狀態字檢測。T6963C的狀態字如下說明。在處理顯示操作時,首先要指定字符串、文字段的有效顯示位置。

        STA0:指令讀寫狀態
        STA1:數據讀寫狀態
        STA2:數據自動寫狀態
        STA3:數據自動讀狀態
        STA5:讀/寫出錯狀態
        STA6:運行控制器檢測
        STA7:閃爍狀態檢測
        另外STA4保留.
        4.1 顯示字符
        VPG12864T模塊字符的顯示有兩種實現方式,一是利用T6963C提供的字符集,另一種方法是將字符的點陣數據存放在ROM內,需要時以圖形方式顯示。當電路驅動能力不夠時,可以采用第二種方式。字符顯示相對比較簡單,在這里不做詳細描敘。
        4.2 顯示漢字
        處理漢字顯示時,由于VPG12864T模塊是128×64點陣的,所以顯示16×16點陣的漢字一行最多顯示8個,且最多顯示4行。對于每一個漢字的顯示,首先應該計算該漢字在字庫中的地址,然后讀出該漢字的點陣排列。當顯示至一行的末尾時要換行顯示。在處理漢字顯示時有兩種方法:一是一次只顯示一個漢字,即對于每一個漢字,先計算出此漢字地址,讀出其點陣數據,顯示完畢再處理下一個漢字,直到處理完所有的漢字;第二種方法是將所要顯示的所有漢字的點陣數據從字庫中讀出存放外部RAM中,再集中處理顯示的問題。本文討論的是后一種方法。
        字符半角碼與全角碼有如下的對應關系:

        半角字符對應的全角字符的起始地址的計算公式:
        起始地址=[(2×94+(ASCII-0x21))×32
        漢字顯示處理的流程如下(用“#”作為顯示漢字段的結束標志):

        在處理漢字顯示時,如果要實現漢字的反顯(例如實現菜單操作),將漢字的32字節字模數據分別與0xFF異或(XRL)運算,或者取反(CPL)運算后再顯示即可。



        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 灯塔市| 岳普湖县| 巴林左旗| 曲周县| 公主岭市| 陈巴尔虎旗| 石嘴山市| 泰兴市| 隆昌县| 上蔡县| 白朗县| 叶城县| 紫云| 石楼县| 涡阳县| 建宁县| 鄢陵县| 玉林市| 铜鼓县| 滨海县| 乌兰浩特市| 合川市| 繁昌县| 穆棱市| 晋州市| 贞丰县| 淮阳县| 延边| 宣恩县| 阿荣旗| 东莞市| 鸡泽县| 奉节县| 开鲁县| 常宁市| 江油市| 丰县| 宁明县| 周至县| 保定市| 邢台县|