关于128*64点阵屏显示英文乱码

128*64规格LCD点阵屏显示英文乱码
    首先我们应该了解点阵屏的一点原理,128*64规格的点阵屏们就是共有128*64=8192个点(二极管),想让其显示一个汉字就是在合适的位置点亮二极管(也就是让其置于高电平)来形成一个汉字图形。
    其次我们应该知道我们点阵屏一个汉字的规格是多少,以16*16举例,一个汉字占行16,列16,假设以“你我”这两个字为例其十六进制表示就为
0x00,0x80,0x60,0xF8,0x07,0x40,0x20,0x18,
0x0F,0x08,0xC8,0x08,0x08,0x28,0x18,0x00,
0x01,0x00,0x00,0xFF,0x00,0x10,0x0C,0x03,
0x40,0x80,0x7F,0x00,0x01,0x06,0x18,0x00,/*"你",0*/

0x20,0x24,0x24,0x24,0xFE,0x23,0x22,0x20,
0x20,0xFF,0x20,0x22,0x2C,0xA0,0x20,0x00,
0x00,0x08,0x48,0x84,0x7F,0x02,0x41,0x40,
0x20,0x13,0x0C,0x14,0x22,0x41,0xF8,0x00,/*"我",1*/

(本文所使用的汉字以及英文十六进制均由PCTOLCD取模软件生成)

但同样规格的点阵屏中,生成英文字符的规格为8*16,也就是汉字的一半,以“ab”为例
0x00,0x00,0x80,0x80,0x80,0x00,0x00,0x00,                0x00,0x19,0x24,0x24,0x12,0x3F,0x20,0x00,/*"a",0*/

0x10,0xF0,0x00,0x80,0x80,0x00,0x00,0x00,   0x00,0x3F,0x11,0x20,0x20,0x11,0x0E,0x00,/*"b",1*/
但如果直接用上面的十六进制生成就会发现,中文是可以在点阵屏上正常显示的,但英文部分会直接乱码,这种是因为点阵屏识别不了。

在中文的十六进制那里,我们可以发现,一个汉字是由4*8的十六进制组成的,那么英文就是2*8,所以我们把英文的十六进制改成
0x00,0x00,0x80,0x80,0x80,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x19,0x24,0x24,0x12,0x3F,0x20,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*"a",0*/  
这个时候就可以正常显示啦,第一行与第三行是字母的构成,也就是16*16的正方形的左半面,二四行用0x00补全,也可以将b的十六进制放在二四行。这样的话就是在一个16*16的规格内,左半显示a右半显示b。

以我自己的理解,之所以显示英文符号乱码,其原因就在于如果是16*16的汉字规格,我们是正常需要32个十六进制来表示,也就是一个十六进制控制两个二极管,这个时候若是想显示英文字符,你只写了16个十六进制,是识别不了的,因为有一半系统不知道怎么去理解,所以即便不需要那一半,也需要写0x00,也就是让其位置的二极管处于低电平的状态,但如果你的代码有翻转电平·的话,就需要反过来了。

 

  • 5
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值