ImageVerifierCode 换一换
格式:DOCX , 页数:20 ,大小:432.12KB ,
资源ID:16726534      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/16726534.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(简易电子琴单片机课程设计Word文档下载推荐.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

简易电子琴单片机课程设计Word文档下载推荐.docx

1、总 成 绩 教研室审核意见:教研室主任签字:教学系审核意见: 主任签字: 年 月 日 摘要单片微型计算机是大规模集成电路技术发展的产物,属第四代电子计算机,它具有高性能、高速度、体积小、价格低廉、稳定可靠、应用广泛的特点。它的应用必定导致传统的控制技术从根本上发生变革。因此,单片机的开发应用已成为高科技和工程领域的一项重大课题。 电子琴是现代电子科技与音乐结合的产物,是一种新型的键盘乐器。它在现代音乐扮演着重要的角色,单片机具有强大的控制功能和灵活的编程实现特性,它已经溶入现代人们的生活中,成为不可替代的一部分。本文的主要内容是用AT89C52单片机为核心控制元件,设计一个电子琴。以单片机作为

2、主控核心,与键盘、蜂鸣器等模块组成核心主控制模块,在主控模块上设有16个按键和蜂鸣器。 本文主要对使用单片机设计简易电子琴进行了分析,并介绍了基于单片机电子琴统硬件组成。利用单片机产生不同频率来获得我们要求的音阶,最终可随意弹奏想要表达的音乐。并且本文分别从原理图,主要芯片,各模块原理及各模块的程序的调试来详细阐述。 一首音乐是许多不同的音阶组成的,而每个音阶对应着不同的频率,这样我们就可以利用不同的频率的组合,即可构成我们所想要的音乐了,当然对于单片机来产生不同的频率非常方便,我们可以利用单片机的定时/计数器T0来产生这样方波频率信号,因此,我们只要把一首歌曲的音阶对应频率关系弄正确即可。关

3、键词:AT89C52芯片;8255A芯片;蜂鸣器;矩阵键盘;音阶 目录摘要 - 1 -1概述 - 2 -1. 1 电子琴技术状况 - 2 -1. 2 任务与要求 - 3 -1.3 主要芯片简介 - 3 -1.3.1 AT89C52芯片介绍 - 3 -1.3.2 8255A芯片介绍 - 4 -2 系统总体方案及硬件设计 - 5 -2. 1系统总体方案 - 5 -2. 2总体硬件组成框图 - 6 -2. 2. 1 子系统模块一 - 7 -2. 2. 2 子系统模块二 - 7 -2. 2. 3 子系统模块三 - 8 -2.2.4 AT89C51复位模块 - 9 -2. 2. 5 AT89C52晶振模

4、块 - 9 -3 软件设计 - 10 -3. 1软件设计总流程图流程 - 10 -3. 2 软件程序 - 11 -4 课程设计体会 - 11 -5致谢 - 13 -参考文献 - 14 -附1 源程序代码 - 15 -附2 系统原理图 - 21 - 1概述1. 1 电子琴技术状况本次设计提出了用AT89C52单片机为核心控制元件,设计一个简易的电子琴. 本方案以AT89C52单片机作为主控核心,与键盘、蜂鸣器等模块组成核心主控制模块在主控模块上设有4*4个按键和蜂鸣器。根据使用者的操作随意弹奏想要表达的音乐。一首音乐是许多不同的音阶组成的,而每个音阶对应着不同的频率,这样我们就可以利用不同的频率

5、的组合,即可构成我们所想要的音乐了,当然对于单片机来产生不同的频率非常方便,我们可以利用单片机的定时/计数器T0来产生这样方波频率信号。1. 2 任务与要求实现电子琴发声控制系统;要求电路实现如下功能:4*4键盘组成16个按钮,可以随意弹奏想要表达的音乐。设置一个开始键,一个结束键,一个重复键,通过按重复键可以完成之前音乐的重放。说明:单片机的工作时钟频率为12MHz。1.3 主要芯片简介1.3.1 AT89C52芯片介绍 AT89C52(图1-1)为8位低功耗单片机,采用工业标准的C51内核,在内部功能及管脚排布上与通用的8xc52 相同,其主要用于会聚调整时的功能控制。功能包括对会聚主IC

6、 内部寄存器、数据RAM及外部接口等功能部件的初始化,会聚调整控制,会聚测试图控制,红外遥控信号IR的接收解码及与主板CPU通信等。主要管脚有:XTAL1(19 脚)和XTAL2(18 脚)为振荡器输入输出端口,外接12MHz 晶振。RST(9 脚)为复位输入端口,外接电阻电容组成的复位电路。VCC(40 脚)和GND(20 脚)为供电端口,分别接+5V电源的正负端。P0P3 为可编程通用I/O 脚,其功能用途由软件定义,在本设计中,P0 端口(3239 脚)定义为双向8位三态I/O接口,它既可以作为通用I/O接口,又可作为外部扩展时的数据总线及低8位地址总线的分时复用口;P1端口(18脚)定

7、义为准双向I/O接口,内部具有上拉电阻;P2端口(2128脚)定义为8位准双向I/O接口,内部具有上拉电阻,可直接连接外部I/O设备,同时与地址高8位复用;P3端口(1017)定义为8位准双向I/O接口,内部具有上拉电阻,它是双功能复用口,每个引脚可驱动4个TTL负载。图1-1 AT89C52 图1-2 8255A芯片1.3.2 8255A芯片介绍8255A(图1-2)是一片使用单一+5V电源的40脚双列直插式大规模集成电路。它的通用性强,使用灵活,通过它CPU可直接与外设相连接。8255A在使用前要写入一个方式控制字,选择A、B、C三个端口各自的工作方式,共有三种:方式0 :基本的输入输出方

8、式,即无须联络就可以直接进行的 I/O方式。其中A、B、C口的高四位或低四位可分别设置成输入或输出。方式1 :选通I/O,此时接口和外围设备需联络信号进行协调,只有A口和B口可以工作在方式1,此时C口的某些线被规定为A口或B口与外围设备的联络信号,余下的线只有基本的I/O功能,即只工作在方式0. 方式2: 双向I/O方式,只有A口可以工作在这种方式,该I/O线即可输入又可输出,此时C口有5条线被规定为A口和外围设备的双向联络线,C口剩下的三条线可作为B口方式1的联络线,也可以和B口一起方式0的I/O线。8255A是一个并行输入、输出器件,具有24个可编程设置的I/O口,包括3组8位的I/O为P

9、A口、PB口、PC口,又可分为2组12位的I/O口:A组包括A口及C口高4位,B组包括B口及C组的低4位。2 系统总体方案及硬件设计 本系统采用单片机AT89C52为电子琴的控制核心,系统主要包括按键弹奏模块、音乐播放模块。下面对各模块的设计逐一进行论证比较。总电路图见附页二。2. 1系统总体方案2.1.1定时/计数器的设计和状态字定义:若要产生音频脉冲,只要算出某一音频的周期(1/频率),再将此周期除以2,即为半周期的时间。利用定时器计时半周期时间,每当计时终止后就将P3.3反相,然后重复计时再反相。就可在P3.3引脚上得到此频率的脉冲。利用AT89C52的内部定时器使其工作计数器模式(MO

10、DE1)下,改变计数值TH0及TL0以产生不同频率的方法产生不同音阶,例如,频率为523Hz,其周期T1/5231912s,因此只要令计数器计时956s/1s956,每计数956次时将I/O反相,就可得到中音DO(523Hz)。计数脉冲值与频率的关系式是:Nfi2fr,式中,N是计数值;fi是机器频率(晶体振荡器为12MHz时,其频率为1MHz);fr是想要产生的频率。其计数初值T的求法如下:T65536N65536fifr例如:设K65536,fi1MHz,求中音DO(261Hz)。fr655361000000fr65536500000/fr,中音DO的T65536500000/523645

11、80。单片机12MHZ晶振,中音符与计数T0相关的计数值如表所示:音符频率(HZ)简谱码(T值)中1 DO26263628中 5 SO74064860中2RE27763731中 6 LA78464898中3MI29463835中7 XI83164934中4FA31163928高 1 DO88064968用单片机播放音乐,或者弹奏电子琴,实际上是按照特定的频率,输出一连串的方波。为了输出合适的方波,首先应该知道音符与频率的关系。2. 2总体硬件组成框图 停止键开始键播放键图2-1 总体硬件组成框图实验中每按下一个琴键,单片机能够检测到键盘的按键,并根据按键的位置,通过程序来控制,使喇叭发出不同频

12、率(音调)的声音,声音延迟一段时间,等到按键放开之后,声音停止。然后再继续扫描,看是否有键按下。如此循环,即可实现基本的琴键功能。2. 2. 1 子系统模块一琴键模块如图2-2所示,利用AT89C52单片机的P0端口及P2端口与8255连接。图2-2 键盘电路图2. 2. 2 子系统模块二播放模块是蜂鸣器构成。蜂鸣器是一种一体化结构的电子讯响器,采用直流图2-3 发声模块电路图电压供电,广泛应用于计算机、打印机、复印机、报警器、电子玩具、汽车电子设备、电话机、定时器等电子产品中作发声器件。蜂鸣器主要分为压电式蜂鸣器和电磁式蜂鸣器两种类型。蜂鸣器在电路中用字母“H”或“HA”(旧标准用“FM”、

13、“LB”、“JD”等)表示。而且由于所需驱动功率较小,且价格低廉,所以,被广泛应用。2. 2. 3 子系统模块三电子琴设有8个按键,分别代表8个音符,包括中音段的全部音符。通过软硬件设计,按键触发外部中断,中断使程序跳转,实现模式转换,启动电子琴。然后通过查询电子琴所按下的按键,读取电子琴输入状态,跳转到对应的程序人口,实现各种琴键的声音。矩阵键盘模块图如下: 图2-4 矩阵键盘模块2.2.4 AT89C51复位模块图2-5 复位电路2. 2. 5 AT89C52晶振模块 图2-6 晶振模块3 软件设计软件是该电子琴控制系统的重要组成部分,将系统的各部分功能编写成子模块的形式,这样增强了系统软

14、件的可读性和可移植性。KEIL C51 Vision2集成开发环境是KEIL Software,Inc/KEIL electronik GmbH开发的基于80C51内核的微处理器软件开发平台,内嵌多种符合当前工业标准的开发工具,可以完成从工程建立到管理、编译、链接、目标代码的生成、软件仿真、硬件仿真等完整的开发流程尤其是C编译工具在产生代码的准确性和效率方面达到了较高的水平,而且可以附加灵活的控制选项,在开发大型项目时非常理想。3. 1软件设计总流程图流程 图3-1 软件设计总流程图3. 2 软件程序本系统的上位机软件主要是编辑电子琴播放状态的内容,在设计中采用C语言编写了电子琴控制系统控制和

15、播放内容的程序。见附录一。4 课程设计体会微型计算机的出现和大量使用将人类社会带入一个新的时代,单片微型计算机(简称单片机)在其中扮演着十分重要的角色。虽然它没有常见的PC那样大的体积和重量,不会在办公桌或控制台上占据一个显要的位置,但它就像小小的螺丝钉一样,镶嵌在人们工作、生活中需要计算、控制、测量等智能活动的各个角落。自20世纪70年代问世以来,单片机以其体积小、可靠性高、控制功能强、使用方便、性能价格比高、容易产品化等特点,在智能仪表、机电一体化、实时控制、分布式多机系统、家用电器等各个领域得到了广泛应用,对各个行业的技术改造和产品的更新换代起着重要的推动作用,对人们生活质量的提高产生了

16、深刻的影响。作为21世纪的工科大学生,学好单片机,一方面可以加深对计算机原理和结构的认识,另一方面也为自身在专业上的深入发展构筑了一个很好的平台其重要性怎么强调都不为过。将程序烧入芯片,调试成功后,可任意弹奏自己想要的旋律。本研究通过制作电子琴,将几个模块很好的融合起来,对使用单片机设计简易电子琴进行了分析,并介绍了基于单片机电子琴统硬件组成。说明一首音乐是许多不同的音阶组成的,而每个音阶对应着不同的频率,这样我们就可以利用不同的频率的组合,即可构成我们所想要的音乐了,于是我们可以利用单片机的定时/计数器T0来产生这样方波频率信号,因此,我们只要把一首歌曲的音阶对应频率关系弄正确即可,然后我们

17、利用功放电路来将音乐声音放大,同时通过显示模块来确知自己所弹的音符。思考:可弹奏的音符数较少,只能在一定范围内满足用户需要。可通过改进键盘识别模块和发生模块来增加其复杂度。音色不可调,只有一种波形的频率输出。可以在外围电路设计滤波电路,接在不同的输出口,通过软件实现不同端口的输出,从而接入不同的滤波电路,输出不同的波形,从而获得不一样的音色。不能以和弦形式演奏,只能单个键按下输出单个的音阶。这次课程设计论文能够得以顺利完成,是所有曾经指导过我的老师,帮助过我的同学,帮助和鼓励的结果。我要在这里对他们表示深深的谢意! 首先,要特别感谢我的指导老师谭周文老师。谭老师在我设计出现问题时给予我耐心的帮

18、助,为我排忧解难,为我的课程设计的完成提供了一定的帮助指导。老师的严谨的治学态度,精益求精的工作作风,诲人不倦的高尚师德,朴实无华、平易近人的人格魅力对我影响深远。不仅使我树立了远大的学术目标、掌握了基本的研究方法,还使我明白了许多待人接物与为人处世的道理。 其次,要感谢所有我们通控系的任课老师,老师们教会我的不仅仅是专业知识,更多的是对待学习、对待生活的态度。 最后对老师,同学和家人再次致以我最衷心的感谢!教导过我的老师,你们的人格魅力永记我心间。身边的同学和朋友,有你们,我的大学才算完整。寝室的好友,你们的天赋犹如上天恩赐,有了你们我的生活更加精彩。5致谢本次单片机课程设计历时两个星期,在

19、这了两个星期中我们深深体会到了课程设计的苦与乐。当程序调试出现问题时,我们就一步步调试,一步步查看,修改,这过程确实很枯燥,也很辛苦,但是,当程序调试成功并且能够下载到单片机中运行时,有说不出的高兴,感觉我们所有的付出都是值得的。总的来说,这次课程设计,让我们领悟到理论与实践结合的重要性。懂得拥有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从中得到收获,从而提高自己的实际动手能力和独立思考的能力,做到全面发展,这样才能真正为社会服务。因为这是第一次做单片机课程设计,所以我们遇到过各种各样的问题,面对这些难题,我们没有妥协,以求学的心态去解决,从中发现了自己的不足之处,正是这些难

20、题让我们看到了自己的不足,对以前所学过的知识理解得不够深刻,基础掌握得不够牢固。只学到了表面的知识,并没有深入了解知识的内涵。所以很庆幸有这次课程设计,它教会了我们到底要学些什么知识,给我们以后的学习指明了一个方向,促使我们更加努力的学习,补充自己的不足。这次课程设计终于顺利完成了,其中离不开老师的耐心指导和同学们的热心帮助,在此表示衷心的感谢,另外特别感谢指导老师谭老师的耐心指导,他的讲解让我们有豁然开朗的感觉,让我们得以顺利完成这次课程设计。参考文献1 余发山、王福忠. 单片机原理及应用技术. 中国矿业大学出版社.2008年6月第1 版2 杨凌霄. 微型计算机原理与应用,中国矿业大学出版社

21、.2008年8月第一版3 康华光. 电子技术基础(数字部分),高等教育出版社.第五版4 邓红. 单片机实验与应用设计教程 出版日期:2004年05月第1版5 以及其他的网上资源附1 源程序代码#include /头文件absacc.h /8255引脚定义文件#define uint unsigned int /宏定义#define uchar unsigned char#define PA XBYTE0xD0FF /8255引脚地址定义#define PB XBYTE0xD2FF#define PC XBYTE0xD4FF#define CON XBYTE0xD6FFuint w,z,key,

22、qidong,num1,num0,count=0,changge;sbit beep=P33; /蜂鸣器位uint temp42=0; /保存key值数组uint a=64580,64684,64777,64820,64898,64968,65030,65058; /八个音节void delay(uint); /延时函数void jianpan(); /键盘扫描函数void kaishi(); /开始键void chongfu();main() CON=0X80; /8255方式设定 TMOD=0X01; /定时器0设置 EA=1; ET0=1; PA=0XFF; /关数码管 EX0=1; /

23、外部中断0设置 IT0=1; PT0=1; /定时器0优先 while(1) kaishi(); jianpan(); void jianpan() if(qidong=1) PC=0XF7;/第一排 w=PC; /读PC口 w=w&0xf0; /获取最高位 if(w!=0xf0) delay(10); switch(w) case 0xe7: key=0; break; case 0xd7: key=1; case 0xb7: key=2; case 0x77: key=3; beep=beep; TH0=akey/256; TL0=akey%256; TR0=1; while(w!=0xf

24、0) /松手判断 TR0=0; tempcount+=akey; PC=0XFB; /第二排 case 0xeb: key=4; case 0xdb: key=5; case 0xbb: key=6; case 0x7b: key=7; tempcount+=akey; /这个括号是qidong对应void delay(uint z) uint x,y; for(x=z;x0;x-) for(y=110;yy-);void timer0() interrupt 1void kaishi() PC=0XFE; if(PC=0xee) qidong=1;void wai0() interrupt 0 uint i; chongfu(); if(changge=1) for(i=0;icount;i+) akey=tempi;/转接一下,好调用定时器00 beep=1; TH0=akey/256; TL0=akey%256; TR0=1; if(i=6|i=13|i=20|i=27|i=34|i=41) delay(500); else delay(200); TR0=0; delay(200); count=0;void chongfu() if(PC=0xde) changge=1;附2 系统原理图 系统总原理图

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1