关注?+ 点赞??不错过精彩内容
大家好,我是硬核王同学,最近在做免费的嵌入式知识分享,帮助对嵌入式感兴趣的同学学习嵌入式、做项目、找工作!?
本小结学习一下如何使用OLED显示屏的函数驱动模块
根据接线图接线,这里把OLED插在了面包板的右下方,以后我们就一直把这个屏幕插在这里,需要用的时候随时可以使用,而且放在右下角也不是很占地方
我们使用的是4针脚的OLED屏幕,我们可以在OLED的下面(也就是最右下角的这张图片上),用跳线先插上两根线,把OLED屏幕的GND引到负极供电孔,VCC引到正极供电孔。
此时这个供电孔也会同时接到stm32的PB6和PB7两个引脚,有的同学可能会问,这两个引脚不是电源引脚,可以这样接吗?
其实这个也是没关系的,后面写代码我们直接不初始化这两个引脚就行了,如果不初始化,默认是浮空输入的模式,此时引脚不会输出电平,所以不会有什么影响 。
另外还有一种办法给OLED显示屏供电,你可以不接这两根跳线,直接让PB6口输出低电平,PB7口输出高电平,用GPIO口直接给OLED供电,这个也是没问题的,因为这个OLED功率很小,所以也是可以驱动的,不过这种用GPIO口供电不是很规范,自己玩玩的时候用就行了,要做实际项目的话最好还是用电源供电。
那插好这两个供电跳线之后,再把OLED插到PB6到PB9这四个口,这样OLED就接好了,此时OLED的SCL接到PB8,SDA接到PB9
文档这里直接复制之前搭建好的3-4 按键控制LED的工程文件夹,起名为4-1 OLED屏幕,
回到工程文件夹中,在\STM32入门教程资料\程序源码\STM32Project\中有一个1-4 OLED驱动函数模块文件夹,里面有已经准备好的OLED驱动函数模块,可以下载程序源码查看。
打开这个文件夹,里面有两个版本,一个是4针脚I2C版本,另一个是7针脚SPI版本,我们这里用的是4针脚的版本。直接打开这个文件夹,将这三个文件全部选中,Ctrl+C复制到刚刚创建的OLED显示屏工程文件夹中的Hardware文件夹中
之后打开Keil,在Hardware处右键,添加已经存在的OLED文件,按佳Ctrl键选中这三个文件,Add
这样就把OLED的文件添加到工程里来了
打开这三个文件,现在OLED.c里面就是函数的主体代码了,可以看到这个文件包括了引脚配置、引脚初始化、I2C通信的基本时序和OLED用户调用的代码等,这些函数都已经写好了,我们需要更改的就只有引脚配置、引脚初始化的代码。
引脚配置这部分可以更改选择硬件电路上把SCL和SDA这两个引脚接在哪两个端口,比如我们现在SCL接在了PB8,那我们的代码就可以改成#define OLED_W_SCL(x) ? ?GPIO_WriteBit(GPIOB,?GPIO_Pin_8, (BitAction)(x))
如果接到了PA6上,就可以改成#define OLED_W_SCL(x) ? ?GPIO_WriteBit(GPIOA,?GPIO_Pin_6, (BitAction)(x))
同理SDA的引脚配置也是一样的。
与此同时还要更改下引脚初始化函数对应端口,这里面就是把SCL和SDA的两个引脚都初始化为开漏输出的模式
这部分代码和上一节GPIO类似,还不熟悉可以回头看下GPIO的那一节复习下
具体更改就是,使用到的GPIO外设都先用RCC开启一下时钟,再初始化下GPIOB的Pin8、Pin9,所以对于这个模块来说,源代码中默认用的是SCL接PB8,SDA接PB9
如果你想修改成别的GPIO口,那就要把引脚配置、引脚初始化都改一下,剩下的都不需要修改,就可以直接使用这个OLED驱动函数模块了
在OLED.h中,就是外部可调用函数的声明
最后是OLED_Font.h文件,这里存的是OLED的字库数据
因为这个OLED显示屏是不带字库的,想要显示字符图形,还得先定义字符的点阵数据,OLED.c文件的显示函数会用到这些数据,所以我们需要将这个文件一同复制到工程文件中,这里的字库不需要自己修改,如果想加一些别的图形或字符,可以用别人的代码或一些其他的取模软件,这部分可以自行上网搜索了解。
最后清理下main.c的代码,编译下载测试一下,没有问题,现在这就是完整的OLED显示屏的工程了
作?者?:硬核王同学
-------?END?--------
关注公众号回复“加群”按规则加入技术交流群 ?回复“1024”查看更多内容