找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 12486|回復: 6
收起左側

單片機蜂鳴器音樂程序

  [復制鏈接]
ID:80551 發(fā)表于 2015-5-19 23:05 | 顯示全部樓層 |閱讀模式
#include <reg51.h>
sbit      speaker=P1^2;  
unsigned char timer0h,timer0l,time;
        //世上只有媽媽好數(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
                                      };
       // 音階頻率表 高八位
code unsigned char FREQH[]={
                                0xF2,0xF3,0xF5,0xF5,0xF6,0xF7,0xF8,
                                0xF9,0xF9,0xFA,0xFA,0xFB,0xFB,0xFC,0xFC, //1,2,3,4,5,6,7,8,i
                                0xFC,0xFD,0xFD,0xFD,0xFD,0xFE,
                                0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFF,
                               } ;
         // 音階頻率表 低八位
code unsigned char FREQL[]={
                                 0x42,0xC1,0x17,0xB6,0xD0,0xD1,0xB6,
                                 0x21,0xE1,0x8C,0xD8,0x68,0xE9,0x5B,0x8F, //1,2,3,4,5,6,7,8,i
                                 0xEE,0x44, 0x6B,0xB4,0xF4,0x2D,
                                 0x47,0x77,0xA2,0xB6,0xDA,0xFA,0x16,
                                };
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;
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;
       timer0h=FREQH[k];
       timer0l=FREQL[k];
       time=sszymmh[i+2];
       i=i+3;
       song();
        }
      }
  }

評分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的積分獎勵!

查看全部評分

回復

使用道具 舉報

ID:262 發(fā)表于 2015-5-19 23:16 來自觸屏版 | 顯示全部樓層
問一下樓主有電路圖嗎?
回復

使用道具 舉報

ID:119461 發(fā)表于 2016-5-9 11:22 | 顯示全部樓層
還有別的歌嗎
回復

使用道具 舉報

ID:116886 發(fā)表于 2016-5-9 12:55 | 顯示全部樓層
#include <reg51.h> #define uchar unsigned char sbit speaker=P1^2;   uchar timer0h,timer0l,time;         //世上只有媽媽好數(shù)據(jù)表 uchar code 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                                        };        // 音階頻率表 高八位 uchar code FREQH[]={                                 0xF2,0xF3,0xF5,0xF5,0xF6,0xF7,0xF8,                                  0xF9,0xF9,0xFA,0xFA,0xFB,0xFB,0xFC,0xFC, //1,2,3,4,5,6,7,8,i                                 0xFC,0xFD,0xFD,0xFD,0xFD,0xFE,                                 0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFF,                                } ;          // 音階頻率表 低八位 uchar code  FREQL[]={                                  0x42,0xC1,0x17,0xB6,0xD0,0xD1,0xB6,                                  0x21,0xE1,0x8C,0xD8,0x68,0xE9,0x5B,0x8F, //1,2,3,4,5,6,7,8,i                                  0xEE,0x44, 0x6B,0xB4,0xF4,0x2D,                                   0x47,0x77,0xA2,0xB6,0xDA,0xFA,0x16,                                 }; /*延時函數(shù)*/ void delay(unsigned char t) {    uchar 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) {  uchar k,i;  TMOD=0x01; //置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;      timer0h=FREQH[k];      timer0l=FREQL[k];      time=sszymmh[i+2];      i=i+3;      song();     }   }  }
回復

使用道具 舉報

ID:118448 發(fā)表于 2016-5-9 16:15 | 顯示全部樓層
學習啦
回復

使用道具 舉報

ID:148351 發(fā)表于 2016-12-3 17:01 | 顯示全部樓層
哥們世上只有媽媽好數(shù)據(jù)表怎么弄根據(jù)什么得來的
回復

使用道具 舉報

ID:151642 發(fā)表于 2016-12-4 18:54 | 顯示全部樓層
借用啦   
回復

使用道具 舉報

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

本版積分規(guī)則

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

Powered by 單片機教程網

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