在上篇博客中,实现了画点操作,然后在画点的基础上实现了画线、画圆的操作。实际上显示文字也是在画点的基础上实现的。

文字是由点组成的,那么这些点阵是在哪里获得的呢?

随便打开一个内核文件,搜索font,会出来很多文件。在此,选择font_8*16.c。

字符A就显示出来了,这就是文字的显示原理。

首先看一下,观察fontdata_8*16这个数组里面的内容,会发现:

当ascII为0时,占据16个字节。在数组中的初始索引为0

当ascII为1时,占据16个字节。在数组中的初始索引为16

当ascII为c时,在数组中的索引为C*16

如上图所示,每行中有8个像素,每个像素是否显示由点阵中的一个字节决定。

因此在程序中,可以做一个循环,逐行扫描。

 extern const unsigned char fontdata_8x16[];
/* 获得LCD参数 */
static unsigned int fb_base;
static int xres, yres, bpp; void font_init(void)
{
get_lcd_params(&fb_base, &xres, &yres, &bpp);
} /* 根据字母的点阵在LCD上描画文字 */ void fb_print_char(int x, int y, char c, unsigned int color)
{
int i, j; /* 根据c的ascii码在fontdata_8x16中得到点阵数据 */
unsigned char *dots = &fontdata_8x16[c * ]; unsigned char data;
int bit; /* 根据点阵来设置对应象素的颜色 */
for (j = y; j < y+; j++)
{
data = *dots++; /*先将点阵中一行数据取出来,即一个字节,8位。我们需要对这8位数据,依次进行判断,看看是不是需要描点*/
bit = ;
for (i = x; i < x+; i++)
{
/* 根据点阵的某位决定是否描颜色 */
if (data & (<<bit))
fb_put_pixel(i, j, color);
bit--;
}
}
} /* "abc\n\r123" */
void fb_print_string(int x, int y, char* str, unsigned int color)
{
int i = , j; while (str[i])
{
if (str[i] == '\n')
y = y+;
else if (str[i] == '\r')
x = ; else
{
fb_print_char(x, y, str[i], color);
x = x+;
if (x >= xres) /* 换行 */
{
x = ;
y = y+;
}
}
i++;
}
}

最新文章

  1. jQuery 上传头像插件Jcrop的实例
  2. CentOS 7 配置虚拟主机站点
  3. css一些小的效果
  4. 读书笔记之深入理解Nginx:模块开发与结构解析
  5. 用SQL语句查找包含有某个关键字的存储过程、触发器、函数等(仅适用MS SQL SERVER)
  6. 第一册解说and表现
  7. HTML表格与列表
  8. 如何使用 Docker 部署一个基于 Play Framework 的 Scala Web 应用?
  9. Swift学习笔记九
  10. 【三支火把】---CDS5516舵机调试以及自己的感想!
  11. Scala的一些语言特点
  12. 查找最小的K个元素,使用最大堆。
  13. Sql 函数大全 (更新中...由难到简
  14. Selenium-Grid工作方式
  15. c++中vector的pair与make_pair的使用,双关键字排序
  16. [WC2013]糖果公园
  17. 一个CLR20r3 错误解决。
  18. 2017-2018 ACM-ICPC Southeast Regional Contest (Div. 1)
  19. 【前端】javascript实现带有子菜单和控件的轮播图slider
  20. 洛谷P3385负环

热门文章

  1. [LeetCode] 545. Boundary of Binary Tree 二叉树的边界
  2. JDK8过渡到JDK11
  3. Kafka如何保证高吞吐量
  4. VUE引入jq bootstrap 之终极解决方案(测试)
  5. 【转】ubuntu16.04安装Vivado 2017.4 教程
  6. JavaScript 正则表达式匹配成功后的返回结果
  7. HTML+css基础 p段落标签 a 超链接标签 Src和href有什么区别和关联? target属性 Meta标签
  8. Deep Learning专栏--强化学习之从 Policy Gradient 到 A3C(3)
  9. macrotask与microtask
  10. 【CTS2019】随机立方体(容斥)