對(duì)于電子時(shí)鐘而言,雖然我們可以在程序中對(duì)RTC芯片寫入初始時(shí)間數(shù)據(jù),但按鍵調(diào)時(shí)功能也是必不可少的,它可以讓我們更加靈活的進(jìn)行時(shí)間調(diào)節(jié)校準(zhǔn)。
1
菜單顯示結(jié)構(gòu)
本實(shí)驗(yàn)中顯示菜單結(jié)構(gòu)如下圖所示:
菜單結(jié)構(gòu)
其中menu00是首頁正常的時(shí)間日期顯示界面,然后通過搖桿按鍵切換頁面,進(jìn)行日期調(diào)節(jié)和時(shí)間調(diào)節(jié)選擇,然后對(duì)應(yīng)跳轉(zhuǎn)年月日和時(shí)分秒的調(diào)節(jié)頁面。
根據(jù)結(jié)構(gòu)圖,結(jié)合多級(jí)菜單思路,很容易得到搖桿按鍵與界面對(duì)應(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
實(shí)驗(yàn)材料
3
實(shí)驗(yàn)步驟
1.根據(jù)原理圖搭建電路圖。
DS1302模塊的VCC和GND連接Uno開發(fā)板的3.3V和GND。DS1302模塊的CLK、DAT、RST對(duì)應(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。
實(shí)驗(yàn)原理圖如下圖所示:
實(shí)驗(yàn)原理圖
2.代碼較長,部分截取如下,完整代碼請(qǐng)?jiān)谖哪┇@取。
...
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ù)按鍵功能獲取對(duì)應(yīng)函數(shù)并執(zhí)行
{
switch (keyValue)//獲取按鍵對(duì)應(yīng)序號(hào)
{
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ù)需要獲取對(duì)應(yīng)需要執(zhí)行的函數(shù)
(*current)();//執(zhí)行獲取到的函數(shù)
}
if (menu == 0)//只有在首頁才進(jìn)行時(shí)間刷新
{
updatTime();
}
}
3.連接開發(fā)板,設(shè)置好對(duì)應(yīng)端口號(hào)和開發(fā)板類型,進(jìn)行程序下載。
程序下載
-
DS1302
+關(guān)注
關(guān)注
8文章
451瀏覽量
51669 -
RTC
+關(guān)注
關(guān)注
2文章
616瀏覽量
68492 -
SDA
+關(guān)注
關(guān)注
0文章
125瀏覽量
28742 -
OLED顯示屏
+關(guān)注
關(guān)注
6文章
218瀏覽量
31409 -
GND
+關(guān)注
關(guān)注
2文章
544瀏覽量
39594
發(fā)布評(píng)論請(qǐng)先 登錄
如何將保存好的txt的時(shí)間數(shù)據(jù)讀出
時(shí)鐘調(diào)節(jié)時(shí)間的問題
labview 用PID模塊 來做 閉環(huán)控制,調(diào)節(jié)時(shí)間一直很長
臨界阻尼單位斜坡響應(yīng)調(diào)節(jié)時(shí)間怎樣公式中的4.1怎樣算出的
求上升時(shí)間,調(diào)節(jié)時(shí)間,超調(diào)量 應(yīng)該如何編程呢
生成表格如何只包含一個(gè)時(shí)間數(shù)據(jù)
時(shí)間數(shù)據(jù)處理
按鍵調(diào)節(jié)時(shí)鐘的應(yīng)用實(shí)驗(yàn)分享
1602液晶顯示可調(diào)節(jié)時(shí)間日期的數(shù)字時(shí)鐘程序
時(shí)間數(shù)據(jù)流的并行檢測算法

單片機(jī):按鍵調(diào)節(jié)時(shí)鐘

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

【CW32模塊使用】雙軸按鍵搖桿模塊

評(píng)論