0.96寸OLED屏幕7针SPI接口使用指南

这是我在淘宝上买的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版权协议,转载请附上原文出处链接和本声明。