STM32F103 + 0.96/1.3“ I2C OLED + EC11旋转编码器多级菜单demo
Posted perseverance52
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了STM32F103 + 0.96/1.3“ I2C OLED + EC11旋转编码器多级菜单demo相关的知识,希望对你有一定的参考价值。
STM32F103 + 0.96/1.3" I2C OLED + EC11旋转编码器多级菜单demo
demo
- 操作演示:
项目基于
STM32F103VE
,标准库,支持极海APM同型号。可以改小容量型号以及其他型号的支持,需要自行修改移植。
- EC11操控代码参考:
https ://www.jianshu.com/p/41fa67ecb248
- EC11旋转编码器
EC11接线说明
- 在PA3、PA2与GND之间并联了1uf的电容,旋转EC11的时候不会那么跳。
0.96/1.3" I2C OLED接线说明
默认使用的是1.3寸的屏幕
// GND 电源地
// VCC 接5V或3.3v电源
// SCL 接PA5
// SDA 接PA7
- 修改成0.96寸屏幕。(代码中都有注释,照着修改即可)
- 修改初始化函数
//初始化SSD1306
void OLED_Init(void)
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); //使能A端口时钟
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5|GPIO_Pin_7;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //推挽输出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;//速度50MHz
GPIO_Init(GPIOA, &GPIO_InitStructure); //初始化GPIOD3,6
GPIO_SetBits(GPIOA,GPIO_Pin_5|GPIO_Pin_7);
delay_ms(800);
OLED_WR_Byte(0xAE,OLED_CMD);//--display off
OLED_WR_Byte(0x02,OLED_CMD);//---set low column address,0.96屏幕:0x00,1.3屏幕:0x02
- 清屏函数
//清屏函数,清完屏,整个屏幕是黑色的!和没点亮一样!!!
void OLED_Clear(void)
u8 i,n;
for(i=0;i<8;i++)
OLED_WR_Byte (0xb0+i,OLED_CMD); //设置页地址(0~7)
OLED_WR_Byte (0x02,OLED_CMD); //设置显示位置—列低地址,0.96屏幕:0x00,1.3寸屏幕:0x02
OLED_WR_Byte (0x10,OLED_CMD); //设置显示位置—列高地址
for(n=0;n<132;n++)OLED_WR_Byte(0,OLED_DATA);
//更新显示
- 显示函数
void OLED_On(void)
u8 i,n;
for(i=0;i<8;i++)
OLED_WR_Byte (0xb0+i,OLED_CMD); //设置页地址(0~7)
OLED_WR_Byte (0x02,OLED_CMD); //设置显示位置—列低地址,0.96屏幕:0x00,1.3寸屏幕:0x02
OLED_WR_Byte (0x10,OLED_CMD); //设置显示位置—列高地址
for(n=0;n<128;n++)OLED_WR_Byte(1,OLED_DATA);
//更新显示
- mian.c程序代码
// STM32F103 + 0.96/1.3"I2C OLED12864 + EC11旋转编码器
// ----------------------------------------------------------------
// OLED STM32F103C8
// GND 电源地
// VCC 接5V或3.3v电源
// SCL 接PA5
// SDA 接PA7
// ----------------------------------------------------------------
// EC11旋转编码器 -----STM32F103
// A --- PA1
// B --- PA2
// C --- PA3
// PA4未启用
// 逆时针,往下移动菜单,顺时针,往上移动
#include "delay.h"
#include "sys.h"
#include "oled.h"
#include "menu.h"
#include "EX_KEIL_0718.h"
int Level=0,Menu_Page=1;
int sum=0;
int main(void)
delay_init();
EX_Init();
//LED_Init();
OLED_Init();
Menu_Display(Menu_Page, Level);
while (1)
Encoder_EC11_Analyze(Encoder_EC11_Scan( ));
程序源码
链接:https://pan.baidu.com/s/1Y4pEv62A51CPO18FHdDpBQ
提取码:94i5
以上是关于STM32F103 + 0.96/1.3“ I2C OLED + EC11旋转编码器多级菜单demo的主要内容,如果未能解决你的问题,请参考以下文章
STM32F103 + 0.96/1.3“ I2C OLED + EC11旋转编码器多级菜单demo
STM32F103VET6基于STM32CubeMX 配置硬件I2C驱动ssd1306 OLED屏幕
STM32F103VET6基于STM32CubeMX 配置硬件I2C驱动SH1106 OLED屏幕
STM32F103VC+DS18B20温度+hc-sr04超声波测距+I2C OLED显示