FPGA nios編寫LCD12864的驅動程式過程以及注意事項,本人親自踩坑,重要!!!
LCD12864引腳如下:
FPGA開發板得提供,3.3v電壓,5v電壓,普通io都是3.3v電壓
DB:資料腳,得用雙向io,因為程式裡面需要讀取液晶的應答(普通io3.3v可以)
E: 輸出引腳即可,普通io3.3v可以
RW: 輸出引腳即可,普通io3.3v可以
RS: 輸出引腳即可,普通io3.3v可以
PSB:序列還是並行,接+5v為並行,0v為序列,這個不能懸空,而且一定要接+5v(接3.3v行不行,沒有測試,不敢亂說)
V0:這個是控制螢幕顯示對比度的,接5v為最高對比度,0v為最低對比度,但是這樣根本看不出來螢幕有顯示,很坑,還以為是驅動程式沒寫對,所以最好直接接+5v,先保證螢幕一些正常,把程式除錯正確,最後再來調一下對比度即可,即調這個引腳的電壓值。其實這個引腳懸空也行,因為lcd12864背後自帶了一個電位器,可以調,擰緊的方向為增強對比度,而且很靈敏,調一點點即可,對比度高,螢幕明顯看起來有紫紅色,對比度太低甚至不顯示的程度,螢幕看起來是淡藍色
VCC:+5v,記住:不能接3.3v,只能5v(這個問題坑了我一天時間,我以為跟資料腳用一樣的3.3v就可以,其實不行)
GND:0V但是我發現接不接好像都可以,挺奇怪的,但是最好接上吧
BLA:背光板的正極,+5v,3.3v都可以,只是亮度不同,不影響時序以及應答,不接也行,就沒有背光了而已
BLK:背光板負極,0v
首先保證以上引腳電壓都接正確,否則程式正確了也沒有顯示,而且不會應答,程式陷入死迴圈!!!比如,我就是把vcc接了+3.3v,被這個問題整整搞了大半天,心累!!!手頭也沒有萬用表,示波器等高階裝置,自己也只有通過一根線連線這個引腳和一個led來測試哪個引腳電平的高低,一點點嘗試,懷疑每一個地方,第二天中午12.30,失敗了156次後,正準備放棄的時候,稀裡糊塗的換了一下VCC引腳為5V,結果程式竟然跑起來了,顯示也正確了,你知道我當時有多開心嗎,比中了一個億還開心,真想告訴全世界!!!那種無數次失敗後成功的喜悅,真的是太好了!所以這裡想告訴大家,失敗是成功之母,經歷了無數次失敗後,你已經積累了大量的知識,閱歷和運氣,只要你肯堅持下去,你一定會成功的!
下面是我的FPGA nios 驅動12864的程式:(我為什麼不上傳呢,因為這樣你下載可能就需要積分或者啥的,我感覺不方便,既然大家都是追求技術,我也能體會大家現在的心情,我寫這個的目的也不是為了賺積分,或者圖什麼利益,我就是想記錄下自己踩過的坑,分享給大家,希望大家少走彎路。所以我直接寫在部落格裡面,這樣你可以直接複製)
注:這個是LCD12864的驅動程式,至於為什麼偶爾出現1602的字樣,是因為這個驅動程式我是從LCD1602驅動程式移植過來的,因為這兩個螢幕的驅動程式很相似,甚至不用改一行程式也能顯示少數的字元,所以大家知道這麼回事就行
LCD12864.h
#if 1 // 除錯時候方便自己決定這部分是否編譯,總比自己一句句註釋掉方便 #ifndef LCD12864_H_ #define LCD12864_H_ void InitLcd1602(void); void LcdShowStr(unsigned char row, unsigned char column, unsigned char *str); void LcdWriteCmd(unsigned char cmd); #endif /* LCD12864_H_ */ #endif