久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 1266|回復(fù): 1
打印 上一主題 下一主題
收起左側(cè)

寫(xiě)了個(gè)數(shù)碼管時(shí)鐘的單片機(jī)代碼,但是不知道怎么實(shí)現(xiàn)按鍵可調(diào)的鬧鐘的功能

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:1105003 發(fā)表于 2023-12-18 21:00 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
用的板是德飛萊的mini80e開(kāi)發(fā)板,芯片是AT89S52,求助怎么實(shí)現(xiàn)鬧鐘功能

數(shù)碼管時(shí)鐘.zip

113.41 KB, 下載次數(shù): 4

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:404160 發(fā)表于 2023-12-19 11:22 | 只看該作者
通過(guò)使用定時(shí)器模塊來(lái)實(shí)現(xiàn)按鍵可調(diào)的鬧鐘功能。具體操作如下:

定義一個(gè)變量alarm_time用于存儲(chǔ)用戶設(shè)置的鬧鐘時(shí)間戳;
當(dāng)按下鬧鐘鍵時(shí),啟動(dòng)定時(shí)器并設(shè)置定時(shí)器的計(jì)時(shí)時(shí)間為alarm_time;
每次定時(shí)器中斷發(fā)生時(shí),判斷是否已經(jīng)超過(guò)設(shè)定的時(shí)間點(diǎn),如果超過(guò)了則響鈴提示;
如果沒(méi)有超過(guò)設(shè)定的時(shí)間點(diǎn),則重新設(shè)置定時(shí)器的計(jì)時(shí)時(shí)間為當(dāng)前時(shí)刻加上一段延時(shí)時(shí)間,以便下次定時(shí)器中斷時(shí)再次響鈴提示。
另外還需要添加一個(gè)按鈕來(lái)停止鬧鐘。當(dāng)按下該按鈕時(shí),終止定時(shí)器循環(huán)并將alarm_time置為-1表示取消鬧鐘。
同時(shí)需要添加一些顯示界面來(lái)讓用戶可以查看當(dāng)前的鬧鐘狀態(tài)以及修改鬧鐘時(shí)間等操作。
具體的代碼實(shí)現(xiàn)可以參考下面的示例:
// 定義一個(gè)變量保存用戶設(shè)置的鬧鐘時(shí)間戳
unsigned int alarm_time = -1; // 初始值為未設(shè)鬧鐘

void timer() {
    if (alarm_time != -1) {     // 若設(shè)置了鬧鐘,則響鈴提示
        if ((int)(millis()) > alarm_time) {         // 已到設(shè)定的時(shí)間點(diǎn)
            beep();                                // 響鈴提示
            alarm_time = -1;                       // 清空鬧鐘時(shí)間戳
        } else {
            delay(ALARM_INTERVAL);               // 延時(shí)一定時(shí)間后再次響鈴提醒
        }
    }
}

void setup() {
    pinMode(BUTTON, INPUT);           // 配置按扭傳感器引腳為輸入模式
    attachInterrupt(digitalPinToInterruptNumber(BUTTON), buttonPressed, FALLING);   // 注冊(cè)按鍵觸發(fā)的中斷函數(shù)
    setAlarmTime(-1);                      // 初始化鬧鐘時(shí)間戳為未設(shè)鬧鐘
}

void loop() {
    while (!buttonPressed());          // 直到按下按鈕才跳出循環(huán)體
    clearButtonPressedFlag();             // 釋放按鍵觸發(fā)的中斷標(biāo)志位
    setAlarmTime(userInputGetCurrentDateTime()); // 根據(jù)用戶的選擇設(shè)置新的鬧鐘時(shí)間
    startTimer();                              // 開(kāi)啟定時(shí)器循環(huán)
    displaySetText("");                       // 清除顯示屏上的內(nèi)容
    displayClearDisplay();                     // 清除顯示屏上所有的字符
    displayPrintf("%d", userInputGetCurrentDateTime().hour);
    displayPrintf(":%d", userInputGetCurrentDateTime().minute);
    displayPrintf(":%d", userInputGetCurrentDateTime().second);
    displayPrintf(" ");
    displayPrintf("%s", "Alarm Time");
    displayPrintf(" %d ", getAlarmTime());
    displayUpdateScreen();                    // 刷新顯示屏的內(nèi)容
    stopTimer();                              // 關(guān)閉定時(shí)器循環(huán)
}

void buttonPressed() {
    return !digitalRead(BUTTON);           // 按扭傳感器輸出高電平即為按下按鈕
}

void setAlarmTime(uint8_t time) {
    uint8_t old_value = alarm_time;
    alarm_time = time;
    if (old_value == -1 && alarm_time != -1) {     // 從未設(shè)鬧鐘變?yōu)樵O(shè)了鬧鐘
        startTimer();                              // 打開(kāi)定時(shí)器循環(huán)
    } else if (old_value != -1 && alarm_time == -1) { // 從有鬧鐘變成無(wú)鬧鐘
        stopTimer();                              // 關(guān)閉定時(shí)器循環(huán)
    }
}

void startTimer() {
    noInterrupts();
    TCNT0 = (F_CPU / ALARM_CLOCK)/PRESCALE;
    ICR1 |= _BV(ICIE1);
    interrupts();
}

void stopTimer() {
    noInterrupts();
    IC1R &= ~(_BV(ICEN1));
    interrupts();
}
以上是使用ATmega328p單片機(jī)的示例代碼,其他型號(hào)的單片機(jī)也可以根據(jù)自己的實(shí)際情況進(jìn)行相應(yīng)的調(diào)整

評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 回帖助人的獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 久久久久一区二区三区 | 欧美视频二区 | av网站在线免费观看 | 免费一级全黄少妇性色生活片 | 97人人视频 | 日日干夜夜草 | 国产色站| 国产一区二区三区在线 | 国产成人午夜 | 欧美一二 | 一区二区三区亚洲 | 精品免费 | 五月婷婷综合网 | 在线播放h| av资源站 | 久久一级片 | 人与拘一级a毛片 | 免费视频久久 | 欧美色综合天天久久综合精品 | 亚洲最大av网站 | 中文字幕在线观看免费视频 | 欧美激情第二页 | 久久久久97 | 欧美成人免费在线视频 | 久色91| 亚洲一级在线 | 色综合五月天 | 欧洲av在线 | 欧美香蕉视频 | 天天看天天射 | 日韩av在线看 | 伊人久久免费视频 | 一区二区国产在线 | 91性高潮久久久久久久久 | 日韩久久精品 | 亚洲免费视频一区 | 欧美在线观看一区二区三区 | 国产精品国产精品国产专区不片 | 成人免费毛片入口 | 成人黄色在线视频 | 国产香蕉在线 |