與12864奮戰的一天

    12864點陣液晶顯示模塊(LCM)就是由128*64個液晶顯示點組成的一個128*64行的陣列。昨天晚上拿到它看了一下管腳說明,覺得這個不難,幾個小時就能搞定!結果卻是花了差不多一天的時間。

    所用的12864是V3.0版本的。看了一下單片機開發板上的128**接口,發現一個問題:開發板上19管腳是接地,20管腳接VCC,而128**管腳說明卻是19管腳接VCC,20管腳接地。怎麼辦?試一下先吧,把12864插到開發板上,背景燈居然亮了!而按管腳說明接時,背景燈卻不亮?這是令我不解的一個地方。

    雖然有疑惑,但是把這個問題放下,先寫驅動函數看下行不行。上網下載128**中文資料,對照時序圖,寫了指令函數和數據函數,下載到單片機,12864沒有顯示東西!於是下載了幾個別人的程序看下行不行(哈哈,現在對自己的能力還是比較清楚的,參考一下別人的)。改了下別人的程序,下載到單片機也不行!開始有點煩了,覺得很累!

   是不是128**管腳接錯了呢?嘗試用protues做一下。在仿真上也顯示不出來! protues裏找不到與所用的12864一樣的型號的元件。最後決定用杜邦線連管腳,測試一下!

 

附:

                 12864點陣液晶顯示模塊的原理
                     ------找了個最通俗易懂的

12864點陣液晶顯示模塊(LCM)就是由128*64個液晶顯示點組成的一個128列*64行的陣列。每個顯示點對應一位二進制數,1表示亮,0表示滅。存儲這些點陣信息的RAM稱爲顯示數據存儲器。要顯示某個圖形或漢字就是將相應的點陣信息寫入到相應的存儲單元中。圖形或漢字的點陣信息當然由自己設計,問題的關鍵就是顯示點在液晶屏上的位置(行和列)與其在存儲器中的地址之間的關係。
由於多數液晶顯示模塊的驅動電路是由一片行驅動器和兩片列驅動器構成,所以12864液晶屏實際上是由左右兩塊獨立的64*64液晶屏拼接而成,每半屏有一個512*8 bits顯示數據RAM。左右半屏驅動電路及存儲器分別由片選信號CS1和CS2選擇。(少數廠商爲了簡化用戶設計,在模塊中增加譯碼電路,使得128*64液晶屏就是一個整屏,只需一個片選信號。)
顯示點在64*64液晶屏上的位置由行號(line,0~63)與列號(column,0~63)確定。512*8 bits RAM中某個存儲單元的地址由頁地址(Xpage,0~7)和列地址(Yaddress,0~63)確定。每個存儲單元存儲8個液晶點的顯示信息。
爲了使液晶點位置信息與存儲地址的對應關係更直觀關,將64*64液晶屏從上至下8等分爲8個顯示塊,每塊包括8行*64列個點陣。每列中的8行點陣信息構成一個8bits二進制數,存儲在一個存儲單元中。(需要注意:二進制的高低有效位順序與行號對應關係因不同商家而不同)存放一個顯示塊的RAM區稱爲存儲頁。即64*64液晶屏的點陣信息存儲在8個存儲頁中,每頁64個字節,每個字節存儲一列(8行)點陣信息。因此存儲單元地址包括頁地址(Xpage,0~7)和列地址(Yaddress,0~63)。
例如點亮128***屏中(20,30)位置上的液晶點,因列地址30小於64,該點在左半屏第29列,所以CS1有效;行地址20除以8取整得2,取餘得4,該點在RAM中頁地址爲2,在字節中的序號爲4;所以將二進制數據00010000(也可能是00001000,高低順序取決於製造商)寫入Xpage=2,Yaddress=29的存儲單元中即點亮(20,30)上的液晶點。

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章