<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 12864液晶深入學(xué)習筆記_1

12864液晶深入學(xué)習筆記_1

作者: 時(shí)間:2016-11-28 來(lái)源:網(wǎng)絡(luò ) 收藏

本文引用地址:http://dyxdggzs.com/article/201611/322839.htm

voidDraw_TX(ucharYaddr,ucharXaddr,constuchar*dp)

{

ucharj;

uchark=0;

//wr_lcd(comm,0x01);//清屏,只能清除DDRAM

wr_lcd(comm,0x34);//使用擴展指令集,關(guān)閉繪圖顯示打開(kāi)擴展指令集

for(j=0;j<16;j++)

{

wr_lcd(comm,Yaddr++);//Y地址

wr_lcd(comm,Xaddr);//X地址

wr_lcd(dat,dp[k++]);//寫(xiě)入數據

wr_lcd(dat,dp[k++]);

}

wr_lcd(comm,0x36);//打開(kāi)繪圖顯示

//wr_lcd(comm,0x30);//回到基本指令集模式

}

5,向液晶全屏寫(xiě)圖像的函數如下:

voidDraw_PM(constuchar*ptr)//整屏顯示圖形

{

uchari,j,k;

wr_lcd(comm,0x34);//打開(kāi)擴展指令集

i=0x80;

for(j=0;j<32;j++)

{

wr_lcd(comm,i++);

wr_lcd(comm,0x80);

for(k=0;k<16;k++)

{

wr_lcd(dat,*ptr++);//先寫(xiě)入32*16個(gè)數據

}

}

i=0x80;

for(j=0;j<32;j++)

{

wr_lcd(comm,i++);

wr_lcd(comm,0x88);

for(k=0;k<16;k++)

{

wr_lcd(dat,*ptr++);//再寫(xiě)入32*16個(gè)數據

}

}

wr_lcd(comm,0x36);//打開(kāi)繪圖顯示

wr_lcd(comm,0x30);//回到基本指令集

}

6,下面我就貼上一個(gè)對液晶功能測試的函數,其中用到了液晶的很多功能,可以有實(shí)現現象觀(guān)察得到,注釋的也較詳細,代碼如下:

#include"msp430g2553.h"

#include"ser_12864.h"

voidmain(void)

{

uinti;

ucharlaba[]=//16*16大小圖形數據

{0x00,0x00,0x00,0xC0,0x01,0x48,0x02,0x44,0x04,0x52,0xF8,0x49,0x88,0x49,0x88,0x49,

0x88,0x49,0x88,0x49,0xF8,0x49,0x04,0x52,0x02,0x44,0x01,0x48,0x00,0xC0,0x00,0x00};

WDTCTL=WDTPW+WDTHOLD;//關(guān)狗

BCSCTL1=CALBC1_12MHZ;//設定cpu時(shí)鐘DCO頻率為12MHz

DCOCTL=CALDCO_12MHZ;

P2DIR|=BIT5+BIT4;//液晶的兩條線(xiàn)

init_lcd();//初始化液晶

//下面是顯示液晶字符表中的字符

wr_lcd(comm,0x80);//寫(xiě)第一行的顯示地址寫(xiě)命令0x80

for(i=0;i<16;i++)//每一行可以顯示16個(gè)字符

wr_lcd(dat,0x00+i);//顯示0x00~0x0f對應的字符寫(xiě)數據

wr_lcd(comm,0x90);//寫(xiě)第二行的顯示地址因為12864的13行和24行分別由控制器ST7920的兩行切割來(lái)的,為了看起來(lái)方便

//這里要手動(dòng)把地址切換到第二行。要不然的話(huà),顯示完了第一行,液晶會(huì )自動(dòng)切換顯示到第三行上去

for(i=0;i<16;i++)

wr_lcd(dat,0x10+i);//顯示0x10~0x1f對應的字符

wr_lcd(comm,0x88);//寫(xiě)第三行的顯示地址

for(i=0;i<16;i++)

wr_lcd(dat,0x20+i);//顯示0x20~0x2f對應的字符

wr_lcd(comm,0x98);//寫(xiě)第四行的顯示地址

for(i=0;i<16;i++)

wr_lcd(dat,0x30+i);//顯示0x30~0x3f對應的字符

//delay_ms(1000);//延遲1s,觀(guān)察效果

//調試時(shí),可以在此處設置斷點(diǎn),單步執行下面的指令,觀(guān)察結果

//在顯示時(shí)DDAM和GDRAM是同時(shí)顯示的,也就是它們的顯示結果是疊加在一起的

//1.設定DDRAM地址命令

wr_lcd(comm,0x90);//設定DDRAM地址,因為此時(shí)DDRAM地址已經(jīng)溢出

//2.顯示狀態(tài)命令

wr_lcd(comm,0x08);//整體顯示關(guān),游標關(guān),游標位置關(guān)

wr_lcd(comm,0x0c);//整體顯示開(kāi),游標關(guān),游標位置關(guān)

wr_lcd(comm,0x0e);//整體顯示開(kāi),游標開(kāi),游標位置關(guān)

wr_lcd(comm,0x0f);//整體顯示開(kāi),游標開(kāi),游標位置開(kāi)游標閃爍

//3.位址歸位

wr_lcd(comm,0x02);//位址歸位,游標回到原點(diǎn)

wr_lcd(comm,0x84);//將DDRAM地址設為0x88,游標在此閃爍

//4.點(diǎn)設定指令

//(以下四個(gè)命令是控制寫(xiě)入字符以后光標及整屏顯示的移動(dòng))

wr_lcd(comm,0x07);//光標右移整體顯示左移

wr_lcd(comm,0x20);//寫(xiě)入兩個(gè)空格

wr_lcd(dat,0x20);

wr_lcd(comm,0x05);//光標左移整體顯示右移

wr_lcd(dat,0x20);//寫(xiě)入兩個(gè)空格

wr_lcd(dat,0x20);

wr_lcd(comm,0x06);//光標右移整體顯示不移動(dòng)

wr_lcd(dat,0x20);//寫(xiě)入兩個(gè)空格

wr_lcd(dat,0x20);

wr_lcd(comm,0x04);//光標左移整體顯示不移動(dòng)

wr_lcd(dat,0x20);//寫(xiě)入兩個(gè)空格

wr_lcd(dat,0x20);

//5.游標和顯示移位控制

//(以下四個(gè)命令無(wú)需寫(xiě)入顯示數據,直接控制光標和整屏顯示的移動(dòng),上面執行的命令是寫(xiě)入空格實(shí)現光標移動(dòng)和整屏的移動(dòng))

wr_lcd(comm,0x10);//光標左移

wr_lcd(comm,0x14);//光標右移

wr_lcd(comm,0x18);//整體顯示左移,光標跟隨

wr_lcd(comm,0x1c);//整體顯示右移,光標跟隨

wr_lcd(comm,0x0c);//關(guān)閉光標

//6.進(jìn)入擴展功能模式命令

wr_lcd(comm,0x34);//打開(kāi)擴展功能模式,繪圖顯示關(guān)閉

//7.反白命令

wr_lcd(comm,0x04);//同時(shí)反白1、3行

wr_lcd(comm,0x04);//再次反白1、3行,相當于關(guān)閉1、3行反白

wr_lcd(comm,0x05);//同時(shí)反白2、4行

wr_lcd(comm,0x05);//再次反白2、4行,相當于關(guān)閉2、4行反白

//8.睡眠模式命令

wr_lcd(comm,0x08);//進(jìn)入睡眠模式液晶的控制器ST7920關(guān)閉,降低功耗。但是背光還是亮的

wr_lcd(comm,0x0c);//退出睡眠模式繼續顯示

//9.待命模式命令

wr_lcd(comm,0x01);//進(jìn)入待命模式也是不顯示內容的,液晶已經(jīng)準備好接受數據或命令了

//10.打開(kāi)GDRAM顯示//這樣打開(kāi)GDRAM顯示,液晶的GDRAM和DDRAM會(huì )同時(shí)控制液晶的顯示

wr_lcd(comm,0x36);//打開(kāi)擴展功能模式,打開(kāi)繪圖顯示由于上電后GDRAM中的數據是隨機的,所以如果在顯示之前不清除的話(huà),會(huì )顯示亂碼

Draw_TX(0x80,0x84,laba);//顯示16*16大小圖形顯示上面定義的圖像,是一個(gè)小喇叭

Clear_GDRAM();//清除上電復位后GDRAM中的隨機數值,此時(shí)GDRAM顯示空字符,但是DDRAM中還是有數據,所以此時(shí)會(huì )顯示DDRAM中的數據

Draw_TX(0x80,0x84,laba);//重新顯示設置16*16大小圖形

//11.關(guān)閉GDRAM顯示

wr_lcd(comm,0x34);//打開(kāi)擴展功能模式,關(guān)閉繪圖顯示顯示DDRAM中的數據

//12.設定基本指令集

wr_lcd(comm,0x30);//回到基本指令集

//13.清除顯示命令

wr_lcd(comm,0x01);//清屏只能清除DDRAM此時(shí)液晶就什么都不顯示了

//下面是顯示液晶字符表中的字符

wr_lcd(comm,0x80);//寫(xiě)第一行的顯示地址

for(i=0;i<16;i++)

wr_lcd(dat,0x40+i);//顯示0x40~0x4f對應的字符

wr_lcd(comm,0x90);//寫(xiě)第二行的顯示地址

for(i=0;i<16;i++)

wr_lcd(dat,0x50+i);//顯示0x50~0x5f對應的字符

wr_lcd(comm,0x88);//寫(xiě)第三行的顯示地址

for(i=0;i<16;i++)

wr_lcd(dat,0x60+i);//顯示0x60~0x6f對應的字符

wr_lcd(comm,0x98);//寫(xiě)第二行的顯示地址

for(i=0;i<16;i++)

wr_lcd(dat,0x70+i);//顯示0x70~0x7f對應的字符

LPM4;

}


上一頁(yè) 1 2 下一頁(yè)

關(guān)鍵詞: 12864液晶學(xué)習筆

評論


技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>