找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

帖子
查看: 10195|回復(fù): 29
收起左側(cè)

急求單片機音樂播放器匯編和C語言程序

  [復(fù)制鏈接]
ID:149801 發(fā)表于 2016-12-19 22:34 | 顯示全部樓層 |閱讀模式
1000黑幣
功能:有LCD顯示,能夠切歌,能夠暫停音樂。
要求:C語言和匯編語言都要
也可以用我下面上傳的圖片編寫匯編和C語言

j.png

評分

參與人數(shù) 1黑幣 +5 收起 理由
xqyyzsn + 5 樓主厲害啊

查看全部評分

相關(guān)帖子

回復(fù)

使用道具 舉報

ID:149801 發(fā)表于 2016-12-19 22:34 | 顯示全部樓層
求大神,急求
回復(fù)

使用道具 舉報

ID:149801 發(fā)表于 2016-12-19 22:36 | 顯示全部樓層
http://www.torrancerestoration.com/bbs/dpj-60190-1.html  這個貼子有仿真相應(yīng)的C語言,也可以按照上面的C語言來編寫匯編,只要能實現(xiàn)功能都行,求大神
回復(fù)

使用道具 舉報

ID:98767 發(fā)表于 2016-12-20 00:10 | 顯示全部樓層
看來兄弟真的很急,我看看有沒有合適的
回復(fù)

使用道具 舉報

ID:98767 發(fā)表于 2016-12-20 00:11 | 顯示全部樓層
看來兄弟真的很急,我找找看有沒有合適的給你
回復(fù)

使用道具 舉報

ID:90663 發(fā)表于 2016-12-20 08:59 來自觸屏版 | 顯示全部樓層
QQ1034414222 發(fā)表于 2016-12-19 22:36
http://www.torrancerestoration.com/bbs/dpj-60190-1.html  這個貼子有仿真相應(yīng)的C語言,也可以按照上面的C語言來編寫匯 ...

功能幫你調(diào)好了,壓縮文件在你前面發(fā)的一個帖子里。你可以看一下。
回復(fù)

使用道具 舉報

ID:156135 發(fā)表于 2016-12-20 09:16 | 顯示全部樓層
這個仿真圖文件能不能給我一份謝謝
回復(fù)

使用道具 舉報

ID:149801 發(fā)表于 2016-12-20 09:49 | 顯示全部樓層
kkfy888 發(fā)表于 2016-12-20 00:11
看來兄弟真的很急,我找找看有沒有合適的給你

確實很急,兄弟幫我找找
回復(fù)

使用道具 舉報

ID:98767 發(fā)表于 2016-12-20 09:53 | 顯示全部樓層
你想要1602顯示歌詞?播放MP3,單要51單片機實現(xiàn)不了啊
回復(fù)

使用道具 舉報

ID:149801 發(fā)表于 2016-12-20 09:58 | 顯示全部樓層
kkfy888 發(fā)表于 2016-12-20 09:53
你想要1602顯示歌詞?播放MP3,單要51單片機實現(xiàn)不了啊

只需要顯示下歌名就行了,然后切歌時換相應(yīng)的歌名
回復(fù)

使用道具 舉報

ID:149801 發(fā)表于 2016-12-20 09:59 | 顯示全部樓層
QQ1034414222 發(fā)表于 2016-12-20 09:58
只需要顯示下歌名就行了,然后切歌時換相應(yīng)的歌名

兄弟可以看看我發(fā)的C語言版,看看功能,不是很復(fù)雜,拜托了
回復(fù)

使用道具 舉報

ID:156135 發(fā)表于 2016-12-20 11:34 | 顯示全部樓層
我跟樓主也差不多,也是要做一個單片機音樂盒
回復(fù)

使用道具 舉報

ID:156240 發(fā)表于 2016-12-20 15:25 | 顯示全部樓層
做這個還需要音頻解碼器把
回復(fù)

使用道具 舉報

ID:149094 發(fā)表于 2016-12-20 19:04 | 顯示全部樓層
這個有點難度,不是馬上就弄的出來的,至少一個小時。
回復(fù)

使用道具 舉報

ID:149801 發(fā)表于 2016-12-20 21:05 | 顯示全部樓層
953164692 發(fā)表于 2016-12-20 19:04
這個有點難度,不是馬上就弄的出來的,至少一個小時。

可以幫下忙嘛兄弟,真的有點急
回復(fù)

使用道具 舉報

ID:149801 發(fā)表于 2016-12-21 10:04 | 顯示全部樓層
gmz 發(fā)表于 2016-12-20 09:16
這個仿真圖文件能不能給我一份謝謝

你可以去我另外一個貼下載
回復(fù)

使用道具 舉報

ID:156871 發(fā)表于 2016-12-22 17:01 來自觸屏版 | 顯示全部樓層
幫不上你什么,只能幫你頂了
回復(fù)

使用道具 舉報

ID:156920 發(fā)表于 2016-12-22 17:43 | 顯示全部樓層
沒人給代碼嗎?
回復(fù)

使用道具 舉報

ID:149801 發(fā)表于 2016-12-22 18:24 | 顯示全部樓層

沒有啊
回復(fù)

使用道具 舉報

ID:1 發(fā)表于 2016-12-23 03:46 | 顯示全部樓層
你把這個稍微改一下就行了http://www.torrancerestoration.com/bbs/dpj-56107-1.html
回復(fù)

使用道具 舉報

ID:57657 發(fā)表于 2017-2-19 08:00 | 顯示全部樓層
wav的解碼算法是最簡單的了,只要能識別出頭文件部分的信息就能對數(shù)據(jù)進行簡單的一些運算后送到數(shù)模轉(zhuǎn)換器就行。
用sd卡或u盤的話就用znfat或fatfs的開源文件系統(tǒng)驅(qū)動程序源碼進行移植即可。

回復(fù)

使用道具 舉報

ID:208751 發(fā)表于 2017-6-11 15:11 | 顯示全部樓層
#include<reg52.h>  #define        uint unsigned int #define uchar unsigned char       //硬件端口定義 sbit SPK=P2^0;  //定義音樂輸出端口 sbit key1=P3^2; //定義按鍵1 用于 暫停 sbit key2=P3^3; //定義按鍵2 用于 切換 sbit rs=P2^1;             sbit rw=P2^2;             sbit ep=P2^3;  void delay1(uint z) {   uint x,y;   for(x=z;x>0;x--)   for(y=110;y>0;y--); } void write_com(uchar com) {  rs=0;  rw=0;  ep=0;  P0=com;  delay1(2);  ep=1;  delay1(2);  ep=0;  delay1(2); } void write_dat(uchar dat) {  rs=1;  rw=0;  ep=0;  P0=dat;  delay1(2);  ep=1;  delay1(2);  ep=0;  delay1(2); } void write_zfc(uchar *p) {   while(*p!=0)   write_dat(*p++); } void init_1602() {  write_com(0x38);  write_com(0x01);  write_com(0x06);  write_com(0x0c); } unsigned char W=0,T;        //用于選擇音樂 unsigned char Timer0_H,Timer0_L,Time; void delay5ms(void)   //誤差 0us {     unsigned char a,b;     for(b=185;b>0;b--)         for(a=12;a>0;a--); } void delay500ms(void)   //誤差 0us {     unsigned char a,b,c;     for(c=205;c>0;c--)         for(b=116;b>0;b--)             for(a=9;a>0;a--); }                          //世上只有媽媽好 數(shù)據(jù)表        音譜,高中低音,音長 code unsigned char MUSIC[102]={        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                                        };                                                 //送別 數(shù)據(jù)表        音譜,高中低音,音長 code unsigned char MUSIC1[174]={         5,2,2,                3,2,1,                5,2,1,                1,3,4,          6,2,2,                1,3,2,                 5,2,4,      5,2,2,                1,2,1,                2,2,1,                3,2,2,                2,2,1,                 1,2,1,      2,2,8,      5,2,2,                3,2,1,                5,2,1,                1,3,3,                 7,2,1,           6,2,2,                1,3,2,                5,2,4,      5,2,2,                2,2,1,                 3,2,1,                4,2,3,                7,1,1,           1,2,8,      6,2,2,                1,3,2,                 1,3,4,      7,2,2,                6,2,1,                7,2,1,                1,3,4,      6,2,1,                 7,2,1,                1,3,1,                6,2,1,                6,2,1,                5,2,1,                3,2,1,                 1,2,1,           2,2,8,           5,2,2,                3,2,1,                5,2,1,                1,3,3,                 7,2,1,      6,2,2,                1,3,2,                5,2,4,      5,2,2,                2,2,1,                 3,2,1,                4,2,3,                7,1,1,           1,2,8                                                                 };                                                 //新年好 數(shù)據(jù)表        音譜,高中低音,音長 code unsigned char MUSIC2[90]={                 1,2,1,                1,2,1,                1,2,2,                5,1,2, 3,2,1,                3,2,1,                3,2,2,                1,2,2, 1,2,1,                3,2,1,                5,2,2,                5,2,2, 4,2,1,                3,2,1,                2,2,4,      2,2,1,                 3,2,1,                4,2,2,                4,2,2,      3,2,1,                 2,2,1,                3,2,2,                1,2,2,      1,2,1,                 3,2,1,                2,2,2,                5,1,2,      7,1,1,                 2,2,1,                1,2,4                                                                 };                                                 //童年 數(shù)據(jù)表        音譜,高中低音,音長 code unsigned char MUSIC3[423]={         5,1,1,                5,1,1,                3,1,1,                5,1,2,                3,1,1,                5,1,2,      6,1,1,                 6,1,1,                1,2,1,                6,1,2,                6,1,1,                1,2,2,      2,2,1,                2,2,1,                 3,2,1,                2,2,2,                5,1,1,                6,1,1,                5,1,1,      1,2,1,                1,2,1,                 5,1,1,                1,2,1,                1,2,1,                1,2,2,                1,2,1,      1,2,1,                5,1,2,                 1,2,1,                6,1,1,                5,1,1,                3,1,1,                2,1,1,      1,1,2,                3,1,1,                 5,1,1,                5,1,2,                5,1,1,                3,1,1,      6,1,1,                6,1,1,                1,2,1,                 6,1,1,                6,1,1,                6,1,1,                6,1,1,                5,1,1,      1,2,2,                1,2,1,                 1,2,1,                1,2,1,                6,1,1,                1,2,1,                6,1,1,      5,1,2,                0,2,1,                 3,1,1,                6,1,1,                1,2,1,                6,1,1,                5,1,1,      3,1,1,                2,1,1,                 3,1,1,                5,1,1,                5,1,2,                5,1,1,                3,1,1,      6,1,1,                6,1,1,                 1,2,1,                6,1,1,                6,1,1,                6,1,1,                6,1,1,                5,1,1,      1,2,2,                 1,2,1,                1,2,1,                1,2,1,                6,1,1,                6,1,1,                1,2,1,      2,2,2,                 0,2,1,                5,1,1,                2,2,1,                5,2,1,                2,2,2,      5,2,1,                5,2,2,                 5,2,1,                5,2,1,                5,2,1,                3,2,1,                2,2,1,      1,2,1,                1,2,2,                 6,1,1,                6,1,1,                1,2,1,                6,1,1,                1,2,1,      2,2,1,                2,2,1,                 2,2,1,                2,2,1,                2,2,1,                1,2,1,                3,2,1,                2,2,1,      2,2,8,       3,2,1,                3,2,2,                3,2,1,                3,2,2,                2,2,2,      1,2,1,                1,2,2,                 1,2,1,                2,2,1,                1,2,1,                6,1,1,                5,1,1,      5,1,1,                5,1,2,                 5,1,1,                6,1,1,                5,1,1,                2,2,1,                3,2,1,      1,2,8,           1,2,1,                 5,1,2,                1,2,1,                6,1,1,                5,1,1,                3,1,1,                2,1,1,      1,2,6,                 0,2,2                                                          };                          // 音階頻率表 高八位 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,                                 }; /*uS延時函數(shù),含有輸入?yún)?shù) unsigned char t,無返回值  unsigned char 是定義無符號字符變量,其值的范圍是  0~255,大致延時長度 T=tx2+5 uS */ void DelayUs2x(unsigned char t) {             while(--t); } /* mS延時函數(shù),含有輸入?yún)?shù) unsigned char t,無返回值  unsigned char 是定義無符號字符變量,其值的范圍是 0~255*/ void DelayMs(unsigned char t) {             while(t--)     {              //大致延時1mS                 DelayUs2x(245);                 DelayUs2x(245);     } } /*節(jié)拍延時函數(shù)  各調(diào)1/4節(jié)拍時間:  調(diào)4/4  125ms  調(diào)2/4  250ms  調(diào)3/4  187ms*/ void delay(uchar t) {     uchar i;         for(i=0;i<t;i++)             DelayMs(250);     TR0=0; } /*定時器0中斷*/ void TIM0_ISR() interrupt 1 {         TR0=0;               SPK=!SPK;         TH0=Timer0_H;         TL0=Timer0_L;         TR0=1; } /*歌曲處理函數(shù)*/ void Song() {         TH0=Timer0_H;//賦值定時器時間,決定頻率         TL0=Timer0_L;         TR0=1;       //打開定時器         delay(Time); //延時所需要的節(jié)拍                       } /*主函數(shù)*/ void led(unsigned char a); void main(void) {         unsigned int i;         unsigned char k;         TMOD|=0x01; //置定時器0工作方式1         EA=1;       //打開全局中斷         ET0=1;      //打開 定時器0 中斷         EX0=1;                //打開 外部中斷0 中斷         IT0=1;                //設(shè)置為下降沿中斷         EX1=1;                //打開 外部中斷1 中斷         IT1=1;                //設(shè)置為下降沿中斷         PX1=1;                //設(shè)置 外部中斷1 為高優(yōu)先級         init_1602();         while(1)     {                   //i=0;                                 if(W==0)                 {                           T=W;                         write_com(0x81);                          write_zfc("Only mother is good");                                         write_com(0xc4);                          write_zfc("in the world");                 for(i=0;i<100;i=i+3)                     {         //音樂數(shù)組長度 ,唱完從頭再來                                 led(MUSIC[i]);                                  k=MUSIC[i]+7*MUSIC[i+1]-1;//去音符振蕩頻率所需數(shù)據(jù)                     Timer0_H=FREQH[k];                     Timer0_L=FREQL[k];                     Time=MUSIC[i+2];          //節(jié)拍時長                    // i=i+3;                     Song();                                 if(T!=W)                                         break;                 }                 }                                 if(W==1)                 {                           T=W;                         write_com(0x01);                         write_com(0x80);                          write_zfc("   Farewell   ");                 for(i=0;i<174;i=i+3)                     {         //音樂數(shù)組長度 ,唱完從頭再來                                 led(MUSIC1[i]);                                      k=MUSIC1[i]+7*MUSIC1[i+1]-1;//去音符振蕩頻率所需數(shù)據(jù)                     Timer0_H=FREQH[k];                     Timer0_L=FREQL[k];                     Time=MUSIC1[i+2];          //節(jié)拍時長                    // i=i+3;                     Song();                                 if(T!=W)                                         break;                 }                 }                 if(W==2)                 {                           T=W;                         write_com(0x80);                          write_zfc(" Happy New Year ");                 for(i=0;i<90;i=i+3)                     {         //音樂數(shù)組長度 ,唱完從頭再來                                 led(MUSIC2[i]);                                     k=MUSIC2[i]+7*MUSIC2[i+1]-1;//去音符振蕩頻率所需數(shù)據(jù)                     Timer0_H=FREQH[k];                     Timer0_L=FREQL[k];                     Time=MUSIC2[i+2];          //節(jié)拍時長                    // i=i+3;                     Song();                                 if(T!=W)                                         break;                 }                 }                 if(W==3)                 {                           T=W;                         write_com(0x80);                          write_zfc("  The Childhood");                 for(i=0;i<423;i=i+3)                     {         //音樂數(shù)組長度 ,唱完從頭再來                                 led(MUSIC3[i]);                                     k=MUSIC3[i]+7*MUSIC3[i+1]-1;//去音符振蕩頻率所需數(shù)據(jù)                     Timer0_H=FREQH[k];                     Timer0_L=FREQL[k];                     Time=MUSIC3[i+2];          //節(jié)拍時長                    // i=i+3;                     Song();                                 if(T!=W)                                         break;                 }                 }       }  } /* 頻譜函數(shù)*/ void led(unsigned char a)         {         switch(a)         {                 case 0:P1=0xff;break;                 case 1:P1=0x7f;break;         //D1-D7亮                 case 2:P1=0x7e;break;         //D2-D7亮                 case 3:P1=0x7c;break;         //D3-D7亮                 case 4:P1=0x78;break;         //D4-D7亮                 case 5:P1=0x70;break;         //D5-D7亮                 case 6:P1=0x60;break;         //D6-D7亮                 case 7:P1=0x40;break;         //D7亮                 case 8:P1=0x00;break;         //全滅         }  } /*外部中斷0 中斷服務(wù)程序        用于暫停*/ void zhongduan0() interrupt 0 {        delay5ms();        //按鍵去抖         if(!key1)         {                 while(!key1);        //松手檢測                 while(key1&&T==W);        //檢測按鍵是否按下                 delay5ms();        //按鍵去抖                 while(key1&&T==W);        //檢測按鍵是否按下                 while(!key1&&T==W);        //松手檢測         } } /*外部中斷1 中斷服務(wù)程序*/ void zhongduan1() interrupt 2 {        delay5ms();        //按鍵去抖         if(!key2)         {                 if(W==3)                         W=0;                 else                         W++;                 while(!key2);        //松手檢測                 delay500ms();                         } }
回復(fù)

使用道具 舉報

ID:257472 發(fā)表于 2017-12-4 23:52 | 顯示全部樓層
請問怎么播放音樂
回復(fù)

使用道具 舉報

ID:257503 發(fā)表于 2017-12-5 02:55 | 顯示全部樓層
讓我看看線
回復(fù)

使用道具 舉報

ID:255579 發(fā)表于 2017-12-14 09:29 | 顯示全部樓層
http://www.torrancerestoration.com/bbs/dpj-56107-1.html


#include<reg52.h>  #define        uint unsigned int #define uchar unsigned char       //硬件端口定義 sbit SPK=P2^0;  //定義音樂輸出端口 sbit key1=P3^2; //定義按鍵1 用于 暫停 sbit key2=P3^3; //定義按鍵2 用于 切換 sbit rs=P2^1;             sbit rw=P2^2;             sbit ep=P2^3;  void delay1(uint z) {   uint x,y;   for(x=z;x>0;x--)   for(y=110;y>0;y--); } void write_com(uchar com) {  rs=0;  rw=0;  ep=0;  P0=com;  delay1(2);  ep=1;  delay1(2);  ep=0;  delay1(2); } void write_dat(uchar dat) {  rs=1;  rw=0;  ep=0;  P0=dat;  delay1(2);  ep=1;  delay1(2);  ep=0;  delay1(2); } void write_zfc(uchar *p) {   while(*p!=0)   write_dat(*p++); } void init_1602() {  write_com(0x38);  write_com(0x01);  write_com(0x06);  write_com(0x0c); } unsigned char W=0,T;        //用于選擇音樂 unsigned char Timer0_H,Timer0_L,Time; void delay5ms(void)   //誤差 0us {     unsigned char a,b;     for(b=185;b>0;b--)         for(a=12;a>0;a--); } void delay500ms(void)   //誤差 0us {     unsigned char a,b,c;     for(c=205;c>0;c--)         for(b=116;b>0;b--)             for(a=9;a>0;a--); }                          //世上只有媽媽好 數(shù)據(jù)表        音譜,高中低音,音長 code unsigned char MUSIC[102]={        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                                        };                                                 //送別 數(shù)據(jù)表        音譜,高中低音,音長 code unsigned char MUSIC1[174]={         5,2,2,                3,2,1,                5,2,1,                1,3,4,          6,2,2,                1,3,2,                 5,2,4,      5,2,2,                1,2,1,                2,2,1,                3,2,2,                2,2,1,                 1,2,1,      2,2,8,      5,2,2,                3,2,1,                5,2,1,                1,3,3,                 7,2,1,           6,2,2,                1,3,2,                5,2,4,      5,2,2,                2,2,1,                 3,2,1,                4,2,3,                7,1,1,           1,2,8,      6,2,2,                1,3,2,                 1,3,4,      7,2,2,                6,2,1,                7,2,1,                1,3,4,      6,2,1,                 7,2,1,                1,3,1,                6,2,1,                6,2,1,                5,2,1,                3,2,1,                 1,2,1,           2,2,8,           5,2,2,                3,2,1,                5,2,1,                1,3,3,                 7,2,1,      6,2,2,                1,3,2,                5,2,4,      5,2,2,                2,2,1,                 3,2,1,                4,2,3,                7,1,1,           1,2,8                                                                 };                                                 //新年好 數(shù)據(jù)表        音譜,高中低音,音長 code unsigned char MUSIC2[90]={                 1,2,1,                1,2,1,                1,2,2,                5,1,2, 3,2,1,                3,2,1,                3,2,2,                1,2,2, 1,2,1,                3,2,1,                5,2,2,                5,2,2, 4,2,1,                3,2,1,                2,2,4,      2,2,1,                 3,2,1,                4,2,2,                4,2,2,      3,2,1,                 2,2,1,                3,2,2,                1,2,2,      1,2,1,                 3,2,1,                2,2,2,                5,1,2,      7,1,1,                 2,2,1,                1,2,4                                                                 };                                                 //童年 數(shù)據(jù)表        音譜,高中低音,音長 code unsigned char MUSIC3[423]={         5,1,1,                5,1,1,                3,1,1,                5,1,2,                3,1,1,                5,1,2,      6,1,1,                 6,1,1,                1,2,1,                6,1,2,                6,1,1,                1,2,2,      2,2,1,                2,2,1,                 3,2,1,                2,2,2,                5,1,1,                6,1,1,                5,1,1,      1,2,1,                1,2,1,                 5,1,1,                1,2,1,                1,2,1,                1,2,2,                1,2,1,      1,2,1,                5,1,2,                 1,2,1,                6,1,1,                5,1,1,                3,1,1,                2,1,1,      1,1,2,                3,1,1,                 5,1,1,                5,1,2,                5,1,1,                3,1,1,      6,1,1,                6,1,1,                1,2,1,                 6,1,1,                6,1,1,                6,1,1,                6,1,1,                5,1,1,      1,2,2,                1,2,1,                 1,2,1,                1,2,1,                6,1,1,                1,2,1,                6,1,1,      5,1,2,                0,2,1,                 3,1,1,                6,1,1,                1,2,1,                6,1,1,                5,1,1,      3,1,1,                2,1,1,                 3,1,1,                5,1,1,                5,1,2,                5,1,1,                3,1,1,      6,1,1,                6,1,1,                 1,2,1,                6,1,1,                6,1,1,                6,1,1,                6,1,1,                5,1,1,      1,2,2,                 1,2,1,                1,2,1,                1,2,1,                6,1,1,                6,1,1,                1,2,1,      2,2,2,                 0,2,1,                5,1,1,                2,2,1,                5,2,1,                2,2,2,      5,2,1,                5,2,2,                 5,2,1,                5,2,1,                5,2,1,                3,2,1,                2,2,1,      1,2,1,                1,2,2,                 6,1,1,                6,1,1,                1,2,1,                6,1,1,                1,2,1,      2,2,1,                2,2,1,                 2,2,1,                2,2,1,                2,2,1,                1,2,1,                3,2,1,                2,2,1,      2,2,8,       3,2,1,                3,2,2,                3,2,1,                3,2,2,                2,2,2,      1,2,1,                1,2,2,                 1,2,1,                2,2,1,                1,2,1,                6,1,1,                5,1,1,      5,1,1,                5,1,2,                 5,1,1,                6,1,1,                5,1,1,                2,2,1,                3,2,1,      1,2,8,           1,2,1,                 5,1,2,                1,2,1,                6,1,1,                5,1,1,                3,1,1,                2,1,1,      1,2,6,                 0,2,2                                                          };                          // 音階頻率表 高八位 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,                                 }; /*uS延時函數(shù),含有輸入?yún)?shù) unsigned char t,無返回值  unsigned char 是定義無符號字符變量,其值的范圍是  0~255,大致延時長度 T=tx2+5 uS */ void DelayUs2x(unsigned char t) {             while(--t); } /* mS延時函數(shù),含有輸入?yún)?shù) unsigned char t,無返回值  unsigned char 是定義無符號字符變量,其值的范圍是 0~255*/ void DelayMs(unsigned char t) {             while(t--)     {              //大致延時1mS                 DelayUs2x(245);                 DelayUs2x(245);     } } /*節(jié)拍延時函數(shù)  各調(diào)1/4節(jié)拍時間:  調(diào)4/4  125ms  調(diào)2/4  250ms  調(diào)3/4  187ms*/ void delay(uchar t) {     uchar i;         for(i=0;i<t;i++)             DelayMs(250);     TR0=0; } /*定時器0中斷*/ void TIM0_ISR() interrupt 1 {         TR0=0;               SPK=!SPK;         TH0=Timer0_H;         TL0=Timer0_L;         TR0=1; } /*歌曲處理函數(shù)*/ void Song() {         TH0=Timer0_H;//賦值定時器時間,決定頻率         TL0=Timer0_L;         TR0=1;       //打開定時器         delay(Time); //延時所需要的節(jié)拍                       } /*主函數(shù)*/ void led(unsigned char a); void main(void) {         unsigned int i;         unsigned char k;         TMOD|=0x01; //置定時器0工作方式1         EA=1;       //打開全局中斷         ET0=1;      //打開 定時器0 中斷         EX0=1;                //打開 外部中斷0 中斷         IT0=1;                //設(shè)置為下降沿中斷         EX1=1;                //打開 外部中斷1 中斷         IT1=1;                //設(shè)置為下降沿中斷         PX1=1;                //設(shè)置 外部中斷1 為高優(yōu)先級         init_1602();         while(1)     {                   //i=0;                                 if(W==0)                 {                           T=W;                         write_com(0x81);                          write_zfc("Only mother is good");                                         write_com(0xc4);                          write_zfc("in the world");                 for(i=0;i<100;i=i+3)                     {         //音樂數(shù)組長度 ,唱完從頭再來                                 led(MUSIC);                                  k=MUSIC+7*MUSIC[i+1]-1;//去音符振蕩頻率所需數(shù)據(jù)                     Timer0_H=FREQH[k];                     Timer0_L=FREQL[k];                     Time=MUSIC[i+2];          //節(jié)拍時長                    // i=i+3;                     Song();                                 if(T!=W)                                         break;                 }                 }                                 if(W==1)                 {                           T=W;                         write_com(0x01);                         write_com(0x80);                          write_zfc("   Farewell   ");                 for(i=0;i<174;i=i+3)                     {         //音樂數(shù)組長度 ,唱完從頭再來                                 led(MUSIC1);                                      k=MUSIC1+7*MUSIC1[i+1]-1;//去音符振蕩頻率所需數(shù)據(jù)                     Timer0_H=FREQH[k];                     Timer0_L=FREQL[k];                     Time=MUSIC1[i+2];          //節(jié)拍時長                    // i=i+3;                     Song();                                 if(T!=W)                                         break;                 }                 }                 if(W==2)                 {                           T=W;                         write_com(0x80);                          write_zfc(" Happy New Year ");                 for(i=0;i<90;i=i+3)                     {         //音樂數(shù)組長度 ,唱完從頭再來                                 led(MUSIC2);                                     k=MUSIC2+7*MUSIC2[i+1]-1;//去音符振蕩頻率所需數(shù)據(jù)                     Timer0_H=FREQH[k];                     Timer0_L=FREQL[k];                     Time=MUSIC2[i+2];          //節(jié)拍時長                    // i=i+3;                     Song();                                 if(T!=W)                                         break;                 }                 }                 if(W==3)                 {                           T=W;                         write_com(0x80);                          write_zfc("  The Childhood");                 for(i=0;i<423;i=i+3)                     {         //音樂數(shù)組長度 ,唱完從頭再來                                 led(MUSIC3);                                     k=MUSIC3+7*MUSIC3[i+1]-1;//去音符振蕩頻率所需數(shù)據(jù)                     Timer0_H=FREQH[k];                     Timer0_L=FREQL[k];                     Time=MUSIC3[i+2];          //節(jié)拍時長                    // i=i+3;                     Song();                                 if(T!=W)                                         break;                 }                 }       }  } /* 頻譜函數(shù)*/ void led(unsigned char a)         {         switch(a)         {                 case 0:P1=0xff;break;                 case 1:P1=0x7f;break;         //D1-D7亮                 case 2:P1=0x7e;break;         //D2-D7亮                 case 3:P1=0x7c;break;         //D3-D7亮                 case 4:P1=0x78;break;         //D4-D7亮                 case 5:P1=0x70;break;         //D5-D7亮                 case 6:P1=0x60;break;         //D6-D7亮                 case 7:P1=0x40;break;         //D7亮                 case 8:P1=0x00;break;         //全滅         }  } /*外部中斷0 中斷服務(wù)程序        用于暫停*/ void zhongduan0() interrupt 0 {        delay5ms();        //按鍵去抖         if(!key1)         {                 while(!key1);        //松手檢測                 while(key1&&T==W);        //檢測按鍵是否按下                 delay5ms();        //按鍵去抖                 while(key1&&T==W);        //檢測按鍵是否按下                 while(!key1&&T==W);        //松手檢測         } } /*外部中斷1 中斷服務(wù)程序*/ void zhongduan1() interrupt 2 {        delay5ms();        //按鍵去抖         if(!key2)         {                 if(W==3)                         W=0;                 else                         W++;                 while(!key2);        //松手檢測                 delay500ms();                         } }
回復(fù)

使用道具 舉報

ID:264067 發(fā)表于 2017-12-20 10:59 | 顯示全部樓層
方案設(shè)想.docx (14.09 KB, 下載次數(shù): 7)
回復(fù)

使用道具 舉報

ID:264310 發(fā)表于 2017-12-20 15:37 | 顯示全部樓層
來個一藍牙模塊,單片機控制個藍牙模塊不簡單?
回復(fù)

使用道具 舉報

ID:264310 發(fā)表于 2017-12-20 15:38 | 顯示全部樓層
來個藍牙模塊就ok
回復(fù)

使用道具 舉報

ID:264606 發(fā)表于 2017-12-21 08:52 | 顯示全部樓層
我有程序   是AT89c51的  你能用上嗎??
回復(fù)

使用道具 舉報

ID:264606 發(fā)表于 2017-12-21 08:55 | 顯示全部樓層
我有程序
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表