本文介绍基于STM32F103C8T6+0.96寸OLED(7针)的显示(完整程序代码见文末链接)
一、简介
OLED,即有机发光二极管( Organic Light Emitting Diode)。 OLED 由于同时具备自发光,不需背光源、对比度高、厚度薄、视角广、反应速度快、可用于挠曲性面板、使用温度范围广、构造及制程较简单等优异之特性,被认为是下一代的平面显示器新兴应用技术。
关于OLED基础知识介绍可参考我的另外一篇博客,建议阅读本文前先了解下,链接如下:https://blog.csdn.net/u011816009/article/details/130119426
本文是基于7pin 0.96寸OLED 屏幕4线SPI通信实现的和STM32通信,该7针屏幕模组还支持IIC以及3线SPI通信,在此不做赘述,可查看相关博文
二、接线图
STM32F103C8T6+0.96寸OLED(7针4线SPI)接线图,其中单片机的IO口资源可以在代码中修改,结合实际情况选用
STM32F103C8T6 | 0.96寸OLED(7针4线SPI) |
---|---|
3.3V | VCC |
GND | GND |
PA5 | SCL/D0 |
PA6 | SDA/D1 |
PA3 | RST |
PA4 | DC |
PA2 | CS |
三、代码函数(完整工程文件见文末连接)
显示主函数如下所示,其中:
OLED_ShowString:字符串显示函数
OLED_ShowChar:单个字符显示函数
OLED_ShowNum:变量/数值显示函数
int main(void)
{
delay_init(); //延时函数初始化
OLED_Init(); //OLED初始化函数
u32 t=10;
while(1)
{
OLED_ShowString(0,0,"Hello world",16); //显示字符串
OLED_ShowNum(10,30,t,2,16); //显示具体变量t数值
OLED_ShowChar(60,30,'A',16,1); //显示单个字符
OLED_Refresh_Gram(); //更新显示到OLED屏幕
//OLED_Fill(0,60,127,63,1);//填充OLED
}
}
OLED_ShowString:字符串显示函数
//显示字符串
//x,y:起点坐标
//size:字体大小
//*p:字符串起始地址
void OLED_ShowString(u8 x,u8 y,const u8 *p,u8 size)
{
while((*p<='~')&&(*p>=' '))//判断是不是非法字符!
{
if(x>(128-(size/2))){x=0;y+=size;}
if(y>(64-size)){y=x=0;OLED_Clear();}
OLED_ShowChar(x,y,*p,size,1);
x+=size/2;
p++;
}
}
OLED_ShowChar:单个字符显示函数
//在指定位置显示一个字符,包括部分字符
//x:0~127
//y:0~63
//mode:0,反白显示;1,正常显示
//size:选择字体 16/12
void OLED_ShowChar(u8 x,u8 y,u8 chr,u8 size,u8 mode)
{
u8 temp,t,t1;
u8 y0=y;
u8 csize=(size/8+((size%8)?1:0))*(size/2); //得到字体一个字符对应点阵集所占的字节数
chr=chr-' ';//得到偏移后的值
for(t=0;t<csize;t++)
{
if(size==12)temp=asc2_1206[chr][t]; //调用1206字体
else if(size==16)temp=asc2_1608[chr][t]; //调用1608字体
else if(size==24)temp=asc2_2412[chr][t]; //调用2412字体
else return; //没有的字库
for(t1=0;t1<8;t1++)
{
if(temp&0x80)OLED_DrawPoint(x,y,mode);
else OLED_DrawPoint(x,y,!mode);
temp<<=1;
y++;
if((y-y0)==size)
{
y=y0;
x++;
break;
}
}
}
}
OLED_ShowNum:变量/数值显示函数
//显示2个数字
//x,y :起点坐标
//len :数字的位数
//size:字体大小
//mode:模式 0,填充模式;1,叠加模式
//num:数值(0~4294967295);
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/mypow(10,len-t-1))%10;
if(enshow==0&&t<(len-1))
{
if(temp==0)
{
OLED_ShowChar(x+(size/2)*t,y,' ',size,1);
continue;
}else enshow=1;
}
OLED_ShowChar(x+(size/2)*t,y,temp+'0',size,1);
}
}
四、实际显示效果
STM32--7针0.96寸OLED屏幕显示(4线SPI)文章来源:https://www.toymoban.com/news/detail-792957.html
附完整代码程序资料
链接:https://pan.baidu.com/s/1nH14xjhXIhVPtjbK8joR9w?pwd=kxhl
提取码:kxhl文章来源地址https://www.toymoban.com/news/detail-792957.html
到了这里,关于STM32--7针0.96寸OLED屏幕显示(4线SPI)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!