STM32 F103 OLED学习笔记1:深入理解 OLED_ShowChar 函数如何实现按位点亮 OLED

此函数为正点原子寄存器函数例程,刚开始学习只是利用例程点亮OLED,以及修改显示的数据。

在学习中对OLED显示字模的原理一直不是很理解,先从show_char函数开始分析。

一、OLED_ShowChar各形参含义解释

void OLED_ShowChar(u8 x,u8 y,u8 chr,u8 size,u8 mode)

1、函数参数:x表示OLED显示的列数共128列,y表示OLED显示的行数共64行;mode为1点亮,0熄灭;size为字体的大小。

二、字模大小

以ASCII码“I”为例,通过取模设置其高度为12,宽度为12(生成12*6大小的字模)

理解:12*6大小的字模指的是占用12行,6列bit。(理解该字模含义有助于理解程序)

字模十六进制为:{0x20,0x40,0x20,0x40,0x3F,0xC0,0x20,0x40,0x20,0x40,0x00,0x00}

三、OLED_ShowChar例程分析

(1)csize字节个数

以12*6的字符大小来计算。12/8+(12%8)?1:0)*12/2=2*6=12个字节

以24*12的字符大小来计算。24/8+(24%8?1:0)*24/2=3*12=36个字节

所以24*12大小的字符占用36个字节

(2)chr 数组行的偏移地址

 因为正点原子例程内取模得到的数组全部是从space的ASCII码开始的,所以在此处space应该是数组的第0行,所以用chr-" "=0

(3)for循环

第一个for较好理解,不做笔记备注。第二个for循环是根据取得的字模顺序来逐列读取字节数据进行显示。以12*6大小的AC=ASCII为例

        首先是从第一个字节的第7位开始(原因:取模顺序是从高到低位,所以第一个点是字节的最高位),通过与0x80与运算就可以得知在x列,y行的OLED点的亮灭情况。

        通过将第一个字节左移,重复上述步骤,就可以得出一个字节的数据情况。

        每得到1个bit数据,y就递进一行,直到y递进了12行之后就给列数x加1,重新起一列进行显示。

(此处可以结合字模的大小进行理解)

以上就是对OLED_ShowChar函数的理解。240117

 

作者:哎呀!肥

物联沃分享整理
物联沃-IOTWORD物联网 » STM32 F103 OLED学习笔记1:深入理解 OLED_ShowChar 函数如何实现按位点亮 OLED

发表回复