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

📄 snow.c

📁 这是一个由单片机控制的蜂鸣器演唱《2002年的第一场雪》的源代码
💻 C
字号:
/*******************************************************************************
*  标题:  单片机开发系统演示程序 -  单片机演唱歌                                *
*  日期:  2007-1-1                                                             *
*  版本:  1.0                                                                  *
*  作者:  微控电子 - Caai                                                      *
*  邮箱:  microcontroller@163.com                                              *
*  QQ  : 676371312                                                            *
********************************************************************************
*  描述:                                                                       *
*         刀郎《2002年的第一场雪》                        		               *
********************************************************************************
*  跳线设置:J34 从左向右数第6短接    				                           *
*                                                                              *
*                                                                              *
********************************************************************************
* 【版权】 Copyright(C)微控电子    All Rights Reserved                         *
* 【声明】 此程序仅用于学习与参考,引用请注明版权和作者信息!                  *
*******************************************************************************/ 
#include <reg52.h>
sbit SPK=P3^6;
void delayms(unsigned char ms);
unsigned int data j;
unsigned char code song[636]={ 0xFF,0xFF,4,0xFd,0x08,2,0xFd,0x08,2,0xFd,0x08,2,0xFd,0x08,2,0xFd,0x08,2,0xfd,0x08,2,				//21
							  0xFD,0x5B,4,0xFD,0x08,2,0xFC,0xAB,2,0xFC,0x0B,2,0xFC,0x0B,2,0xff,0xff,2,0xFc,0x0B,2,				//21
							  0xFC,0xAB,2,0xFC,0xAB,2,0xFC,0xAB,2,0xFC,0xAB,2,0xFC,0xAB,4,0xFC,0xAB,2,0xFC,0xAB,2,				//21	
							  0xFB,0x8F,2,0xFC,0x0B,2,0xFC,0x0B,4,0xff,0xff,8,									 				//12
							  0xff,0xff,2,0xFD,0x08,2,0xFD,0x08,2,0xFD,0x08,2,0xFD,0x08,4,0xFD,0x08,2,0xFD,0x08,2,				//21
							  0xFD,0x5B,4,0xFD,0x08,2,0xFC,0xAB,4,0xFD,0x08,6,                                  				//12
							  0xff,0xff,2,0xFB,0x8F,2,0xFB,0x8F,2,0xFB,0x8F,2,0xFB,0x8F,2,0xFB,0x8F,2,0xFB,0x03,2,0xFA,0x14,2,  //24
							  0xFC,0xAB,4,0xFC,0xAB,2,0xFC,0xAB,2,0xFC,0xAB,2,0xFC,0x0B,2,0xFC,0x0B,4,							//18
							  0xFF,0xFF,4,0xFD,0x08,2,0xFD,0x08,2,0xFD,0x08,2,0xFD,0x08,2,0xFD,0x08,2,0xFD,0x08,2,				//21	
							  0xFD,0x5B,4,0xFD,0x08,2,0xFC,0xAB,4,0xFD,0x08,6,											    	//12,183
						      0xFF,0xFF,2,0xFB,0x8F,2,0xFB,0x8F,2,0xFB,0x8F,2,0xFB,0x8F,2,0xFB,0x8F,2,0xFB,0x03,2,0xFA,0x14,2,  //24
							  0xFC,0xAB,4,0xFC,0xAB,2,0xFC,0xAB,2,0xFC,0xAB,2,0xFC,0x0B,2,0xFC,0x0B,4,						    //18
						      0xFF,0xFF,4,0xFd,0x08,2,0xFd,0x08,2,0xFd,0x08,2,0xFd,0x08,2,0xFd,0x08,2,0xfd,0x08,2,				//21
                              0xFD,0x5B,4,0xFD,0x08,2,0xFD,0x5B,2,0xFC,0xAB,2,0xFC,0x0B,2,0xFC,0x0B,4,							//18
							  0xFF,0xFF,2,0xFB,0x8F,2,0xFB,0x8F,2,0xFB,0x03,2,0xFB,0x8F,4,0xFB,0x8F,2,0xFB,0x03,2,				//21
							  0xFC,0x0B,4,0xFB,0x8F,2,0xFC,0x0B,2,0xFB,0x03,2,0xfa,0x14,2,0xfa,0x14,4,                          //18
						      0xFF,0xFF,2,0xFD,0x08,2,0xFD,0x08,2,0xFD,0x08,2,0xFD,0x08,2,0xFD,0x08,2,0xFD,0x08,2,0xFD,0x08,2,  //24
							  0xFD,0x5B,4,0xFD,0x08,2,0xFD,0x5B,2,0xFC,0xAB,2,0xFC,0x0B,2,0xFC,0x0B,4,							//18
							  0xff,0xff,2,0xFB,0x8F,2,0xFB,0x8F,2,0xFB,0x8F,2,0xFB,0x8F,2,0xFB,0x8F,2,0xFB,0x03,2,0xFA,0x14,2,  //24
							  0xfc,0xab,4,0xfc,0xab,2,0xfc,0xab,2,0xfb,0x8f,2,0xfc,0x0b,2,0xFC,0x0B,4,						    //18,204
							  0xFF,0xFF,2,0xFd,0x08,2,0xFd,0x08,2,0xFd,0x08,2,0xFd,0x08,2,0xFd,0x08,4,0xFd,0x08,2,	            //21
							  0xfd,0x5b,4,0xfd,0x08,2,0xfc,0xab,4,0xfc,0x0b,6,													//12
							  0xFF,0xFF,2,0xFB,0x8F,2,0xFB,0x8F,2,0xFB,0x03,2,0xFB,0x8F,2,0xFB,0x8F,2,0xFB,0x8F,2,0xFB,0x03,2,	//24	
						      0xFC,0x0B,4,0xFB,0x8F,2,0xFC,0x0B,2,0xFB,0x03,2,0xfa,0x14,2,0xfa,0x14,4,							//18	
						      0xff,0xff,2,0xFB,0x8F,2,0xFB,0x8F,2,0xFB,0x8F,2,0xFB,0x8F,2,0xFB,0x8F,2,0xFB,0x03,2,0xFA,0x14,2,  //24
							  0xfb,0x03,2,0xfb,0x03,2,0xfb,0x03,2,0xfa,0x14,2,0xfa,0x14,1,0xf9,0x5b,1,0xf8,0x2a,2,0xf8,0x2a,4,  //24
							  0xff,0xff,2,0xFB,0x8F,2,0xFB,0x8F,2,0xFB,0x8F,2,0xFB,0x8F,2,0xFB,0x8F,2,0xFB,0x03,2,0xFA,0x14,2,  //24
							  0xfb,0x8f,2,0xfc,0x08,2,0xfc,0x08,2,0xfc,0x08,10,													//12
							  0xff,0xff,2,0xFB,0x8F,2,0xFB,0x8F,2,0xFB,0x8F,2,0xFB,0x8F,2,0xFB,0x8F,2,0xFB,0x03,2,0xFA,0x14,2,  //24
							  0xfb,0x03,2,0xfb,0x03,2,0xfb,0x03,2,0xfa,0x14,2,0xfa,0x14,1,0xf9,0x5b,1,0xf8,0x2a,2,0xf8,0x2a,4,  //24,207				
							  0xff,0xff,2,0xFB,0x8F,2,0xFB,0x8F,2,0xFB,0x8F,2,0xFB,0x8F,2,0xFB,0x8F,2,0xFB,0x03,2,0xFA,0x14,2,  //24
							  0xfc,0xab,2,0xfd,0x08,2,0xfd,0x08,2,0xfd,0x08,2,0xff,0xff,4,0xff,0xff,4};							//18,42,636	

void main()
{	TMOD = 0x01;
	IE = 0x82;
		while(1)
		{	j=0;
   		 	while (j<636)
			 	{	TR0=1;
			  		if ((song[j]==0xff)&&(song[j+1]==0xff)) TR0=0;//休止符用0xff,0xff表示,出现休止符时CT0禁止,不发声.
			  		delayms(song[j+2]);							  //每一音符唱多长.
		 	  		j=j+3;
			 	}
		}
}

void timer0() interrupt 1 using 1								  //每一音符唱多高
{	TH0=song[j];
	TL0=song[j+1];
	SPK = !SPK;	
}
void delayms(unsigned char ms)									  //基本延时子程序(16分之1拍的时间)
{	unsigned int i;	
	while(ms--)
	{
		for(i = 0; i < 12000; i++);
	}
	TR0=0;
	
}

⌨️ 快捷键说明

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