这是我在淘宝上买的7针LED屏,根据卖家提供的资料整理出如何驱动这块OLED屏显示

首先是接线,我们直接打开例程的文件夹,找到自己对应的板子,卖家提供了51、arduino、MSP430、STM8和STM32的驱动程序,打开之后看到代码main函数里会提示如何接线


接好线以后我们可以试着编译下载提供的例程,对比源码与实物,初步认识OLED是如何工作的;
从源码中我们可以看出,在显示的时候,当我们选择16x16显示的时候,X取值最大可以取到108,Y最大可以取到48,这是因为这块OLED屏幕像素是128*64,选择16x16显示的时候,把长16个像素和宽16个像素划分出一个区域,屏幕显示汉字时就会根据你定的X和Y坐标,在该区域显示出来,为了不重叠,我们最好设置每一个汉字的列都隔开两个像素,这样我们就把屏幕划分为一个4行x7列,共可以显示28个汉字。另外两种大小的显示可以以此类推。

接着我们来查看显示函数
void OLED_ShowChinese(u8 x,u8 y,u8 num,u8 size1)
{
u8 i,m,n=0,temp,chr1;
u8 x0=x,y0=y;
u8 size3=size1/8;
while(size3--)
{
chr1=num*size1/8+n;
n++;
for(i=0;i<size1;i++)
{
if(size1==16)
{temp=Hzk1[chr1][i];}//调用16*16字体
else if(size1==24)
{temp=Hzk2[chr1][i];}//调用24*24字体
else if(size1==32)
{temp=Hzk3[chr1][i];}//调用32*32字体
else if(size1==64)
{temp=Hzk4[chr1][i];}//调用64*64字体
else return;
for(m=0;m<8;m++)
{
if(temp&0x01)OLED_DrawPoint(x,y);
else OLED_ClearPoint(x,y);
temp>>=1;
y++;
}
x++;
if((x-x0)==size1)
{x=x0;y0=y0+8;}
y=y0;
}
}
}我们可以看到该显示先判断传进来的字符大小size1,假设我们选16*16,那实际显示的是数组Hzk1[chr1][i]的内容,接着我们去查看该数组,数组是由文字取模工具生成,我们可以自己用文字取模工具生成文字,然后放到数组中;(取模步骤过于简单,略)
在调用文字显示函数OLED_ShowChinese(u8 x,u8 y,u8 num,u8 size1),第三个参数num即是我们取模生成的数组中第几个字,例程中最大可以存放11个字,当我们需要存放超过11个时会报错,只需把数组的行改为适当的数字或者不填(c语言中数组的行可不填,列必须填)即可;


测试,运行成功:

版权声明:本文为luckyzz99原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。