相信大家都知道如何通過查字庫表的方法來顯示表中的任意一個字符。假如現在我想顯示某個溫度值,需要標志出溫度符號”°C”,現在你去字庫表里面查找,發現根本找不到這個符號,那怎么辦?可以通過自定義字符解決這個問題。在上一個帖子簡單講解了LCD1602的基本操作過程,下面我們就來簡單描述如何讓1602顯示自定義字符。
1. 思路分析
為了方便閱讀,在這里我們把LCD1602字庫表的一部分截取過來。前面講了,如果要顯示字符‘A’,那么寫入數據高位(b7-b4)為0100,寫入數據低位(b3-b0)為0001,合起來為0x41.那么如果現在寫入數據0x00顯示什么呢?數據0x00高4位和低4位全部為0,對應下表中第一行的第一列,我們發現里面是空的,如下圖中紅色方框所示。
圖1
圖1
這個紅色框的部分就是給我們‘自定義字符的’。CGRAM一共64個字節,一個字符需要8個字節,這樣CGRAM一共可以表示8個字符,簡單的說就是有8個‘空’可以由我們來自定義(我們把它記作-“自定義空”)。類似的,在(b7-b4)為0000的整列都是空的,右邊藍色框部分是‘固定’的,或者說別人已經幫我們寫好的,F在我們要寫入數據0x00顯示某個字符,那么就需要在0x00對應的這個位置(上圖紅色框所示)構造出一個字符,簡單的講就是先‘填空’, ‘填空’之后就和藍色部分一樣了。而‘填空’的這個字符可以是任意的,也就是說屬于‘自定義字符’。
這樣思路就很清楚了
第一步:填空 (構造這個字符)
第二步:顯示這個空 (顯示這個字符)
2. 如何填空(構造字符)
前面講了1602模塊共2行,每行16個空格,一共32個空格,如下圖所示,每一個空格能顯示一個字符。
圖2
圖2
現在我們從這32個空格中提取出一個來分析,如下圖所示。仔細觀察,一個大空格實際上是由很多小空格組成的,每一行5個小空格,一共8行。我們把這里面的每一個小空格理解成一個led(共40個)。那么也就是說,LCD1602模塊顯示32個字符,實際上每一個字符是由40個led組成的。這樣回到我們的目的-顯示自定義字符,實際上就是控制這40個led點亮或者熄滅。
這里為了分析的方便,現在給每一行(5個led)前面多添加3個led,如下圖所示,只不過每一行前面的這3個led永遠都不亮。
圖3
圖3
這樣問題就變成了如何控制8×8的點陣,每一行8個led,一共8行。那么如何控制這個8×8的點陣呢?回去查看LCD1602指令表即可,這個命令字節(CMD)的高兩位固定為01(也就是0x40),剩下的6位如何分布,如下圖所示。CMD剩下6位中的高3位,用來確定“你要填哪一個空”,前面講了一共有8個“自定義空”可用。如果你取000的話,就表示你填的是圖1中紅色方框所示的“自定義空”,如果取001的話,就表示圖1中紅色方框下面的一個“自定義空”,依此類推。繼續看,CMD的低3位就來確定8×8的點陣位置。如果取000,就表示第一行的8個led,如果取001,就表示第二行的8個led,依此類推。確定了點陣的‘行’,緊跟著寫入一個字節的數據就可以了,一個字節8位,剛好對應這一行的8個led,1表示led亮,0表示led滅。
圖4
圖4
3. 顯示構造字符
當這個字符構造好了之后,剩下步驟就前面一樣了,確定顯示位置,確定顯示內容。
圖5
LCD1602液晶模塊如何顯示自定義字符參考代碼:
1602自定義字符參考代碼.rar
(4.38 KB, 下載次數: 460)
2018-4-10 15:04 上傳
點擊文件名下載附件
LCD1602自定義字符參考代碼
上一篇:10分鐘理解LCD1602液晶顯示模塊
|