大佬直接路过吧,可能对菜鸟有帮助
这个事情还得从前几天说起
以前一直用gtl16s4这款芯片做字库,行列式
不过这两天玩了一个大号液晶屏
数据写入方向和之前的小屏幕不一样了,现在是逐行式
所以现在有两种办法,第一个是把一个汉字读出来,然后把行列式的字模数据转换为逐行式数据再送显示
另一种是买排列方式对应的芯片
字库排列方式有以下几种
比如
简直是天价了!
用不起,用不起,只买了俩
虽然嘴上说用不起,但是用起来还是很舒服的,多种字号等宽不等宽宋体,但是我只需要14*14中文和7*14英文字体,而且一共也就是两百个字而已
所以还是放弃了
使用数组是最方便的,单片机反正有256K存储空间,不用也是浪费
常用的显示办法就是:
(这张图片不是程序,是示意图,程序里汉字不可能这样写的,这是示意图,包括那个鸟字,应该是niao,截图麻烦,不改了)
这样做是最简单的,但是缺点也是很明显的,
使用这这些数组作为汉字字模,需要记住每个汉字的数组的名字,效率显然太低
所以,可以改进一下,把左右的字模都放在一起,然后调用的时候只要记住每个汉字的偏移地址
就可以了
但是这样缺点也是很明显,也同样要求记住每个字的偏移量
调用时可以这样:(如下图)
不灵活,汉字的顺序必须要记清楚,而且追加汉字的时候,只能在后边追加,不让谈偏移量就改变了
不直观,无法编写一个查询的函数,只能手工一个一个的写进去
所以,针对此,做一下小的改动!利用结构体进行存储,同时存储点阵数据和索引字模软件根据显示屏驱动芯片的需要,设置取模方式和数据方向
比如 这样(逐行扫描,高位在前)
对于mdk5来说,对汉字的支持不是很好,所以,如果在中文输入法下复制字模数据,mdk里面的汉字索引会显示“?”
解决办法是:在英文输入法下复制字模数据到mdk里面,如下图,就正常了
然后
编写一个函数查询传入的汉字,是否在表中存在该索引,有的话,传递索引位置给显示函数,显示函数
再去提取点阵,刷屏就行了
封装一下,不需要关心字模放在了什么位置,直接把要显示的内容的指针传递一下,让函数自己去找就可以了,很方便
通过索引查找字模的部分
效果图
[ 此帖被zqharmstudio在2017-08-24 10:56重新编辑 ]