基于51单片机的复音电子琴课程设计.doc

  1. 1、本文档共24页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
基于51单片机的复音电子琴课程设计

基于51单片机的复音电子琴课程设计 刘汇鹏 课程组1班 指导老师:宋荣 摘要:本设计是基于数字电路为基础,以单片机技术为核心,软件设计采用模块化结构,采用C语言编程,通过按键控制,可以发出两个不同的声音,并实现音乐盒的功能。内容上首先描述系统硬件工作原理,介绍各个接口模块的功能,而后介绍软件上的各个功能模块。 关键字:单片机,电子琴,STC90C51 绪论 随着科学技术的迅速发展,尤其是在电子领域上的发展,让电器走进千家万户,越来越多的物件可以用电器用品代替,电子乐器渐渐代替传统乐器出现在众人眼前,电子乐器相比于传统乐器更轻便,也更加便宜,让乐器走进千家万户,这次制作的核心在于单片机,单片机体积小,性能好,造价便宜。并且能实现强大的功能。复音电子琴不仅能够实现复音效果,还能成为一个音乐盒,这也是得益于单片机的强大功能。 设计要求与方案 设计要求 1.能够实现电子琴的复音功能。 2.能够实现音乐盒的功能 设计方案 关于电子琴的发声原理 本作品采用了用单片机模块产生的频率进行输出,蜂鸣器作为输入,蜂鸣器收到来自单片机控制端口的不同频率的信号,会发出对应的声音频率,这就完成了从电信号转换成声音信号的过程。 关于电子琴的复音功能 复音是指由许多纯音组成的声音。复音的频率用组成这个复音的基音的频率来表示。一般乐器发出的声音都是复音。 硬件电路设计概述 硬件电路由两片AT89C52单片机芯片为核心,接上复位电路,晶振电路,按键电路以及发声电路组成的。通过软件编程,编写代码烧写到单片机芯片里,配合复位电路和晶振电路组成单片机最小系统,晶振产生的频率由单片机进行程序控制,得到想要的电信号频率。通过两个单片机控制端,使单片机能够准确得到两个按键信号,并使对应的蜂鸣器发声。 主要单元电路设计 晶振电路设计 晶振电路如图2所示 图2 晶振电路 复位电路设计 复位电路如图3所示,使两片单片机芯片共用一个复位按键,相比互相独立的两个复位按键的单片机模块更加便捷。 图3 复位电路设计 按键电路设计 按键电路如图4所示,使两片单片机共同对独立按键的信号进行实时扫描,读取信号进行下一步操作。 图4 按键电路设计 软件设计 单片机发音原理 1.音调的确定? 音调就是我们常说的音高。它是由频率来确定的!我们可以查出各个音符所对应的相应的频率,那么现在就需要我们来用51来发出相应频率的声音!我们常采用的方法就是通过单片机的定时器定时中断,将单片机上对应蜂鸣器的I/O口来回取反,或者说来回清零,置位,从而让蜂鸣器发出声音,为了让单片机发出不同频率的声音,我们只需将定时器予置不同的定时值就可实现。那么怎样确定一个频率所对应的定时器的定时值呢? 以标准音高A为例:A?的频率f?=?440?Hz,其对应的周期为:T?=?1/?f?=?1/440?=2272μs? 那么,单片机上对应蜂鸣器的I/O口来回取反的时间应为:t?=?T/2?=?2272/2?=?1136?μs? ,也就是清零、置位在一个周期内完成这个时间t也就是单片机上定时器应有的中断触发时间。一般情况下,单片机奏乐时,其定时器为工作方式1,它以振荡器的十二分频信号为计数脉冲。设振荡器频率为f0,则定时器的予置初值由下式来确定:t?=?12?*(TALL–?THL)/?f0式中TALL=?216=?65536,THL为定时器待确定的计数初值。因此定时器的高低计数器的初值为:? TH?=THL/?256?=?(TALL-?t*f0/12)?/?256? TL?=?THL?%?256?=?(?TALL-?t*f0/12)?%256? 将t=1136?μs代入上面两式(注意:计算时应将时间和频率的单位换算一致)即可求出标准音高A? 在单片机晶振频率f0=12Mhz,定时器在工作方式1下的时器高低计数器的予置初值为: TH440Hz?=?(65536?–?1136?*?12/12)?/256?=?FBH?? TL440Hz?=?(65536?–?1136?*?12/12)%256?=?90H? ?就这样,我们通过延时,发出了我们所需要的频率, N N 判断是否有按键按下? 判断是否有按键按下? Y Y 延时去抖 延时去抖 发出对应按键的声音 发送标志位为1的命令

文档评论(0)

juhui05 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档