【提高篇】29-LCD—液晶显示中英文(第4节)-如何制作字模_哔哩哔哩_bilibili
水哥讲到0xA0-1的时候说,这个1是和数组有关,其实跟数组根本没关系,这个ADDR是为了算出该字符的字模首字节相对于GB2312第一个字符(也就是空格)的首字节偏移量,空格的编码就是A1A1。
GB2312字模文件(或者数组)里,首字符就是空格,所有其他字符为了在文件(或者数组)中找到自己所对应的那块字模数据(本例子中,采用的是16×16点阵的字模,也就是16×16个位,32字节),要根据自己的GB2312编号和首字符相比,然后求出偏移量,这个偏移量如果按字节算,就是上述视频PPT中的公式:
这个公式其实把0xA0写成0xA1反而更好理解,总之以首字符(空格)为基准就对了。
实在觉得难以理解的话,那把空格自己代进去验证,这个公式能成立,就算可行。
空格的区位码转换成16进制编码为0xA1A1,也就是为0xA1,
也是0xA1,代进去为0,这就对了,因为自己对自己是没有偏移量的啊。
另外,后面老师讲到这个公式为什么要用GB2312编码计算,而不是区位码,那个地方解释错了,画蛇添足了,不用这个GB2312编码计算用区位码也是可以的,GB2312编码只不过是在区位码基础上加上了A0A0(区码加A0,位码也加A0)而已,只要能求出偏移量,能找到字符所对应的字模就可以。