小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

LCD1602顯示中文漢字

 wwwijhyt圖書館 2014-05-05

LCD1602相比大家都比較了解,但是我們一般只用來顯示字符,數(shù)字。

最近在網(wǎng)上看許多人用LCD1602來顯示漢字,覺得有趣于是拜讀了一些資料,教程,但感覺大部分相當(dāng)晦澀難懂,本人認(rèn)為既然是教程,就不必要相當(dāng)?shù)膹?fù)雜,畢竟人家看完許久后還是不能得出實(shí)驗(yàn)結(jié)果~??!

接下我談?wù)勎业米龇?,保證你10分鐘之內(nèi)一樣可以在LCD1602上顯示你想顯示的各種符號,漢字?。?!

 

首先:我們要弄清楚一個概念,其實(shí)我們使用1602顯示中文漢字,就是利用其內(nèi)部的自定義字節(jié)空間,我們都知道LCD1602內(nèi)部有一個64字節(jié)的自定義CGRAM,那么好,我們就是要利用自定義字節(jié)來達(dá)到顯示漢字的效果.

我們知道一個字符占8個字節(jié),所以在CGRAM能夠存放8個字符。

也就是說,這個64字節(jié)的CGRAM是給我們提供寫入數(shù)據(jù)的,

那么我們怎么把我們要的漢字寫入CGRAM呢?

不要急,大家查看LCD1602的用戶手冊,里面提到當(dāng)我們需要想CGRAM寫入數(shù)據(jù)時(shí),我們需要先寫入CGRAM的地址,從手冊上可知,CGRAM的地址為0x40.所以當(dāng)我們要寫入數(shù)據(jù)時(shí),要先寫入一條地址命令 write_com(0x040);

然后把你要寫入的數(shù)據(jù)通過寫數(shù)據(jù)命令寫入  write_date( 你要寫得數(shù)據(jù));

做完以上步驟了,是不是LCD1602就會顯示你輸入的漢字呢?

不要急,以上你只是把你要顯示漢字的代碼存放在CGRAM里,就相當(dāng)于其他常用字符一樣固定在LCD里面了,如果你不把它讀出來,LCD是不會顯示的。。

 當(dāng)你把上面的步驟做完后,接下來要做的與你平常怎么使用LCD1602是一樣的,只不過是LCD1602里面增加了一些你自定義的字符,漢字。

 可能到這里,也許會有些疑問,既然自定義字符、漢字的代碼需要我們自己輸入,那么我該怎么編寫這些代碼,呵呵,不要著急,接下來就要用到下面這個取字模軟件。

 相信有的朋友應(yīng)該都用過這個軟件。那么我們怎么來使用這個軟件來獲取代碼呢?大家有沒有注意到,我們的LCD1602是5*8點(diǎn)陣(可以數(shù)一數(shù))。但是5*8不能提取代碼,最少只能8*8,所以我們這里只用后前5列,前3列不用。。

新建圖像 8*8.然后再圖像里面點(diǎn)你要顯示的字符,漢字,注意是在后5列中點(diǎn),黑點(diǎn)表示顯示,白點(diǎn)不顯示,用鼠標(biāo)左鍵可以切換,下面是我點(diǎn)得一個坦克~~點(diǎn)好后,就可以產(chǎn)生代碼了,這軟件里面可以選擇C51或匯編,這里選擇C51。

下面的8個代碼就是要產(chǎn)生這個字符的數(shù)據(jù)。。也就是要輸入到自定義字符CGRAM里面的。好的,怎么把獲取漢字代碼,怎么把代碼輸入到CGRAM里面都知道了,

下面就是要把我們的自定義漢字、字符顯示在LCD1602屏幕上了。。

我們知道常用字符是從0x20開始顯示,而0x00—0x0f都是沒有用的,其實(shí)這個正式為我們自定義顯示字符準(zhǔn)備的。當(dāng)你把上面的代碼輸入到CGRAM中,LCD1602機(jī)會把漢字或字符賦予地址,這個地址是從0x00開始,因?yàn)樽疃嘀荒?個字符,所以當(dāng)在CGRAM里面輸入8個字符代碼時(shí),這8個字符的代碼的數(shù)據(jù)地址就是0x00開始到0x07。

所以當(dāng)你要在LCD1602上顯示自定義字符時(shí),只需要把這個地址用數(shù)據(jù)輸入就OK。

  Write_date(0x00—0x07);

也就是說現(xiàn)在你要顯示自定義字符和你顯示常用字符一樣的做法了,先寫地址,然后寫數(shù)據(jù)自定義字符的數(shù)據(jù)就是0x00—0x07。也就是你自定義的8個字符。

 附程序

 功能:LCD顯示自定義字符、漢字

#include"reg52.h"

 #define uchar unsigned char

#define uint unsigned int

 sbit lcdrs=P2^4;

sbit lcdrw=P2^5;

sbit lcden=P2^6;

 uchar code table[]={

0x00,0x00,0x00,0x1F,0x00,0x00,0x00,0x00,//一

0x00,0x00,0x0E,0x00,0x1F,0x00,0x00,0x00,//二

0x00,0x1F,0x00,0x0E,0x00,0x1F,0x00,0x00,//三

0x02,0x04,0x0F,0x12,0x0F,0x0A,0x1F,0x02,//年

0x0F,0x09,0x0F,0x09,0x0F,0x09,0x09,0x11,//月

0x1F,0x11,0x11,0x1F,0x11,0x11,0x1F,0x00,//日

0x00,0x00,0x00,0x0A,0x15,0x0A,0x04,0x00,//心型

0x00,0x04,0x15,0x0E,0x1F,0x0E,0x11,0x00//坦克

};

uchar code table1[]={0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07};  //自定義字符數(shù)據(jù)地址

uchar code table2[]="QQ:598852247";

void delay(uchar z)

{

       uint x,y;

       for(x=z;x>0;x--)

              for(y=122;y>0;y--);      

}

void write_cmd(uchar cmd)

{

       lcdrs=0;

       lcdrw=0;    //選擇指令寄存器

       lcden=1;

       P0=cmd;     //寫了命令

       delay(5);

       lcden=0;    //使能拉低

       lcden=1;

}

void write_date(uchar date)

{

       lcdrs=1;

       lcdrw=0;    //選擇數(shù)據(jù)寄存器

       lcden=1;

       P0=date;     //寫了命令

       delay(5);

       lcden=0;    //使能拉低

       lcden=1;

}

void init_lcd1602()

{

       write_cmd(0x01);  //清屏

       write_cmd(0x38);  //功能設(shè)置

       write_cmd(0x0c);  //顯示設(shè)置

       write_cmd(0x06);  //輸入方式從左到右

       delay(1);

}

void main()

{

       uchar i;

       init_lcd1602();

       delay(1);

      

       while(1)

       {

              write_cmd(0x40);    //開始寫入你要顯示的自定義字符、漢字代碼

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

              {

                     write_date(table[i]);

                     delay(5);

              }

              write_cmd(0x80);    //從第一行第一列開始顯示

              for(i=0;i<8;i++)     //顯示自定義字符

              {

                     write_date(table1[i]);  

                     delay(5);

              }

              write_cmd(0xc0);   //顯示QQ:598852247

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

              {

                     write_date(table2[i]);

                     delay(5);

              }

       }

}

 

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多