STM32F103 + 0.96/1.3“ I2C OLED + EC11旋转编码器多级菜单demo

STM32F103 + 0.96/1.3" I2C OLED + EC11旋转编码器多级菜单demo


  • 📺操作演示:
    在这里插入图片描述
✨项目基于STM32F103VE,标准库,支持极海APM同型号。可以改小容量型号以及其他型号的支持,需要自行修改移植。
  • 📌EC11操控代码参考:https ://www.jianshu.com/p/41fa67ecb248
  • 🌴EC11旋转编码器
    在这里插入图片描述
    在这里插入图片描述

🌻EC11接线说明

  • 🌿在PA1、PA2与GND之间并联了1uf的电容,旋转EC11的时候不会那么跳。
    在这里插入图片描述

🌼0.96/1.3" I2C OLED接线说明

默认使用的是1.3寸的屏幕

//              GND    电源地
//              VCC  接5V或3.3v电源
//              SCL   接PA5
//              SDA   接PA7 
  • ⚡修改成0.96寸屏幕。(代码中都有注释,照着修改即可)
    1. 修改初始化函数

//初始化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
    1. 清屏函数
//清屏函数,清完屏,整个屏幕是黑色的!和没点亮一样!!!	  
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); 
	} //更新显示
}
    1. 显示函数
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
  • 🐛版本更新(2023-10-2):去除杂乱注释代码,调整命名规则,完善功能,添加菜单可调参数设置。目前仅实现了对所有二级菜单下的单一参数的修改,还没想到如何实现多子级菜单的定位方法以及参数修改。
链接:https://pan.baidu.com/s/1PSeqWZ-rBuHtaMpqEkLp5Q 
提取码:hbdd
  • 🌿利用枚举类型检索
链接:https://pan.baidu.com/s/1N1fLHlzzsEox3UC0KjPxPw 
提取码:z2sv
  • 10
    点赞
  • 51
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值