欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

專注電子技術學習與研究
當前位置:單片機教程網 >> MCU設計實例 >> 瀏覽文章

用1602液晶模塊顯示漢字和圖形

作者:佚名   來源:本站原創   點擊數:  更新時間:2014年08月16日   【字體:

使用1602液晶顯示漢字和圖形只需要2步操作。

而且只要你能用1602顯示字符'a',那么就能立即實現漢字和圖形的顯示、而不需要寫新的操作函數。

 

首先、先先對我們要進行的操作做一下簡單的說明:

液晶的字庫在CGROM中、每一個字符占用8字節。
每個字符對應一個地址,調用的時候直接引用該地址。
而字符在CGROM中的地址就是字符的ASCLL碼值。
所以我們調用的時候就直接寫該字符的ASCLL碼值(或是其字符形式如'a')、就能顯示該字符。

 

CGRAM的情形和這一樣、不同的是CGRAM中的內容掉電就丟失,
同時地址值使用索引值代替、但還是地址的功能。
CGRAM有64字節,可供我們放入8個自定義的字符、每個字符需要8字節的數據來描述:

 CGRAM地址
0x40 - 0x47 : 對應第1個字符區、索引值是0或8
0x48 - 0x4f : 對應第2個字符區、索引值是1或9
0x50 - 0x57 : 對應第3個字符區、索引值是2或10
0x58 - 0x5f : 對應第4個字符區、索引值是3或11
0x60 - 0x67 : 對應第5個字符區、索引值是4或12
0x68 - 0x6f : 對應第6個字符區、索引值是5或13
0x70 - 0x77 : 對應第7個字符區、索引值是6或14
0x78 - 0x7f : 對應第8個字符區、索引值是7或15

 

現在我們來進行具體的操作了,只需2步、過程如下:
1、將自定義的字符數據寫入CGRAM

    如5*8的漢字'年'的字符數據為:table_year[8]={0x08,0x1f,0x12,0x0f,0x0a,0x1f,0x02,0x00};

    使用我們寫液晶的寫函數將這8個字節數據寫入CGRAM中的第1個字符位置:

    writecommand(0x40);           //第1個字符對應的首地址
    writedata(table_year[0]);     //寫入8個數據
    writedata(table_year[1]);     //當然、我們設置的是地址AC自動加1的模式
    writedata(table_year[2]);
    writedata(table_year[3]);
    writedata(table_year[4]);
    writedata(table_year[5]);
    writedata(table_year[6]);
    writedata(table_year[7]);

    寫入完畢、接著就可以將它調出來顯示在液晶上。

2、調用自定義字符對應的索引值來顯示該字符

    我們將數據寫入CGRAM的第1個字符區、索引值是0

    顯示這個字符的方法和我們調用字符庫里面的字符來顯示的方式一樣:
    writecommand(0x81);    //指定顯示的位置
    writedata(0);          //寫入該字符的索引值就是調出該字符來顯示

    顯示完畢。
顯示效果:

    只要這些函數對字庫的操作OK、那么對CGRAM的操作也就OK。
    液晶的時鐘很慢、如果MCU使用的晶振頻率太高就要注意。

 

自定義的也可以是任意的圖形、跟使用LED點陣一樣:

漢字或圖形的字符數據可以用字符提取軟件提取、或自己提取。
液晶上要顯示的點為1、不顯示的點為0。
而且點陣第一行的數據對應數據中的第一個數據。

如用來顯示8個高度或表示8種等級的圖形(5*8點陣):

table_grade[]={

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1f,  //.

0x00,0x00,0x00,0x00,0x00,0x00,0x1f,0x1f,  //.

0x00,0x00,0x00,0x00,0x00,0x1f,0x1f,0x1f,  //.

0x00,0x00,0x00,0x00,0x1f,0x1f,0x1f,0x1f,  //.

0x00,0x00,0x00,0x1f,0x1f,0x1f,0x1f,0x1f,  //.

0x00,0x00,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,  //.

0x00,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,  //.

0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,  //.

};

顯示效果:

將上下兩行都用來顯示、就可以顯示16個等級了:

關閉窗口