找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索

單片機(jī)音樂譜曲程序,但是只能重復(fù)播放,如何讓它播放完一次就停止

查看數(shù): 1810 | 評論數(shù): 9 | 收藏 0
關(guān)燈 | 提示:支持鍵盤翻頁<-左 右->
    組圖打開中,請稍候......
發(fā)布時(shí)間: 2023-12-18 13:36

正文摘要:

各位大神幫小弟看一下這個(gè)怎么改 弄了個(gè)STC32G12K128的音樂譜曲程序,但是這個(gè)目前只能重復(fù)播放,我想讓它播放完一次就停止,不知道該怎么高,求助各位大神!

回復(fù)

ID:1105250 發(fā)表于 2023-12-20 20:50
在單片機(jī)音樂譜曲程序中,如果你希望讓它播放完一次后停止,可以使用一個(gè)計(jì)數(shù)器或者標(biāo)志位來控制播放次數(shù),并在播放完成后停止程序執(zhí)行。

下面是一個(gè)偽代碼示例,展示如何實(shí)現(xiàn)播放一次后停止的邏輯:

c
// 假設(shè)這是播放音樂的函數(shù)
void playMusic() {
    // 播放音樂的代碼邏輯,這里是示例
    // 可以是音符、頻率等控制輸出音樂的具體內(nèi)容
    // 例如使用延時(shí)、定時(shí)器等方式播放音樂
}

int main() {
    int playCount = 0; // 初始化播放次數(shù)計(jì)數(shù)器為0

    // 循環(huán)播放音樂,直到播放次數(shù)達(dá)到1次
    while (playCount < 1) {
        playMusic(); // 調(diào)用播放音樂的函數(shù)

        // 播放完成后增加播放次數(shù)計(jì)數(shù)器
        playCount++;
    }

    // 播放完成后,可以執(zhí)行停止播放或其他操作
    // 停止播放的代碼可以放在這里

    // 停止后的其他程序邏輯或者空閑狀態(tài)的處理

    return 0;
}
在這個(gè)示例中,playMusic() 函數(shù)用于播放音樂。通過 playCount 變量記錄播放的次數(shù),當(dāng)播放次數(shù)達(dá)到1次后,程序?qū)⑻鲅h(huán)停止播放,并執(zhí)行停止播放后的其他操作。

根據(jù)你的具體單片機(jī)和音樂播放邏輯進(jìn)行相應(yīng)的調(diào)整和實(shí)現(xiàn)。實(shí)際實(shí)現(xiàn)可能需要使用特定的單片機(jī)指令、定時(shí)器或其他硬件功能來產(chǎn)生音樂和控制播放。
ID:161164 發(fā)表于 2023-12-19 08:43
xiaoyuxinke 發(fā)表于 2023-12-19 00:27
謝謝,這次可以播放一次了,按一下鍵只播放一次,但是下次就不管用了,單片機(jī)上電只能按一下鍵放一次,再 ...

你有說過按鍵嗎?
ID:61140 發(fā)表于 2023-12-19 00:27

謝謝,這次可以播放一次了,按一下鍵只播放一次,但是下次就不管用了,單片機(jī)上電只能按一下鍵放一次,再按就不管用了。
ID:161164 發(fā)表于 2023-12-18 16:52

簡單粗暴
ID:61140 發(fā)表于 2023-12-18 15:54
簡簡單單562 發(fā)表于 2023-12-18 13:53
如果希望只運(yùn)行一次,可以定制一個(gè)變量標(biāo)志 ,
  if(cishu

不行,一但開始播放,加了標(biāo)志位也停不了
好像和定時(shí)器中斷有關(guān),具體我也沒看明白
ID:61140 發(fā)表于 2023-12-18 15:47
簡簡單單562 發(fā)表于 2023-12-18 13:53
如果希望只運(yùn)行一次,可以定制一個(gè)變量標(biāo)志 ,
  if(cishu

不管用,只要一開始播放,就不會(huì)停止,加了標(biāo)志位也不行
ID:1012735 發(fā)表于 2023-12-18 15:31
uchar play=1;
...

if(play==1)
{
    play = 0;

    music();
}
ID:1034262 發(fā)表于 2023-12-18 14:19
設(shè)置一個(gè)標(biāo)志,表示正在播放,播放完成就清除,停止播放。
ID:274834 發(fā)表于 2023-12-18 13:53
如果希望只運(yùn)行一次,可以定制一個(gè)變量標(biāo)志 ,
  if(cishu<1)   {執(zhí)行音樂代碼函數(shù), 然后cishu++;}  ,這

樣下次循環(huán)到這里的時(shí)候,由于if(cishu不滿足小于1),所以不會(huì)繼續(xù)執(zhí)行音樂代碼。

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

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

快速回復(fù) 返回頂部 返回列表