在好例子网,分享、交流、成长!
您当前所在位置:首页C/C++ 开发实例嵌入式开发 → 蜂鸣器发出“世上只有妈妈好”音乐(流水灯)

蜂鸣器发出“世上只有妈妈好”音乐(流水灯)

嵌入式开发

下载此实例
  • 开发语言:C/C++
  • 实例大小:4.62KB
  • 下载次数:16
  • 浏览次数:486
  • 发布时间:2020-08-11
  • 实例类别:嵌入式开发
  • 发 布 人:1181201100
  • 文件格式:.c
  • 所需积分:1
 相关标签: 蜂鸣器

实例介绍

【实例简介】蜂鸣器

接线方法:P10接Beep
实验现象:蜂鸣器发出“世上只有妈妈好”音乐。

【实例截图】

【核心代码】

/*************** (C) Copyright 2012 Keyongbin, All rights reserved ***************
* 文件名          : OneFrequency.c
* 作者            : keyongbin
* 版本            : V1.0
* 完成日期        : 2012-02-3

接线方法:P10接Beep
实验现象:蜂鸣器发出“世上只有妈妈好”音乐。
*********************************************************************************/
#include <reg52.H>

sbit Speak = P1^0; //定义音乐输出端口

unsigned char Timer0_TH0 = 0;
unsigned char Timer0_TL0 = 0;
unsigned char Time = 0;

/*********************************************************************
* “世上只有妈妈好” 乐谱
**********************************************************************/                         
unsigned char code Music[]={  
6,2,3, 5,2,1, 3,2,2, 5,2,2, 1,3,2, 6,2,1, 5,2,1,
6,2,4, 3,2,2, 5,2,1, 6,2,1, 5,2,2, 3,2,2, 1,2,1,
6,1,1, 5,2,1, 3,2,1, 2,2,4, 2,2,3, 3,2,1,  5,2,2,
5,2,1,  6,2,1,  3,2,2, 2,2,2,  1,2,4, 5,2,3, 3,2,1,
2,2,1,  1,2,1,  6,1,1, 1,2,1, 5,1,6, 0,0,0 
                           };
/*********************************************************************
* 音阶频率表 高八位
**********************************************************************/                        
unsigned char code HighFrequency[]={
0xF2,0xF3,0xF5,0xF5,0xF6,0xF7,0xF8,
0xF9,0xF9,0xFA,0xFA,0xFB,0xFB,0xFC,
0xFC,0xFC,0xFD,0xFD,0xFD,0xFD,0xFE,
0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFF
                                   } ;
/*********************************************************************
* 音阶频率表 低八位
**********************************************************************/       
unsigned char code LowFrequency[]={
0x42,0xC1,0x17,0xB6,0xD0,0xD1,0xB6,
0x21,0xE1,0x8C,0xD8,0x68,0xE9,0x5B,
0x8F,0xEE,0x44,0x6B,0xB4,0xF4,0x2D, 
0x47,0x77,0xA2,0xB6,0xDA,0xFA,0x16
                                  };
/********************************************************************** 
函 数 名:Delay_US(unsigned int Time)
功    能:软件延时函数
说    明:延时时间 t = Time * 2 5 us ,12MHZ晶振
参    数: Time:延时时间
返 回 值:无   
***********************************************************************/
void Delay_US(unsigned int Time)
{   
while(--Time);
}
/********************************************************************** 
函 数 名:Delay_MS(unsigned char Time)
功    能:软件延时函数
说    明:延时时间 t = Time * 2 5 us ,12MHZ晶振
参    数: Time:延时时间
返 回 值:无   
***********************************************************************/
void Delay_MS(unsigned char Time)
{
while(Time--)   //大致延时1mS
{
Delay_US(240);
Delay_US(240);
}
}
/********************************************************************** 
函 数 名:Delay_Music(unsigned char Time)
功    能:节拍延时函数
说    明:调1/4 310ms 调2/4  250ms 调3/4  187ms 调4/4  125ms 
参    数: Time:延时时间
返 回 值:无   
***********************************************************************/
void Delay_Music(unsigned char Time)
{
    unsigned char i = 0;
for(i = 0;i < Time;i )
    Delay_MS(100);
    TR0 = 0;
}
/********************************************************************** 
函 数 名:Timer0ISR(void)
功    能:定时器0溢出中断服务程序
说    明:无
参    数: 无
返 回 值:无   
***********************************************************************/
void Timer0ISR(void) interrupt 1 using 0
{
TR0 = 0;      
Speak = ~Speak;
TH0 = Timer0_TH0;
TL0 = Timer0_TL0;
TR0 = 1;
}
/********************************************************************** 
函 数 名:DealMusic(void)
功    能:定时器0溢出中断服务程序
说    明:无
参    数: 无
返 回 值:无   
***********************************************************************/
void DealMusic(void)
{
TH0 = Timer0_TH0; //定时器赋值
TL0 = Timer0_TL0;
TR0 = 1;        //开定时器
Delay_Music(Time); //节拍时间                      
}
/********************************************************************** 
函 数 名:main(void)
功    能:主函数
说    明:无
参    数: 无
返 回 值:无   
***********************************************************************/
void main(void)
{
unsigned char i,j;
TMOD |= 0x01; //定时器0工作方式1
EA  = 1;        //开全局中断
ET0 = 1;      //开定时器0中断
while(1)
{
i = 0;  
while(i < 100) //音乐数组长度,循环播放
{              
j = Music[i] 7 * Music[i 1] - 1; //取音乐数据
Timer0_TH0 = HighFrequency[j];
Timer0_TL0 = LowFrequency [j];
Time = Music[i 2];          //节拍时长
i = i 3;
DealMusic();
}

}

标签: 蜂鸣器

实例下载地址

蜂鸣器发出“世上只有妈妈好”音乐(流水灯)

不能下载?内容有错? 点击这里报错 + 投诉 + 提问

好例子网口号:伸出你的我的手 — 分享

网友评论

发表评论

(您的评论需要经过审核才能显示)

查看所有0条评论>>

小贴士

感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。

  • 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
  • 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
  • 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
  • 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。

关于好例子网

本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明

;
报警