找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4970|回復: 2
收起左側(cè)

無源蜂鳴器歌曲演奏

[復制鏈接]
ID:73477 發(fā)表于 2015-2-10 00:32 | 顯示全部樓層 |閱讀模式
//此程序在硬件上調(diào)試通過//本程序的單片機晶振采用11.0592M
#include <reg51.h>
sbit      speaker=P1^2;  
unsigned char timer0h,timer0l,time;
// 音階頻率表

code unsigned int  OctaveFreTab[]={// ffff-921600/f
//      do(1)    re(2)               m(3)            fa(4)                so(5)          la(6)          si(7)
// 低 262Hz      294        330        349             392            440       494
// 中_524Hz     587        659        698             784           880       988
// 高_1046Hz  1175      1318       1397           1568        1760      1976
//超高2092Hz  2351                 2636       2794        3136       3520      3952
262,  294,  330, 349, 392,440,494,
524,  587,  659, 698, 784,880,988,
1046, 1175, 1318,1397,1568,1760,1976,
2092, 2351, 2636,2794,3136,3520,3952,

};


        //世上只有媽媽好數(shù)據(jù)表
code unsigned char sszymmh[]={        6,2,3,      5,2,1,      3,2,2, 5,2,2, 1,3,2, 6,2,1, 5,2,1,
                                      6,2,4,      3,2,2,      5,2,1, 6,2,1, 5,2,2, 3,2,2, 1,2,1,
                                      6,1,1,      5,2,1,      3,2,1, 2,2,4, 2,2,3, 3,2,1, 5,2,2,
                                      5,2,1,      6,2,1,      3,2,2, 2,2,2, 1,2,4, 5,2,3, 3,2,1,
                                      2,2,1,      1,2,1,      6,1,1, 1,2,1, 5,1,6, 0,0,0
                                      };   
void delay(unsigned char t)                //
   {
   unsigned char t1;
   unsigned long t2;
   for(t1=0;t1<t;t1++)
   {
    for(t2=0;t2<8000;t2++)
       {
        ;
        }
   }
   TR0=0;
}
void t0int() interrupt 1
{
TR0=0;
speaker=!speaker;
TH0=timer0h;
TL0=timer0l;
TR0=1;
}
void song()
{
TH0=timer0h;
TL0=timer0l;
TR0=1;
delay(time);                       
}

void main(void)
{
void delay(unsigned char t)                //
   {
   unsigned char t1;
   unsigned long t2;
   for(t1=0;t1<t;t1++)
   {
    for(t2=0;t2<8000;t2++)
       {
        ;
        }
   }
   TR0=0;
}
void t0int() interrupt 1
{
TR0=0;
speaker=!speaker;
TH0=timer0h;
TL0=timer0l;
TR0=1;
}
void song()
{
TH0=timer0h;
TL0=timer0l;
TR0=1;
delay(time);                       
}

void main(void)
{
unsigned char k,i;
unsigned int  f_temp;
TMOD=1; //置CT0定時工作方式1
EA=1;
ET0=1;//IE=0x82 //CPU開中斷,CT0開中斷
while(1)
      {
       i=0;  
       while(i<100){         //音樂數(shù)組長度 ,唱完從頭再來        
       k=sszymmh[i]+7*sszymmh[i+1]-1;
       f_temp =  921600/OctaveFreTab[k];
       f_temp  = 0xffff- f_temp  ;
       timer0h=f_temp  >>8;
       timer0l=f_temp&0xff;
       time=sszymmh[i+2];
       i=i+3;
       song();
           P3++;
        }
      }
  }



相關(guān)帖子

回復

使用道具 舉報

ID:204652 發(fā)表于 2017-5-25 11:28 | 顯示全部樓層
有圖嗎
回復

使用道具 舉報

ID:454125 發(fā)表于 2018-12-25 10:14 | 顯示全部樓層
可以播放其他音樂么
回復

使用道具 舉報

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

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復 返回頂部 返回列表