找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

51单片机门铃教程-门铃唱歌

查看数: 454 | 评论数: 1 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2026-7-30 12:24

正文摘要:

51单片机门铃教程-发音原理 - 单片机学习教程(初学者入门)    在上面的帖子里,我们讲了发音原理,重点讲述了如何针对不同频率的声音,设置中断。下面我们讲音乐旋律篇。 你要弹琴,吹奏,需要乐谱,需 ...

回复

ID:1167191 发表于 2026-8-2 10:28
如果用T1中断控制音符节拍的话,那就需要的T1中断里设置一个中断标记,如tmr2ms, 中断发声时置1.
然后在下面的语句里加上一个判断,就可以用T1中断来控制节拍时间。这样更方便人理解程序中节拍的设置。
for (beat=0; beat<sizeof(TwoTigerNote); )
{
        while (!tmrflag); //
        tmrflag = 0;
       if (tmr2ms==1)
    {  tmr2ms=0;
        if (time == 0)
                {
                                note = TwoTigerNote[beat] - 1;
                                T0RH = NoteReload[note] >> 8;
                                T0RL = NoteReload[note];
                                beatTime = (TwoTigerBeat[beat] * 250) >> 2;  //这里也需要改一下,楼主的时间中断是2ms一次,所以250个中断才能表示500ms.

                                soundTime = beatTime - (beatTime >> 2);
                                enable = 1;
                                time++;
                }
        else
                {
                        if (time >= beatTime)
                                        {
                                                time = 0;
                                                beat++;
                                        }
                        else
                                        {
                                                time++;
                                                if (time == soundTime)
                                                        {
                                                                enable = 0;
                                                        }
                                        }
                        }
        }
}

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表