在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

    
    
    <address id="vxupu"><td id="vxupu"></td></address>

      <pre id="vxupu"><small id="vxupu"></small></pre>
      <dfn id="vxupu"></dfn>
      <div id="vxupu"><small id="vxupu"></small></div>
    1. 新聞中心

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

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

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

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

      voidDraw_TX(ucharYaddr,ucharXaddr,constuchar*dp)

      {

      ucharj;

      uchark=0;

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

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

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

      {

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

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

      wr_lcd(dat,dp[k++]);//寫入數(shù)據(jù)

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

      }

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

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

      }

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

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

      {

      uchari,j,k;

      wr_lcd(comm,0x34);//打開擴(kuò)展指令集

      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++);//先寫入32*16個數(shù)據(jù)

      }

      }

      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++);//再寫入32*16個數(shù)據(jù)

      }

      }

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

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

      }

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

      #include"msp430g2553.h"

      #include"ser_12864.h"

      voidmain(void)

      {

      uinti;

      ucharlaba[]=//16*16大小圖形數(shù)據(jù)

      {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;//設(shè)定cpu時鐘DCO頻率為12MHz

      DCOCTL=CALDCO_12MHZ;

      P2DIR|=BIT5+BIT4;//液晶的兩條線

      init_lcd();//初始化液晶

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

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

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

      wr_lcd(dat,0x00+i);//顯示0x00~0x0f對應(yīng)的字符寫數(shù)據(jù)

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

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

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

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

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

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

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

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

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

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

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

      //調(diào)試時,可以在此處設(shè)置斷點,單步執(zhí)行下面的指令,觀察結(jié)果

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

      //1.設(shè)定DDRAM地址命令

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

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

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

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

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

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

      //3.位址歸位

      wr_lcd(comm,0x02);//位址歸位,游標(biāo)回到原點

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

      //4.點設(shè)定指令

      //(以下四個命令是控制寫入字符以后光標(biāo)及整屏顯示的移動)

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

      wr_lcd(comm,0x20);//寫入兩個空格

      wr_lcd(dat,0x20);

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

      wr_lcd(dat,0x20);//寫入兩個空格

      wr_lcd(dat,0x20);

      wr_lcd(comm,0x06);//光標(biāo)右移整體顯示不移動

      wr_lcd(dat,0x20);//寫入兩個空格

      wr_lcd(dat,0x20);

      wr_lcd(comm,0x04);//光標(biāo)左移整體顯示不移動

      wr_lcd(dat,0x20);//寫入兩個空格

      wr_lcd(dat,0x20);

      //5.游標(biāo)和顯示移位控制

      //(以下四個命令無需寫入顯示數(shù)據(jù),直接控制光標(biāo)和整屏顯示的移動,上面執(zhí)行的命令是寫入空格實現(xiàn)光標(biāo)移動和整屏的移動)

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

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

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

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

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

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

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

      //7.反白命令

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

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

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

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

      //8.睡眠模式命令

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

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

      //9.待命模式命令

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

      //10.打開GDRAM顯示//這樣打開GDRAM顯示,液晶的GDRAM和DDRAM會同時控制液晶的顯示

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

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

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

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

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

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

      //12.設(shè)定基本指令集

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

      //13.清除顯示命令

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

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

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

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

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

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

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

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

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

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

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

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

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

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

      LPM4;

      }


      上一頁 1 2 下一頁

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

      評論


      技術(shù)專區(qū)

      關(guān)閉