0.96寸OLED显示屏,控制芯片是SSD1306使用STM32F103CC8T6模拟显示屏通信时序。 使用STM32F103C8T6控制屏幕显示字符、汉字、数字。 标准库编写 汉字只能显示16X16大小的 字符只能显示8*16大小的
如何显示一个字符
-
0.96寸OLED分辨率是128X64,即X轴上有128个点Y轴上有64个点。 -
此显示屏一次控制Y轴方向上8个点的显示,所以把y轴方向上分为了八个页,(0-7) -
在设定好显示光标位置后给显示屏发送8位数据,显示屏就会从左到右从上到下开始显示 -
要注意x的范围是(0-127)y的范围是(0-7) 代码实现如下: void OLED_ShowChar(u8 x,u8 y,u8 chr) { u8 c=0,i=0; c = chr - ' '; //得到偏移后的值
if(x>Max_Column-1) //当显示的字符超过x轴范围在下一行显示
{ x = 0; y = y+2; } if(SIZE == 16) //当字体是16时,在y轴方向上是16位x轴方向上是8位
{
OLED_Set_Pos(x,y); //设置光标位置
for(i=0;i<8;i++) //先打印上半部分,比如一个|,先打印它的上半部分
{
OLED_WR_Byte(F8X16[c*16+i],OLED_DATA);
}
OLED_Set_Pos(x,y+1); //y的页加一
for(i=0;i<8;i++)
{
OLED_WR_Byte(F8X16[c*16+i+8],OLED_DATA);
}
}
else //6X8字体
{
OLED_Set_Pos(x,y+1);
for(i=0;i<6;i++)
{
OLED_WR_Byte(F6x8[c*6][i],OLED_DATA);
}
}
} 有空再写显示原理。 可以直接看程序代码,注释很详尽。
如果是用的其它STM32单片机只需要改以下三个部分就可以用了。因为用的是IO口模拟时序。 // 方法如下: // 1. 改一下启动文件startup_stm32f10x_md.h 看芯片使用什么样的启动文件 // 2. 从新在配置选项中选一下芯片型号。 // 3. 在配置选项中的C\C++下把宏定义STM32F10X_MD,USE_STDPERIPH_DRIVER,改一下。
附一下百度网盘的下载链接,有问题可以讨论。 工程代码:链接:https://pan.baidu.com/s/1xeYccevLzTRP9lFE7LzKGw 提取码:1111
|