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

📄 main.c

📁 89C51单片机驱动扬声器播放音乐的程序
💻 C
字号:
#include <REG52.H> 
void delay(unsigned char n);     
	code unsigned song[]={0xf0,0xf0,0xf8,0x8b,0xf9,0x5b,0xfa,0x14,0xfa, 
	0x0c,0xfb,0x03,0xfb,0x8f,0xfc,0x0b,0xfc,0x43,0xfc,0xab,0xfd, 
	0x08,0xfd,0x33,0xfd,0x81,0xfd,0xc7,0xfe,0x05,0xfe,0x32,0xfe, 
	0x55,0xfe,0x84,0xfe,0x99,0xfe,0xc0,0xfe,0xe3,0xff}; 


code int note[]={ 
	0x0000,0xFB03,0xFB8E,0xFC0B,0xFC43,0xFCAB,0xFD08,0xFD32, 
	                                  
	0xFD81,0xFDC7,0xFE05,0xFE21,0xFE55,0xFE83,0xFE99,0xFEC0}; 
	unsigned char i=0; 
	unsigned char hi_note,low_note; 
	static void timer1_isr(void) interrupt TF1_VECTOR using 2 
	{ 
	   TR1=0; 
	   TL1=low_note; 
	   TH1=hi_note; 
	   TR1=1; 
	   P3_7=~P3_7; 
	}                
static void timer1_initialize(void) 
	{ 
	   EA=0; 
	   TR1=0; 
	   TMOD = 0X10; 
	   ET1=1; 
	   EA=1; 
	} 
void singing() 
{ 
   unsigned char beat,temp; 
   i=0; 
   do { 
       temp=song[i];               

       if (temp==0) {             

           TR1=0;                 
           return;                 
       } 
       beat=temp & 0x0f;           

       temp=(temp >> 4) & 0x0f;   
       if (temp==0) TR1=0;       
       else { 
        hi_note=note[temp] >> 8;   
           low_note=note[temp] & 0x00FF; 
              TR1=1;              
       } 
       delay(beat);                      
i++; 
   } while(1);  
}     
void main (void)  { 
   timer1_initialize(); 
   do { 
        singing(); 
   } while (1);                  } 

⌨️ 快捷键说明

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