標(biāo)題: 急求單片機(jī)音樂播放器匯編和C語言程序 [打印本頁]

作者: QQ1034414222    時間: 2016-12-19 22:34
標(biāo)題: 急求單片機(jī)音樂播放器匯編和C語言程序
功能:有LCD顯示,能夠切歌,能夠暫停音樂。
要求:C語言和匯編語言都要
也可以用我下面上傳的圖片編寫匯編和C語言

j.png (46.74 KB, 下載次數(shù): 176)

j.png

作者: QQ1034414222    時間: 2016-12-19 22:34
求大神,急求
作者: QQ1034414222    時間: 2016-12-19 22:36
http://www.torrancerestoration.com/bbs/dpj-60190-1.html  這個貼子有仿真相應(yīng)的C語言,也可以按照上面的C語言來編寫匯編,只要能實(shí)現(xiàn)功能都行,求大神
作者: kkfy888    時間: 2016-12-20 00:10
看來兄弟真的很急,我看看有沒有合適的
作者: kkfy888    時間: 2016-12-20 00:11
看來兄弟真的很急,我找找看有沒有合適的給你
作者: 摟貓睡覺的魚    時間: 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ā)的一個帖子里。你可以看一下。
作者: gmz    時間: 2016-12-20 09:16
這個仿真圖文件能不能給我一份謝謝
作者: QQ1034414222    時間: 2016-12-20 09:49
kkfy888 發(fā)表于 2016-12-20 00:11
看來兄弟真的很急,我找找看有沒有合適的給你

確實(shí)很急,兄弟幫我找找
作者: kkfy888    時間: 2016-12-20 09:53
你想要1602顯示歌詞?播放MP3,單要51單片機(jī)實(shí)現(xiàn)不了啊
作者: QQ1034414222    時間: 2016-12-20 09:58
kkfy888 發(fā)表于 2016-12-20 09:53
你想要1602顯示歌詞?播放MP3,單要51單片機(jī)實(shí)現(xiàn)不了啊

只需要顯示下歌名就行了,然后切歌時換相應(yīng)的歌名
作者: QQ1034414222    時間: 2016-12-20 09:59
QQ1034414222 發(fā)表于 2016-12-20 09:58
只需要顯示下歌名就行了,然后切歌時換相應(yīng)的歌名

兄弟可以看看我發(fā)的C語言版,看看功能,不是很復(fù)雜,拜托了
作者: gmz    時間: 2016-12-20 11:34
我跟樓主也差不多,也是要做一個單片機(jī)音樂盒
作者: zhyocean    時間: 2016-12-20 15:25
做這個還需要音頻解碼器把
作者: 953164692    時間: 2016-12-20 19:04
這個有點(diǎn)難度,不是馬上就弄的出來的,至少一個小時。
作者: QQ1034414222    時間: 2016-12-20 21:05
953164692 發(fā)表于 2016-12-20 19:04
這個有點(diǎn)難度,不是馬上就弄的出來的,至少一個小時。

可以幫下忙嘛兄弟,真的有點(diǎn)急
作者: QQ1034414222    時間: 2016-12-21 10:04
gmz 發(fā)表于 2016-12-20 09:16
這個仿真圖文件能不能給我一份謝謝

你可以去我另外一個貼下載
作者: 56155909    時間: 2016-12-22 17:01
幫不上你什么,只能幫你頂了
作者: wlzeagle    時間: 2016-12-22 17:43
沒人給代碼嗎?
作者: QQ1034414222    時間: 2016-12-22 18:24
wlzeagle 發(fā)表于 2016-12-22 17:44
問題解決了嗎

沒有啊

作者: admin    時間: 2016-12-23 03:46
你把這個稍微改一下就行了http://www.torrancerestoration.com/bbs/dpj-56107-1.html
作者: npn    時間: 2017-2-19 08:00
wav的解碼算法是最簡單的了,只要能識別出頭文件部分的信息就能對數(shù)據(jù)進(jìn)行簡單的一些運(yùn)算后送到數(shù)模轉(zhuǎn)換器就行。
用sd卡或u盤的話就用znfat或fatfs的開源文件系統(tǒng)驅(qū)動程序源碼進(jìn)行移植即可。


作者: huakai    時間: 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();                         } }
作者: 呂布SSSSSSSSS    時間: 2017-12-4 23:52
請問怎么播放音樂
作者: yxlclp17    時間: 2017-12-5 02:55
讓我看看線
作者: renqian4436    時間: 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();                         } }
作者: 高邋遢    時間: 2017-12-20 10:59
方案設(shè)想.docx (14.09 KB, 下載次數(shù): 7)

作者: 2630712030    時間: 2017-12-20 15:37
來個一藍(lán)牙模塊,單片機(jī)控制個藍(lán)牙模塊不簡單?
作者: 2630712030    時間: 2017-12-20 15:38
來個藍(lán)牙模塊就ok
作者: xinglilong    時間: 2017-12-21 08:52
我有程序   是AT89c51的  你能用上嗎??
作者: xinglilong    時間: 2017-12-21 08:55
我有程序




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1