OLED显示如何理解 12*6、16*8、24*12等字符大小

阅读: 评论:0

OLED显示如何理解 12*6、16*8、24*12等字符大小

OLED显示如何理解 12*6、16*8、24*12等字符大小


上图设置的取模方式,在右上角的取模说明里面有。
即:从第一列开始向下每取 8 个点作为一个字节,如果最后不足 8 个点就补满 8 位。(重点!!!)
取模顺序是从高到低,即第一个点作为最高位。
如*-------取为 10000000。其实就是按如图 17.3.3 所示的这种方式:

从上到下,从左到右,高位在前。我们按这样的取模方式,然后把 ASCII 字符集按 12x6大小、 16x8 和 24x12 大小取模出来(对应汉字大小为 12x12、 16x16 和 24x24,字符的只有汉字的一半大!),保存在 oledfont.h 里面,每个 12x6 的字符占用 12 个字节(注意,由于都是按照字节写入,所有列方向的12个点按照16个点2个字节处理,所以 12x6字符占用2x6=12个字节),每个 16x8 的字符占用16 个字节, 每个 24x12 的字符占用 36 个字节。
下面分析一段代码:

//在指定位置显示一个字符,包括部分字符
//x:0~127
//y:0~63
//mode:0,反白显示;1,正常显示				 
//size:选择字体 12/16/24
void OLED_ShowChar(u8 x,u8 y,u8 chr,u8 size,u8 mode)
{      			    u8 temp,t,t1;u8 y0=y;u8 csize=(size/8+((size%8)?1:0))*(size/2);		//得到字体一个字符对应点阵集所占的字节数chr=chr-' ';//得到偏移后的值		 for(t=0;t<csize;t++){   if(size==12)temp=asc2_1206[chr][t]; 	 	//调用1206字体elseif(size==16)temp=asc2_1608[chr][t];	//调用1608字体elseif(size==24)temp=asc2_2412[chr][t];	//调用2412字体elsereturn;								//没有的字库for(t1=0;t1<8;t1++){if(temp&0x80)OLED_DrawPoint(x,y,mode);elseOLED_DrawPoint(x,y,!mode);temp<<=1;y++;if((y-y0)==size){y=y0;x++;break;}}  	 }          
}

假设打印12*6的字符,当size=12时,csize = 12。

				if((y-y0)==size){y=y0;x++;break;}

虽然字符的高度占用2个字节16个点,但是这段代码限制了显示的高度为size,即显示的高度为12。
其他同理即可。

本文发布于:2024-02-05 01:13:20,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170720670961700.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:字符   大小   OLED
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23