使用1602液晶顯示漢字和圖形只需要2步操作。
而且只要你能用1602顯示字符'a',那么就能立即實現漢字和圖形的顯示、而不需要寫新的操作函數。
首先、先先對我們要進行的操作做一下簡單的說明:
液晶的字庫在CGROM中、每一個字符占用8字節。
每個字符對應一個地址,調用的時候直接引用該地址。
而字符在CGROM中的地址就是字符的ASCLL碼值。
所以我們調用的時候就直接寫該字符的ASCLL碼值(或是其字符形式如'a')、就能顯示該字符。
CGRAM的情形和這一樣、不同的是CGRAM中的內容掉電就丟失,
同時地址值使用索引值代替、但還是地址的功能。
CGRAM有64字節,可供我們放入8個自定義的字符、每個字符需要8字節的數據來描述:
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
2、調用自定義字符對應的索引值來顯示該字符
自定義的也可以是任意的圖形、跟使用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個等級了: