标题: 单片机音乐谱曲程序,但是只能重复播放,如何让它播放完一次就停止 [打印本页]

作者: xiaoyuxinke    时间: 2023-12-18 13:36
标题: 单片机音乐谱曲程序,但是只能重复播放,如何让它播放完一次就停止
各位大神帮小弟看一下这个怎么改
弄了个STC32G12K128的音乐谱曲程序,但是这个目前只能重复播放,我想让它播放完一次就停止,不知道该怎么高,求助各位大神!

STC32G12K128-谱曲.zip (59.68 KB, 下载次数: 3)


作者: 简简单单562    时间: 2023-12-18 13:53
如果希望只运行一次,可以定制一个变量标志 ,
  if(cishu<1)   {执行音乐代码函数, 然后cishu++;}  ,这

样下次循环到这里的时候,由于if(cishu不满足小于1),所以不会继续执行音乐代码。
作者: coody_sz    时间: 2023-12-18 14:19
设置一个标志,表示正在播放,播放完成就清除,停止播放。
作者: hy47566398    时间: 2023-12-18 15:31
uchar play=1;
...

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

    music();
}
作者: xiaoyuxinke    时间: 2023-12-18 15:47
简简单单562 发表于 2023-12-18 13:53
如果希望只运行一次,可以定制一个变量标志 ,
  if(cishu

不管用,只要一开始播放,就不会停止,加了标志位也不行
作者: xiaoyuxinke    时间: 2023-12-18 15:54
简简单单562 发表于 2023-12-18 13:53
如果希望只运行一次,可以定制一个变量标志 ,
  if(cishu

不行,一但开始播放,加了标志位也停不了
好像和定时器中断有关,具体我也没看明白

作者: lkc8210    时间: 2023-12-18 16:52

简单粗暴

作者: xiaoyuxinke    时间: 2023-12-19 00:27
lkc8210 发表于 2023-12-18 16:52
简单粗暴

谢谢,这次可以播放一次了,按一下键只播放一次,但是下次就不管用了,单片机上电只能按一下键放一次,再按就不管用了。
作者: lkc8210    时间: 2023-12-19 08:43
xiaoyuxinke 发表于 2023-12-19 00:27
谢谢,这次可以播放一次了,按一下键只播放一次,但是下次就不管用了,单片机上电只能按一下键放一次,再 ...

你有说过按键吗?
作者: 傻12138逼    时间: 2023-12-20 20:50
在单片机音乐谱曲程序中,如果你希望让它播放完一次后停止,可以使用一个计数器或者标志位来控制播放次数,并在播放完成后停止程序执行。

下面是一个伪代码示例,展示如何实现播放一次后停止的逻辑:

c
// 假设这是播放音乐的函数
void playMusic() {
    // 播放音乐的代码逻辑,这里是示例
    // 可以是音符、频率等控制输出音乐的具体内容
    // 例如使用延时、定时器等方式播放音乐
}

int main() {
    int playCount = 0; // 初始化播放次数计数器为0

    // 循环播放音乐,直到播放次数达到1次
    while (playCount < 1) {
        playMusic(); // 调用播放音乐的函数

        // 播放完成后增加播放次数计数器
        playCount++;
    }

    // 播放完成后,可以执行停止播放或其他操作
    // 停止播放的代码可以放在这里

    // 停止后的其他程序逻辑或者空闲状态的处理

    return 0;
}
在这个示例中,playMusic() 函数用于播放音乐。通过 playCount 变量记录播放的次数,当播放次数达到1次后,程序将跳出循环停止播放,并执行停止播放后的其他操作。

根据你的具体单片机和音乐播放逻辑进行相应的调整和实现。实际实现可能需要使用特定的单片机指令、定时器或其他硬件功能来产生音乐和控制播放。




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1