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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 9498|回復: 23
收起左側

51單片機蜂鳴器如何演奏音樂 求幫助

  [復制鏈接]
回帖獎勵 50 黑幣 回復本帖可獲得 10 黑幣獎勵! 每人限 2 次(中獎概率 50%)
ID:417679 發表于 2018-11-5 01:13 | 顯示全部樓層 |閱讀模式
使用51單片機 如何讓蜂鳴器演奏音樂

評分

參與人數 1黑幣 +5 收起 理由
蘆葦劫 + 5 贊一個!

查看全部評分

回復

使用道具 舉報

ID:310519 發表于 2018-11-5 08:16 | 顯示全部樓層
控制振動的頻率和振動時間的長短。
回復

使用道具 舉報

ID:419294 發表于 2018-11-8 13:05 | 顯示全部樓層
#include <reg51.h>
#define uint unsigned int
#define uchar unsigned char
sbit beep = P1^5;
uchar code SONG_TONE[]={212,212,190,212,159,169,212,212,190,212,142,159,
212,212,106,126,159,169,190,119,119,126,159,142,159,0};

uchar code SONG_LONG[]={9,3,12,12,12,24,9,3,12,12,12,24,
9,3,12,12,12,12,12,9,3,12,12,12,24,0};

//延時
void DelayMS(uint x)
{
uchar t;
while(x--) for(t=0;t<120;t++);
}

void PlayMusic()
{
uint i=0,j,k;
while(SONG_LONG[i]!=0||SONG_TONE[i]!=0)
{ //播放各個音符,SONG_LONG 為拍子長度
    for(j=0;j<SONG_LONG[i]*20;j++)
{
    beep=~beep;
//SONG_TONE 延時表決定了每個音符的頻率
    for(k=0;k<SONG_TONE[i]/3;k++);
}
    DelayMS(10);
    i++;
}
}


void main()
{

beep=0;
while(1)
{
PlayMusic(); //播放生日快樂
DelayMS(500); //播放完后暫停一段時間
}
}
復制代碼





/*兩只蝴蝶歌曲*/  
/*******************************************/
#include <reg51.h>             // 這是  單片機音樂代碼生成器  生成的代碼
#define uchar unsigned char
sbit beepIO=P1^5;                 // 輸出 為 P1.5  可以修改 成 其它 IO 口
uchar m,n;
uchar code T[49][2]={{0,0},
{0xF8,0x8B},{0xF8,0xF2},{0xF9,0x5B},{0xF9,0xB7},{0xFA,0x14},{0xFA,0x66},{0xFA,0xB9},{0xFB,0x03},{0xFB,0x4A},{0xFB,0x8F},{0xFB,0xCF},{0xFC,0x0B},
{0xFC,0x43},{0xFC,0x78},{0xFC,0xAB},{0xFC,0xDB},{0xFD,0x08},{0xFD,0x33},{0xFD,0x5B},{0xFD,0x81},{0xFD,0xA5},{0xFD,0xC7},{0xFD,0xE7},{0xFE,0x05},
{0xFE,0x21},{0xFE,0x3C},{0xFE,0x55},{0xFE,0x6D},{0xFE,0x84},{0xFE,0x99},{0xFE,0xAD},{0xFE,0xC0},{0xFE,0x02},{0xFE,0xE3},{0xFE,0xF3},{0xFF,0x02},
{0xFF,0x10},{0xFF,0x1D},{0xFF,0x2A},{0xFF,0x36},{0xFF,0x42},{0xFF,0x4C},{0xFF,0x56},{0xFF,0x60},{0xFF,0x69},{0xFF,0x71},{0xFF,0x79},{0xFF,0x81}
};
uchar code music[][2]={{0,4},
{23,4},{21,4},{23,16},{23,4},{21,4},{23,4},{21,4},{19,16},{16,4},{19,4},{21,8},{21,4},{23,4},{21,4},{19,4},{16,4},{19,4},{14,24},
{23,4},{21,4},{23,16},{23,4},{21,4},{23,4},{21,4},{19,24},{16,4},{19,4},{21,8},{21,4},{23,4},{21,4},{19,4},{16,4},{19,4},{21,24},
{23,4},{21,4},{23,16},{23,4},{21,4},{23,4},{21,4},{19,16},{16,4},{19,4},{21,8},{21,4},{23,4},{21,4},{19,4},{16,4},{19,4},{14,24},
{23,4},{26,4},{26,16},{26,4},{28,4},{26,4},{23,24},{21,4},{23,4},{21,8},{21,4},{23,4},{21,4},{19,4},{16,4},{16,2},{19,2},{19,24},{0,20},
{26,4},{26,4},{28,4},{31,4},{30,4},{30,4},{28,4},{23,4},{21,4},{21,4},{23,16},{0,4},{23,4},{23,4},{26,4},{28,8},{28,12},{16,4},{23,4},{21,4},
{21,24},{23,4},{26,4},{26,4},{23,4},{26,8},{0,4},{31,8},{30,4},{28,4},{30,4},{23,8},{0,4},{28,4},{28,4},{30,4},{28,4},{26,4},{23,4},{21,8},{23,4},{21,4},{23,4},{26,16},
{0xFF,0xFF}};
void delay(uchar p)
{
    uchar i,j;
    for(;p>0;p--)
    for(i=181;i>0;i--)
    for(j=181;j>0;j--);
}
void pause()
{
    uchar i,j;
    for(i=150;i>0;i--)
    for(j=150;j>0;j--);
}
void T0_int() interrupt 1
{
beepIO=!beepIO;
TH0=T[m][0]; TL0=T[m][1];
}
void main()
{
uchar i=0;
TMOD=0x01;  EA=1; ET0=1;
while(1)
      {
        m=music[i][0];n=music[i][1];
           if(m==0x00)
             {TR0=0;delay(n);i++;}
           else if(m==0xFF)
             {TR0=0;delay(30);i=0;}
           else if(m==music[i+1][0])
             {TR0=1;delay(n);TR0=0;pause();i++;}
           else
             {TR0=1;delay(n);i++;}
      }
}

評分

參與人數 1黑幣 +10 收起 理由
蘆葦劫 + 10 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

ID:423203 發表于 2018-11-8 19:50 | 顯示全部樓層
應該是控制振動的頻率和振動時間的長短。
回復

使用道具 舉報

ID:423342 發表于 2018-11-8 23:19 | 顯示全部樓層
建立聲音庫,輸入想要播放的音調排列,運用函數輸出就行
回復

使用道具 舉報

ID:424408 發表于 2018-11-11 12:54 | 顯示全部樓層
用pwm控制輸出的信號頻率
回復

使用道具 舉報

ID:408178 發表于 2018-11-11 15:34 | 顯示全部樓層
無源的蜂鳴器會控制頻率讓他響就夠了,想讓他出音樂去網上找一個51樂譜軟件,
回復

使用道具 舉報

ID:413355 發表于 2018-11-11 15:46 | 顯示全部樓層

建立一個聲音庫,把你準備放的東西存在里面輸入想要播放的音調排列,再運用函數把它輸出就ok
回復

使用道具 舉報

ID:424615 發表于 2018-11-11 19:02 | 顯示全部樓層
音色就是控制頻率大小,不同音色“DO RE MI FA SO LA XI ”對應不同的頻率,頻率定好后然后調用就可以了
回復

使用道具 舉報

ID:111634 發表于 2018-11-12 08:50 | 顯示全部樓層
本帖最后由 zl2168 于 2018-11-13 23:28 編輯

給你介紹幾個播放音樂參考案例
實例31  單音頻輸出  簡易電子琴

Proteus仿真一下,確認有效。 實例31 簡易電子琴.rar (28.34 KB, 下載次數: 25) 簡易電子琴.jpg

實例13  雙音頻輸出 實例13 雙音頻輸出.rar (26.69 KB, 下載次數: 9) 雙音頻輸出.jpg 救護車警車鈴聲輸出.rar (27.04 KB, 下載次數: 10)
實例75  定時器控制播放生日快樂歌 實例75 定時器控制播放生日快樂歌.rar (26.96 KB, 下載次數: 15)
實例76 定時器控制播放世上只有媽媽好歌曲.rar (27.15 KB, 下載次數: 12)
生日快樂歌.jpg
世上只有媽媽好.jpg
還有報警聲輸出,在《實例78  功能齊全的電子密碼鎖》中
電子密碼鎖1.rar (1.13 MB, 下載次數: 4)
電子密碼鎖Proteus仿真.jpg
以上摘自張志良編著《80C51單片機仿真設計實例教程——基于Keil CProteus》清華大學出版社ISBN 978-7-302-41682-1內有常用的單片機應用100案例,用于仿真實驗操作,電路與程序真實可靠可信可行。
回復

使用道具 舉報

ID:424820 發表于 2018-11-12 09:16 | 顯示全部樓層
網上找代碼復制就可以了
回復

使用道具 舉報

ID:424964 發表于 2018-11-12 14:10 | 顯示全部樓層
可以,pwm加積分電路或者dac
回復

使用道具 舉報

ID:411940 發表于 2018-11-13 11:07 | 顯示全部樓層
建立一個聲音庫,輸入想要播放的音調排列,運用函數輸出就行
回復

使用道具 舉報

ID:111634 發表于 2018-11-14 08:29 | 顯示全部樓層
實例75  定時器控制播放生日快樂歌   世上只有媽媽好
回復

使用道具 舉報

ID:426249 發表于 2018-11-14 11:19 | 顯示全部樓層
試試去網上找一下
回復

使用道具 舉報

ID:422661 發表于 2018-11-17 12:23 | 顯示全部樓層
回復

使用道具 舉報

ID:428171 發表于 2018-11-17 14:00 | 顯示全部樓層
控制振動 的頻率就可以,這個可以通過控制電流電壓來實現
回復

使用道具 舉報

ID:428195 發表于 2018-11-17 14:50 | 顯示全部樓層
需要用到音調,音頻,節拍
回復

使用道具 舉報

ID:428212 發表于 2018-11-17 15:07 | 顯示全部樓層
不同音調對應不同頻率,在實際樂曲中還有不同音調對應的播放時間問題。
回復

使用道具 舉報

ID:428212 發表于 2018-11-17 15:07 | 顯示全部樓層
正好一起學習學習。
回復

使用道具 舉報

ID:428260 發表于 2018-11-17 16:32 | 顯示全部樓層
如果是無源的蜂鳴器,只需控制0(低電平)和1(高電平)的賦值頻率就行了。賦值周期基本就是一條語句執行的周期,可以根據CPU的頻率計算出來。
回復

使用道具 舉報

ID:428270 發表于 2018-11-17 16:45 | 顯示全部樓層
#include "reg51.h"

code unsigned int yindiao[] = {0,120,106,94,89,79,71,62};
code unsigned int jiepai[] = {0,523,587,659,698,784,880,988};
code unsigned int yy[]={′ËÇøóò¿é×Ô¼oìî′ê};

void play(unsigned int yd,unsigned int jp);
void delay(unsigned int a);

sbit beep=P2^2;
void main(void)
{
        unsigned int i;
        while (1)
        {
                for(i=0;i<13;i++)
                {
                        play(yindiao[yy[i]],jiepai[yy[i]]);
                        delay(1000);
                }
        delay(4000);
        }
}
void play(unsigned int yd,unsigned int jp)
{   
unsigned int i,j;
        for (i=0;i<jp;i++)
        {
                beep=0;
                for (j=0;j<yd;j++);
                beep=1;
                for (j=0;j<yd;j++);
        }
}
void delay(unsigned int a)  
{
        unsigned int b;
        while(a--)
                for(b=0;b<115;b++);
}

回復

使用道具 舉報

ID:423511 發表于 2018-11-17 22:28 | 顯示全部樓層
相似性 發表于 2018-11-17 16:45
#include "reg51.h"

code unsigned int yindiao[] = {0,120,106,94,89,79,71,62};

yy[]={    };   括號里是什么數字?你發的有點亂碼,能給我發一下嗎?
回復

使用道具 舉報

ID:421917 發表于 2018-11-19 21:53 | 顯示全部樓層
改變頻率
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 欧美在线观看一区 | av色站 | 久久香蕉精品视频 | 日韩快播电影网 | 日日干夜夜操天天操 | 精品福利在线视频 | 免费毛片网 | 亚洲91| 欧美日韩国产一区二区三区 | 亚洲色图插插插 | 国产日韩一区二区 | 91操操操| 在线观看免费黄色片 | 欧美精品一区二区免费视频 | 亚洲精品视频免费看 | 国产精品久久久久久久久免费软件 | 超碰在线播 | 日韩av一区二区在线观看 | 中国毛片免费 | 国产精品观看 | 中文字幕一区二区三区四区 | 色婷婷av一区二区三区软件 | 97色伦网| 一区二区三区四区在线免费观看 | 国产精品视频播放 | 亚洲精品日韩综合观看成人91 | 亚洲手机在线 | 国产91久久精品一区二区 | 国产精品久久久久久久7电影 | 亚洲欧美视频 | 亚洲欧美国产精品久久 | 国产精品久久亚洲 | 国产精品久久久久久婷婷天堂 | 久久精品国产一区二区电影 | 国产情侣在线看 | 亚洲国产精品久久 | 国产一区二区三区在线 | 国产精品久久在线观看 | 一区二区在线 | 日韩高清一区 | 欧美成人一区二免费视频软件 |