LCD1602顯示中文漢字

2021-07-11 23:43:35 字數 2731 閱讀 8169

小子在** 2011-11-25編寫

特別說明筆者是上面的作者,感謝那些原意分享知識的人。時隔5年我又看到了筆者當年寫的東西,我想這期間還有許許多多的人

今天寫在部落格上,願更多後來者可以學習。

lcd1602顯示中文漢字

lcd1602相比大家都比較了解,但是我們一般只用來顯示字元,數字。

最近在網上看許多人用lcd1602來顯示漢字,覺得有趣

於是拜讀了一些資料,教程,但感覺大部分相當晦澀難懂,本人認為既然是教程,就不必要相當的複雜,畢竟人家看完許久後還是不能得出實驗結果~!!

接下我談談我得做法,保證你10分鐘之內一樣可以在lcd1602上顯示你想顯示的各種符號,漢字!!!

首先:我們要弄清楚乙個概念,其實我們使用1602顯示中文漢字,就是利用其內部的自定義位元組空間,我們都知道lcd1602內部有乙個64位元組的自定義cgram,那麼好,我們就是要利用自定義位元組來達到顯示漢字的效果.

我們知道乙個字元佔8個位元組,所以在cgram能夠存放8個字元。

也就是說,這個64位元組的cgram是給我們提供寫入資料的,

那麼我們怎麼把我們要的漢字寫入cgram呢?

不要急,大家檢視lcd1602的使用者手冊,裡面提到當我們需要想cgram寫入資料時,我們需要先寫入cgram的位址,從手冊上可知,cgram的位址為0x40.所以當我們要寫入資料時,要先寫入一條位址命令 write_com(0x040);

然後把你要寫入的資料通過寫資料命令寫入  write_date( 你要寫得資料);

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

不要急,以上你只是把你要顯示漢字的**存放在cgram裡,就相當於其他常用字元一樣固定在lcd裡面了,如果你不把它讀出來,lcd是不會顯示的。。

當你把上面的步驟做完後,接下來要做的與你平常怎麼使用lcd1602是一樣的,只不過是lcd1602裡面增加了一些你自定義的字元,漢字。

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

相信有的朋友應該都用過這個軟體。那麼我們怎麼來使用這個軟體來獲取**呢?大家有沒有注意到,我們的lcd1602是5*8點陣(可以數一數)。但是5*8不能提取**,最少只能8*8,所以我們這裡只用後前5列,前3列不用。。

新建影象 8*8.然後再影象裡面點你要顯示的字元,漢字,注意是在後5列中點,黑點表示顯示,白點不顯示,用滑鼠左鍵可以切換,下面是我點得乙個坦克~~

點好後,就可以產生**了,這軟體裡面可以選擇c51或彙編,這裡選擇c51。

下面的8個**就是要產生這個字元的資料。。也就是要輸入到自定義字元cgram裡面的

。好的,怎麼把獲取漢字**,怎麼把**輸入到cgram裡面都知道了,

下面就是要把我們的自定義漢字、字元顯示在lcd1602螢幕上了。。

我們知道常用字元是從0x20開始顯示,而0x00—0x0f都是沒有用的,其實這個正式為我們自定義顯示字元準備的。當你把上面的**輸入到cgram中,lcd1602機會把漢字或字元賦予位址,這個位址是從0x00開始,因為最多只能8個字元,所以當在cgram裡面輸入8個字元**時,這8個字元的**的資料位址就是0x00開始到0x07。

所以當你要在lcd1602上顯示自定義字元時,只需要把這個位址用資料輸入就ok。

write_date(0x00—0x07);

也就是說現在你要顯示自定義字元和你顯示常用字元一樣的做法了,先寫位址,然後寫資料

自定義字元的資料就是0x00—0x07。也就是你自定義的8個字元。

這裡用 proteus **軟體演示

附程式功能: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=;

uchar code table1=;  //自定義字元資料位址

/******************************

ms延時函式

******************************/

void delay(uchar z)

/******************************

lcd1602寫命令函式

******************************/

void write_cmd(uchar cmd)

/******************************

lcd1602寫資料函式

******************************/

void write_date(uchar date)

/******************************

lcd1602初始化

******************************/

void init_lcd1602()

/******************************

主函式******************************/

void main()

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

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

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

lcd1602顯示實驗

字元從最右邊往左移動16次,最後停止在螢幕上 include define uchar unsigned char define uint unsigned int uchar code display talk is cheap uchar code display1 show me code s...

LCD1602液晶顯示

include define uchar unsigned char define uint unsigned int define lcd data p0 定義資料線d0 d7 sbit lcd rs p1 0 定義暫存器選擇位 sbit lcd rw p1 1 定義讀寫訊號線位 sbit lcd...

lcd1602液晶顯示

概括 p0用於在e的下降沿時輸出資料到lcd1602中,在此之前,需要寫入命令對lcd進行一些初始化,輸入命令和資料都通過p0,經過下降沿傳送,不同點在於輸入資料時rs 1,輸入命令時rs 0 如下 include typedef unsigned int u16 typedef unsigned ...