液晶1602/1620/1604的問(wèn)題及解答
回答:發(fā)現每次重新啟動(dòng)后,需要通過(guò)指令給板子一個(gè)電壓穩定到2,7V到4,5V之間的時(shí)間.
解決方法-在main入口多進(jìn)行一次或者多次初始化程序,為了穩定電壓,也為了確定初始化指令確實(shí)被執行
2.指令間的延時(shí)不同,有時(shí)候lcd不會(huì )顯示字符.
回答:指令間的時(shí)間延時(shí)長(cháng)短必須有,對于單指令系統,長(cháng)短沒(méi)有區別,但是如果往lcd上面寫(xiě)數據的時(shí)候,因為是5*10個(gè)點(diǎn)陣,這個(gè)期間一直處于忙得狀態(tài),所以需要比較長(cháng)的時(shí)間.
解決方法-a.加長(cháng)延時(shí)時(shí)間b.寫(xiě)一個(gè)檢查忙得程序
3.顯示一個(gè)流水字符程序在lcd上的時(shí)候,光標老是在第一行第一個(gè)字符上停留。
回答:清屏指令(0001H)的原因,現在沒(méi)有解決
解決方法-重新寫(xiě)一個(gè)清屏程序,把2*16個(gè)字符設定成空字符。
4.Lcd初始化的時(shí)候,不是顯示2行,老是顯示1行
回答:有幾種情況應該考慮
a. 因為lcd打開(kāi)電源以后默認的是8位接口(DB0~BD7),所以要先寫(xiě)入3次03H命令,這個(gè)時(shí)候因為以8位處理,所以中間要加入一定延長(cháng)時(shí)間。因為使用的是4位數據指令,所以然后要寫(xiě)入一次02H指令,防止沒(méi)有寫(xiě)入,不加延時(shí)再執行一次02H,這個(gè)時(shí)候有2種可能,一種以4bit處理,一種是以8bit處理。緊接著(zhù)開(kāi)始進(jìn)行lcd的初始化,在進(jìn)行初始化前要加入延時(shí)。
b、啟動(dòng)電壓到電壓穩定,需要一定的時(shí)間,這個(gè)時(shí)間要在初始化程序中體現出來(lái)。
在主程序中,可以利用2次初始化,來(lái)滿(mǎn)足這段時(shí)間。
void main()
{
5.練習了往lcd1602中寫(xiě)入自己的字符圖形并且輸出,發(fā)現沒(méi)有初始化的字符行列卻出現了字符。
回答:在重新往CGRAM中寫(xiě)字符的時(shí)候,應該對5*8行列或者5”10行列的每一行進(jìn)行初始化,否則沒(méi)有初始化的地方就會(huì )出現亂碼,在最后一行的光標位應該全部初始化為0。
附:LCD1602液晶(驅動(dòng)器為HD44780)學(xué)習總結
1.能夠區分清楚DDRAM與CGROM,1602使用的字符存儲器是EEPROM,而不是手冊中說(shuō)的EPROM。
2.HD44780帶有192字符的字符庫,可以自定義8個(gè)5*8的字符
3.在寫(xiě)程序的時(shí)候要嚴格按照”指令-----數據”的格式考慮
4.通過(guò)學(xué)習建立了分控制位和數據位的概念
5.掌握了讀懂時(shí)序圖的基本方法,寫(xiě)程序的時(shí)候應該嚴格參照時(shí)序圖
6.Character code與character address與character pattern是不同的概念,以后要區分清楚
7.Lcd有14個(gè)端口可與單片機連接,8個(gè)數據位,3個(gè)控制位,剩下3個(gè)為電源,地,調節電源。
6.LCD1602/1604的行地址
(1)LCD1602:
第一行:0x00+(0x80)
第二行:0x40+(0x80)
(2)LCD1604:
第一行:0x00+(0x80)
第二行:0x40+(0x80)
第三行:0x10+(0x80)
第四行:0x50+(0x80)
評論