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单片机蜂鸣器演奏两只老虎-源码相关推荐
- C51蜂鸣器演奏两只老虎
/*两只老虎**/ #include<reg52.h> sbit Buzz = P1^6; //声明绑定蜂鸣器 unsigned int code NoteFrequ[]={ 523, ...
- 单片机补充案例--两只老虎
将led换成喇叭,通过编程实现音乐和电子琴功能也是非常容易的,单片机两只老虎的案例网上资料很多不再列举,查找即可: 这里,给出sdcc方案下,使用喇叭发音的示例代码: /*************** ...
- 使用C51单片机实现《两只老虎》
代码: #include<reg51.h> sbit sounder=P2^1; unsigned char song_tone[]={80,71,63,80,80,71,63,80,63 ...
- 蜂鸣器播放《两只老虎》
文章目录 前言 一.回顾蜂鸣器 二.乐谱知识 2.1 音符音频 2.2 两只老虎乐谱 三.系统框图 四.模块调用 五.模块原理图 六.工程源码 6.1 音符选择模块代码 6.2 pwm产生模块代码 6 ...
- FPGA蜂鸣器实现歌曲《两只老虎》
1.简谱中的符号含义 2.两只老虎简谱 3.音符与频率的对照表 4.首先在这里解释一个名词→音乐频率--众所周知,声音是由物体的振动产生的,本质是传播媒介的振动,另外声音有两大特性--音量和音色,我们 ...
- 计算机打音乐两只老虎,两只老虎(音乐、汇编程序)
/* 程序效果:蜂鸣器发出两只老虎的音律 */ ORG 0000H AJMP START ORG 000BH AJMP TIM0 ORG 0030H START: MOV TMOD,#01H ...
- 51单片机两只老虎c语言程序,51单片机两只老虎仿真加代码
/*************************************************************************** 程序名称:program4-1.c 程序功能: ...
- 用鸿蒙OS在蜂鸣器上播放一曲《两只老虎》
本文介绍如何在HiSpark Wi-Fi IoT套件上,使用Harmony OS IoT硬件子系统的PWM接口 驱动蜂鸣器 播放音乐. 用PWM输出方波的API 鸿蒙系统IoT硬件子系统提供了PWM相 ...
- 51单片机两只老虎 c语言,基于51单片机做音乐盒(两只老虎)
/********************************************************************************* 项目:音频音乐盒 设计时间:201 ...
最新文章
- Windows 11成上班摸鱼利器,微软CEO喊话苹果:欢迎引入iMessage
- 急招 Golang 熟手,来做 5G 事业。
- 【运筹学】单纯形法总结 ( 单纯形法原理 | 单纯形法流程 | 单纯形表 | 计算检验数 | 最优解判定 | 入基变量 | 出基变量 | 方程组同解变换 ) ★★★
- Android联系人Contacts详解
- f450四轴使用技巧
- JavaME:Google静态地图API
- 前端学习(1963)vue之电商管理系统电商系统之控制级联选择框的选择范围
- C:\Windows\Installer越来越大?让我们一起来删除msp这个毒瘤
- iPhone 12主板曝光:布局更紧凑 满满苹果基因
- 一个转行学习前端的初学者,应该如何计划自己的学习规划?
- 大数据Hadoop学习记录(3)----基于JAVA语言的HDFS文件过滤与合并
- 用命令提示符使用MySQL
- 走进龙芯3A3000(一)安装Loongnix
- 使用FFmpeg将MP4转换为ts文件
- 移远M26 GSM实时获取网络时间
- java实现 mysql导入数据库_Java实现MySQL数据库导入
- MySQL的SQL基础(五)
- 原型设计Axure的基本使用
- python字符串转list(python字符串转数字)
- 为什么LED内不集成限流电阻呢?
热门文章
- 十二星座时间及其英文缩写
- 搭建服务器 运用阿里云DNS自己实现DDNS
- 参考了下中国信息通信研究院发布(已在中国通信标准化协会立项)的行标“研发运营一体化(DevOps)能力成熟度模型”中对于“持续交付”核心流程中的三级指标,做了下对比,欢迎拍砖
- 轻轻松松做演讲的小窍门
- 浅析JWT| JWT是啥子,Java构建JWT
- Maven打包依赖将依赖的Jar包也打进去
- 2021-08-15 minikube在阿里云centos系统上的安装实践
- 基于51单片机的便携式输液点滴控制报警器
- 嵌入式软件单元测试/集成测试工具-WINAMS
- 决策树在商业保险中的应用