STM32ExampleCode-01-OLED

STM32ExampleCode-01-OLED

1、简介

例程以STM32F103C8T6控制0.96寸OLED模块为例,该OLED模块采用SSD1306为主芯片,像素为 128*64,通讯方式为IIC,IIC 地址默认为 0x78,操作简单,该模块有一个稳压芯片,支持3.3V~5V电压供电,上电自动复位,自发光自由视角,低功耗等优势,显示效果如下图:
image-1681352859249

2.下载资源文件

完整例程下载:Gitee下载:STM32ExampleCode_01_OLED
微信图片_20231005105410.png

3. IIC驱动文件

下载后打开参考目录\HARDWARE\IIC下的myiic.h文件,根据需要修改自己的引脚,由于这里使用的是CRL和CRH寄存器来配置的输入输出方向,所以我们在修改时需要注意寄存器的正确使用,示例中IIC的SDA引脚为PB0,SCL引脚为PB1
image-1681352883593
image-1681352889633

4.OLED驱动

大家可以参考目录\HARDWARE\OLED下的oled.c和oled.h文件,驱动文件不建议大家修改,使用时直接拷贝到自己的驱动目录里。
image-1681352947003
在目录中还有oledbmp.h和oledfont.h文件,这两个文件是我们用来添加自己的显示信息的文件,oledbmp.h我们常用来存放位图的取模数组,oledfont.h中我们存放自己的字体取模数组,其中也包括汉字的位图的数组。
image-1681352951601
image-1681352960509

5.图片取模

在上面的介绍中我们可以看到OLED模块本身是不带字库的,需要用单片机进行保存,OLED驱动文件带英文字母、数字和符号的字模数组,汉字是需要什么字就添加什么字的字模,我们使用PCtoLCD2002软件进行生成。

1). 下载软件

pctolcd2002下载(源于网络)

2). 切换字符模式

image-1681353027434

3). 字模选项(格式设置)

image-1681353035235

4) 生成汉字字模

image-1681353043658
image-1681353052603
将上面生产的数组粘贴到oledfont.h文件中
oled056.png

5) 生成位图

a) 选择位图

这里推荐大家一个矢量图网站:阿里矢量图标库,在这里我们可以找到很多适合我们单片机屏幕显示使用的图标,而且是很多是免费商用的。
image-1681353063089
进入阿里矢量图标库,搜索自己想要的图标,例如“自动化”,然后选择合适的大小,点击PNG下载:
image-1681353068851
image-1681353074423

b) 将下载的文件用“画图”打开,并另存为BMP文件

image-1681353080495
image-1681353086686

c) 切换图形模式

image-1681353092542

d) 在软件中选择打开刚才保存的bmp文件

image-1681353095741
image-1681353103100

d) 修改格式设置

image-1681353108775

e) 点击生成

image-1681353116975

f) 将生成的数组放在oledbmp.h文件中

image-1681353125912

6) OLED显示测试

/*****************************************************************************************
* 函 数 名: OLED_Show_test()
* 功能说明: OLED显示测试
* 形 参:无
* 返 回 值: 无
*****************************************************************************************/
void OLED_Show_test(void)
{
    OLED_ShowString(0,0,(unsigned char *)"hello,IOT",16); //显示英文:hello,IOT
    //显示中文:趣制作
    OLED_ShowCHinese(73,0,0);//趣
    OLED_ShowCHinese(93,0,1);//制
    OLED_ShowCHinese(113,0,2);//作
    OLED_DrawBMP(0,2,0+32,6,autoMode); //显示位图:autoMode.bmp
    OLED_ShowNum(40,3,1234,4,12);     //显示数字1234
}

5 . 编译烧录运行

运行效果:
image-1681353399084

Licensed under CC BY-NC-SA 4.0