無字庫12864液晶的驅(qū)動方法
要在第2頁、第6列開始顯示“鐘”,我們用一個函數(shù):
LcdShow1616(unsigned x,unsigned y, const char *p);
其中參數(shù)x 是列,y是頁,p指向字模數(shù)組,具體的代碼為:
LcdShow1616(6,2, ZHONG);
這樣,漢字就顯出來了。
最后,交代一下取得點(diǎn)陣漢字字模的方法。
編制字模數(shù)組的好幫手——字模軟件的使用
因?yàn)槲覀儸F(xiàn)在需要的漢字量很少,所以可以使用一些字模提取軟件自己制作所需的字模。以一個很好用的綠色免費(fèi)“畔畔字模提取軟件”為例加以說明。
此軟件在各大程序網(wǎng)站都有下載,下載解壓后就可使用,開啟界面如圖9所示。選取Shape :方形,Mode:C51,取模順序選第4種,即點(diǎn)陣圖右上為A,右下為B,左上為C,左下為D,這是按照先右半從上到下,后左半從上到下的順序取模。
然后在下面輸入框里輸入漢字回車后,左邊顯示點(diǎn)陣字,見圖10。對點(diǎn)陣自行修飾改動,用鼠標(biāo)點(diǎn)選即可,例如豎筆加粗等,這里沒改。
點(diǎn)右旋90度按鈕,點(diǎn)陣漢字右旋90度,其目的是由上往下取碼,相當(dāng)于顯示時從左往右顯示。點(diǎn)“提取字模”按鈕,字模代碼呈現(xiàn)在點(diǎn)陣下面,見圖11。注意字模碼有2行,上行對應(yīng)旋轉(zhuǎn)后的右半?yún)^(qū)域從上往下取碼,下行對應(yīng)左半?yún)^(qū)域從上往下取碼,這就等同于旋轉(zhuǎn)前的漢字從左往右取碼,而上行代碼對應(yīng)的是漢字的上半代碼,下行則對應(yīng)的是漢字的下半代碼。正好符合上述漢字顯示程序先顯示上半部后顯示下半部的要求。這樣就取得了例子中的字模代碼。
可以把所需的漢字逐一取碼,然后存在二維表中,就形成了16×16點(diǎn)陣字模數(shù)組。
因?yàn)閱纹瑱C(jī)FLASH ROM程序存儲空間較大而RAM較小,而一個16點(diǎn)陣漢字占據(jù)32字節(jié),10個字就320字節(jié),對于RAM通常在幾百到1K字節(jié)以下的單片機(jī)嫌太大,所以字庫應(yīng)該存放在FLASH區(qū)比較合理。但是讀出FLASH中的數(shù)據(jù),程序還要變一下,以使用GCC編程為例,前述字模常量和程序修改如下:
const unsigned char_[]PROGMEM{0x80,0x40,0x70,0xCF,0x48,0x48,0x00,0xF0,0x10,0x10,0xFF,0x10,0x10,0xF8,0x10,0x00,0x02,0x02,0x02,0x7F,0x22,0x12,0x00,0x07,0x02,0x02,0xFF,0x02,0x02,0x07,0x00,0x00,};
要在第2頁第6列顯示“鐘”,用一個稍稍不同的函數(shù):
LcdShowFlash1616(unsigned x,unsigned y, const char *p);
即:LcdShowFlash1616(6,2, ZHONG_);
就行了。
制作非標(biāo)準(zhǔn)的字模
有時我們需要一些“非標(biāo)準(zhǔn)的”字符,例如12寬×16高或者8×8字符,同樣也可以使用上述工具,不過這時字符就要用鼠標(biāo)在選定區(qū)域內(nèi)逐點(diǎn)點(diǎn)出,因?yàn)樗崛〉臅r候還是針對16×16點(diǎn)陣,所以最后還要去除多余的0字節(jié),如圖12表示一個數(shù)字9的取模。得到的代碼上下排都去掉最后4個0字節(jié)如圖中下面畫線的那8個。最后每個字就24字節(jié),程序中循環(huán)此書作相應(yīng)改變。
led顯示器相關(guān)文章:led顯示器原理
評論