自制單片機(jī)之十六……將文字或圖形轉(zhuǎn)成LCD上使用的C51字模
掃描二維碼
隨時(shí)隨地手機(jī)看文章
這一講說說如何用取模軟件將圖形轉(zhuǎn)成數(shù)據(jù)吧,有很多人反復(fù)問我這個(gè)問題,我就再羅嗦下吧!
取字模的軟件有很多款。有的只能將文字轉(zhuǎn)成字模數(shù)據(jù),有的既可將文本文字轉(zhuǎn)字模也能將圖片轉(zhuǎn)成點(diǎn)陣數(shù)據(jù)。在這里我就介紹一款使用簡單易用的,它能將文字或圖形轉(zhuǎn)成我們LCD模塊使用的C51數(shù)據(jù),其它的軟件也大同小異。
界面很簡單,左邊是各種功能和設(shè)置修改欄,右邊上半部分是顯示你所工作的點(diǎn)陣圖,右下部分是文字輸入框和點(diǎn)陣數(shù)據(jù)查看框。
我們用它主要是想讓它將文字或圖形轉(zhuǎn)成我們在LCD12864上顯示的點(diǎn)陣數(shù)據(jù)。所以我就講講如何將文字和圖形轉(zhuǎn)成點(diǎn)陣數(shù)據(jù)。
點(diǎn)擊左邊功能欄里的“參數(shù)設(shè)置”,再點(diǎn)擊“文字輸入?yún)^(qū)字體選擇”如下圖。
我們選宋體,小五號字。小五號字就是12X12的點(diǎn)陣。然后在“文字輸入?yún)^(qū)”里輸入你想要轉(zhuǎn)為字模的文字。例如“你好”
接著再在“參數(shù)設(shè)置”項(xiàng)里點(diǎn)擊“其他選項(xiàng)”如下圖:
在選項(xiàng)中你可以設(shè)定橫向取模還是縱向取模,是字節(jié)正序還是字節(jié)倒序。
然后按住“CTRL”鍵的同時(shí)按“Enter”鍵。文字點(diǎn)陣就顯示在左上部分的點(diǎn)陣圖上了。如下圖:
如果覺得字形不好看你還可以用鼠標(biāo)在點(diǎn)陣圖上修改,點(diǎn)左鍵畫點(diǎn),點(diǎn)右鍵擦除。
下面就要進(jìn)行點(diǎn)陣的轉(zhuǎn)換了。
選擇左邊功能項(xiàng)的“取模方式”,有C51和A51格式,根據(jù)你編程所使用的語言來選擇,我是一般是用C語言來寫,所以我點(diǎn)擊“C51格式”
這時(shí)在右下區(qū)的點(diǎn)陣生成區(qū)內(nèi)就顯示出轉(zhuǎn)換的字模數(shù)據(jù)。如圖:
你可用復(fù)制、粘貼的方法直接將這些字模數(shù)據(jù)粘貼到你所要編寫的程序中。也可以從左邊功能選項(xiàng)的“基本操作”里的“保存點(diǎn)陣數(shù)據(jù)”來將字模數(shù)據(jù)保存成一個(gè)文本文件。
文字的取字模方法大致就是這樣了。
但在轉(zhuǎn)換之前首先要弄清幾個(gè)問題。
1、數(shù)據(jù)字節(jié)與點(diǎn)陣的關(guān)系
我們的LCD12864是黑白顯示的,沒有灰度級。也就是說任意一個(gè)點(diǎn)只有兩種狀態(tài),要么是白(不顯示),要么是黑(黑色顯示)。那么只要一位的數(shù)據(jù)就能表示出一個(gè)點(diǎn),即0或1。那么一個(gè)字節(jié)的數(shù)據(jù)就能表示LCD屏上的8個(gè)點(diǎn)。所以一般LCD屏的寬和高的總點(diǎn)數(shù)都是8的倍數(shù)。例如128X64。
2、LCD屏上每個(gè)字節(jié)點(diǎn)的排列順序
上面講過一個(gè)字節(jié)的數(shù)據(jù)可以表示LCD上的8個(gè)點(diǎn)。也就是說將一個(gè)字節(jié)的數(shù)據(jù)送到LCD模塊,它就能相應(yīng)地顯示8個(gè)點(diǎn),但這8個(gè)點(diǎn)是如何排列的呢?不同的LCD模塊對每字節(jié)8個(gè)點(diǎn)的排列是不同的。在LCD模塊的產(chǎn)品說明書上會告訴你它的排列方式。例如,我前面講的那種采用KS0108控制器的并口LCD12864,它的每字節(jié)點(diǎn)陣排列方式是豎(縱)向排列的。而我這篇前面講的串行LCD12864采用ST7920控制器的模塊就是按每字節(jié)橫向排列的。
3、正序和倒序
另外還有一個(gè)正序和倒序的問題,通常我們一個(gè)字節(jié)的數(shù)據(jù)按二進(jìn)制排列的話都是左邊為高位A7,右邊為低位A0,這就是正序。如果LCD的點(diǎn)陣與一個(gè)字節(jié)數(shù)據(jù)的排列順序想反,左邊最左邊顯示的是A0,右邊顯示A7,這就是倒序。豎向排列也一樣,通常數(shù)據(jù)是上面為高位A7,下面為低位A0,是正序。如果LCD模塊的點(diǎn)陣排列正好反了,就是豎向倒序。見下圖:
下圖是KS0108控制器的LCD豎向倒序排列:
下面是ST7920控制器的的橫向正序排列:
對于一個(gè)具體的漢字點(diǎn)陣來說如下圖:
先說橫向取模:
下面我們來看看實(shí)際取模的數(shù)據(jù):
果然是ox7B和0xC0,我們再來看看倒序的數(shù)據(jù):
是0xDE和0x03吧!我這樣說大家能理解取模原理了嗎?
接下來我們說說縱向取模:
下面是實(shí)際縱向正序讀模數(shù)(紅圈里的就是第一、二字節(jié)):