中景园0.96寸OLED显示模块STM32CUBE配置生成代码软件IIC实现显示

教程介绍了如何使用CUBE配置32的外部时钟和GPIO,以软件IIC方式驱动OLED显示屏在STM32F103C8T6上的实现。作者提供了从配置CUBE,生成代码,移植中景园的OLED程序,修改工程代码,到在main文件中使用的过程。文章末尾附有DEMO的下载链接。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我在网上找了好多的教程,好像对于用CUBE配置生成软件IIC实现驱动这块OLED的教程很少(也有可能是我没有找到hhhh)所以我自己也写一个教程记录一下

当然第一步肯定是配置CUBE

我用的这块核心板是32的F103C8T6,所以就用这个演示(当然其他的芯片也是同样的方式)话不多说,现在正式开始

 

 

 我自己个人是喜欢配置32的外部时钟,大家可以按照自己喜欢的来

 时钟配好了之后我们开始配一下GPIO口,这里非常简单,只用把自己喜欢的口配成GPIO_OUT就行啦,因为我们用的是软件IIC,我就按照中景园给的资料中的PA5和PA7就行

 接下来就是点击generate code生成代码就好,我的环境是MDK5

 生成完毕后直接打开就行

第二步,接下来是移植中景园的程序啦~

找到你生成工程的目录,在根目录下有一个Core文件夹,里面有Inc和Src两个文件夹,这两个文件夹的意思分别是头文件和C文件,我们需要把中景园资料中的OLED程序直接分别复制到我们生成的工程文件夹下就行啦(注意,我们只需要资料中的OLED文件夹下的oledfont.h,oled.c和.h文件就行,文件路径大概是这样👇

‘0.96OLED显示屏_STM32F103C8_IIC_V1.0\HARDWARE\OLED’   )

 

前置工作就准备完毕了~现在打开工程修改代码 

第三步,修改工程

 在第二个文件右键直接把oled.c文件Add进来

现在正式修改代码

 

 

 就是修改以上代码就行,分别是oled.c和oled.h文件,注释掉一些就行了,剩下的就是修改一下,非常简单

 第四步,在main文件里使用就行

 最后,就没有了嘞,有4个警告,不过都是小问题不影响,hhhh,以下是DEMO懒得弄或者想看看效果的可以自行下载

链接:https://pan.baidu.com/s/1E0SuQGBX6EBTDC4-4BWhow?pwd=ngao 
提取码:ngao

中景电子0.96OLED显示屏_arduino_IIC_例程+SPI_例程工程源码: void Adafruit_SSD1306::startscrolldiagleft(uint8_t start, uint8_t stop){ ssd1306_command(SSD1306_SET_VERTICAL_SCROLL_AREA); ssd1306_command(0X00); ssd1306_command(SSD1306_LCDHEIGHT); ssd1306_command(SSD1306_VERTICAL_AND_LEFT_HORIZONTAL_SCROLL); ssd1306_command(0X00); ssd1306_command(start); ssd1306_command(0X00); ssd1306_command(stop); ssd1306_command(0X01); ssd1306_command(SSD1306_ACTIVATE_SCROLL); } void Adafruit_SSD1306::stopscroll(void){ ssd1306_command(SSD1306_DEACTIVATE_SCROLL); } void Adafruit_SSD1306::ssd1306_data(uint8_t c) { if (sid != -1) { // SPI //digitalWrite(cs, HIGH); *csport |= cspinmask; //digitalWrite(dc, HIGH); *dcport |= dcpinmask; //digitalWrite(cs, LOW); *csport &= ~cspinmask; fastSPIwrite(c); //digitalWrite(cs, HIGH); *csport |= cspinmask; } else { // I2C uint8_t control = 0x40; // Co = 0, D/C = 1 Wire.beginTransmission(_i2caddr); Wire.write(control); Wire.write(c); Wire.endTransmission(); } } void Adafruit_SSD1306::display(void) { ssd1306_command(SSD1306_SETLOWCOLUMN | 0x0); // low col = 0 ssd1306_command(SSD1306_SETHIGHCOLUMN | 0x0); // hi col = 0 ssd1306_command(SSD1306_SETSTARTLINE | 0x0); // line #0 if (sid != -1) { // SPI *csport |= cspinmask; *dcport |= dcpinmask; *csport &= ~cspinmask; for (uint16_t i=0; i<(SSD1306_LCDWIDTH*SSD1306_LCDHEIGHT/8); i++) { fastSPIwrite(buffer[i]); //ssd1306_data(buffer[i]); } // i wonder why we have to do this (check datasheet) if (SSD1306_LCDHEIGHT == 32) { for (uint16_t i=0; i<(SSD1306_LCDWIDTH*SSD1306_LCDHEIGHT/8); i++) { //ssd1306_data(0); fastSPIwrite(0); } } *csport |= cspinmask; } else { // save I2C bitrate uint8_t twbrbackup = TWBR; TWBR = 12; // upgrade to 400KHz! //Serial.println(TWBR, DEC); //Serial.println(TWSR & 0x3, DEC); // I2C
0.96蓝色OLED模块 7P SPI+I2C接口软硬件设计资料(包括技术手册+硬件参考设计+C51STM8 PICSTM32单片机软件工程源码+取字模软件) arduino_SPI_例程.rar arduino_SPI_例程.rar.zip 中景电子0.96OLED显示屏_arduino_IIC_例程 中景电子0.96OLED显示屏_arduino_IIC_例程.rar 中景电子0.96OLED显示屏_C51系列_IIC_例程 中景电子0.96OLED显示屏_C51系列_IIC_例程.rar 中景电子0.96OLED显示屏_C51系列_IIC_例程推荐使用 中景电子0.96OLED显示屏_C51系列_IIC_例程推荐使用.zip 中景电子0.96OLED显示屏_C51系列_IIC应答_例程 中景电子0.96OLED显示屏_C51系列_IIC应答_例程.rar 中景电子0.96OLED显示屏_C51系列_IIC无应答_例程 中景电子0.96OLED显示屏_C51系列_IIC无应答_例程.rar 中景电子0.96OLED显示屏_C51系列_SPI_例程.rar 中景电子0.96OLED显示屏_MSP430系列_SPI_例程.rar 中景电子0.96OLED显示屏_PIC系列_SPI_例程.rar 中景电子0.96OLED显示屏_STM32F103C8_IIC_V1.0.rar 中景电子0.96OLED显示屏_STM32F103RC_IIC_V1.0.zip 中景电子0.96OLED显示屏_STM32F103ZET6_IIC_V1.0.zip 中景电子0.96OLED显示屏_STM32ZET系列_SPI_例程.zip 中景电子0.96OLED显示屏_STM32_F103C8系列_SPI_例程 中景电子0.96OLED显示屏_STM32_F103C8系列_SPI_例程.rar 中景电子0.96OLED显示屏_STM32_F103RCT6系列_SPI_例程.zip 中景电子0.96OLED显示屏_STM8S103K3T6_SPI_例程.zip 中景电子0.96OLED显示屏_STM8系列_IIC_例程.zip 中景电子0.96OLED显示屏_STM8系列_SPI_例程.rar SPI接口arduino连接方式.rar 中景电子0.96OLED显示屏原理图 中景电子0.96OLED显示屏数据手册 中景电子0.96OLED显示屏测试程序 中景电子0.96OLED使用文档新手必看V2.0.pdf 关于七针0.96OLED使用IIC接口的说明.rar 取字模软件
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值