lcd文字显示的问题

老师您好,在学习lcd文字显示遇到了问题

先上代码/* 根据c的ascii码在fontdata_8x16中得到点阵数据 */

unsigned char *dots = &fontdata_8x16[c * 16];


unsigned char data;

int bit;


/* 根据点阵来设置对应象素的颜色 */

for (j = y; j < y+16; j++)

{

data = *dots++;

bit = 7;

for (i = x; i < x+8; i++)

{

/* 根据点阵的某位决定是否描颜色 */

if (data & (1<<bit))

fb_put_pixel(i, j, color);

bit--;

}

}

问题一:在得到数据的代码中unsigned char *dots = &fontdata_8x16[c * 16];c * 16就可以表示fontdata_8x16[]函数中的具体字符么。
问题二:根据老师讲的,每个像素是否显示由点阵中一个字节决定,即对于每一行来说有8个像素,那么点阵中每行有八个字节,而在实际点阵中每行只有一个字节即从bit0到bit7。那么这不是矛盾了么。
问题三:为什么bit给定值为7啊,bit=7后相当于每次都只判断data中的第七位是否为1
请先 登录 后评论

1 个回答

百问网-张老师
擅长:嵌入式开发

问题一:根据Font_8x16.c来看,字符点阵在这个数组里的保存方式是依照ascii码顺序,每16个字节用来表示一个字符,每个字节表示该字符的一行的显示情况,字符由16行组成,所以会将c * 16,而c就是你所要显示的字符。

问题二:每一行由8位即一个字节决定,并没有矛盾

问题三:注意是在for循坏内,会依次判断0到7位的情况,从而决定描色情况

请先 登录 后评论
  • 1 关注
  • 0 收藏,259 浏览
  • luhao12345 提出于 2022-01-23 17:17

相似问题