這是我做12864多功能顯示的時候的筆記
首先,先來介紹下與卷動顯示相關的存儲器:DDRAM(DataDisplayRam)。DDRAM(DataDisplayRam):數據顯示RAM,往里面寫啥,屏幕就會顯示啥,與GDRAM不同的是,這里存儲的是字符的編碼。也就是顯示字符用的RAM。字符的顯示是先到CGROM(存儲了中文字庫)或HCGROM(存儲了ASCII碼)找到對應編碼的字模,再顯示到屏幕上。 筆者使用的這塊12864內部有4行×32字節的DDRAM空間。但是任一時刻,屏幕只能顯示2行×32字節的空間,那么剩余的這些空間呢?它們可以用于緩存,在實現卷屏顯示時這些空間就派上用場了。DDRAM結構如下所示: DDRAM結構如下所示: 80H、81H、82H、83H、84H、85H、86H、87H、88H、89H、8AH、8BH、8CH、8DH、8EH、8FH90H、91H、92H、93H、94H、95H、96H、97H、98H、99H、9AH、9BH、9CH、9DH、9EH、9FHA0H、A1H、A2H、A3H、A4H、A5H、A6H、A7H、A8H、A9H、AAH、ABH、ACH、ADH、AEH、AFHB0H、B1H、B2H、B3H、B4H、B5H、B6H、B7H、B8H、B9H、BAH、BBH、BCH、BDH、BEH、BFH 地址與屏幕顯示對應關系如下: 第一行:80H、81H、82H、83H、84H、85H、86H、87H第二行:90H、91H、92H、93H、94H、95H、96H、97H第三行:88H、89H、8AH、8BH、8CH、8DH、8EH、8FH第四行:98H、99H、9AH、9BH、9CH、9DH、9EH、9FH 說明:紅色部分的數據歸上半屏顯示,黑色部分的數據歸下半屏顯示。一般屏幕的顯示用的是上面兩行的空間,也就是80H~8FH,90H~9FH,也就是說屏幕顯示的內容是存儲在80H~8FH,90H~9FH。每個地址的空間是2個字節,也就是1個字,所以DDRAM中可以用于存儲字符編碼的空間總共是128字節。因為每個漢字的編碼是2個字節,所以每個地址需要使用2個字節來存儲一個漢字。漢字的編碼的高字節和低字節必須連續且要存儲在同一個地址中,這樣存儲的漢字編碼才是正確的,才能正常顯示,所以一行最多能顯示8個漢字,整個屏幕最多能顯示32個漢字。當然如果將同一個地址中的2個字節拆開來使用也可以,那就是顯示2個半寬字符(數字或字母,就是ASCII碼)。這里順便說明一下:漢字的分辨率是16*16像素,半寬字符分辨率為16*8像素。所以可以認為一個地址管理著屏幕上的16*16個像素點,所以一個地址可顯示一個漢字或兩個半寬字符。 DDRAM數據的讀/寫: 所有的數據讀/寫都是先送地址,然后進行讀/寫。對DDRAM寫數據時,確保在基本指令集下(使用指令0x30開啟),然后寫入地址,之后連續寫入2個字節的數據。讀數據時,在基本指令集下先寫地址,然后假讀(dummy)一次,之后再連續讀2個字節的數據。需要說明的是,每次讀/寫完一個字節數據后,地址指針會自動增加一個字節。所以讀/寫完一個字節數據后,地址會自動跳到下一個字節處,所以連續讀/寫兩個字節即可完成對字的操作。 這里的假讀需要注意,不光是讀CGRAM需要假讀,讀其他的GDRAM、DDRAM都需要先假讀一次,之后的讀才是真讀,假讀就是讀一次數據,但不存儲該數據,也就是說送地址之后第一次讀的數據是錯誤的,之后的數據才是正確的。
完整的word格式文檔下載:
12864學習筆記.docx
(683.33 KB, 下載次數: 66)
2017-4-20 20:40 上傳
點擊文件名下載附件
|