LCD_1602, 學(xué)過單片機(jī)的朋友們都知道它了吧,可以說是用的最廣,最簡單,也是學(xué)液晶入門級(jí)別的一塊液晶了。LCD1602顧名思義就是兩行顯示的液晶,每行最多顯示16個(gè)字符(里面總共有160個(gè)字符),其中包括阿拉伯?dāng)?shù)字、英文字母的大小寫,常用符號(hào),及日文的假名!每個(gè)字符對(duì)應(yīng)一個(gè)ASCII碼,我們通過向液晶送相應(yīng)符號(hào)的ASCII碼來顯示這個(gè)字符。
總的來說這個(gè)用起來很簡單的,到網(wǎng)上下載1602的數(shù)據(jù)手冊(cè),自己寫寫程序估計(jì)也就差不多了,我在這里主要是說說自己的對(duì)一些常見問題的經(jīng)驗(yàn),和
LCD1602自定義字符的顯示方法。
要顯示我們自定義的字符,就要用到LCD中的CGRAM
存儲(chǔ)器(character generate RAM),而我們之前用的顯示自帶的字符用到的是DDRAM,兩個(gè)是不同的??匆壕謨?cè)我們知道,CGRAM的容量是64個(gè)字節(jié),而一個(gè)字符是8個(gè)字節(jié),所以一共能顯示8個(gè)自定義的字符。內(nèi)部常用字符的顯示是從0x20開始的,0x00 ~ 0x0F是專門留給自定義字符顯示用的,0x00~0x07和0x80~0x0F顯示的內(nèi)容是一樣的,也就是說0x00=0x08,0x01=0x09,以此類推。CGRAM共128個(gè)位,地址是0x40~0x7F,128/8=16正好對(duì)應(yīng)的是0x00~0x0F共16個(gè)。
下面說說如何顯示自定義字符吧。
首先我們要清楚
LCD1602顯示字符的點(diǎn)陣大小,眼力好的可以看出來,LCD1602一個(gè)顯示字符的位置是5*8的點(diǎn)陣,也就是說它所能顯示的點(diǎn)陣圖形的大小是5*8的!要顯示一個(gè)自定義的字符,首先我們要知道所顯示自定義字符的點(diǎn)陣數(shù)據(jù),也就是在一個(gè)5*8的點(diǎn)陣上那個(gè)點(diǎn)是黑的(將該點(diǎn)點(diǎn)黑,就是高電平 ----1),哪個(gè)點(diǎn)是白的(該點(diǎn)不顯示,為低電平----0),但是我們送入到LCD中的是ASCII碼,它是8位的數(shù)據(jù),而一個(gè)顯示字符的點(diǎn)陣大小只是5*8的,顯然不夠,顯示的辦法是8*8點(diǎn)陣的前三列不用,也就是不顯示,我們只用后面的5列來顯示??催^數(shù)據(jù)手冊(cè)我們知道,第一行第一個(gè)位置的地址是 0x80,第二行一個(gè)位置的地址是0xC0。最后就是要顯示我們定義的第幾個(gè)字符其對(duì)應(yīng)CGRAM地址的關(guān)系式是:
0x00:第一個(gè)(0x40) 0x01:第二個(gè)(0x48) 0x02:第三個(gè)(0x50) 0x03:第四個(gè)(0x58)0x04:第五個(gè)(0x60) 0x05:第六個(gè)(0x68) 0x06:第七個(gè)(0x70) 0x07:第八個(gè)(0x78)
具體的流程是這樣的:“顯示字符的數(shù)組數(shù)據(jù)”--->"定義第幾個(gè)自定義字符"--->“像地址中發(fā)送數(shù)組數(shù)據(jù)”--->“規(guī)定顯示位置”--->“顯示第幾個(gè)自定義字符”--->OK!
自己想顯示什么字符或圖像可以自己計(jì)算一下對(duì)應(yīng)的數(shù)組數(shù)據(jù),最好自己弄一個(gè)取模軟件比較好,我一開始都是自己算的,感覺好麻煩。
/***** 下面我寫一個(gè)用51驅(qū)動(dòng)LCD1602的程序 *****/
接口方面根據(jù)自己的實(shí)際電路決定。程序的完整版本下載: http://www.51hei.com/f/1602cc.rar
/* 這里是我自己的經(jīng)驗(yàn):在數(shù)據(jù)手冊(cè)中說下降沿寫入命令,但是我用上升沿寫入也是好使的,這里我還是用下降沿吧;下面這條是重點(diǎn),自習(xí)看下你板子上的晶振大小,最好是在下程序的時(shí)候看下具體大小事多少,如果你的晶振>11.5M的話最好在下面我標(biāo)注的地方加延時(shí),不然很可能什么都不顯示,而且找不到錯(cuò)誤。 */
評(píng)論