打印
[应用相关]

基于STM32的OLED多级菜单GUI实现(简化版智能手表)

[复制链接]
楼主: 鱿鱼丝
手机看帖
扫描二维码
随时随地手机跟帖
21
鱿鱼丝|  楼主 | 2023-3-27 10:52 | 只看该作者 |只看大图 回帖奖励 |倒序浏览
说明2点:

(1)由于是目前本项目是裸机状态下运行的,所以CPU占用率默认是100%的,所以这里使用按键支持连按时,对于菜单的切换更好些。

使用特权

评论回复
22
鱿鱼丝|  楼主 | 2023-3-27 10:52 | 只看该作者
(2)可能部分索引号下的执行函数,需要使用到已经定义的3个按键(比如,本项目中的DInogame中)。所以,可以在需要差别化的索引号下去屏蔽原先的按键功能。如下:

使用特权

评论回复
23
鱿鱼丝|  楼主 | 2023-3-27 10:53 | 只看该作者
  if((KEY_Scan(1) == 1) && (func_index != 6))        //屏蔽掉索引6下的情况,适配游戏
  {
    func_index=table[func_index].next;        //按键next按下后的索引号
    OLED_Clear();
  }
       
  if((KEY_Scan(1) == 2) && (func_index != 6))        //屏蔽掉索引6下的情况,适配游戏
  {
    func_index=table[func_index].enter;        //按键enter按下后的索引号
    OLED_Clear();
  }

使用特权

评论回复
24
鱿鱼丝|  楼主 | 2023-3-27 10:53 | 只看该作者
(3)笔者这里是使用全屏刷新去切换功能界面,同时,没有启用高级算法去加速显示,所以可能在切换界面的时候效果一般。读者朋友可以试试根据自己的UI情况使用局部刷新,这样可能项目会更加丝滑一点。

使用特权

评论回复
25
鱿鱼丝|  楼主 | 2023-3-27 10:53 | 只看该作者
本项目中的菜单索引图:

使用特权

评论回复
26
鱿鱼丝|  楼主 | 2023-3-27 10:53 | 只看该作者

使用特权

评论回复
27
鱿鱼丝|  楼主 | 2023-3-27 10:53 | 只看该作者
三、此项目内部功能实现(简化智能手表)
3.1 OLED显示

        OLED就是正常的驱动与显示,有能力的读者朋友可以使用高级算法去加速OLED屏幕的刷新率,可以使自己的多级菜单切换起来更丝滑。

使用特权

评论回复
28
鱿鱼丝|  楼主 | 2023-3-27 10:54 | 只看该作者
唯一需要注意的点就是需要去制作菜单里面的UI图标(注意图片大小是否合适):

使用特权

评论回复
29
鱿鱼丝|  楼主 | 2023-3-27 10:54 | 只看该作者

使用特权

评论回复
30
鱿鱼丝|  楼主 | 2023-3-27 10:54 | 只看该作者
如果是黑白图片的话,可以直接使用PCtoLCD2002完美版进行取模:

使用特权

评论回复
31
鱿鱼丝|  楼主 | 2023-3-27 10:54 | 只看该作者
3.2 KEY按键

        KEY按键注意消抖(建议裸机情况下支持连续按动),同时注意自己实际硬件情况去进行编程(电阻是否存在上拉或者下拉)

使用特权

评论回复
32
鱿鱼丝|  楼主 | 2023-3-27 11:04 | 只看该作者
3.3 DinoGame实现

使用特权

评论回复
33
鱿鱼丝|  楼主 | 2023-3-27 11:04 | 只看该作者
   谷歌公司最近比较流行的小游戏,笔者之前有文章进行了STM32的成功复刻。

使用特权

评论回复
34
鱿鱼丝|  楼主 | 2023-3-27 11:05 | 只看该作者
3.4 LED控制和DHT11模块

        LED和DHT11模块其实都属于外设控制,这里读者朋友可以根据自己的实际情况去取舍。需要注意的是尽可能适配一下自己多级菜单(外设控制也需要注意一下按键安排,可以参考笔者项目的设计)。

使用特权

评论回复
35
鱿鱼丝|  楼主 | 2023-3-27 11:05 | 只看该作者
四、CubeMX配置

1、RCC配置外部高速晶振(精度更高)——HSE;

使用特权

评论回复
36
鱿鱼丝|  楼主 | 2023-3-27 11:05 | 只看该作者

使用特权

评论回复
37
鱿鱼丝|  楼主 | 2023-3-27 11:06 | 只看该作者
2、SYS配置:Debug设置成Serial Wire(否则可能导致芯片自锁);


使用特权

评论回复
38
鱿鱼丝|  楼主 | 2023-3-27 11:06 | 只看该作者
3、I2C2配置:这里不直接使用CubeMX的I2C2,使用GPIO模拟(PB10:CLK;PB11:SDA)

使用特权

评论回复
39
鱿鱼丝|  楼主 | 2023-3-27 11:06 | 只看该作者

使用特权

评论回复
40
鱿鱼丝|  楼主 | 2023-3-27 11:07 | 只看该作者

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则