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