89C51单片机蜂鸣器演奏两只老虎-源码
生活随笔
收集整理的這篇文章主要介紹了
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();
}
總結
以上是生活随笔為你收集整理的89C51单片机蜂鸣器演奏两只老虎-源码的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: deepin网速慢 自己摸索 已解决
- 下一篇: EDEM-fluent耦合时出现的问题及