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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2764|回復: 2
收起左側

C51單片機多聲道播放音樂

[復制鏈接]
ID:886808 發表于 2021-3-11 13:30 來自觸屏版 | 顯示全部樓層 |閱讀模式
物理學中我們知道,頻率增加(或降低)一倍聲音就提高{或降低)8度。
因為單片機用的是二進制,左移或右移就是增減幾倍。所以頻率就同比例增減。
下面以播放《祝你平安》為例:其實實現起來非常簡單,多一個聲道就多加一個蜂鳴器或揚聲器。相應新加的播放時左右移就行了。
同樣道理,也能實現和弦等。具體單片機代碼如下:
#include "reg52.h"
unsigned char Count;
sbit _Speak =P3^4 ;                        //訊響器控制腳 
usbit _Speakr =P3^7;                        //新加訊響器控制腳
nsigned char code SONG[] ={      //祝你平安
0x26,0x20,0x20,0x20,0x20,0x20,0x26,0x10,0x20,0x10,0x20,0x80,0x26,0x20,0x30,0x20,
0x30,0x20,0x39,0x10,0x30,0x10,0x30,0x80,0x26,0x20,0x20,0x20,0x20,0x20,0x1c,0x20,
0x20,0x80,0x2b,0x20,0x26,0x20,0x20,0x20,0x2b,0x10,0x26,0x10,0x2b,0x80,0x26,0x20,
0x30,0x20,0x30,0x20,0x39,0x10,0x26,0x10,0x26,0x60,0x40,0x10,0x39,0x10,0x26,0x20,
0x30,0x20,0x30,0x20,0x39,0x10,0x26,0x10,0x26,0x80,0x26,0x20,0x2b,0x10,0x2b,0x10,
0x2b,0x20,0x30,0x10,0x39,0x10,0x26,0x10,0x2b,0x10,0x2b,0x20,0x2b,0x40,0x40,0x20,
0x20,0x10,0x20,0x10,0x2b,0x10,0x26,0x30,0x30,0x80,0x18,0x20,0x18,0x20,0x26,0x20,
0x20,0x20,0x20,0x40,0x26,0x20,0x2b,0x20,0x30,0x20,0x30,0x20,0x1c,0x20,0x20,0x20,
0x20,0x80,0x1c,0x20,0x1c,0x20,0x1c,0x20,0x30,0x20,0x30,0x60,0x39,0x10,0x30,0x10,
0x20,0x20,0x2b,0x10,0x26,0x10,0x2b,0x10,0x26,0x10,0x26,0x10,0x2b,0x10,0x2b,0x80,
0x18,0x20,0x18,0x20,0x26,0x20,0x20,0x20,0x20,0x60,0x26,0x10,0x2b,0x20,0x30,0x20,
0x30,0x20,0x1c,0x20,0x20,0x20,0x20,0x80,0x26,0x20,0x30,0x10,0x30,0x10,0x30,0x20,
0x39,0x20,0x26,0x10,0x2b,0x10,0x2b,0x20,0x2b,0x40,0x40,0x10,0x40,0x10,0x20,0x10,
0x20,0x10,0x2b,0x10,0x26,0x30,0x30,0x80,0x00,
                                  //路邊的野華不要采
0x30,0x1C,0x10,0x20,0x40,0x1C,0x10,0x18,0x10,0x20,0x10,0x1C,0x10,0x18,0x40,0x1C,
0x20,0x20,0x20,0x1C,0x20,0x18,0x20,0x20,0x80,0xFF,0x20,0x30,0x1C,0x10,0x18,0x20,
0x15,0x20,0x1C,0x20,0x20,0x20,0x26,0x40,0x20,0x20,0x2B,0x20,0x26,0x20,0x20,0x20,
0x30,0x80,0xFF,0x20,0x20,0x1C,0x10,0x18,0x10,0x20,0x20,0x26,0x20,0x2B,0x20,0x30,
0x20,0x2B,0x40,0x20,0x20,0x1C,0x10,0x18,0x10,0x20,0x20,0x26,0x20,0x2B,0x20,0x30,
0x20,0x2B,0x40,0x20,0x30,0x1C,0x10,0x18,0x20,0x15,0x20,0x1C,0x20,0x20,0x20,0x26,
0x40,0x20,0x20,0x2B,0x20,0x26,0x20,0x20,0x20,0x30,0x80,0x20,0x30,0x1C,0x10,0x20,
0x10,0x1C,0x10,0x20,0x20,0x26,0x20,0x2B,0x20,0x30,0x20,0x2B,0x40,0x20,0x15,0x1F,
0x05,0x20,0x10,0x1C,0x10,0x20,0x20,0x26,0x20,0x2B,0x20,0x30,0x20,0x2B,0x40,0x20,
0x30,0x1C,0x10,0x18,0x20,0x15,0x20,0x1C,0x20,0x20,0x20,0x26,0x40,0x20,0x20,0x2B,
0x20,0x26,0x20,0x20,0x20,0x30,0x30,0x20,0x30,0x1C,0x10,0x18,0x40,0x1C,0x20,0x20,
0x20,0x26,0x40,0x13,0x60,0x18,0x20,0x15,0x40,0x13,0x40,0x18,0x80,0x00,

};

void Time0_Init()
{
        TMOD = 0x01;
        IE          = 0x82;
        TH0  = 0xD8;
        TL0  = 0xEF;                //12MZ晶振,10ms
}

void Time0_Int() interrupt 1
{
        TH0 = 0xD8;
        TL0 = 0xEF;
        Count++;                        //長度加1
}

/*-------------------------------------------------
功能:1MS延時子程序
-------------------------------------------------*/
void Delay_xMs(unsigned int x)
{
    unsigned int i,j;
    for( i =0;i < x;i++ )
    {
        for( j =0;j<3;j++ );
    }
}

/*-------------------------------------------------
功能:歌曲播放子程序i為播放哪一段曲目
-------------------------------------------------*/
void Play_Song(unsigned char i)
{
        unsigned char Temp1,Temp2;
        unsigned int Addr;
        Count = 0;                                                //中斷計數器清0
        Addr = i * 217;
        while(1)
        {
                Temp1 = SONG[Addr++];
            if ( Temp1 == 0xFF )          //休止符
            {
                    TR0 = 0;
                    Delay_xMs(100);
            }
            else if ( Temp1 == 0x00 )          //歌曲結束符
            {
                    return;
            }
            else
            {
                    Temp2 = SONG[Addr++];
                    TR0 = 1;
                          while(1)
                          {
                            _Speak = ~_Speak;
                            Delay_xMs(Temp1);
                            if ( Temp2 == Count )
                            {
                                    Count = 0;
                                    break;
                           
                    }         
//以下為新加的聲道播放
        _Speakr = ~_Speakr;//新加的蜂鳴器或揚聲器發聲
                            Delay_xMs(Temp1>>1);//新加的發音聲道頻率,左移或右移。
                            if ( Temp2 == Count )
                            {
                                    Count = 0;
                                    break;
                            }

            }
        }
}
/*-------------------------------------------------
功能:主程序
-------------------------------------------------*/
void main()
{
        Time0_Init();                        //定時器0中斷初始化
        while(1)
        {
                Play_Song(0);                //播放
        }
}

評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

回復

使用道具 舉報

ID:610740 發表于 2021-3-11 15:00 來自觸屏版 | 顯示全部樓層
有錄音或者視頻嗎?聽聽會出來怎么樣的聲音
回復

使用道具 舉報

ID:886808 發表于 2021-3-11 15:46 來自觸屏版 | 顯示全部樓層
Tesla000 發表于 2021-3-11 15:00
有錄音或者視頻嗎?聽聽會出來怎么樣的聲音

我用耳機試的,就是一面是高音面是低音。高低之間最大我試到左右移功4位。現在眼睛不行了,焊點東西特費勁,加個三極管和蜂鳴器都短路不知多少回。后來直接在蜂鳴器上取兩個端點,加上地線,接在耳麥上試聽。因為兩邊聲音有高有低,聽以才可行發表。
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲啊v在线 | av网站在线免费观看 | 日本在线你懂的 | 午夜日韩视频 | 日日操夜夜干 | 国产精品美女一区二区三区 | 亚洲综合资源 | 欧美综合国产精品久久丁香 | 国产在线网址 | 自拍偷拍在线视频 | 亚洲精品视频在线观看视频 | 米奇成人网 | 黄色免费在线网址 | 最新黄色毛片 | 日本不卡免费新一二三区 | 国产高清精品在线 | 国产高清视频 | 天天躁日日躁狠狠很躁 | 毛片一级片 | 一级在线免费观看 | 黑人精品| 中文字幕一级毛片 | 最新中文字幕在线 | 久久国内精品 | 蜜桃av鲁一鲁一鲁一鲁 | 在线成人免费观看 | 欧美一区免费在线观看 | 日韩欧美一区在线 | 在线免费黄色小视频 | www.色午夜.com | 国精产品一区二区三区 | 日韩 欧美 二区 | 午夜精品久久久久久久久久久久 | 日韩视频一区二区 | 免费在线观看av网址 | 午夜精品在线观看 | a在线观看免费 | 国产精品免费一区二区三区四区 | 亚洲免费一区二区 | 亚洲视频精品在线 | 亚洲国产精品99久久久久久久久 |