液晶12864屏的12x12漢字顯示筆記

2021-06-21 15:59:09 字數 1374 閱讀 6971

今天要好好寫寫這個專案使用的12864液晶顯示12x12漢字的驅動體會!先上幾個原理,便於後面分析使用.我就是這樣分析實現的!

先說說圖1: 這是ks0108/ks0107晶元組成12864液晶屏的顯示方式:點陣縱向取模,位元組倒序(低位在前--上,高位在後--下).比如取得的位元組是0xab既二進位制表示為:1010,1011,顯示時的位排列對應液晶屏從上到下依次是:1101,0101.ascii碼縱向 上半個字6個位元組,漢字是12個位元組,下半個字也是6個和12個位元組. 先寫上半個字,再寫下半個字. 這就是圖1 顯示的液晶顯示原理!

再來看圖2:這是說明使用該型液晶顯示5行漢字時的組成情況.以及液晶屏分頁情況,每頁8行(0~7),一屏8頁(0~7),可以看出,要顯示5行漢字,就必須跨行才能實現.可是該液晶的驅動並沒有相關命令.只有自己寫驅動了.在0行寫漢字時,已經占用了1頁的前4行,如果再寫1頁就會覆蓋掉上一行的下半個字(嚴格說是下4位內容),如果寫2頁,就不能實現5行顯示.所以第2行漢字必須寫1頁.為了不影響上一行的漢字,就要先 讀 出1頁的對應列的位元組值( bytes),並對準備寫入的位元組(bytex)做處理:

temp =bytex<<4; bytes |=temp; 再在原地寫入位元組bytes; 依次迴圈6(ascii碼)或12(漢字)次,完成1頁(就是第2行漢字的上半部分).這時候,第2行漢字的下半部分,也要做相應的處理:

1,回歸列位址,行位址+1;   2,取得對應列的上次取出來的位元組(bytex)和本次要寫入的位元組(byteb),做處理:

temp =bytex>>4; temp2 =byteb<<4; temp |= temp2; 再將temp寫入本次要寫入的位址.   這樣迴圈就完成第2行的顯示.

從圖2可以看出:第0,3,6頁不需要做處理,可以直接寫,就是第1,4頁需要做以上處理這裡0,1,3,4,6對應液晶屏的0,1,2,3,4行漢字.於是又出現怎麼使用這個行號的問題? 根據其對應關係,很容易找到處理辦法:行號y =0,1,3,4,6對0,1,2,3,4可以這樣處理,在呼叫函式時,還是使用0,1,2,3,4,但是在檢索內碼函式中,首先對y處理:   temp =y/2; y =temp + y; 就得到對應的0,1,3,4,6.

另外,這種處理需要單獨寫2個函式,分別對應ascii碼和漢字,在檢索內碼的函式中判斷並標記,以分辨使用需要處理和不需要處理的寫字函式.

最後得到圖3 所示結果. 的確有點麻煩! 但是,在講求成本效率的當今,應該還是值得的!

液晶12864(KS0108主控)

12864市面上比較流行的有兩種,一種是以ks0108為主控晶元的,不帶字型檔的 說白了就是只能靠打點才能顯示出字元或圖形的,當然要借助取模軟體 另一種是 以st7920為主控晶元的,帶ascii碼和中文字庫 這是網上找的乙個管腳圖,當然不同品牌的可能略有差異,但是主要的還是一樣的 重點要講一下cs...

12864無字型檔液晶顯示(一)

這篇文章主要來寫一下12864液晶顯示的程式,至於一些暫存器的設定,和12864液晶的資料介紹,大家可以參考附件中的12864液晶的datesheet。我在這裡不做詳細介紹了.我在這裡直接貼出程式,程式注釋比較清楚,相信大家對照dateshee可以看明白。程式功能 無字型檔12864液晶的顯示 編譯...

液晶屏花屏的原因

近期有客戶碰到這樣的現象,液晶屏測試的時候是好好的,斷電放了一晚上後,螢幕表面就會花掉,這個是什麼原因呢?原因1 可能是焊接前靜電就把液晶屏的盒內擊傷了,焊接的時候一定要帶防靜電帶,防止靜電擊傷螢幕,靜電是一種直流電,瞬間靜電釋放量很大的話,對液晶屏的損傷會很大。原因2 用直流電源測液晶屏,也會出現...