STM32_F103_OLED学习笔记1:OLED_ShowChar 函数理解如何按bit点亮OLED

本文详细解析了正点原子的OLED_ShowChar函数,包括参数含义、字模大小计算、以及两个for循环如何根据字模逐列显示字符。重点在于理解字模的12*6或24*12尺寸和数据处理过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

此函数为正点原子寄存器函数例程,刚开始学习只是利用例程点亮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


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值