手头有一块深圳拓普威公司的128*64的LCD液晶屏(型号为LCM6059B),驱动IC为Sitronix的ST7565,为132*65点阵。LCM6059B采用的是并口通信,(当然更改电路一些参数可以做到串行的),先不管了,凑合着用先,由于它不带字库,如果要显示GBK汉字那可麻烦了,单单一个字库就几百KB对于普通MCU来说是挺恐怖的了。对于那些需要显示汉字和中文的,ROM空间要大的惊人了。不过话有说回来,并不是所有的应用都需要用完所有的汉字,不过倒有一个不是办法的好办法,那就是自建字库,这样就可以根据所需自由裁减了。
关于自建字库,以16*16格式为例,包括 机内码(2字节)+字模(1字节,共32个字节显示16*16点阵字) 方式存储,虽然会引入2个字节机内码的额外存储(GBK没有单独存储机内码空间),但对比于要全部存储GBK汉字字库来说,在一定条件下,所耗费的空间要小得多。这样通过查找机内码,来获取存储字模的初始地址,从而实现汉字显示。自建字库如下:
。。。
0xb8,0xe8, //机内码
//歌
0x80,0xBA,0xAA,0xAA,0xBA,0x82,0xFE,0xA2,0x90,0x0C,0xEB,0x08,0x28,0x18,0x08,0x00,
0x00,0x1E,0x12,0x12,0x5E,0x80,0x7F,0x40,0x20,0x18,0x07,0x08,0x30,0xE0,0x40,0x00,
0xc7,0xfa,
。。。
基于ST7565驱动的128*64点阵LCD的驱动见附件。驱动中附有各种实用函数,如画图函数,ASCII与汉字显示函数,画线函数。可以在任意128*64点内开始和结束(不用考虑跨页操作,参数正确,直接调用即可),不说了,看图说话__呵呵
=============示例函数====================
InitLCM6059B();
PrintAscii(1,2," Hello World ! ");
DrawLine(0,0,127,0);
DrawLine(0,0,0,63);
DrawLine(127,0,127,63);
DrawLine(0,63,127,63);
DrawLine(0,11,127,11);
PrintText(48,13,"真的爱你#");
ShowBMP(4,13,43,40,PicTAB);
DrawLine(56,33,110,60);
DrawLine(110,33,56,60);
效果图:
源码包下载:https://static.assets-stash.eet-china.com/album/old-resources/2010/4/9/b2031dc5-2324-46a6-b387-8a99de571fa2.rar
用户377235 2016-5-5 18:43
用户377235 2016-3-10 13:57
用户1446787 2015-6-26 16:52
用户377235 2014-4-2 10:53