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

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 3909|回復(fù): 1
打印 上一主題 下一主題
收起左側(cè)

基于51單片機(jī)控制ysm3a3芯片的音樂(lè)播放器MP3的程序源碼

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
可以顯示播放時(shí)間,顯示音量和顯示歌名。不過(guò)歌名只能顯示3個(gè)中文字或者6和英文字符。


單片機(jī)源程序如下:
  1. #include "reg52.h"
  2. #include "delay.h"
  3. #include "12864.h"
  4. #include "ysm3a3.h"
  5. #include "stdio.h"

  6. #define FOSC 11059200L      //System frequency
  7. bit busy,SOE;
  8. unsigned int data1[4]={0xfd,0x02,0x04,0xdf};  //上一曲
  9. unsigned int data2[4]={0xfd,0x02,0x03,0xdf};  //下一曲
  10. unsigned int data3[4]={0xfd,0x02,0x05,0xdf};  //音量加
  11. unsigned int data4[4]={0xfd,0x02,0x06,0xdf};  //音量減
  12. unsigned int datak[4]={0xfd,0x02,0x0c,0xdf};  //暫停播放

  13. unsigned char data5[5]={0xfd,0x03,0x31,0x02,0xdf};  //設(shè)置音量為05/30
  14. unsigned char data6[5]={0xfd,0x03,0x33,0x00,0xdf};  //設(shè)置循環(huán)模式為
  15. unsigned int data7[7]={0xfd,0x04,0x41,0x00,0x01,0xdf};  //播放第一首歌

  16. unsigned int datac1[4]={0xfd,0x02,0x11,0xdf};  //查詢音量
  17. unsigned int datac4[4]={0xfd,0x02,0x1c,0xdf};  //當(dāng)前時(shí)間
  18. unsigned int datac6[4]={0xfd,0x02,0x1e,0xdf};  //查詢歌名

  19. unsigned char j;
  20. unsigned char ss[7];

  21. sbit key1=P1^0; //上一曲
  22. sbit key2=P1^1; //下一曲
  23. sbit key3=P1^2; //音量+
  24. sbit key4=P1^3; //音量-
  25. sbit key5=P1^4; //暫停播放

  26. void SendData(unsigned char dat)
  27. {    while (busy);           //Wait for the completion of the previous data is sent
  28.     ACC = dat;              //Calculate the even parity bit P (PSW.0)
  29.     busy = 1;
  30.     SBUF = ACC;             //Send data to UART buffer
  31. }
  32. void mp3init()
  33. {unsigned int i;
  34.     SCON = 0x50;            //8-bit variable UART
  35.     TMOD = 0x20;            //Set Timer1 as 8-bit auto reload mode
  36.     TH1 = TL1 = -(FOSC/12/32/9600); //Set auto-reload vaule
  37.     TR1 = 1;                //Timer1 start run
  38.     ES = 1;                 //Enable UART interrupt
  39.     EA = 1;                 //Open master interrupt switch

  40.         key1=key2=key3=key4=1;
  41.         for(i=0;i<5;i++)SendData(data5[i]);Delay(2600);                 //音量
  42.         for(i=0;i<5;i++)SendData(data6[i]);Delay(2600);                 //循環(huán)模式
  43.         for(i=0;i<6;i++)SendData(data7[i]);Delay(2600);                 //播放第xx首
  44. }       
  45. void mp3()
  46. {                unsigned int i,t,ge,shi,j0,j1,fen,miao;
  47.                 j=0;
  48.                 if(key1==0)
  49.                         {for(i=0;i<4;i++)SendData(data1[i]);DelayMs(100);}         //上一曲
  50.                 if(key2==0)
  51.                         {for(i=0;i<4;i++)SendData(data2[i]);DelayMs(100);}         //下一曲
  52.                 if(key3==0)
  53.                         {for(i=0;i<4;i++)SendData(data3[i]);DelayMs(100);}         //音量加
  54.                 if(key4==0)
  55.                         {for(i=0;i<4;i++)SendData(data4[i]);DelayMs(100);}         //音量減
  56.                 if(key5==0)
  57.                         {for(i=0;i<4;i++)SendData(datak[i]);DelayMs(100);}        //暫停播放
  58.                 for(i=0;i<4;i++)SendData(datac4[i]);DelayMs(60);                              //查詢時(shí)間
  59.                
  60.                 Show(0x9b,8,ss);                              //顯示收到的指令                       


  61.                 shi=ss[4]%16;j0=ss[4]/16;                  //ASCII嗎轉(zhuǎn)10進(jìn)制
  62.                 ge=ss[5]%16;j1=ss[5]/16;
  63.                 if(j0==6)shi=shi+9;
  64.                 if(j1==6)ge=ge+9;       
  65.                 t=shi*16+ge;
  66.                 Show_dig(0x8f,t);                 //顯示過(guò)濾和轉(zhuǎn)換的時(shí)間(s)       

  67.                 fen=t/60;miao=t%60;
  68.                 Show_dig(0x8b,fen);
  69.                 Show(0x8c,2,"分");
  70.                 Show_dig(0x8d,miao);
  71.                 Show(0x8e,2,"秒");

  72. }
  73. void mp3name()
  74. {                  unsigned int i;
  75.                 unsigned char xx[5];
  76.                 j=0;
  77.                 if(key1==0)
  78.                         {for(i=0;i<4;i++)SendData(data1[i]);DelayMs(100);}         //上一曲
  79.                 if(key2==0)
  80.                         {for(i=0;i<4;i++)SendData(data2[i]);DelayMs(100);}         //下一曲
  81.                 if(key3==0)
  82.                         {for(i=0;i<4;i++)SendData(data3[i]);DelayMs(100);}         //音量加
  83.                 if(key4==0)
  84.                         {for(i=0;i<4;i++)SendData(data4[i]);DelayMs(100);}         //音量減
  85.                 if(key5==0)
  86.                         {for(i=0;i<4;i++)SendData(datak[i]);DelayMs(100);}        //暫停播放
  87.                 for(i=0;i<4;i++)SendData(datac6[i]);DelayMs(200);                                        //查詢歌名               
  88.                 Show(0x9b,8,ss);                              //顯示收到的指令
  89.                 xx[0]=ss[2];
  90.                 xx[1]=ss[3];
  91.                 xx[2]=ss[4];
  92.                 xx[3]=ss[5];                                                                                                                                  //暫存歌名
  93.                 xx[4]=ss[6];
  94.                 xx[5]=ss[7];
  95.                 Show(0x8b,4,"名:");
  96.                 Show(0x8d,6,xx);
  97.                                        
  98. }
  99. void mp3yinliang()
  100. {                unsigned int i,t,ge,shi,j0,j1;
  101.                 j=0;
  102.                 if(key1==0)
  103.                         {for(i=0;i<4;i++)SendData(data1[i]);DelayMs(100);}         //上一曲
  104.                 if(key2==0)
  105.                         {for(i=0;i<4;i++)SendData(data2[i]);DelayMs(100);}         //下一曲
  106.                 if(key3==0)
  107.                         {for(i=0;i<4;i++)SendData(data3[i]);DelayMs(100);}         //音量加
  108.                 if(key4==0)
  109.                         {for(i=0;i<4;i++)SendData(data4[i]);DelayMs(100);}         //音量減
  110.                 if(key5==0)
  111.                         {for(i=0;i<4;i++)SendData(datak[i]);DelayMs(100);}        //暫停播放
  112.                 for(i=0;i<4;i++)SendData(datac1[i]);DelayMs(100);                                    //查詢音量

  113.                 Show(0x9b,8,ss);                              //顯示收到的指令                       

  114.                 shi=ss[2]%16;j0=ss[2]/16;                  //ASCII嗎轉(zhuǎn)10進(jìn)制
  115.                 ge=ss[3]%16;j1=ss[3]/16;
  116.                 if(j0==6)shi=shi+9;
  117.                 if(j1==6)ge=ge+9;       
  118.                 t=shi*16+ge;

  119.                 Show(0x8b,6,"音量:");
  120.                 Show_dig(0x8e,t);
  121.                 Show(0x8f,2,"  ");                                                              //顯示過(guò)濾和轉(zhuǎn)換的音量       


  122. }



  123. void Uart_Isr() interrupt 4 using 1
  124. ……………………

  125. …………限于本文篇幅 余下代碼請(qǐng)從51黑下載附件…………
復(fù)制代碼

所有資料51hei提供下載:
mp3 12864 TEA5767(顯示時(shí)間,歌名和音量).rar (1.62 KB, 下載次數(shù): 44)


評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

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

使用道具 舉報(bào)

沙發(fā)
ID:662370 發(fā)表于 2019-12-12 13:28 | 只看該作者
里面的音樂(lè)內(nèi)容是什么?
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 日韩欧美久久 | 中文字幕精品视频在线观看 | 欧美激情综合 | 国产羞羞视频在线观看 | 97精品视频在线 | 亚洲欧美国产毛片在线 | 亚洲精品一区二区三区在线 | 91精品国产综合久久久久久丝袜 | 成人亚洲一区 | 蜜桃臀av一区二区三区 | 国产福利91精品一区二区三区 | 美女毛片| 亚洲精品福利在线 | 黄免费在线 | 免费视频一区二区三区在线观看 | 最新av中文字幕 | 日韩一区二区免费视频 | 男女深夜网站 | 久久夜色精品国产 | 亚洲精品1区 | 色男人的天堂 | 久在线| 亚洲综合在| 一级aaaa毛片 | 伊人在线 | 欧美9999| 国内自拍偷拍一区 | 国产亚洲精品精品国产亚洲综合 | 97视频在线观看免费 | 亚洲网址 | 欧美中文字幕一区二区 | 色婷婷亚洲一区二区三区 | 亚洲高清中文字幕 | 国产精品地址 | 国内精品视频在线观看 | 成人精品一区二区 | 四虎永久免费黄色影片 | 欧美三级电影在线播放 | 国产成人综合在线 | 国产成人精品一区二三区在线观看 | 国产欧美日韩一区二区三区 |