熱門: 51單片機(jī) | 24小時(shí)必答區(qū) | 單片機(jī)教程 | 單片機(jī)DIY制作 | STM32 | Cortex M3 | 模數(shù)電子 | 電子DIY制作 | 音響/功放 | 拆機(jī)樂園 | Arduino | 嵌入式OS | 程序設(shè)計(jì)
![]() |
發(fā)布時(shí)間: 2023-12-18 13:36
正文摘要:各位大神幫小弟看一下這個(gè)怎么改 弄了個(gè)STC32G12K128的音樂譜曲程序,但是這個(gè)目前只能重復(fù)播放,我想讓它播放完一次就停止,不知道該怎么高,求助各位大神! |
在單片機(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)生音樂和控制播放。 |
xiaoyuxinke 發(fā)表于 2023-12-19 00:27 你有說過按鍵嗎? |
謝謝,這次可以播放一次了,按一下鍵只播放一次,但是下次就不管用了,單片機(jī)上電只能按一下鍵放一次,再按就不管用了。 |
![]() 簡單粗暴 |
簡簡單單562 發(fā)表于 2023-12-18 13:53 不行,一但開始播放,加了標(biāo)志位也停不了 好像和定時(shí)器中斷有關(guān),具體我也沒看明白 |
簡簡單單562 發(fā)表于 2023-12-18 13:53 不管用,只要一開始播放,就不會(huì)停止,加了標(biāo)志位也不行 |
uchar play=1; ... if(play==1) { play = 0; music(); } |
設(shè)置一個(gè)標(biāo)志,表示正在播放,播放完成就清除,停止播放。 |
如果希望只運(yùn)行一次,可以定制一個(gè)變量標(biāo)志 , if(cishu<1) {執(zhí)行音樂代碼函數(shù), 然后cishu++;} ,這 樣下次循環(huán)到這里的時(shí)候,由于if(cishu不滿足小于1),所以不會(huì)繼續(xù)執(zhí)行音樂代碼。 |
Powered by 單片機(jī)教程網(wǎng)