0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

使用搖桿按鍵來調(diào)節(jié)時間數(shù)據(jù)

冬至子 ? 來源:TonyCode ? 作者:TonyCode ? 2023-06-15 17:31 ? 次閱讀

對于電子時鐘而言,雖然我們可以在程序中對RTC芯片寫入初始時間數(shù)據(jù),但按鍵調(diào)時功能也是必不可少的,它可以讓我們更加靈活的進(jìn)行時間調(diào)節(jié)校準(zhǔn)。

1

菜單顯示結(jié)構(gòu)

本實驗中顯示菜單結(jié)構(gòu)如下圖所示:

圖片

菜單結(jié)構(gòu)

其中menu00是首頁正常的時間日期顯示界面,然后通過搖桿按鍵切換頁面,進(jìn)行日期調(diào)節(jié)和時間調(diào)節(jié)選擇,然后對應(yīng)跳轉(zhuǎn)年月日和時分秒的調(diào)節(jié)頁面。

根據(jù)結(jié)構(gòu)圖,結(jié)合多級菜單思路,很容易得到搖桿按鍵與界面對應(yīng)的相關(guān)數(shù)據(jù)。

//定義按鍵操作數(shù)據(jù)
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開發(fā)板
  • 配套USB數(shù)據(jù)線
  • 公對母杜邦線
  • 面包板及配套連接線
  • OLED顯示屏
  • DS1302模塊
  • 雙軸按鍵搖桿模塊

3

實驗步驟

1.根據(jù)原理圖搭建電路圖。

DS1302模塊的VCC和GND連接Uno開發(fā)板的3.3V和GND。DS1302模塊的CLK、DAT、RST對應(yīng)連接Uno開發(fā)板的4、3、2引腳。OLED的VCC和GND分別連接開發(fā)板的3.3V和GND,OLED的SDA、SCL分別連接開發(fā)板的A4、A5引腳。雙軸按鍵搖桿模塊的VCC、GND分別連接開發(fā)板的5V、GND,模塊的X軸輸出、Y軸輸出分別連接開發(fā)板的模擬引腳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);//設(shè)置顯示位置
  oled.println("--CLOCK--");
  oled.setCursor(4, 25);//設(shè)置顯示位置
  oled.println(date);
  oled.setCursor(18, 50);//設(shè)置顯示位置
  oled.println(timer);
  oled.display(); // 開顯示
}
...
void loop() {
  keyValue = keyScan();

  if (keyValue != 0) //每發(fā)生一次有效按鍵就根據(jù)按鍵功能獲取對應(yīng)函數(shù)并執(zhí)行
  {
    switch (keyValue)//獲取按鍵對應(yīng)序號
    {
      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;//根據(jù)需要獲取對應(yīng)需要執(zhí)行的函數(shù)
    (*current)();//執(zhí)行獲取到的函數(shù)
  }

  if (menu == 0)//只有在首頁才進(jìn)行時間刷新
  {
    updatTime();
  }
}

3.連接開發(fā)板,設(shè)置好對應(yīng)端口號和開發(fā)板類型,進(jìn)行程序下載。

圖片

程序下載

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • DS1302
    +關(guān)注

    關(guān)注

    8

    文章

    448

    瀏覽量

    50544
  • RTC
    RTC
    +關(guān)注

    關(guān)注

    2

    文章

    515

    瀏覽量

    66125
  • SDA
    SDA
    +關(guān)注

    關(guān)注

    0

    文章

    124

    瀏覽量

    28046
  • OLED顯示屏
    +關(guān)注

    關(guān)注

    6

    文章

    213

    瀏覽量

    30599
  • GND
    GND
    +關(guān)注

    關(guān)注

    2

    文章

    527

    瀏覽量

    38596
收藏 人收藏

    評論

    相關(guān)推薦

    【外設(shè)移植】雙軸按鍵搖桿模塊Ai-M61開發(fā)板

    雙軸按鍵搖桿模塊采用金屬按鍵搖桿電位器,模塊包含兩路模擬輸出和一路數(shù)字輸出接口。
    的頭像 發(fā)表于 03-12 15:24 ?867次閱讀
    【外設(shè)移植】雙軸<b class='flag-5'>按鍵</b><b class='flag-5'>搖桿</b>模塊Ai-M61開發(fā)板

    如何將保存好的txt的時間數(shù)據(jù)讀出

    如題,怎么將保存的的txt文件中的時間數(shù)據(jù)讀出啊,用表格顯示的話,時間數(shù)據(jù)總是顯示0啊,怎么回事啊
    發(fā)表于 07-23 11:05

    時鐘調(diào)節(jié)時間的問題

    想用靜態(tài)變量實現(xiàn)調(diào)節(jié)時數(shù)碼管閃爍,但是不知道怎么的,調(diào)節(jié)的數(shù)碼閃動的頻率很快,還有相對不閃的數(shù)碼管很暗。求找出問題。指點。謝謝!show_time(17)只是做調(diào)試設(shè)的。void show_time
    發(fā)表于 08-01 22:13

    labview 用PID模塊 做 閉環(huán)控制,調(diào)節(jié)時間一直很長

    labview 用PID模塊做 閉環(huán)控制,怎么效果不差;不管怎么調(diào)PID的值,調(diào)節(jié)時間都很長,好像自然衰減那種,這是為什么,我們使用cRIO,閉環(huán)4ms,照理來說速度還可以啊,怎么效果這么差呢,求大神指導(dǎo)
    發(fā)表于 04-21 15:04

    臨界阻尼單位斜坡響應(yīng)調(diào)節(jié)時間怎樣公式中的4.1怎樣算出的

    我想問一下有那位高手知道自動控制原理第五版(胡壽松)中的二階系統(tǒng)單位斜坡響應(yīng)中臨界阻尼單位斜坡響應(yīng)的誤差響應(yīng)的調(diào)節(jié)時間近似公式中的4.1是怎樣算出來的?
    發(fā)表于 03-19 09:27

    求上升時間,調(diào)節(jié)時間,超調(diào)量 應(yīng)該如何編程呢

    請問num = [10.5];den = [222 1];G = tf(num , den);kp = 15;G1 = feedback(G*kp , 1);step(G1);這個最簡單的響應(yīng)如果求上升時間,調(diào)節(jié)時間,超調(diào)量 應(yīng)該如何編程呢!請大神指導(dǎo)
    發(fā)表于 04-21 21:16

    生成表格如何只包含一個時間數(shù)據(jù)

    程序如圖,但是運行后顯示兩列時間數(shù)據(jù) ,如何才能只顯示一列時間數(shù)據(jù)
    發(fā)表于 03-27 13:19

    時間數(shù)據(jù)處理

    大家好,我想請教一個問題,我需要把一段離散的時間數(shù)據(jù)轉(zhuǎn)換成連續(xù)的時間數(shù)據(jù),如圖左邊,第1秒到第10秒的數(shù)據(jù)都是100,第10秒到第20秒的數(shù)據(jù)都是200,第20秒到第30秒的
    發(fā)表于 04-09 09:16

    按鍵調(diào)節(jié)時鐘的應(yīng)用實驗分享

    按鍵調(diào)節(jié)時鐘的應(yīng)用實驗一、實驗?zāi)康模ㄒ唬┻M(jìn)一步掌握數(shù)碼管的顯示控制;(二)進(jìn)一步掌握單片機的定時器中斷的應(yīng)用;(三)進(jìn)一步掌握定時器工作方式的控制及各種寄存器的應(yīng)用;(四)掌握獨立按鍵的使用方法。二
    發(fā)表于 11-18 08:18

    RTC時鐘芯片在電子時鐘中的作用

    。通過單片機等MCU驅(qū)動RTC模塊,讀取時間數(shù)據(jù)并交給顯示模塊進(jìn)行展示,還可以加入按鍵調(diào)節(jié)時鐘,可以說是一個非常全面的...
    發(fā)表于 02-11 07:12

    1602液晶顯示可調(diào)節(jié)時間日期的數(shù)字時鐘程序

    本文為大家分享一個可通過按鍵調(diào)節(jié)時間的1602液晶顯示的數(shù)字時鐘程序。
    發(fā)表于 01-08 08:32 ?1.8w次閱讀

    時間數(shù)據(jù)流的并行檢測算法

    針對現(xiàn)有長持續(xù)時間數(shù)據(jù)流檢測算法的實時性差、檢測精度與估計精度低的問題,提出長持續(xù)時間數(shù)據(jù)流的并行檢測算法。基于共享數(shù)據(jù)結(jié)構(gòu)的長持續(xù)時間數(shù)據(jù)流的并行檢測算法中不同線程訪問共享
    發(fā)表于 03-06 15:54 ?0次下載
    <b class='flag-5'>時間數(shù)據(jù)</b>流的并行檢測算法

    單片機:按鍵調(diào)節(jié)時

    按鍵調(diào)節(jié)時鐘的應(yīng)用實驗一、實驗?zāi)康模ㄒ唬┻M(jìn)一步掌握數(shù)碼管的顯示控制;(二)進(jìn)一步掌握單片機的定時器中斷的應(yīng)用;(三)進(jìn)一步掌握定時器工作方式的控制及各種寄存器的應(yīng)用;(四)掌握獨立按鍵的使用方法。二
    發(fā)表于 11-11 11:06 ?76次下載
    單片機:<b class='flag-5'>按鍵</b><b class='flag-5'>調(diào)節(jié)時</b>鐘

    活動時間數(shù)據(jù)記錄器開源

    電子發(fā)燒友網(wǎng)站提供《活動時間數(shù)據(jù)記錄器開源.zip》資料免費下載
    發(fā)表于 01-05 10:33 ?0次下載
    活動<b class='flag-5'>時間數(shù)據(jù)</b>記錄器開源

    介紹雙軸按鍵搖桿的使用

    搖桿一般在航模、電玩、遙控車、云臺等設(shè)備上應(yīng)用廣泛,很多帶有屏幕的設(shè)備也經(jīng)常使用搖桿作為菜單選擇的輸入控制。
    的頭像 發(fā)表于 06-14 15:47 ?2070次閱讀
    介紹雙軸<b class='flag-5'>按鍵</b><b class='flag-5'>搖桿</b>的使用