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

📄 ly1.c

📁 利用Atmel89C51、按键、蜂鸣器设计能播放十首歌曲的音乐播放系统
💻 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,0xcf,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 music5[]={0x42,0x82,0x82,0x82,0x86,0x72,0x63,0x71,0x62,0x52,0x48,0xB2,
                     0xB2,0xB2,0xB2,0xB6,0xA2,0x83,0xA1,0xA2,0x92,0x88,0x82,0xB2,
                     0xB2,0xA2,0x86,0x72,0x63,0x71,0x62,0x52,0x44,0x12,0x02,0x12,
                     0x62,0x02,0x52,0x46,0x82,0x73,0x61,0x52,0x32,0x48,0xff};
uchar code music_name6[20]={0xbc,0xc7,0xca,0xc2,0xb1,0xbe,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xff};//记事本
uchar code music6[]={0x84,0x82,0x82,0x82,0xB2,0xB2,0x82,0xC2,0xC3,0x82,0x84,0xB2,
	                 0xA2,0xA2,0x93,0x04,0x94,0x92,0x82,0x82,0x63,0x62,0x62,0x52,
	                 0x52,0x42,0x44,0x04,0x62,0x52,0x52,0x42,0x84,0x04,0x92,0x82,
	                 0x94,0x82,0x63,0x04,0x84,0x82,0x82,0x82,0xB2,0xB2,0x82,0xC2,
	                 0xC3,0x83,0x04,0x84,0xB2,0xA2,0xA2,0x93,0x94,0x82,0x92,0x82,
	                 0x63,0x04,0x52,0x62,0x52,0x62,0x44,0x04,0xff};
uchar code music_name7[20]={0xc2,0xcc,0xb5,0xba,0xd0,0xa1,0xd2,0xb9,0xc7,0xfa,0x20,0x20,0x20,0x20,0xff};//绿岛小夜曲
uchar code music7[]={0xA2,0xB2,0xD2,0xB2,0xA4,0xB2,0xD2,0xB2,0xA2,0x82,0x72,0x88,
                     0x72,0x82,0xA2,0x82,0x72,0x62,0x42,0x62,0x38,0x38,0xA4,0x02,
                     0xB2,0xA4,0x84,0x72,0x82,0x72,0x62,0x72,0x84,0x72,0x64,0x62,
                     0x12,0x34,0x02,0x42,0x38,0x38,0x44,0x02,0x32,0x44,0x64,0x72,
                     0x82,0x72,0x62,0x72,0x84,0xA2,0x72,0xff};
uchar code music_name8[20]={0xcd,0xe4,0xcd,0xe4,0xb5,0xc4,0xd4,0xc2,0xc1,0xc1,0x20,0x20,0x20,0x20,0xff};//弯弯的月亮
uchar code music8[]={0x62,0x82,0x82,0x62,0x98,0x92,0xB2,0xB2,0x82,0x98,0x62,0x82,
	                 0x82,0x52,0x68,0x92,0xB2,0xB2,0x82,0x92,0x92,0x94,0xB2,0xb2,
	                 0x92,0x84,0x94,0x84,0xB4,0x04,0xff};
uchar code music_name9[20]={0xc3,0xc3,0xc3,0xc3,0xb3,0xb3,0xd6,0xf8,0xd1,0xf3,0xcd,0xde,0xcd,0xde,0xff};//祝你平安 
uchar code music9[]={0x84,0x02,0x82,0x64,0x54,0x64,0x54,0x48,0x64,0x02,0x52,0x44,0x24,
                     0x14,0x24,0x18,0x84,0x94,0x88,0x64,0x54,0x68,0x84,0x64,0x54,0x44,
                     0x52,0x42,0x52,0x62,0x48,0xff};
uchar code music_name10[20]={0xbb,0xd3,0xd7,0xc7,0xb3,0xe1,0xb0,0xf2,0xb5,0xc4,0xc5,0xae,0xba,0xa2,0xff};//挥着翅膀的女孩
uchar code music10[]={0x0F,0x01, 0x15,0x02, 0x16,0x02, 0x17,0x66, 0x18,0x03,
                      0x17,0x02, 0x15,0x02, 0x16,0x01, 0x15,0x02, 0x10,0x02,
                      0x15,0x00, 0x0F,0x01, 0x15,0x02, 0x16,0x02, 0x17,0x02,
                      0x17,0x03, 0x18,0x03, 0x19,0x02, 0x15,0x02, 0x18,0x66,
                      0x17,0x03, 0x19,0x02, 0x16,0x03, 0x17,0x03, 0x16,0xff};

//uchar data count;
uchar data flag;
uchar data stl0;
uchar data sth0;
uchar data l;
uchar data k;
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,j;
	TMOD=0x01;
//	TH1=0xb9;
//  TL1=0xb0;
	IT0=0;
//	check_lcd();
//	for(i=0;i<20;i++)
//	{
//	    sth0=tab[2*i];
//	    stl0=tab[2*i+1];
//	    TH0=sth0;
//	    TL0=stl0;
//	    TR0=1;
//	    TR1=1;
//	    do{}while(flag<8); 
//	    TR0=0;
//    } 		  
	do
	{	
	    IE=0x83;		
		flag=0;
    	key=0;	
		check_lcd();		
        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);
	    IE=0x83;	    	    
	    do
	    {
	        j=0;
	        while(*(music+j)!=0xff)
	       {	if(key)break;        		                	
	            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
	            {
	            	delay_music();
	            	flag++;
	            }while(flag<k);
	            flag=0;         
	            j++;                                                                               
             }
         }while(!key);	                     
	  }while(1);
}
void delay_music(void)
{
	uint count=150;
	unsigned int i,j;
	for(i=0;i<count;i++)
	for(j=0;j<120;j++);
}
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;music=music5;break;
			      case 0xdf:music_name=music_name6;music=music6;break;
			      case 0xbf:music_name=music_name7;music=music7;break;
			      case 0x7f:music_name=music_name8;music=music8;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;music=music9;break;
		  	      case 0xfd:music_name=music_name10;music=music10;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++;
//    }
//}
void int1_serve(void) interrupt 0 using 3
{
	EA=0;
	key=1;
    Speaker=1;
}





⌨️ 快捷键说明

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