/*
**********************************************************************
* 头文件包含
**********************************************************************
*/
#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();
}
89C51 MCU buzzer playing two tigers - source code
Guess you like
Origin blog.csdn.net/qq_44624722/article/details/123641619
Ranking