12864液晶深入學(xué)習(xí)筆記_1
學(xué)習(xí)筆記
for
redesigned
2012-08-30
versions:12_08_01
這是我對(duì)12864的學(xué)習(xí)筆記,12864液晶功能很全面,使用起來(lái)也很方便,能夠滿(mǎn)足一般的研究和工程應(yīng)用的需求。
下面我就對(duì)幾個(gè)方面講述一下我對(duì)它學(xué)習(xí)過(guò)程中的一些體會(huì)。我會(huì)盡量全面的介紹,并且會(huì)主要針對(duì)一些特殊的應(yīng)用和一些我認(rèn)為要特別注意的地方進(jìn)行較為詳細(xì)的說(shuō)明。而對(duì)于那些較為固定的,常用的方面會(huì)簡(jiǎn)略一些。
其中的不管串行模式還是并行模式,對(duì)液晶的寫(xiě)指令,寫(xiě)數(shù)據(jù),讀操作等這些基本的操作都是一些比較固定的,基礎(chǔ)的東西。我認(rèn)為只要能夠看懂,并且能夠在不同的處理器上移植就夠了,沒(méi)有必要非要自己對(duì)著手冊(cè)時(shí)序圖寫(xiě)出來(lái)。因?yàn)橛腥艘呀?jīng)寫(xiě)好了,而且工作穩(wěn)定,我們只要在它的基礎(chǔ)上學(xué)會(huì)應(yīng)用就可以了?,F(xiàn)在是知識(shí)爆炸時(shí)期,知識(shí),信息迅速膨脹,我們要學(xué)會(huì)使用已有的成果,然后在這個(gè)基礎(chǔ)上自己再進(jìn)行開(kāi)發(fā)應(yīng)用的研究。我們不必一定要從底層開(kāi)始把別人已經(jīng)做的很成熟的東西再做一遍,這樣不但效率不高,而且我們一般人的精力也不允許。
好了,不說(shuō)廢話(huà)了,下面就開(kāi)始介紹,當(dāng)然,那些基礎(chǔ)層面的東西我也會(huì)介紹的。
下面所涉及到的程序,是針對(duì)msp430g2553的,都是我已經(jīng)調(diào)通的,可以直接應(yīng)用。
一,12864的介紹
1,液晶顯示模塊是128×64
2,常用的12864液晶內(nèi)部都是使用ST7920控制器。
2),ST7920可以控制顯示字母,數(shù)字符號(hào),中文字型和自定義的圖畫(huà)。可以用來(lái)顯示圖形,演示動(dòng)畫(huà),繪制曲線等。
3),字符顯示RAM
ST7920的字符顯示RAM
這里要注意,其實(shí)ST7920的DDRAM每一行可以控制16個(gè)漢字的,共有4行。但是LCD的每行只能顯示8個(gè)字符,為了顯示觀察的方便,在lcd制作的過(guò)程中,是將DDRAM的其中兩行拆分開(kāi)成四行,然后在lcd上顯示,也即是DDRAM只用到了一半。
lcd的顯示字符的坐標(biāo)地址如下表:
漢字顯示坐標(biāo)
Line1
Line2
Line3
Line4
從上表不難看出,其中第一行和第三行是DDRAM中的同一行拆分來(lái)的,同理2
了解了這一點(diǎn)就不難理解下面程序中在換行顯示時(shí),要認(rèn)為手動(dòng)地指定下一行的地址。例如:如果第一行顯示完了,下面的數(shù)據(jù)我要接著顯示在第二行,這樣才符合人觀察的習(xí)慣,那么我就要在換第二行顯示之前要手動(dòng)地把顯示地址切換到第二行。要不然的話(huà),第一行顯示完了,地址會(huì)自動(dòng)增加,就會(huì)顯示到第三行上去,這樣的話(huà)我們觀察起來(lái)就不自然了。程序?qū)嵗龝?huì)在下面涉及到的。
內(nèi)置的是GB2312碼簡(jiǎn)體中文字庫(kù),共提供了8192個(gè)16*16點(diǎn)的中文字型。
5),半寬字型ROM
提供126個(gè)16*8點(diǎn)半字寬的字母符號(hào)字型。
6),圖畫(huà)顯示RAM
提供64*256位元的GDRAM
其中我們常用的RAM就是上面所提到的,還有一些CGRAM
上面介紹的DDRAM控制顯示漢字,字符。GDRAM控制顯示圖畫(huà),上電后,默認(rèn)DDRAM是打開(kāi)的,控制液晶顯示。GDRAM默認(rèn)不打開(kāi),它里面的數(shù)據(jù)是隨機(jī)的,如果此時(shí)打開(kāi)了GDRAM的話(huà),lcd會(huì)同時(shí)受到DDRAM和GDRAM的控制,由于GDRAM中的數(shù)據(jù)是隨機(jī)的,所以會(huì)顯示亂碼。所以在使用GDRAM之前要先清除里面的隨機(jī)數(shù)據(jù)。
清除GDRAM的函數(shù)如下:
void
{
i
for(j
{
wr_lcd(comm,i++);
wr_lcd(comm,0x80);
}
i
{
}
}
其中并行模式的液晶的讀寫(xiě)數(shù)據(jù),命令函數(shù)如下:
void
{
}
void
{
}
由于我用的是msp430g2553,所以我一直都是使用串行的控制模式。
//下面重點(diǎn)講一下串行的時(shí)序
//SCLK:串行同步時(shí)鐘線,每操作一位數(shù)據(jù)都要有一個(gè)SCLK跳變沿,而且在這里是上升沿有效。也即是說(shuō),每次SCLK由低電平變?yōu)楦唠娖降乃查g,液晶控
//制器將SID上的數(shù)據(jù)讀入或輸出。
//SID:串行數(shù)據(jù),每一次操作都由三個(gè)字節(jié)數(shù)據(jù)組成,第一個(gè)字節(jié)向控制器發(fā)送命令控制字,告訴控制器接下來(lái)是什么操作,若為寫(xiě)指令則發(fā)送11111000
//(0xf8),若為若為寫(xiě)數(shù)據(jù)則發(fā)送11111010(0xfa),若為讀狀態(tài)則發(fā)送11111100(0xfc),若為讀數(shù)據(jù)則發(fā)送11111110(0xfe)。
//第二個(gè)字節(jié)的高4位為發(fā)送指令或數(shù)據(jù)的高4位,第二個(gè)字節(jié)的低4位補(bǔ)0.
//第三個(gè)字節(jié)的高4位為發(fā)送指令或數(shù)據(jù)的低4位,第三個(gè)字節(jié)的低4位補(bǔ)0
//具體的可以觀察時(shí)序進(jìn)行理解
其中數(shù)據(jù)的傳輸?shù)暮瘮?shù)如下:
//12864串行連接寫(xiě)數(shù)據(jù),寫(xiě)命令函數(shù)
void wr_lcd(uchar dat_comm,uchar content)//
{
}
評(píng)論