⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ly1.c

📁 用单片机及C51来实现“音乐播放器”的功能。能循环播放音乐及利用按键来选择歌曲。
💻 C
字号:
#include"lcd.h"
#define uchar unsigned char
#define uint unsigned int
uchar code *xdata music;
uchar code *xdata music_name;
uchar code tab[]={0xf8,0x94,0xf9,0x5c,0xfa,0x1a,0xfa,0x6a,0xfb,0x00,0xfb,0x8c,0xfc,0x0e,
	              0xfc,0x4a,0xfc,0xae,0xfd,0x08,0xfd,0x30,0xfd,0x80,0xfd,0xc6,0xfe,0x02,
	              0xfe,0x2a,0xfe,0x5c,0xfe,0x84,0xfe,0x98,0xfe,0xc0,0xfe,0xe8,0xfe,0x06};
uchar code music_name1[20]={0xc9,0xfa,0xc8,0xd5,0xbf,0xec,0xc0,0xd6,0x20,0x20,0x20,0x20,0x20,0x20,0xff};//生日快乐
uchar code music1[]={0x82,0x01,0x81,0x94,0x84,0xB4,0x04,0x04,0x82,0x01,0x81,0x94,
	                 0x84,0xC4,0xB4,0x04,0x82,0x01,0x81,0xF4,0xD4,0xB4,0xA4,0x94,
	                 0x04,0xE2,0x01,0xE1,0xD4,0xB4,0xC4,0xB4,0x04,0xff};	                        
uchar code music_name2[20]={0xc1,0xbd,0xd6,0xbb,0xc0,0xce,0xbb,0xa2,0x20,0x20,0x20,0x20,0x20,0x20,0xff};//两只老虎
uchar code music2[]={0x44,0x54,0x64,0x44,0x44,0x54,0x64,0x44,0x64,0x74,0x88,0x64,
	                 0x74,0x88,0x82,0x92,0x82,0x72,0x64,0x44,0x82,0x92,0x82,0x72,
	                 0x64,0x44,0x54,0x14,0x48,0x54,0x14,0x48,0xff};
uchar code music_name3[20]={0xd0,0xc2,0xc4,0xea,0xbf,0xec,0xc0,0xd6,0x20,0x20,0x20,0x20,0x20,0x20,0xff};//新年快乐
uchar code music3[]={0x42,0x42,0x44,0x14,0x02,0x62,0x62,0x64,0x44,0x04,0x42,0x62,
	                 0x84,0x84,0x02,0x72,0x62,0x54,0x04,0x52,0x62,0x74,0x74,0x02,
                     0x62,0x52,0x64,0x44,0x04,0x42,0x62,0x54,0x14,0x02,0x32,0x52,
                     0x44,0x04,0xff};
uchar code music_name4[20]={0xb9,0xfe,0xb0,0xcd,0xb9,0xb7,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xff};//哈巴狗
uchar code music4[]={0x42,0x42,0x42,0x52,0x64,0x04,0x62,0x62,0x62,0x72,0x84,0x04,
                     0x92,0x92,0x82,0x72,0x64,0x04,0x82,0x82,0x52,0x62,0x44,0x04,
                     0x42,0x42,0x42,0x52,0x84,0x04,0x62,0x62,0x62,0x72,0x84,0x04,
                     0x92,0x92,0x82,0x72,0x64,0x04,0x82,0x82,0x52,0x62,0x44,0x04,
                     0xff};
uchar code music_name5[20]={0xc0,0xbc,0xbb,0xa8,0xb2,0xdd,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xff};//兰花草
uchar code music_name6[20]={0xbc,0xc7,0xca,0xc2,0xb1,0xbe,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xff};//记事本
uchar code music_name7[20]={0xc2,0xcc,0xb5,0xba,0xd0,0xa1,0xd2,0xb9,0xc7,0xfa,0x20,0x20,0x20,0x20,0xff};//绿岛小夜曲
uchar code music_name8[20]={0xcd,0xe4,0xcd,0xe4,0xb5,0xc4,0xd4,0xc2,0xc1,0xc1,0x20,0x20,0x20,0x20,0xff};//弯弯的月亮
uchar code music_name9[20]={0xd7,0xa3,0xc4,0xe3,0xc6,0xbd,0xb0,0xb2,0x20,0x20,0x20,0x20,0x20,0x20,0xff};//祝你平安 
uchar code music_name10[20]={0xbb,0xd3,0xd7,0xc7,0xb3,0xe1,0xb0,0xf2,0xb5,0xc4,0xc5,0xae,0xba,0xa2,0xff};//挥着翅膀的女孩
uchar data count;
uchar data flag;
uchar data stl0;
uchar data sth0;
uchar data l;
uchar data key;
sbit Speaker=P3^1;
unsigned char bdata key;
//void delay_music(void);
void delay(int i);
void KeyScan(void);


main()
{
	uint i,k,j;
	TMOD=0x11;
	TH1=0xb9;
    TL1=0xb0;
	EA=1;
	ET0=1;
	ET1=1;
	check_lcd();
	flag=0;	  
	do
	{	
		Speaker=1;
        KeyScan();
        lcd_busy();
        w_c_add=0x80;
        for(i=0;i<6;i++)
        {
        	lcd_busy();
        	w_d_add=0x20;
        	w_d_add=0x20;
        }
	    lcd_show(music_name);	    
	    do
	    {
	    	P3|=0x01;
	        delay(1);
	        key=P1;
	    	j=0;
	        while(*(music+j)!=0xff)
	        {		        		                	
	        	k=*(music+j)&0x0f;
	    	    l=*(music+j)>>4;
	    	    sth0=tab[2*l];
	    	    stl0=tab[2*l+1];
	    	    TH0=sth0;
	    	    TL0=stl0;
	    	    TR0=1;
	            TR1=1;
	            do{}while(flag<k);         
	            j++;
              }                                
          }while(key!=0xfb); 
          TR0=0;
          TR1=0;                     
	  }while(1);
}
void delay(int i)
{
    int j,k;
	for(j=0;j<i;j++)
	{
	    k=0x0f;
		while(k--);
	}
}
void KeyScan(void)
{
    uchar k;
    while(1)
    {	
	    P3&=0xfe;
	    delay(1);
 	    k=P1;
	    if(k!=0xff)
	   {
	       delay(10);
	       P3&=0xfe;
	       delay(1);
	       k=P1;
	       while((P1&0xff)!=0xff);
	       if(k!=0xff)
	      {
	          switch(k)
		     {
		          case 0xfe:music_name=music_name1;music=music1;break;
			      case 0xfd:music_name=music_name2;music=music2;break;
			      case 0xfb:music_name=music_name3;music=music3;break;
			      case 0xf7:music_name=music_name4;music=music4;break;
			      case 0xef:music_name=music_name5;break;
			      case 0xdf:music_name=music_name6;break;
			      case 0xbf:music_name=music_name7;break;
			      case 0x7f:music_name=music_name8;break;
		      }
		   return;
		   }
		   	
	    }
	    P3|=0x01;
	    delay(1);
	    k=P1;
	    if(k!=0xff)
	   {
	       delay(10);
	       P3|=0x01;
	       delay(1);
	       k=P1;
	       while((P1&0xff)!=0xff);
	       if(k!=0xff)
	      {
	          switch(k)
		     {
		          case 0xfe:music_name=music_name9;break;
		  	      case 0xfd:music_name=music_name10;break;
		  	     			   
		      }
	      return ;
	      }
	  	  
	    }
    }	
}
void timer0(void) interrupt 1 using 1
{   
	TL0=stl0;
	TH0=sth0;
	Speaker=!Speaker;
}
void timer1(void) interrupt 3 using 2 
{  
    TH1=0xb9;
    TL1=0xb0;
    count++;
    if(count==10) 
     { 
       count=0;
       flag++;
     }
}





⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -