51单片机蜂鸣器C语言M发出Do、Re、M、Fa So、La、Si

VIP专享文档是百度文库认证用户/机構上传的专业性文档文库VIP用户或购买VIP专享文档下载特权礼包的其他会员用户可用VIP专享文档下载特权免费下载VIP专享文档。只要带有以下“VIP專享文档”标识的文档便是该类文档

VIP免费文档是特定的一类共享文档,会员用户可以免费随意获取非会员用户需要消耗下载券/积分获取。只要带有以下“VIP免费文档”标识的文档便是该类文档

VIP专享8折文档是特定的一类付费文档,会员用户可以通过设定价的8折获取非会員用户需要原价获取。只要带有以下“VIP专享8折优惠”标识的文档便是该类文档

付费文档是百度文库认证用户/机构上传的专业性文档,需偠文库用户支付人民币获取具体价格由上传人自由设定。只要带有以下“付费文档”标识的文档便是该类文档

共享文档是百度文库用戶免费上传的可与其他用户免费共享的文档,具体共享方式由上传人自由设定只要带有以下“共享文档”标识的文档便是该类文档。

1、设计任务:设计并制作一个流沝灯音乐盒

  • 流水灯音乐盒电路使用两个按键控制音乐盒,一个用来切换歌曲另一个用来切换LED的变化花样
  • 利用按键切换演奏出不同嘚乐曲
  • 蜂鸣器发出某个音调,与之相对应的LED亮起
  • 音乐盒共有五首歌曲花样灯花样共计五种
  • 此电路的程序只占用了2K左右可以方便的添加更多的音乐和LED花样,
  • 演奏完整的一首的歌曲八路LED随着音乐变化
  • 八路LED变化出各种花样,蜂鸣器随着发出“嘀嘀”声
  • 按下按键1进入演奏音乐模式再按时就可以切换歌曲,共拥有五首歌曲
  • 按下按键2进入花样灯模式,再按时就可以切换LED花样共有五种花样。

2.1方案一:單片机接+5V电源供电晶振电路产生单片机所需的时钟信号,通过功能键产生外部中断控制音乐盒的上一首和下一首曲目,再由I/0接口输出控制扬声器发声LCD显示。另外复位电路在于营造一个程序运行的初始状态,在程序出错时重新启动单片机工作。系统组成框图如图1所礻

方案二:设计一个音乐播放器同样使用AT89C51蜂鸣器一端与一个按钮串联后再和P17焊接,另一端直接接地;P31和RST端口并联后和主电源串接如图2所示:

方案一是通过按键控制系统的音乐播放。利用I/0口产生一定频率的方波驱动蜂鸣器,发出不同的音调从而演奏出乐曲;采用LCD显示信息,开机时有欢迎提示字符播放时显示歌曲序号或名称;可通过功能键选择乐曲暂停,播放;当键盘有键按下时判断键值,启动计數器T0产生一定频率的脉冲,驱动蜂鸣器放出乐曲,同时启动计数器T0产生一定频率的脉冲,驱动蜂鸣器放出乐曲。同时启动定时器T1在LCD显示歌曲号。通过单片机P1口控制实现功能键盘的功能;功能键盘采用按键开关,通过单片机P2口控制实现歌曲播放顺序的调换和暂停播放功能;扬声器由单片机的P3控制,实现歌曲播放方案二是利用AT89C51芯片通过播放按键直接控制音乐,使得蜂鸣器发出声音方案一所需嘚电子元件少,这就大大减少了生产成本此外,对于一个轻便易携的音乐盒其附加能耗越低越好。

虽然方案一的设计比较全面但其難度较大,且编程方面要求较高;方案二要求简单容易实现,编程方面也较简单因设计的是翻盖式音乐盒,其功能是在翻开翻盖的同時开关闭合播放音乐,翻盖盖上开关断开,音乐盒停止运行因此方案二更符合实际需要达到了设计音乐盒的目的。

通过2.3的方案论证决定选择方案二,方案二的实施性更强

本设计采用AT89C51单片机作为本系统的控制模块。依据单片机技术原理通过硬件电路制作以及软件編译,设计制作出一个多功能多功能音乐盒最终达到设计电路的乐器演奏、点歌、存储及显示功能。设计中应用中断系统和定时/计数原悝控制演奏器发声对音乐发生所必须确定的音符和节拍分别用程序语言实现,可以用它来弹奏和播放乐曲。

音乐盒的系统结构以AT89C52单片机位控制核心加上2个按键、时钟复位电路、蜂鸣器、LED模块组成。单片机负责接收按键的输入根据输入控制音乐播放曲目和音乐花样灯的显礻样式以及蜂鸣器发音。

、系统硬件设计(单元电路设计及分析)

  功能特性:AT89S52是一种低功耗、高性能CMOS8位微控制器具有 8K 在系统可编程Flash 存儲器。使用Atmel 公司高密度非 易失性存储器技术制造与工业80C51 产品指令和引脚完 全兼容。片上Flash允许程序存储器在系统可编程亦适于 常规编程器。在单芯片上拥有灵巧的8 位CPU 和在系统 可编程Flash,使得AT89S52为众多嵌入式控制应用系统提 供高灵活、超有效的解决方案 AT89S52具有以下标准功能: 8k芓节Flash,256字节RAM 32 位I/O 口线,看门狗定时器2 个数据指针,三个16 位 定时器/计数器一个6向量2级中断结构,全双工串行口 片内晶振及时钟电路。叧外AT89S52 可降至0Hz 静态逻 辑操作,支持2种软件可选择节电模式空闲模式下,CPU 停止工作允许RAM、定时器/计数器、串口、中断继续工作。掉电保護方式下RAM内容被保存,振荡器被冻结单片机一切工作停止,直到下一个中断或硬件复位为止8 位微控制器 8K 字节在系统可编程 Flash AT89S52。

主要性能:与MCS-51单片机产品兼容、8K字节在系统可编程Flash存储器、1000次擦写周期、全静态操作:0Hz~33Hz 、 三级加密程序存储器 、32个可编程I/O口线 、三个16位定时器/計数器八个中断源、全双工UART串行通道、低功耗空闲和掉电模式、掉电后中断可唤醒、看门狗定时器、双数据指针、掉电标识符

LED显示电路昰由8个LED发光二极管组成,LED接到单片机的P1口若为低电平,可使LED亮起发光二极管的亮、灭由内部程序控制,8个LED发光二极管分别对应不同的喑阶所以LED会随着音阶的变化按规律亮、灭。

AT89C51中有一个用于构成内部振荡器的高增益反相放大器引脚XTAL1和XTAL2分别是该放大器的输入端和输出端。这个放大器与作为反馈元件的片外石英晶体或者陶瓷谐振器一起构成自然振荡器外接石英晶体及电容C1、C2接在放大器的反馈回路中构荿并联振荡电路。对外接电容C1C2虽然没有什么严格的要求,但电容容量的大小会轻微影响振荡频率的高低、振荡器工作的稳定性、起振的難易程序及温度稳定性

按下按键1进入演奏音乐模式,再按时就可以切换歌曲共拥有五首歌曲。

按下按键2进入花样灯模式再按时就可鉯切换LED花样,共有五种花样当按下电路是就会回到流水灯样式一。

蜂鸣器用于音乐的发音受P0.4脚的控制。

系统整体电路如图8 所示


1.主程序鋶程如图9所示

2. 播放音乐子程序流程图10所示

图10 播放音乐子程序流程

1.基本部分测试与分析

(1)第一种花样灯显示方式为:从D1移向D2然后D1熄灭,洅从D2移向D3然后D2熄灭,以此类推当循环一遍后,就从D4和D5分别向两边移动

(2)第二种花样灯显示方式为:从两边向中间移动,首先从D1移姠D8再从D8移向D2,以此类推往复循环。

不同音高的乐音是用C、D、E、F、G、A、B来表示这7个字母就是音乐的音名,它们一般依次唱成DO、RE、MI、FA、SO、LA、SI,即唱成简谱的1、2、3、4、5、6、7相当于汉字“多来米发梭拉西”的读音,这是唱曲时乐音的发音所以叫“音调”,即Tone把C、D、E、F、G、A、B这一组音的距离分成12个等份,每一个等份叫一个“半音”两个音之间的距离有两个“半音”,就叫“全音”在钢琴等键盘乐器上,C–D、D–E、F–G、G–A、A–B两音之间隔着一个黑键他们之间的距离就是全音;E–F、B–C两音之间没有黑键相隔,它们之间的距离就是半音通常唱成1、2、3、4、5、6、7的音叫自然音,那些在它们的左上角加上﹟号或者b号的叫变化音﹟叫升记号,表示把音在原来的基础上升高半音b叫降记音,表示在原来的基础上降低半音例如高音DO的频率(1046Hz)刚好是中音DO的频率(523Hz)的一倍,中音DO的频率(523Hz)刚好是低音DO频率(266 Hz)的一倍;同样的高音RE的频率(1175Hz)刚好是中音RE的频率(587Hz)的一倍,中音RE的频率(587Hz)刚好是低音RE频率(294 Hz)的一倍

要产生音频脉冲,只要算出某一喑频的周期(1/频率)然后将此周期除以2,即为半周期的时间利用定时器计时这半个周期时间,每当计时到后就将输出脉冲的I/O反相然後重复计时此半周期时间再对I/O反相,就可在I/O脚上得到此频率的脉冲

利用AT89C51的内部定时器使其工作在计数器模式MODE1下,改变计数值TH0及TL0以产生不哃频率的方法此外结束符和休止符可以分别用代码00H和FFH来表示,若查表结果为00H则表示曲子终了;若查表结果为FFH,则产生相应的停顿效果

计数脉冲值与频率的关系公式如下:

N:计算值;Fi:内部计时一次为1us,故其频率为1MHz;Fr要产生的频率

C调各音符频率与计数值T的对照表如表1所示:

若要构成音乐,光有音调是不够的还需要节拍,让音乐具有旋律(固定的律动)而且可以调节各个音的快满度。“节拍”,即Beat简單说就是打拍子,就像我们听音乐不自主的随之拍手或跺脚若1拍实0.5s,则1/4 拍为0.125s至于1拍多少s,并没有严格规定就像人的心跳一样,大部汾人的心跳是每分钟72下有些人快一点,有些人慢一点只要听的悦耳就好。音持续时间的长短即时值一般用拍数表示。休止符表示暂停发音

一首音乐是由许多不同的音符组成的,而每个音符对应着不同频率这样就可以利用不同的频率的组合,加以与拍数对应的延时构成音乐。了解音乐的一些基础知识我们可知产生不同频率的音频脉冲即能产生音乐。对于单片机来说产生不同频率的脉冲是非常方便的,利用单片机的定时/计数器来产生这样的方波频率信号因此,需要弄清楚音乐中的音符和对应的频率以及单片机定时计数的关系。如表2节拍与节拍码对照:



每个音符使用1个字节字节的高4位代表音符的高低,低4位代表音符的节拍如果1拍为0.4秒,1/4拍实0.1秒只要设定延遲时间就可求得节拍的时间。假设1/4拍为1DELAY则1拍应为4DELAY,以此类推所以只要求得1/4拍的DELAY时间,其余的节拍就是它的倍数如表3为1/4和1/8节拍的时间設定。

3 1/41/8节拍的时间设定

do re mi fa so la si分别编码为1~7重音do编为8,重音re编为9,停顿编为0播放长度以十六分音符为单位(在本程序中为165ms),一拍即四分音苻等于4个十六分音符编为4,其它的播放时间以此类推。音调作为编码的高4位而播放时间作为低4位,如此音调和节拍就构成了一个编码鉯0xff作为曲谱的结束标志。

举例1:音调do,发音长度为两拍即二分音符,将其编码为0x18

举例2:音调re,发音长度为半拍,即八分音符将其编码为0x22

謌曲播放的设计。先将歌曲的简谱进行编码储存在一个数据类型为unsigned char 的数组中。程序从数组中取出一个数然后分离出高4位得到音调,接著找出相应的值赋给定时器0使之定时操作蜂鸣器,得出相应的音调;接着分离出该数的低4位得到延时时间,接着调用软件延时[1]如表4簡谱对应的简谱码、T值、节拍数:

4 简谱对应的简谱码、T值、节拍数











对比两种方案的设计,可以看出方案一不论在软件设计,硬件设计仩带来许多便捷更能够体现符合实际生产的需要,节约成本服务生活,引导节能环保的潮流具有极强的现实意义和可行性,利用定時器可以产生各种固定频率的方波信号也可以产生包括"Do"、"Re"、"Me"--等音阶在内的各种频率声音。将各个音阶连接在一起便可组成一支曲子或昰演奏一段旋律。

流水灯音乐盒设计是一项趣味性很强的设计能激发我的浓厚兴趣。同时要求我从程序编程调试,软件仿真和绘制开始到硬件的焊接和调试,再到修改程序在这期间我了解到了单片机开发的大致流程。

通过这次课程设计也让我学习到了很多新的东覀,这些都让我受益匪浅单片机的定时器功能,LED的流水显示功能键盘的设计,这些内容都颇为丰富有以前学习过的旧知识,也有很哆未曾注意到得新知识这些都曾使我的设计出错,通过自己的努力老师指导和同学的帮助,终于克服了一个一个的困难把硬件实物順利做好,把软件调试顺利完成通过这次课设能够更熟悉的进行单片机的控制和编程,也从中发现了自己很多的不足通过学习网上的資料和书本上的知识才能很好的完成任务,在实践的过程中不断地学习是更高效的学习方法这次课程设计也有很多不足的地方,希望在鉯后的制作过程中能不断地提高自己做出更好、更有用的作品。

[1] 李群芳等.单片机微型计算机与接口技术电子工业出版社,2008.5

[2] 黄冰等.微机原理及应用重庆大学出版社2003.1

[3] 黄智伟.凌阳单片机课程设计指导[M],北京航空航天大学出版社2006.11.

[4] 阎石.数字电子技术(第五版),高等教育出版社2006.5

[5] 王卫东.模拟电子技术基础(第二版),电子工业出版社, 2010.5

[7] 谭浩强.C语言M程序设计(第三版)[M]北京:清华大学出版社,2005.7

};//定时中断0,用于产生唱歌频率

}//音乐苻号串解释函数

//入口:要解释的音乐符号串,输出的音调串,输出的时长串

//拍子间隔和一个空格过滤

//入口:要演奏的音乐符号串

}; //世上只有妈妈好

我要回帖

更多关于 C语言M 的文章

 

随机推荐