1.4 在LCD上使用点阵写字1.4.1 在LCD上显示英文字母①找出英文字母在点阵数组中的地址,c所代表的是一个英文字母(ASCII值)。 程序文件:show_ascii.c
②根据获得的英文字母点阵,每一位依次判断,描点,‘1’表示白色,‘0’表示黑色。 根据上图,我们分析下如何利用点阵在LCD上显示一个英文字母,因为有十六行,所以首先要有一个循环16次的大循环,然后每一行里有8位,那么在每一个大循环里也需要一个循环8次的小循环,小循环里的判断单行的描点情况,如果是1,就填充白色,如果是0就填充黑色,如此一来,就可以显示出黑色底,白色轮廓的英文字母。 程序文件:show_ascii.c
③调用我们编写的lcd_put_ascii函数 程序文件:show_ascii.c
④编译c文件show_ascii.c 编译命令:arm-linux-gnueabihf-gcc -o show_ascii show_ascii.c ⑤将编译出来的show_ascii传输到开发板,并进入show_ascii的目录下 执行命令:./show_ascii 如果实验成功,我们将看到屏幕中间会显示出一个白色的字母‘A’。 1.4.2 在LCD上显示汉字 与显示英文字母有点不同,因为汉字的点阵我们是需要通过汉字库提取出来,并没有直接提供点阵数组,因此我们程序开头需要打开汉字库文件(HZK16),然后再找到相应的位置,提取出汉字的点阵,最后再按显示英文字母一样显示它,不过这个汉字是16*16的。 ① 打开汉字库文件 程序文件:show_font.c
② 获取汉字库文件的属性,存在hzk_stat结构体变量中 程序文件:show_font.c
此处主要是用知道该文件的大小,因为后面mmap时需要知道映射的文件大小。 ③使用mmap系统调用 程序文件:show_font.c
hzkmem与fbmem类似,也是一个指向映射内存的指针,但是它是指向汉字库,方便 后续计算汉字点阵偏移位置用。 ④使用汉字库,调出点阵显示汉字 HZK16 字库是符合GB2312标准的16×16点阵字库HZK16的编码,每个字需要32个字节的点阵来表示,例如我们将要显示的‘中’字,编码是D6D0,难道就是2个字节表示吗?不是说32字节吗?D6D0编码是一个类似于索引码,D6是区码,D0是位码,先要找到D6-A1才是真正区,在D6-A1区里找到D0-A1的真正位置,这才是‘中’字点阵的起始位置(减去A1是为了兼容ascii),每一个区有94个汉字。 程序文件:show_font.c
上图是汉字点阵排布的示意图,总共有十六行,因此需要一个循环16次的大循环,考虑到一行有两个字节,我们大循环中加入一个循环2次的循环用于区分是哪个字节,最后判断当前字节的每一位,如果为 ‘1’描白色,如果为‘0’描黑色 程序文件:show_font.c
⑤调用我们编写的lcd_put_chinese函数 程序文件:show_font.c
⑥编译c文件show_font.c 编译命令:arm-linux-gnueabihf-gcc -o show_font show_font.c 注:使用此命令HZK16文件必须与show_font.C在同一目录下。 ⑦将编译出来的show_font传输到开发板,并进入show_font的目录下 执行命令:./show_font 如果实验成功,我们将看到屏幕中间会显示出一个白色的字母‘A’与汉字‘中’,同时在串口打印信息中看到‘中’对应的编码。
|
只有小组成员才能发言,加入小组>>
【实测】用全志A733平板搭建一个端侧Deepseek算力平台
758 浏览 0 评论
1506 浏览 0 评论
959 浏览 0 评论
1097 浏览 0 评论
全志T113双核异构处理器的使用基于Tina Linux5.0——RTOS系统定制开发
1820 浏览 0 评论
2975浏览 1评论
Yuzuki Lizard 全志V851S开发板 –移植 QT5.12.9教程
16610浏览 1评论
关于全志T113开发板接7寸LCD屏幕显示异常问题的解决方案
1288浏览 1评论
泰酷辣!基于全志R818的开源超迷你安卓手持终端CyberPad,芒果派惊喜之作
3452浏览 1评论
1602浏览 1评论