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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 10081|回復: 29
打印 上一主題 下一主題
收起左側

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

  [復制鏈接]
跳轉到指定樓層
樓主
ID:149801 發表于 2016-12-19 22:34 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
1000黑幣
功能:有LCD顯示,能夠切歌,能夠暫停音樂。
要求:C語言和匯編語言都要
也可以用我下面上傳的圖片編寫匯編和C語言

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

j.png

評分

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

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:149801 發表于 2016-12-19 22:34 | 只看該作者
求大神,急求
回復

使用道具 舉報

板凳
ID:149801 發表于 2016-12-19 22:36 | 只看該作者
http://www.zg4o1577.cn/bbs/dpj-60190-1.html  這個貼子有仿真相應的C語言,也可以按照上面的C語言來編寫匯編,只要能實現功能都行,求大神
回復

使用道具 舉報

地板
ID:98767 發表于 2016-12-20 00:10 | 只看該作者
看來兄弟真的很急,我看看有沒有合適的
回復

使用道具 舉報

5#
ID:98767 發表于 2016-12-20 00:11 | 只看該作者
看來兄弟真的很急,我找找看有沒有合適的給你
回復

使用道具 舉報

6#
ID:90663 發表于 2016-12-20 08:59 來自手機 | 只看該作者
QQ1034414222 發表于 2016-12-19 22:36
http://www.zg4o1577.cn/bbs/dpj-60190-1.html  這個貼子有仿真相應的C語言,也可以按照上面的C語言來編寫匯 ...

功能幫你調好了,壓縮文件在你前面發的一個帖子里。你可以看一下。
回復

使用道具 舉報

7#
ID:156135 發表于 2016-12-20 09:16 | 只看該作者
這個仿真圖文件能不能給我一份謝謝
回復

使用道具 舉報

8#
ID:149801 發表于 2016-12-20 09:49 | 只看該作者
kkfy888 發表于 2016-12-20 00:11
看來兄弟真的很急,我找找看有沒有合適的給你

確實很急,兄弟幫我找找
回復

使用道具 舉報

9#
ID:98767 發表于 2016-12-20 09:53 | 只看該作者
你想要1602顯示歌詞?播放MP3,單要51單片機實現不了啊
回復

使用道具 舉報

10#
ID:149801 發表于 2016-12-20 09:58 | 只看該作者
kkfy888 發表于 2016-12-20 09:53
你想要1602顯示歌詞?播放MP3,單要51單片機實現不了啊

只需要顯示下歌名就行了,然后切歌時換相應的歌名
回復

使用道具 舉報

11#
ID:149801 發表于 2016-12-20 09:59 | 只看該作者
QQ1034414222 發表于 2016-12-20 09:58
只需要顯示下歌名就行了,然后切歌時換相應的歌名

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

使用道具 舉報

12#
ID:156135 發表于 2016-12-20 11:34 | 只看該作者
我跟樓主也差不多,也是要做一個單片機音樂盒
回復

使用道具 舉報

13#
ID:156240 發表于 2016-12-20 15:25 | 只看該作者
做這個還需要音頻解碼器把
回復

使用道具 舉報

14#
ID:149094 發表于 2016-12-20 19:04 | 只看該作者
這個有點難度,不是馬上就弄的出來的,至少一個小時。
回復

使用道具 舉報

15#
ID:149801 發表于 2016-12-20 21:05 | 只看該作者
953164692 發表于 2016-12-20 19:04
這個有點難度,不是馬上就弄的出來的,至少一個小時。

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

使用道具 舉報

16#
ID:149801 發表于 2016-12-21 10:04 | 只看該作者
gmz 發表于 2016-12-20 09:16
這個仿真圖文件能不能給我一份謝謝

你可以去我另外一個貼下載
回復

使用道具 舉報

17#
ID:156871 發表于 2016-12-22 17:01 來自手機 | 只看該作者
幫不上你什么,只能幫你頂了
回復

使用道具 舉報

18#
ID:156920 發表于 2016-12-22 17:43 | 只看該作者
沒人給代碼嗎?
回復

使用道具 舉報

19#
ID:149801 發表于 2016-12-22 18:24 | 只看該作者

沒有啊
回復

使用道具 舉報

20#
ID:1 發表于 2016-12-23 03:46 | 只看該作者
你把這個稍微改一下就行了http://www.zg4o1577.cn/bbs/dpj-56107-1.html
回復

使用道具 舉報

21#
ID:57657 發表于 2017-2-19 08:00 | 只看該作者
wav的解碼算法是最簡單的了,只要能識別出頭文件部分的信息就能對數據進行簡單的一些運算后送到數模轉換器就行。
用sd卡或u盤的話就用znfat或fatfs的開源文件系統驅動程序源碼進行移植即可。

回復

使用道具 舉報

22#
ID:208751 發表于 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--); }                          //世上只有媽媽好 數據表        音譜,高中低音,音長 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                                        };                                                 //送別 數據表        音譜,高中低音,音長 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                                                                 };                                                 //新年好 數據表        音譜,高中低音,音長 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                                                                 };                                                 //童年 數據表        音譜,高中低音,音長 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延時函數,含有輸入參數 unsigned char t,無返回值  unsigned char 是定義無符號字符變量,其值的范圍是  0~255,大致延時長度 T=tx2+5 uS */ void DelayUs2x(unsigned char t) {             while(--t); } /* mS延時函數,含有輸入參數 unsigned char t,無返回值  unsigned char 是定義無符號字符變量,其值的范圍是 0~255*/ void DelayMs(unsigned char t) {             while(t--)     {              //大致延時1mS                 DelayUs2x(245);                 DelayUs2x(245);     } } /*節拍延時函數  各調1/4節拍時間:  調4/4  125ms  調2/4  250ms  調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; } /*歌曲處理函數*/ void Song() {         TH0=Timer0_H;//賦值定時器時間,決定頻率         TL0=Timer0_L;         TR0=1;       //打開定時器         delay(Time); //延時所需要的節拍                       } /*主函數*/ 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;                //設置為下降沿中斷         EX1=1;                //打開 外部中斷1 中斷         IT1=1;                //設置為下降沿中斷         PX1=1;                //設置 外部中斷1 為高優先級         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)                     {         //音樂數組長度 ,唱完從頭再來                                 led(MUSIC[i]);                                  k=MUSIC[i]+7*MUSIC[i+1]-1;//去音符振蕩頻率所需數據                     Timer0_H=FREQH[k];                     Timer0_L=FREQL[k];                     Time=MUSIC[i+2];          //節拍時長                    // 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)                     {         //音樂數組長度 ,唱完從頭再來                                 led(MUSIC1[i]);                                      k=MUSIC1[i]+7*MUSIC1[i+1]-1;//去音符振蕩頻率所需數據                     Timer0_H=FREQH[k];                     Timer0_L=FREQL[k];                     Time=MUSIC1[i+2];          //節拍時長                    // 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)                     {         //音樂數組長度 ,唱完從頭再來                                 led(MUSIC2[i]);                                     k=MUSIC2[i]+7*MUSIC2[i+1]-1;//去音符振蕩頻率所需數據                     Timer0_H=FREQH[k];                     Timer0_L=FREQL[k];                     Time=MUSIC2[i+2];          //節拍時長                    // 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)                     {         //音樂數組長度 ,唱完從頭再來                                 led(MUSIC3[i]);                                     k=MUSIC3[i]+7*MUSIC3[i+1]-1;//去音符振蕩頻率所需數據                     Timer0_H=FREQH[k];                     Timer0_L=FREQL[k];                     Time=MUSIC3[i+2];          //節拍時長                    // i=i+3;                     Song();                                 if(T!=W)                                         break;                 }                 }       }  } /* 頻譜函數*/ 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 中斷服務程序        用于暫停*/ void zhongduan0() interrupt 0 {        delay5ms();        //按鍵去抖         if(!key1)         {                 while(!key1);        //松手檢測                 while(key1&&T==W);        //檢測按鍵是否按下                 delay5ms();        //按鍵去抖                 while(key1&&T==W);        //檢測按鍵是否按下                 while(!key1&&T==W);        //松手檢測         } } /*外部中斷1 中斷服務程序*/ void zhongduan1() interrupt 2 {        delay5ms();        //按鍵去抖         if(!key2)         {                 if(W==3)                         W=0;                 else                         W++;                 while(!key2);        //松手檢測                 delay500ms();                         } }
回復

使用道具 舉報

23#
ID:257472 發表于 2017-12-4 23:52 | 只看該作者
請問怎么播放音樂
回復

使用道具 舉報

24#
ID:257503 發表于 2017-12-5 02:55 | 只看該作者
讓我看看線
回復

使用道具 舉報

25#
ID:255579 發表于 2017-12-14 09:29 | 只看該作者
http://www.zg4o1577.cn/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--); }                          //世上只有媽媽好 數據表        音譜,高中低音,音長 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                                        };                                                 //送別 數據表        音譜,高中低音,音長 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                                                                 };                                                 //新年好 數據表        音譜,高中低音,音長 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                                                                 };                                                 //童年 數據表        音譜,高中低音,音長 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延時函數,含有輸入參數 unsigned char t,無返回值  unsigned char 是定義無符號字符變量,其值的范圍是  0~255,大致延時長度 T=tx2+5 uS */ void DelayUs2x(unsigned char t) {             while(--t); } /* mS延時函數,含有輸入參數 unsigned char t,無返回值  unsigned char 是定義無符號字符變量,其值的范圍是 0~255*/ void DelayMs(unsigned char t) {             while(t--)     {              //大致延時1mS                 DelayUs2x(245);                 DelayUs2x(245);     } } /*節拍延時函數  各調1/4節拍時間:  調4/4  125ms  調2/4  250ms  調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; } /*歌曲處理函數*/ void Song() {         TH0=Timer0_H;//賦值定時器時間,決定頻率         TL0=Timer0_L;         TR0=1;       //打開定時器         delay(Time); //延時所需要的節拍                       } /*主函數*/ 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;                //設置為下降沿中斷         EX1=1;                //打開 外部中斷1 中斷         IT1=1;                //設置為下降沿中斷         PX1=1;                //設置 外部中斷1 為高優先級         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)                     {         //音樂數組長度 ,唱完從頭再來                                 led(MUSIC);                                  k=MUSIC+7*MUSIC[i+1]-1;//去音符振蕩頻率所需數據                     Timer0_H=FREQH[k];                     Timer0_L=FREQL[k];                     Time=MUSIC[i+2];          //節拍時長                    // 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)                     {         //音樂數組長度 ,唱完從頭再來                                 led(MUSIC1);                                      k=MUSIC1+7*MUSIC1[i+1]-1;//去音符振蕩頻率所需數據                     Timer0_H=FREQH[k];                     Timer0_L=FREQL[k];                     Time=MUSIC1[i+2];          //節拍時長                    // 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)                     {         //音樂數組長度 ,唱完從頭再來                                 led(MUSIC2);                                     k=MUSIC2+7*MUSIC2[i+1]-1;//去音符振蕩頻率所需數據                     Timer0_H=FREQH[k];                     Timer0_L=FREQL[k];                     Time=MUSIC2[i+2];          //節拍時長                    // 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)                     {         //音樂數組長度 ,唱完從頭再來                                 led(MUSIC3);                                     k=MUSIC3+7*MUSIC3[i+1]-1;//去音符振蕩頻率所需數據                     Timer0_H=FREQH[k];                     Timer0_L=FREQL[k];                     Time=MUSIC3[i+2];          //節拍時長                    // i=i+3;                     Song();                                 if(T!=W)                                         break;                 }                 }       }  } /* 頻譜函數*/ 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 中斷服務程序        用于暫停*/ void zhongduan0() interrupt 0 {        delay5ms();        //按鍵去抖         if(!key1)         {                 while(!key1);        //松手檢測                 while(key1&&T==W);        //檢測按鍵是否按下                 delay5ms();        //按鍵去抖                 while(key1&&T==W);        //檢測按鍵是否按下                 while(!key1&&T==W);        //松手檢測         } } /*外部中斷1 中斷服務程序*/ void zhongduan1() interrupt 2 {        delay5ms();        //按鍵去抖         if(!key2)         {                 if(W==3)                         W=0;                 else                         W++;                 while(!key2);        //松手檢測                 delay500ms();                         } }
回復

使用道具 舉報

26#
ID:264067 發表于 2017-12-20 10:59 | 只看該作者
方案設想.docx (14.09 KB, 下載次數: 7)
回復

使用道具 舉報

27#
ID:264310 發表于 2017-12-20 15:37 | 只看該作者
來個一藍牙模塊,單片機控制個藍牙模塊不簡單?
回復

使用道具 舉報

28#
ID:264310 發表于 2017-12-20 15:38 | 只看該作者
來個藍牙模塊就ok
回復

使用道具 舉報

29#
ID:264606 發表于 2017-12-21 08:52 | 只看該作者
我有程序   是AT89c51的  你能用上嗎??
回復

使用道具 舉報

30#
ID:264606 發表于 2017-12-21 08:55 | 只看該作者
我有程序
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: www国产成人免费观看视频,深夜成人网 | 成人一区二区三区 | 国产精品日韩高清伦字幕搜索 | 91黄在线观看 | 国产一在线观看 | 啪啪网页 | 亚洲精品视频免费观看 | 日本视频在线播放 | 久久久蜜臀国产一区二区 | 亚洲36d大奶网 | www.天堂av.com| 精品国产乱码久久久久久闺蜜 | 亚洲久久一区 | 亚洲一区二区免费 | 国产精品一区二区在线观看 | 日韩视频在线免费观看 | 精品在线一区 | 亚洲黄色av网站 | 久久久.com| 四虎影视免费在线 | 日韩精品在线观看一区二区三区 | 精品视频一区二区三区在线观看 | 日日草夜夜草 | 国产日本精品视频 | 久久久夜 | 精品欧美在线观看 | a中文在线视频 | 日韩午夜激情 | 亚洲精品视频久久 | 午夜久久av| 中文字幕亚洲精品 | 久久最新| 国产精品久久欧美久久一区 | 91精品久久 | 国产一区久久久 | 亚洲精品免费观看 | 欧美亚洲在线 | 日韩精品一区二区久久 | www.干| 日韩欧美不卡 | 成人在线免费观看视频 |