無字庫12864液晶的驅動方法
要在第2頁、第6列開始顯示“鐘”,我們用一個函數:
LcdShow1616(unsigned x,unsigned y, const char *p);
其中參數x 是列,y是頁,p指向字模數組,具體的代碼為:
LcdShow1616(6,2, ZHONG);
這樣,漢字就顯出來了。
最后,交代一下取得點陣漢字字模的方法。
編制字模數組的好幫手——字模軟件的使用
因為我們現在需要的漢字量很少,所以可以使用一些字模提取軟件自己制作所需的字模。以一個很好用的綠色免費“畔畔字模提取軟件”為例加以說明。
此軟件在各大程序網站都有下載,下載解壓后就可使用,開啟界面如圖9所示。選取Shape :方形,Mode:C51,取模順序選第4種,即點陣圖右上為A,右下為B,左上為C,左下為D,這是按照先右半從上到下,后左半從上到下的順序取模。
然后在下面輸入框里輸入漢字回車后,左邊顯示點陣字,見圖10。對點陣自行修飾改動,用鼠標點選即可,例如豎筆加粗等,這里沒改。
點右旋90度按鈕,點陣漢字右旋90度,其目的是由上往下取碼,相當于顯示時從左往右顯示。點“提取字模”按鈕,字模代碼呈現在點陣下面,見圖11。注意字模碼有2行,上行對應旋轉后的右半區域從上往下取碼,下行對應左半區域從上往下取碼,這就等同于旋轉前的漢字從左往右取碼,而上行代碼對應的是漢字的上半代碼,下行則對應的是漢字的下半代碼。正好符合上述漢字顯示程序先顯示上半部后顯示下半部的要求。這樣就取得了例子中的字模代碼。
可以把所需的漢字逐一取碼,然后存在二維表中,就形成了16×16點陣字模數組。
因為單片機FLASH ROM程序存儲空間較大而RAM較小,而一個16點陣漢字占據32字節,10個字就320字節,對于RAM通常在幾百到1K字節以下的單片機嫌太大,所以字庫應該存放在FLASH區比較合理。但是讀出FLASH中的數據,程序還要變一下,以使用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列顯示“鐘”,用一個稍稍不同的函數:
LcdShowFlash1616(unsigned x,unsigned y, const char *p);
即:LcdShowFlash1616(6,2, ZHONG_);
就行了。
制作非標準的字模
有時我們需要一些“非標準的”字符,例如12寬×16高或者8×8字符,同樣也可以使用上述工具,不過這時字符就要用鼠標在選定區域內逐點點出,因為他提取的時候還是針對16×16點陣,所以最后還要去除多余的0字節,如圖12表示一個數字9的取模。得到的代碼上下排都去掉最后4個0字節如圖中下面畫線的那8個。最后每個字就24字節,程序中循環此書作相應改變。
led顯示器相關文章:led顯示器原理
評論