欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

基于51單片機控制ysm3a3芯片的音樂播放器MP3的程序源碼

[復制鏈接]
跳轉到指定樓層
樓主
可以顯示播放時間,顯示音量和顯示歌名。不過歌名只能顯示3個中文字或者6和英文字符。


單片機源程序如下:
  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};  //設置音量為05/30
  14. unsigned char data6[5]={0xfd,0x03,0x33,0x00,0xdf};  //設置循環模式為
  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};  //當前時間
  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);                 //循環模式
  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);                              //查詢時間
  59.                
  60.                 Show(0x9b,8,ss);                              //顯示收到的指令                       


  61.                 shi=ss[4]%16;j0=ss[4]/16;                  //ASCII嗎轉10進制
  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);                 //顯示過濾和轉換的時間(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嗎轉10進制
  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,"  ");                                                              //顯示過濾和轉換的音量       


  122. }



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

  125. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼

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


評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

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

使用道具 舉報

沙發
ID:662370 發表于 2019-12-12 13:28 | 只看該作者
里面的音樂內容是什么?
回復

使用道具 舉報

無效樓層,該帖已經被刪除
您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

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

Powered by 單片機教程網

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