全球最实用的IT互联网信息网站!

AI人工智能P2P分享&下载搜索网页发布信息网站地图

当前位置:诺佳网 > 电子/半导体 > 接口/总线/驱动 >

使用摇杆按键来调节时间数据

时间:2023-06-15 17:31

人气:

作者:admin

标签:   调节  按键  使用  摇杆 

导读:对于电子时钟而言,虽然我们可以在程序中对RTC芯片写入初始时间数据,但按键调时功能也是必不可少的,它可以让我们更加灵活的进行时间调节校准。...

对于电子时钟而言,虽然我们可以在程序中对RTC芯片写入初始时间数据,但按键调时功能也是必不可少的,它可以让我们更加灵活的进行时间调节校准。

1

菜单显示结构

本实验中显示菜单结构如下图所示:

图片

菜单结构

其中menu00是首页正常的时间日期显示界面,然后通过摇杆按键切换页面,进行日期调节和时间调节选择,然后对应跳转年月日和时分秒的调节页面。

根据结构图,结合多级菜单思路,很容易得到摇杆按键与界面对应的相关数据。

//定义按键操作数据
KEY_TABLE table[9] =
{
  {0, 0, 0, 0, 1, (*menu00)},
  {1, 1, 2, 0, 3, (*menu11)},
  {2, 1, 2, 0, 6, (*menu12)},
  {3, 3, 4, 1, 3, (*menu21)},
  {4, 3, 5, 1, 4, (*menu22)},
  {5, 4, 5, 1, 5, (*menu23)},
  {6, 6, 7, 2, 6, (*menu24)},
  {7, 6, 8, 2, 7, (*menu25)},
  {8, 7, 8, 2, 8, (*menu26)},
};

2

实验材料

  • Uno R3开发板
  • 配套USB数据线
  • 公对母杜邦线
  • 面包板及配套连接线
  • OLED显示屏
  • DS1302模块
  • 双轴按键摇杆模块

3

实验步骤

1.根据原理图搭建电路图。

DS1302模块的VCC和GND连接Uno开发板的3.3V和GND。DS1302模块的CLK、DAT、RST对应连接Uno开发板的4、3、2引脚。OLED的VCC和GND分别连接开发板的3.3V和GND,OLED的SDA、SCL分别连接开发板的A4、A5引脚。双轴按键摇杆模块的VCC、GND分别连接开发板的5V、GND,模块的X轴输出、Y轴输出分别连接开发板的模拟引脚A0、A1。

实验原理图如下图所示:

图片

实验原理图

2.代码较长,部分截取如下,完整代码请在文末获取。

...
void show_time(Time tim)
{
  char date[20];
  char timer[20];
  snprintf(date, sizeof(date), "%04d-%02d-%02d",
           tim.yr, tim.mon, tim.date);
  snprintf(timer, sizeof(timer), "%02d:%02d:%02d",
           tim.hr, tim.min, tim.sec);

  oled.clearDisplay();//清屏
  oled.setCursor(15, 2);//设置显示位置
  oled.println("--CLOCK--");
  oled.setCursor(4, 25);//设置显示位置
  oled.println(date);
  oled.setCursor(18, 50);//设置显示位置
  oled.println(timer);
  oled.display(); // 开显示
}
...
void loop() {
  keyValue = keyScan();

  if (keyValue != 0) //每发生一次有效按键就根据按键功能获取对应函数并执行
  {
    switch (keyValue)//获取按键对应序号
    {
      case 1: funIndex = table[funIndex].right; break;
      case 2: funIndex = table[funIndex].left; break;
      case 3: funIndex = table[funIndex].down; break;
      case 4: funIndex = table[funIndex].up; break;
    }
    current = table[funIndex].operation;//根据需要获取对应需要执行的函数
    (*current)();//执行获取到的函数
  }

  if (menu == 0)//只有在首页才进行时间刷新
  {
    updatTime();
  }
}

3.连接开发板,设置好对应端口号和开发板类型,进行程序下载。

图片

程序下载

温馨提示:以上内容整理于网络,仅供参考,如果对您有帮助,留下您的阅读感言吧!
相关阅读
本类排行
相关标签
本类推荐

CPU | 内存 | 硬盘 | 显卡 | 显示器 | 主板 | 电源 | 键鼠 | 网站地图

Copyright © 2025-2035 诺佳网 版权所有 备案号:赣ICP备2025066733号
本站资料均来源互联网收集整理,作品版权归作者所有,如果侵犯了您的版权,请跟我们联系。

关注微信