0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

冬至子 来源:TonyCode 作者:TonyCode 2023-06-15 17:31 次阅读

对于电子时钟而言,虽然我们可以在程序中对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.连接开发板,设置好对应端口号和开发板类型,进行程序下载。

图片

程序下载

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • DS1302
    +关注

    关注

    8

    文章

    449

    浏览量

    50671
  • RTC
    RTC
    +关注

    关注

    2

    文章

    538

    浏览量

    66453
  • SDA
    SDA
    +关注

    关注

    0

    文章

    124

    浏览量

    28126
  • OLED显示屏
    +关注

    关注

    6

    文章

    217

    浏览量

    30675
  • GND
    GND
    +关注

    关注

    2

    文章

    539

    浏览量

    38696
收藏 人收藏

    评论

    相关推荐

    【外设移植】双轴按键摇杆模块Ai-M61开发板

    双轴按键摇杆模块采用金属按键摇杆电位器,模块包含两路模拟输出和一路数字输出接口。
    的头像 发表于 03-12 15:24 1025次阅读
    【外设移植】双轴<b class='flag-5'>按键</b><b class='flag-5'>摇杆</b>模块Ai-M61开发板

    如何将保存好的txt的时间数据读出

    如题,怎么将保存的的txt文件中的时间数据读出啊,用表格显示的话,时间数据总是显示0啊,怎么回事啊
    发表于 07-23 11:05

    时钟调节时间的问题

    想用静态变量实现调节时数码管闪烁,但是不知道怎么的,调节的数码闪动的频率很快,还有相对不闪的数码管很暗。求找出问题。指点。谢谢!show_time(17)只是做调试设的。void show_time
    发表于 08-01 22:13

    labview 用PID模块 做 闭环控制,调节时间一直很长

    labview 用PID模块做 闭环控制,怎么效果不差;不管怎么调PID的值,调节时间都很长,好像自然衰减那种,这是为什么,我们使用cRIO,闭环4ms,照理来说速度还可以啊,怎么效果这么差呢,求大神指导
    发表于 04-21 15:04

    临界阻尼单位斜坡响应调节时间怎样公式中的4.1怎样算出的

    我想问一下有那位高手知道自动控制原理第五版(胡寿松)中的二阶系统单位斜坡响应中临界阻尼单位斜坡响应的误差响应的调节时间近似公式中的4.1是怎样算出来的?
    发表于 03-19 09:27

    求上升时间调节时间,超调量 应该如何编程呢

    请问num = [10.5];den = [222 1];G = tf(num , den);kp = 15;G1 = feedback(G*kp , 1);step(G1);这个最简单的响应如果求上升时间调节时间,超调量 应该如何编程呢!请大神指导
    发表于 04-21 21:16

    生成表格如何只包含一个时间数据

    程序如图,但是运行后显示两列时间数据 ,如何才能只显示一列时间数据
    发表于 03-27 13:19

    时间数据处理

    大家好,我想请教一个问题,我需要把一段离散的时间数据转换成连续的时间数据,如图左边,第1秒到第10秒的数据都是100,第10秒到第20秒的数据都是200,第20秒到第30秒的
    发表于 04-09 09:16

    按键调节时钟的应用实验分享

    按键调节时钟的应用实验一、实验目的(一)进一步掌握数码管的显示控制;(二)进一步掌握单片机的定时器中断的应用;(三)进一步掌握定时器工作方式的控制及各种寄存器的应用;(四)掌握独立按键的使用方法。二
    发表于 11-18 08:18

    RTC时钟芯片在电子时钟中的作用

    。通过单片机等MCU驱动RTC模块,读取时间数据并交给显示模块进行展示,还可以加入按键调节时钟,可以说是一个非常全面的...
    发表于 02-11 07:12

    1602液晶显示可调节时间日期的数字时钟程序

    本文为大家分享一个可通过按键调节时间的1602液晶显示的数字时钟程序。
    发表于 01-08 08:32 1.8w次阅读

    时间数据流的并行检测算法

    针对现有长持续时间数据流检测算法的实时性差、检测精度与估计精度低的问题,提出长持续时间数据流的并行检测算法。基于共享数据结构的长持续时间数据流的并行检测算法中不同线程访问共享
    发表于 03-06 15:54 0次下载
    <b class='flag-5'>时间数据</b>流的并行检测算法

    单片机:按键调节时

    按键调节时钟的应用实验一、实验目的(一)进一步掌握数码管的显示控制;(二)进一步掌握单片机的定时器中断的应用;(三)进一步掌握定时器工作方式的控制及各种寄存器的应用;(四)掌握独立按键的使用方法。二
    发表于 11-11 11:06 76次下载
    单片机:<b class='flag-5'>按键</b><b class='flag-5'>调节时</b>钟

    活动时间数据记录器开源

    电子发烧友网站提供《活动时间数据记录器开源.zip》资料免费下载
    发表于 01-05 10:33 0次下载
    活动<b class='flag-5'>时间数据</b>记录器开源

    介绍双轴按键摇杆的使用

    摇杆一般在航模、电玩、遥控车、云台等设备上应用广泛,很多带有屏幕的设备也经常使用摇杆作为菜单选择的输入控制。
    的头像 发表于 06-14 15:47 2269次阅读
    介绍双轴<b class='flag-5'>按键</b><b class='flag-5'>摇杆</b>的使用