数码相框_在LCD上显示英文字母、汉字的点阵显示
主要内容:
写应用程序,使LCD显示汉字和字符
原理:
在SDRAM内存里划出一块空间为FrameBuffer显存,LCD控制器会从FrameBuffer里取出若干节的数据(像素),发给LCD。
ASCII码字库文件使用
在内核里面应该有英文字母的点阵,在内核中搜索font,找到内核有一个font_8x16.c文件(位于drivers/video/console)
如下图所示,找到8*16的点阵存在fontdata_8x16[]数组里:
我们以0x41(A)为例子,找到该点阵信息为:
可以看到一个ASCII代表了16字节,后面我们直接将fontdata_8x16[]数组拷贝到应用程序里,用来显示ASCII
HZK16汉字库文件使用
(1)HZK16描述
HZK16是按分区表排列的点阵文件,由于每个汉字是2个字节,每个字节的点阵是8*16
所以HZK16里的每个汉字点阵大小:2*8*16=32字节
(2)然后还要将编码转为点阵码。
LCD设备fb0的file_operations是fb_fops(位于fbmem.c)
fb_fops的write成员是fb_write()函数
发现write()函数直接是对显存地址写数据,所以使用echo "hello" > /dev/fb0时会直接出现乱码(没有点阵信息)
而ioctl成员是do_fb_ioctl()函数,我们需要通过ioctl()获取LCD驱动的数据:
FBIOGET_VSCREENIN