找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4457|回復: 2
打印 上一主題 下一主題
收起左側(cè)

1602自定義字符的另一種思路,實現(xiàn)超過8種自定義字符的顯示

[復制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:171096 發(fā)表于 2017-3-15 23:52 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
最近在做一個可定時的插座。原計劃降低成本,用數(shù)碼管做為倒計時顯示。后面想到除了定時通電,還需要定時斷電,或許后面還要增加其他功能。這樣數(shù)碼管的表現(xiàn)力就不夠了。剛好手上還有一塊閑置的1602,于是就尋思著用它來做一個有設置菜單選擇的顯示。不好意思,扯得有點遠了。。
       1602我就不介紹了,大家都知道它具有自定義字符的功能,但是只能存儲8個字符。按一般的思路,把字符寫入CGRAM,然后取這8個定義好的字符來顯示。但是,還可以用一種動態(tài)寫入字符的方法。
       動態(tài)寫入字符就是在需要顯示該字符之前,才把字符寫入到CGRAM中。所以,我們?nèi)『玫淖帜4娣旁贏RDUINO上,在顯示前才寫入。還有一點要注意的是,顯示坐標的設置應該放在顯示之前,如果放在寫入字符之前就不能正常顯示。
//不能顯示:
LCD_SetXY(line, column);                    //設置坐標
LCD_WriteCGRAM(index, fontB[fontnum]);      //寫入自定義字符
LCD_WriteData(index);                       //顯示字符

//正常顯示:
LCD_WriteCGRAM(index, fontB[fontnum]);
LCD_SetXY(line, column);
LCD_WriteData(index);

       例如我現(xiàn)在需要將數(shù)字反顯(反顯要自定義),但是一共有0-9,10個數(shù)字,如果按一般思路只寫入8個字符是肯定不能實現(xiàn)的了,但如果是動態(tài)寫入呢。如果我要反顯'1',那么我就將反顯的數(shù)字'1'寫入CGRAM。而要顯示'4',就寫入'4'覆蓋原來的'1'在CGRAM中的內(nèi)存。這樣,把10個數(shù)字顯示完,也只用到了一個自定義字符的空間。不過在同一時間也還是最多顯示8個自定字符。我原來以為一個字符顯示出來后,如果不刷新屏幕,這個字符是不會受影響的。而實際上當我嘗試寫入新的字符時(在不同位置顯示),原來顯示的字符也會改變成最新寫入的字符。
       雖然一次最多還是顯示8個自定義字符,但在某些場合一個界面需要8個自定義字符,在另一個界面卻需要另外8個自定義字符,就可以用這種方法實現(xiàn)。比如我就用來實現(xiàn)了菜單選項的反顯,而且用這樣即時寫入字符的方法顯示起來一點延遲也沒有。
       下面是我顯示的效果圖
反顯"timer on"

設置選項2


時間設置




這個界面用自帶的光標會挺方便的,但我的程序是在一個循環(huán)體里更新,光標效果不好。。



分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發(fā)
ID:151348 發(fā)表于 2017-3-16 17:11 | 只看該作者
不錯,就是接線不美觀
回復

使用道具 舉報

板凳
ID:47286 發(fā)表于 2017-3-16 17:27 | 只看該作者
樓主高人 贊

1602寫個菜單太費勁了 出一點點效果就要折騰半天 現(xiàn)在已經(jīng)完全投入串口屏 不再用1602之類的東西了
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復 返回頂部 返回列表