89C51单片机蜂鸣器演奏两只老虎-源码

/*
**********************************************************************
*                         头文件包含
**********************************************************************
*/
#include <reg52.h>
#include <intrins.h>
/*
**********************************************************************
*                         本地宏定义
**********************************************************************
*/
typedef unsigned char u8; 		// 重命名类型u8简化代码编写
typedef unsigned int u16;

/*
**********************************************************************
*                         本地全局变量
**********************************************************************
*/
sbit gBuz = P1^5;			// P1.5通过ULN2003放大功率后驱动BUZZER


/*
**********************************************************************
*                         函数原型声明
**********************************************************************
*/
void BuzzerOnOff(void);
void delay1ms(void);
void delay50ms(void) ;
void delay1ms100us(void);
void delay900us(void);
void delay800us(void);
void delay750us(void);
void delay700us(void);
void delay650us(void);
void play5_d(void);
void play1(void);
void play2(void);
void play3(void);
void play4(void);
void play5(void);
void play6(void);
void play4_h(void);
void play5_h(void);
void play6_h(void);
void play7(void);
void play5_2(void);

char num[]={
    
    0x32,0x30,0x31,0x36,0x30,0x31,0x30,0x38,0x30,0x31,0x32,0x37};
/*********************************************************************
* 函 数 名       : main
* 函数功能		 : 主函数
* 参数列表       : 无
* 函数输出    	 : 无
*********************************************************************/
void main(void)
{
    
    

	while (1)
	{
    
    
	play1();
	play2();
	play3();
	play1();

	play1();
	play2();
	play3();
	play1();

	play3();
	play4();
	play5_2();
	  
	play3();
	play4();
	play5_2();	 


	play5_h();
	play6_h();
	play5_h();
	play4_h();
	play3();
	play1();

	play5_h();
	play6_h();
	play5_h();
	play4_h();
	play3();
	play1();

	play2();
	play5_d();
	play1();
   delay50ms();
	play2();
	play5_d();
	play1();
	delay50ms();
	}		
}


/*********************************************************************
* 函 数 名       : BuzzerOnOff
* 函数功能		 : 给蜂鸣器开关各一段时间
* 参数列表       : 无
* 函数输出    	 : 无
*********************************************************************/
void BuzzerOnOff1(void)
{
    
    
	gBuz = 1;
	delay1ms();
	gBuz = 0;
	delay1ms();
}

void BuzzerOnOff2(void)
{
    
    
	gBuz = 1;
	delay900us();	 
	gBuz = 0;
	delay900us();	 
}
void BuzzerOnOff3(void)
{
    
    
	gBuz = 1;
	delay800us();	 
	gBuz = 0;
	delay800us();	 
}
void BuzzerOnOff4(void)
{
    
    
	gBuz = 1;
	delay800us();	 
	gBuz = 0;
	delay700us();	 
}
void BuzzerOnOff5(void)
{
    
    
	gBuz = 1;
	delay750us();	 
	gBuz = 0;
	delay700us();	 
}

 void BuzzerOnOff6(void)
{
    
    
	gBuz = 1;
	delay700us();	 
	gBuz = 0;
	delay700us();	 
}

 void BuzzerOnOff7(void)
{
    
    
	gBuz = 1;
	delay650us();	 
	gBuz = 0;
	delay650us();	 
}
void BuzzerOnOff5_d(void)
{
    
    
	gBuz = 1;
delay1ms100us(); 	 
	gBuz = 0;
	delay1ms100us(); 	 
}


/*********************************************************************
* 函 数 名       : delay1ms
* 函数功能		 : 用单片机小精灵V1.0自动生成的精确延时1ms的延时函数
* 参数列表       : 无
* 函数输出    	 : 无
*********************************************************************/
void delay50ms(void)   //误差 0us
{
    
    
    unsigned char a,b;
    for(b=173;b>0;b--)
        for(a=143;a>0;a--);
}
void delay1ms(void)   //误差 0us
{
    
    
    unsigned char a,b,c;
    for(c=1;c>0;c--)
        for(b=142;b>0;b--)
            for(a=2;a>0;a--);
}

  void delay1ms100us(void)   //误差 0us
{
    
    
    unsigned char a,b;
    for(b=8;b>0;b--)
        for(a=67;a>0;a--);
    _nop_();  //if Keil,require use intrins.h
}


void delay900us(void)   //误差 0us
{
    
    
    unsigned char a,b;
    for(b=69;b>0;b--)
        for(a=5;a>0;a--);
}
 void delay800us(void)   //误差 0us
{
    
    
    unsigned char a,b,c;
    for(c=1;c>0;c--)
        for(b=2;b>0;b--)
            for(a=197;a>0;a--);
}
void delay750us(void)   //误差 0us
{
    
    
    unsigned char a,b;
    for(b=83;b>0;b--)
        for(a=3;a>0;a--);
}

void delay700us(void)   //误差 0us
{
    
    
    unsigned char a,b;
    for(b=41;b>0;b--)
        for(a=7;a>0;a--);
}
void delay650us(void)   //误差 0us
{
    
    
    unsigned char a,b,c;
    for(c=1;c>0;c--)
        for(b=92;b>0;b--)
            for(a=2;a>0;a--);
}
void play1(void)
{
    
    
   int i=200;
   while(i) {
    
    
   BuzzerOnOff1();
   i--;
   }
   delay50ms();
}
void play2(void)
{
    
    
   int i=200;
   while(i) {
    
    
   BuzzerOnOff2();
   i--;
   }
   delay50ms();
}
void play3(void)
{
    
    
   int i=225;
   while(i) {
    
    
   BuzzerOnOff3();
   i--;
   }
   delay50ms();
}
void play4(void)
{
    
    
   int i=250;
   while(i) {
    
    
   BuzzerOnOff4();
   i--;
   }
   delay50ms();
}
void play4_h(void)
{
    
    
   int i=130;
   while(i) {
    
    
   BuzzerOnOff4();
   i--;
   }
   delay50ms();
}

void play5(void)
{
    
    
   int i=275;
   while(i) {
    
    
   BuzzerOnOff5();
   i--;
   }
   delay50ms();
}
 void play5_2(void)
{
    
    
   int i=500;
   while(i) {
    
    
   BuzzerOnOff5();
   i--;
   }
   delay50ms();
}
void play5_h(void)
{
    
    
   int i=130;
   while(i) {
    
    
   BuzzerOnOff5();
   i--;
   }
   delay50ms();
}
void play5_d(void)
{
    
    
   int i=200;
   while(i) {
    
    
   BuzzerOnOff5_d();
   i--;
   }
   delay50ms();
}
void play6(void)
{
    
    
   int i=275;
   while(i) {
    
    
   BuzzerOnOff6();
   i--;
   }
   delay50ms();
}
void play6_h(void)
{
    
    
   int i=130;
   while(i) {
    
    
   BuzzerOnOff6();
   i--;
   }
   delay50ms();
}
void play7(void)
{
    
    
   int i=300;
   while(i) {
    
    
   BuzzerOnOff7();
   i--;
   }
   delay50ms();
}

猜你喜欢

转载自blog.csdn.net/qq_44624722/article/details/123641619