1 简单介绍OLED
OLED,即有机发光二极管(Organic Light-Emitting Diode),又称为有机电激光显示(Organic Electroluminesence Display, OELD)。OLED由于同时具备自发光,不需背光源、对比度高、厚度薄、视角广、反应速度快、可用于挠曲性面板、使用温度范围广、构造及制程较简单等优异之特性,被认为是下一代的平面显示器新兴应用技术。
OLED显示技术具有自发光的特性,采用非常薄的有机材料涂层和玻璃基板,当有电流通过时,这些有机材料就会发光,而且OLED显示屏幕可视角度大,并且能够节省电能,从2003年开始这种显示设备在MP3播放器上得到了应用。
LCD都需要背光,而OLED不需要,因为它是自发光的。这样同样的显示,OLED效果要来得好一些。以目前的技术,OLED的尺寸还难以大型化,但是分辨率确可以做到很高。
更多关于OLED的资料可以参考淘宝店“Telesky”,这个店里面有很多资料,足够使用。提供链接:
telesky关于OLED的介绍
https://detail.tmall.com/item.htm?spm=a230r.1.14.20.28995268GQphvC&id=42062670868&ns=1&abbucket=1
这个0.96寸的OLED支持的通讯方式:
6800、8080两种并行接口方式、 4线的穿行SPI接口方式、IIC接口方式;在这里演示我先用的是SPI通讯方式。
2 OLED工作原理
(略)可以在网上查询一下,很方便查到。提供两个博主连接可懂:
1、https://blog.csdn.net/zn2016/article/details/79518570
2、https://blog.csdn.net/qq_38410730/article/details/80033873
3 控制程序实现
需要使用OLED提供的源文件,针对计数器需要使用两个函数:
void OLED_ShowNum(u8 x,u8 y,u32 num,u8 len,u8 size)
{
u8 t,temp;
u8 enshow=0;
for(t=0;t<len;t++)
{
temp=(num/oled_pow(10,len-t-1))%10;
if(enshow==0&&t<(len-1))
{
if(temp==0)
{
OLED_ShowChar(x+(size/2)*t,y,' ');
continue;
}else enshow=1;
}
OLED_ShowChar(x+(size/2)*t,y,temp+'0');
}
}
u32 oled_pow(u8 m,u8 n)
{
u32 result=1;
while(n--)result*=m;
return result;
}
针对函数OLED_ShowNum()的解释是:
x,y分别表示数字起点;len 表示数字的位数;size表示数字的大小,num表示显示的数字,取值0-4294967295。
void OLED_ShowString(u8 x,u8 y,u8 *chr)
{
unsigned char j=0;
while (chr[j]!='\0')
{ OLED_ShowChar(x,y,chr[j]);
x+=8;
if(x>120){x=0;y+=2;}
j++;
}
}
针对函数OLED_ShowString()的解释是:
x,y分别表示数字起点;*chr是需要现实的字符串。
主函数:
int main(void)
{ u8 t;
delay_init();
NVIC_Configuration();
LED_Init();
OLED_Init();
OLED_Clear();
while(1)
{
int count=89;
OLED_ShowString(0 ,0, "this is a count:");
for(;count<102;count++)
{
OLED_ShowNum(40,3,count,3,20);
delay_ms(10000);
}
}
}
4 OLED显示结果
(注:程序是一个简单的OLED计数器显示,OLED还有跟多功能,下面一共一个汉字取字软件,显示软件,另外还附有OLED的源文件和头文件)
下载链接
PCtoLCD2002.zip:https://download.csdn.net/download/weixin_42023797/11979799
OLED驱动源文件和头文件:https://download.csdn.net/download/weixin_42023797/11979796