基于单片机的电子琴和音乐播放器设计
基于单片机的带音乐播放的电子琴设计
课题名称、主要内容和基本要求:进度安排:指导教师签名:评阅教师签名:毕业设计(论文)成绩:答辩委员会主任签名:摘要电子琴是现代电子科技与音乐结合的产物,是一种新型的键盘乐器。
它在现代音乐扮演着重要的角色,单片机具有强大的控制功能和灵活的编程实现特性,它已经溶入现代人们的生活中,成为不可替代的一部分。
本文的主要内容是用AT89S51单片机为核心控制元件,设计一个电子琴。
以单片机作为主控核心,与键盘、扬声器等模块组成核心主控制模块,在主控模块上设有10个按键和扬声器。
本系统运行稳定,其优点是硬件电路简单,软件功能完善,控制系统可靠,性价比较高等,具有一定的实用和参考价值。
众所周知,由于一首音乐是由许多不同的音阶组合而成的,而每个音阶则对应着不同的频率,因此我们可以利用不同的频率来进行音阶的组合,即可产生美妙的音乐了。
对于单片机来说,产生不同的频率非常方便,只要算出某一音频的周期,然后将此周期除以2,即为半周期的时间,利用定时器计时这个半周期时间,每当计时到后,就将输出脉冲的I/O反相,然后重复计时,此半周期再对I/O反相,即可在I/O脚上得到此频率的脉冲。
因此我们可以利用单片机的定时器,使其工作在计数器模式MODE1下,改变计数值TH0及TL0来产生不同频率的信号。
从而产生不同的音符[1]。
关键词:音阶,频率,单片机AbstractElectronic organ is a modern electronic music technology and the product is a ne w type of keyboard instruments. It played an important role in modern music. SCM ha s powerful control functions and flexible programming characteristics. It has converge d with modern people's lives, become an irreplaceable part. The main content is AT89 S51 control of the core components, design of a electronic organ. SCM as a host to th e core, with the keyboard, speaker and other core modules. In the main control modul e has 16 keys and a speaker. The system is steady, its simple hardware circuits, softwa re functions, reliability of control system and high cost performance is its advantages. It also has certain practical and reference value.Well-known, the music is made up by many different scales, and each scale corresponds to different frequency, so we can use different frequency to make combination of scales, and then produce wonderful music.As for single-chip microcomputer, it is very convenient to produce different frequency, we just calculate an audio cycle, then this cycle divided by 2, namely half cycle time, using timer to time the half cycle time.Whenever timing, it will output pulse I/O reverse phase, and repeat the timing, the half cycle again to the I/O reversed-phase, then can get this frequency pulse from the I/O feet. So we can use microcontroller timer to make it work in the counter mode and generate different frequency signal. Thus produce different notes. Keywords: scales,frequency, single-chip microcomputer目录第一章绪论 (1)1.1电子琴的特点及研究意义 (1)1.2系统介绍 (1)第二章方案论证 (2)2.1单片机选择 (2)2.2键盘选择 (2)2.3功放电路选择 (3)第三章系统设计 (4)3.1单片机的介绍 (4)3.1.1单片机AT89S52基本知识 (4)3.1.2单片机AT89S52产品特点 (4)3.1.3单片机AT89S52的使用 (5)3.1.4单片机AT89S52的特性 (6)3.1.5AT89S52引脚功能与封装 (7)3.2LED数码管 (9)3.2.1LED数码管主要技术参数 (9)3.2.2LED数码管的引脚说明 (10)3.2.3数码管编码说明 (11)3.3LM386 (12)3.3.1LM386简介 (12)3.3.2LM386特性 (12)3.3.3LM386应用特点 (12)3.3.4LM386引脚图 (12)3.3.5LM386注意事项 (12)第四章硬件设计 (13)4.1总体电路设计 (13)4.2单片机最小系统电路 (14)4.3LM386功放电路 (14)4.4数码管显示电路 (15)4.5按键电路 (16)4.6按键指示灯电路 (17)4.7音乐产生方法 (17)第五章软件设计 (19)5.1程序流程图 (19)5.2S1-S8按键识别程序 (20)5.3S9键识别电路程序 (21)5.4音乐产生程序 (22)第六章调试过程 (26)6.1数码管显示乱码 (26)6.3按键处理问题 (26)结论 (26)参考文献 (27)谢辞 (28)附录 (29)附录一程序源代码 (29)附录二电路图 (41)第一章绪论1.1电子琴特点及研究意义本论文设计的为电子琴,电子琴又称作电子键盘,属于电子乐器(区别于电声乐器),发音音量可以自由调节。
基于51单片机的简易音乐播放器
基于单片机的电子琴课程设计一:课程目的以及要求用51单片机作为主控电路设计一个电子琴,实现能通过切换不同的键盘按键来切换歌曲。
二:课程设计背景:电子琴是现代电子科技与音乐结合的产物,是一种新型的键盘乐器。
它在现代音乐扮演着重要的角色,单片机具有强大的控制功能和灵活的编程实现特性,它已经溶入现代人们的生活中,成为不可替代的一部分。
本文的主要容是用STC89C52单片机为核心控制元件,设计一个电子琴。
以单片机作为主控核心,与键盘、扬声器等模块组成核心主控制模块。
本文主要对使用单片机设计简易电子琴进行了分析,并介绍了基于单片机电子琴统硬件组成。
利用单片机产生不同频率来获得我们要求的音阶,最终可随意弹奏想要表达的音乐。
并且本文分别从原理图,主要芯片,各模块原理及各模块的程序的调试来详细阐述。
三:系统硬件设计3.1系统框图3.2 51单片机产生音符原理MCS-5l单片机有两个定时器/计数器。
系统使用定时器/计数器0产生方波。
定时器/计数器l刖用于记录音符的时长,即按键持续的时问。
定时器/计数器0的工作方式是l,即为16位定时器/计数器。
16位定时器/计数器被赋予一个初值,并开始记数。
当记数溢出,产生中断后,中断服务程序将与蜂鸣器连接的引脚电平置反,并且对定时器/计数器再赋初值,重新开始记效。
之后产生中断,引脚电平再被置反,如此周而复始,在引脚上就能产生一个频率与定时初值有关的方波信号。
而定时初值与音符频率有关,相应频率的确定,可参照12平均律,相邻两个半音A和B的频率之间的关系为:A=B√12[1]。
定时器/计数器l的作用为记录音符的时长,工作方式为l,即16位定时器/计数器。
在12MHZ的晶体振荡器F,单片机的机器周期为l“S。
本系统中,定时器/计数器l以10ms的时长为l定时单位,记录音符持续了多少个定时单位,如此,使用一个unmgnedchar型变量既可以记录2.55s的时长,这在用于记录一般弹奏的音符时是足够的。
基于单片机的电子琴机器音乐播放器的设计--开题报告
本科毕业设计(论文)开题报告一、毕业设计(论文)内容及研究意义(价值)本次设计的主要内容是设计一种多功能电子琴,是集电子琴和音乐播放器于一体的新型电子琴。
它是以AT89S52 单片机为核心,并辅有一些外围器件,采用汇编语言编写程序,实现多功能音乐播放,歌曲自动循环播放和使用琴键自编曲目功能。
此外,彩灯显示歌曲节奏,按键跳转到喜爱曲目,液晶显示当前播英文曲目。
目前流行的MP3,MP4播放器的音质相当好。
但略感遗憾的是除了选择歌曲和显示歌名外,绝大部分播放器没有诸如随意弹奏乐曲、乐曲节奏跳动显示等功能。
正是基于音乐播放器的多功能出发,提出这种电子琴和音乐播放器的设计方案。
之所以以单片机电子琴和音乐播放器为选题,目的在于从日常生活能接触到的细微处着手,通过理论与实践的结合,更明确自己的所学所用,也在实践中发现理论的不足,对目前日益广泛应用的单片机有了更加理性化和感性化的认识,使理论和实践相得益彰。
单片机技术发展非常快,所以目前的产品都致力于在功能全面、技术先进、操作简便、安全可靠、价格合理等方面进行仔细研究,精心设计;及时掌握最新的单片机技术,在条件允许的情况下,尽可能地利用最新的单片机技术来研制其应用系统,再利用单片机体积小、价格低、功能强等特点,以保证所设计的产品在未来的一段时间内仍具生命力。
单片机电子琴只和音乐播放器是单片机应用的一个点,由点及面,希望可以更好的了解和应用单片机技术。
通过单片机电子琴和音乐播放器这个选题,更深层次的了解了单片机技术,以前只是有理论,实践的机会不是很多,在作单片机电子琴这个选题的过程中,更加熟练的掌握了一些单片机芯片的应用,也解决了很多以前理论和实践脱节的问题,可谓对单片机的认识有了一个小的飞跃。
二、毕业设计(论文)研究现状和发展趋势(文献综述)单片机出现的历史并不长,但发展十分迅猛,在集成度、功能、速度、可靠性、应用领域等全方位向更高水平发展。
目前单片机已用于工业控制、机电一体化设备、仪器仪表、信号处理、现代兵器、交通能源、商用设备、医疗设备及家用电器等各个领域,随着单片机性能的不断提高,它的应用将会更加广泛。
基于单片机的音乐电子琴设计
题目基于单片机的音乐电子琴设计摘要电子琴的出现可以追溯到几百年前,在这个几百年的过程中,它已经从庙堂之高飞入寻常百姓家,成为再普通不过的商品了。
作为最受大众喜爱的微型电子琴,功能齐全人性化,价格也是非常令人满意,喜爱最深的当属初学者。
嵌入式电子技术的大步迈进也间接带动了微型电子琴技术的向前发展,单片机、PLC还有FGPA各有各自的长处。
一般说来,好的产品优势之处总是不谋而合,音色效果极佳;技术成熟,系统不会紊乱;价格低;接口齐全等都是优势之处。
本次设计以STC89C52单片机为核心,除了单片机以外,系统还有三个模块:分别为键盘扫描模块,扬声器模块,和液晶显示模块。
本设计综合运用了硬件和软件,在这些基础上设计了一款简易的音乐电子琴,可以通过该设计实现对音乐的演奏。
关键词:音乐电子琴;单片机;演奏ABSTRACTFrom the invention of the electric piano several hundred years ago to now, it has entered millions of households and become a popular commodity. Especially the miniature electronic keyboard, although it is cheap, but it is powerful, it is deeply loved by customers, especially those who just started to learn piano. With the development of embedded electronic technology, the development of the miniature electronic keyboard has become more and more mature, and the use of single-chip microcomputers, PLCs, and FGPA have their merits. But overall, the outstanding products are similar, the first to produce high-quality sound effects, the second is mature technology, the system is stable, the third is low cost, and the fourth is good scalability.This design takes the STC89C52 MCU as the core. Besides the MCU, the system has three modules: the keyboard scanning module, the speaker module, and the liquid crystal display module. The design uses a combination of hardware and software. Based on these designs, a simple music keyboard is designed to enable music to be played through the design.Key words: Music Electronic organ; Single-chip computer; Play目录第一章绪论 (1)1.1研究现状 (1)1.2课题研究的目的和意义 (2)1.3国内外概况 (2)第二章硬件部分 (4)2.1 STC89C52单片机概述 (4)2.1.1晶振电路 (9)2.1.2复位电路 (7)2.2按键部分电路概述 (7)2.3 音阶设计原理 (9)2.4 Nokia5110显示简介 (12)2.5 miniplay音乐模块概述 (12)2.5.1主要功能及参数 (13)2.5.2实际应用 (13)第三章软件部分 (17)第四章硬件调试部分 (20)4.1常见的硬件故障 (20)4.2硬件调试方法 (20)结束语 (24)致谢 (25)附录A (27)附录B (28)第一章绪论1.1研究现状如今电子信息技术越来越发达,嵌入式技术也随之越来越好,并且在很多领域内都得到了运用。
基于单片机的电子琴和音乐播放器设计
输入模块: 4*4 键盘
PIC32MX7 95F512L
芯片
输出模块: 喇叭
输出模块: 走马灯
5.1.2 硬件概述
本电路是由 PIC32MX795F512L 单片机为控制核心,具有键盘输入、液晶显示屏输出和 三极管驱动的喇叭构成的简易电子琴电路。
1.单片机
PIC32MX795F512L 型号单片机具有 USB、CAN 和以太网的高性能 32 位闪存,其所 拥有的主要资源有:
若要产生音频脉冲,只要算出某一音频的周期(1/频率),再将此周期除以 2,即为半 周期的时间。利用定时器计时半周期时间,每当计时终止后就将相应的端口反相,然后重复 计时再反相。就可在各对应的引脚上得到此频率的脉冲。
我们小组利用 PIC32MX795F512L 的 80M 主频,运用 delay 函数,改变 delay 的时间以产 生不同频率的方法产生不同音阶。由于主频较高,没有一个音符的频率可以参考,于是我们 小组是利用自己的乐理知识将每个音校正。
4
RG1 RD3
RE0 RG14
RE1 RD4 RE3 RE2
3.输出模块(显示屏)
采用型号为 RT1602C 的液晶显示屏,液晶显示屏的显示功能强大,可显示大量文字、图 形,显示多样,清晰可见, 与传统的阴极射线管相比,液晶显示屏具有占用空间小、低功耗、 低辐射、无闪烁、降低视觉疲劳等优点。字符型液晶屏是一种用 5*7 点阵图形来显示字符的 液晶显示器,根据显示的容量可以分为 1 行 16 个字、2 行 16 个字、2 行 20 个字等,最常用 的为 2 行 16 个字。
型号为 RT1602C 的液晶显示屏就是 2 行 16 个字。它有 16 个管脚,分别有电源地、电 源正、偏压信号、读写控制、使能控制、I/O 接口、背光控制等功能。它的读写操作、屏幕 和光标的操作都是通过指令编程来实现的。
基于51单片机的电子琴设计课程设计
目录前言 (2)第1章基于51单片机的电子琴设计 (3)1.1 电子琴的设计要求 (3)1.2 电子琴设计所用设备及软件 (3)1.3 总体设计方案 (3)第2章系统硬件设计 (5)2.1 琴键控制电路 (5)2.2 音频功放电路 (6)2.3 时钟-复位电路 (6)2.4 LED显示电路 (6)2.5 整体电路 (6)第3章电子琴系统软件设计 (7)3.1 系统硬件接口定义 (7)3.2 主函数 (8)3.2.1 主函数程序 (8)3.3 按键扫描及LED显示函数 (9)3.3.1 键盘去抖及LED显示子程序 (10)3.4 中断函数 (11)3.4.1 中断程序 (12)第4章电子琴和调试 (12)4.1 调试工具 (12)4.2 调试结果 (13)4.3 电子琴设计中的问题及解决方法 (14)第5章电子琴设计总结 (15)参考文献 (16)附录 (17)前言音乐教育是学校美育的主要途径和最重要内容,它在陶冶情操、提高素养、开发智力,特别是在培养学生创新精神和实践能力方面发挥着独特的作用。
近年来,我国音乐教育在理论与实践上都取得了有目共睹的成绩,探索并形成了具有中国特色的、较为完整的音乐教育教学体系。
但我国音乐教育的改革力度离素质教育发展的要求还存在一定距离。
如今,电子琴作为电子时代的新产物以其独特的功能和巨大的兼容性被人们广泛的接受和推崇。
而在课堂教学方面,它拥有其它乐器无法比拟的两个瞬间:瞬间多元素思维的特殊的弹奏方法;瞬间多声部(包括多音色)展示的乐队音响效果的特点。
结合电子琴自身强大的功能及独特的优点来进行音乐教育的实施,这样就应该大力推广电子琴进入音乐教室,让电子琴教学在音乐教育中发挥巨大的作用。
现代乐器中,电子琴是高新科技在音乐领域的一个代表,体现了人类电子技术和艺术的完美结合。
电子琴自动伴奏的稳定性、准确性,以及鲜明的强弱规律、随人设置的速度要求,都更便于人们由易到难、深入浅出的准确掌握歌曲节奏和乐曲风格,对其节奏的稳定性和准确性训练能起到非常大的作用。
基于单片机的音乐盒和电子琴设计
实验名称:基于51单片机的音乐盒和电子琴的设计实验目的:通过设计一个以51单片机为核心的音乐盒和电子琴实现对前面几次实验的综合,并且可以更加深入的掌握单总线器件和I2C总线器件的应用,掌握ZLG7290器件中LED和键控的原理,掌握蜂鸣器的使用,掌握16X16 LED点阵的使用,熟悉串行总线的操作技巧。
实验原理:1、I2C总线的原理I2C典型的传输格式:根据上图我们可以看到:每一次传输由START开始,数据位是从高位(MSB)传起,每个Byte接收方有ACK (在第9个Clock拉低SDA),结束传输有STOP标记。
将开始信号与结束信号放大展开:START:SCL维持高,SDA从高到低STOP:SCL维持高,SDA从低到高24WC02的写操作单字节:页操作:24WC02的读操作指定地址读时序:首先要对所选从器件地址和字节地址进行伪写操作(从器件地址R/-W=0);然后,重新发START和从器件地址;得到ACK后,可以读取数据。
连续读时序:可由指定地址读和立即读方式启动连续读模式;在从器件发送完一个8 位字节数据后,主器件产生一个ACK来告知从器件提供更多的数据。
对应每个主器件的ACK,从器件将发送一个8位数据字节;当主器件不发送应答信号而发送停止位时结束此操作。
2、ZLG7290LED显示和键盘的检测ZLG7290是一种I2C接口键盘及LED驱动管理器件,提供数据译码和循环、移位、段寻址等控制。
它可采样64个键盘或传感器,单片即可完成LED显示、键盘接口的全部功能。
ZLG7290的从地址为70H,器件内部通过I2C总线访问的寄存器地址范围为00H~17H,任一寄存器都可按字节直接读写,并支持自动增址功能和地址翻转功能。
LED显示部分:在每个显示刷新周期,ZLG7290按照扫描位数寄存器制定的显示数N,把显示缓存DpRam0~DpramN的内容按先后循环送入LED驱动器实现动态显示,减少N值可提高每位显示扫描时间的占空比,提高LED亮度,显示缓存中的内容不收影响。
单片机电子琴音乐盒课程设计
软件优化不够
虽然我们实现了基本的功能,但 在软件算法的优化方面还存在不 足,如音符播放的流畅度、音乐
格式的兼容性等还有待提高。
测试与验证不充分
在课程设计中,我们对音乐盒的 测试与验证工作不够充分,未能 全面覆盖各种使用场景和异常情 况,导致在实际应用中出现了一
些问题。
未来发展趋势预测
,在各个领域得到了广泛应用。
02
音乐教育的普及
音乐教育逐渐受到人们的重视,越来越多的人希望通过各种方式学习和
欣赏音乐。
03
创意礼品的市场需求
在礼品市场中,具有创意和个性化的产品越来越受到消费者的青睐,电
子琴音乐盒作为一种将音乐与工艺品相结合的创意礼品,具有很大的市
场潜力。
目的和意义
01
提高学生实践能力
改进建议
针对发现的问题和性能瓶颈,提出具体的改进措施,如优化算法、更换更高性能的元器件 等。同时,也可以提出新的功能或设计思路,以完善和提升系统的整体性能。
PART 06
课程设计总结与展望
REPORTING
课程设计成果总结
1 2 3
实现基本功能
成功设计并制作了一个基于单片机的电子琴音乐 盒,实现了基本的音符播放、音乐播放和控制功 能。
智能化发展
随着人工智能技术的不断发展,未来的电子琴音乐盒有望 实现更加智能化的功能,如语音识别、自动演奏等。
多功能集成
为了满足用户多样化的需求,未来的电子琴音乐盒可能会 集成更多功能,如录音、编曲、教学等。
绿色环保
随着环保意识的日益增强,未来的电子琴音乐盒在设计和 生产过程中将更加注重环保和节能,采用更环保的材料和 更高效的能源利用方案。
播放功能测试
基于单片机的带存储播放功能的简易电子琴
播放控制逻辑实现
01
播放控制
设计播放控制逻辑,包括播放、暂停、停止、上一曲、下一曲等功能。
通过单片机的GPIO口或专用音频控制接口与音频输出模块进行通信,
实现播放控制。
02
播放状态管理
在单片机系统中管理播放状态,如当前播放的曲目、播放进度、播放模
式等。可以使用数据结构和变量来记录这些信息,并提供相应的接口供
代码优化
精简代码结构,提高执 行效率,减少资源占用。
03 键盘输入模块设计
键盘布局与按键功能定义
键盘布局
采用矩阵式键盘布局,将多个按键按 照矩阵形式排列,通过行列扫描方式 实现按键输入。
按键功能定义
每个按键对应一个音符,按下不同的 按键可以发出不同的音符声音。同时 ,设置一些功能键,如播放/暂停键、 录音键等,实现电子琴的基本功能。
其他模块查询和修改。
03
用户交互设计
为了方便用户操作,可以设计简单的用户交互界面,如按键或触摸屏等。
通过接收用户的输入指令,实现相应的播放控制操作。
05 声音输出模块设计
DAC转换器选型及配置
DAC转换器类型
接口电路
选用高精度、低噪声的DAC转换器, 如TI公司的TLV320AIC3254等,以确 保音频信号的准确性和纯净度。
基于单片机的带存储播放功能的简 易电子琴
目 录
• 项目背景与意义 • 系统总体设计 • 键盘输入模块设计 • 存储播放模块设计 • 声音输出模块设计 • 系统测试与性能评估 • 总结与展望
01 项目背景与意义
电子琴发展现状及趋势
01
02
03
多样化功能
现代电子琴不仅具备传统 钢琴的演奏功能,还集成 了录音、播放、编曲等多 种功能。
基于单片机的电子琴设计
基于单片机的电子琴设计一、引言二、总体设计方案(一)设计目标设计一款基于单片机的电子琴,能够实现基本的音符演奏、音色切换、节奏控制等功能,并且具有良好的音质和稳定性。
(二)系统组成本电子琴系统主要由单片机控制模块、键盘输入模块、音频输出模块、显示模块和电源模块等部分组成。
1、单片机控制模块选用 STM32 系列单片机作为控制核心,负责处理键盘输入信号、生成音频信号、控制显示等功能。
2、键盘输入模块采用矩阵键盘,通过扫描键盘获取用户的按键操作,将其转换为对应的音符编码发送给单片机。
3、音频输出模块使用DAC 芯片将单片机生成的数字音频信号转换为模拟音频信号,再通过放大器和扬声器输出声音。
4、显示模块采用液晶显示屏,用于显示当前的演奏状态、音色选择、节奏模式等信息。
5、电源模块为整个系统提供稳定的电源供应,可采用电池供电或外接电源适配器。
三、硬件设计(一)单片机最小系统STM32 单片机的最小系统包括时钟电路、复位电路和电源电路。
时钟电路为单片机提供工作时钟,复位电路用于系统初始化,电源电路为单片机提供稳定的电源。
(二)键盘电路矩阵键盘由行线和列线组成,通过逐行扫描的方式检测按键状态。
将键盘的行线和列线分别连接到单片机的 GPIO 引脚,通过编程实现键盘扫描和按键识别。
(三)音频输出电路选用高性能的 DAC 芯片,如 PCM1794,将单片机输出的数字音频信号转换为模拟音频信号。
为了提高音频输出的质量,还需要添加放大器和滤波电路,以增强信号的功率和去除噪声。
(四)显示电路液晶显示屏通过 SPI 接口或 I2C 接口与单片机连接,单片机通过发送指令和数据来控制显示屏的显示内容。
(五)电源电路根据系统的工作电压和电流需求,选择合适的电源芯片,如LM7805 等,将输入电源转换为所需的电压,并通过滤波电容等元件提高电源的稳定性。
四、软件设计(一)主程序流程主程序首先进行系统初始化,包括单片机初始化、键盘初始化、音频输出初始化、显示初始化等。
单片机实现电子琴并可播放歌曲
0x99,0x92,0x82,0xF8,
0x80,0x90,0x88,0x83,
0xC6,0xA1,0x86,0x8e};
//中音1-7和高音1-7对应频率列表
uint16 code NoteFrequ[] = {
523,587,659,698,784,880,988, //中音1-7
for(i=0;i<4;i++)
{
P2=buff[i];
temp=P2;
temp&=0xf0;//取P2的高四位;
while(temp!=0xf0)
{
delay5ms(5);//延时5ms去除抖动;
temp=P2;
temp&=0xf0;
while(temp!=0xf0)
{
switch(temp)
{
case 0xe0:num=i*4+0;break;//获取键值;
}
if(num==8)
{
T0LoadH = 0xff;
T0LoadL = 0x00;
TR0 = 1;
flag = 0;
ADDR0 = 0;
ADDR1 = 1;
ADDR2 = 1;
P0 = 0x00;
for(i=0;i<10000;i++);//闪烁灯全亮
PlayTwoTiger();
}
}
void PlayTwoTiger()
//计算发生时间,为总时间的0.75
/***********去除抖动********************/
while(temp!=0xf0)
{
temp=P2;
基于单片机的电子琴及音乐播放器设计
基于单片机的电子琴及音乐播放器设计————————————————————————————————作者:————————————————————————————————日期:基于单片机的电子琴及音乐播放器设计摘要随着电子技术的发展和计算机越来越普遍的使用,单片机作为这两项技术的有机结合也得到了广泛的应用。
电子琴是现代电子科技与音乐结合的产物,是一种新型的键盘乐器。
它在现代音乐扮演重要的角色,单片机具有强大的控制功能和灵活的编程实现特性,它已经溶入现代人们的生活中,成为不可替代的一部分.此次设计依据单片机技术原理,通过硬件电路制作以及软件编译,设计制作出一个基于AT89C52系列单片机的电子琴及音乐播放器,以单片机作为主控核心,主要由按键电路、复位电路、模式转换电路等组成。
利用单片机及KeilC51编程软件编程和PROTEUS单片机仿真软件和电子电工等方面知识,用KeilC51编程软件编程,用PROTEUS单片机仿真软件仿真.最后制作实物,将程序下载到单片机中,利用I/O口产生一定频率的方波,驱动喇叭,发出不同的音调,从而演奏乐曲。
本论文给出了系统方案的建立、硬件电路的详细设计及软件的程序实现。
并通过软硬件的联立调试,验证了设计方案的可行性。
通过基于单片机的音乐播放器的设计课题熟悉和理解单片机应用和开发过程,培养我们理论联系实际,实践出真知的科学严谨求学的态度,提高实践动手操作技能。
关键词:AT89C52单片机、电子琴、音乐播放器、仿真软件目录摘要 (3)1 引言 (5)2 单片机基础知识简介 (5)2。
1 单片机介绍 (5)2。
1.1单片机概念 (5)2。
1。
2 单片机的应用 (6)2。
1。
3 单片机的发展趋势 (6)3 课程设计介绍 (8)3。
1 课程设计的目的 (8)3.2 课程设计的要求 (8)3.3 系统方案的拟定与选择 (8)3.3。
1 初步方案的确定 (8)3。
3。
2方案的简单说明 (8)3。
课程设计报告---基于单片机的电子琴设计
课程设计报告---基于单片机的电子琴设计河南理工大学《单片机应用与仿真训练》设计报告基于单片机的电子琴设计姓名:郭鹏超王芳学号:310808010609 310808010602专业班级:电气08-6班指导老师:王莉所在学院:电气工程与自动化学院2012年5月19 日摘要当代,爱好音乐的人越来越多,有不少人自己练习弹奏乐器作为业余爱好和一种放松的手段,鉴于一些乐器学习难度大需要太多的学习时间,且其价格又太过于高昂,使得一部分有这种想法的人不得不放弃这种想法。
而一些简易的电子乐器价格相对便宜,学习上手快,一般人容易负担的起,能够满足一般爱好者的需求,故简易电子琴的研制具有一定的社会意义。
本次课程设计主要研究基于AT89S52单片机的简易电子琴设计。
整个系统主要包括以下几个部分组成:(1)单片机的最小系统:最小应用系统设计是单片机应用系统的设计基础。
它包括单片机的选择、时钟系统设计、复位电路设计、简单的I/O口扩展、掉电保护等。
(2)矩阵键盘:当按键数目较多时,为了节省I/O口线,通常采用矩阵式键盘接口电路。
本设计采用5*8矩阵键盘(共40个按键,其中36个按键用来显示高中低音的1、1#、2、2#、3、4、4#、5、5#、6、6#、7的36个音调,其它4个按键可以随意的播放已存歌曲)。
(3)产生外部中断的系统:它由两个四输入与非门74LS20和一个两输入或非门74LS02组成,把矩阵的五行与与非门74LS20和或非门74LS02相接后接在了单片机的P3.2口,下降沿触发产生中断INT0。
(4)发音电路:此电子琴发音电路是由或非门来驱动扬声器发音的,控制单片机的P2.7口产生不同频率使扬声器发出不同的音调。
本文主要对单片机设计简易电子琴进行了分析,并介绍了基于单片机电子琴的硬件组成。
并且从原理图,主要芯片,各模块的原理和各个模块的程序调试来阐述。
利用单片机产生不同频率来获得我们要求的音阶,最终可以随意弹奏想要表达的音乐,还设计了一按键用来自动播放一首曲子。
51单片机c语言编写电子琴+音乐播放器
此程序是51单片机c语言编写的电子琴+音乐播放器,当用杜邦线将P1^0管脚接地时,单片机就会放出《世上只有妈妈好》,将P1^1 管脚接地时单片机就播放《祝你生日快乐》,两者为高电平时进入电子钢琴模式,利用16个矩阵键盘发出相应的哆、瑞、米、发、索。
此文档的乐谱是借鉴别人的,因为本人是音乐白痴!这是我第一次发表,我希望能帮到有需要的人啦........#include <reg52.h>#define uchar unsigned char#define uint unsigned intsbit beep=P2^3; //定义蜂鸣器sbit music=P1^0; //music为低电平播放《世上只有妈妈好》(工作模式为音乐播放器),music1为低电平时播放祝你生日快乐,music、music1都为高电平时(工作模式为电子钢琴)sbit music1=P1^1;uchar timer0h,timer0l,time,key,flag; //flag==0时为电子钢琴模式,flag==1时为音乐播放器uchar code yuepu[]={ 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 }; //世上只有妈妈好乐谱uchar code yuepu1[]={5,1,1, 5,1,1, 6,1,2, 5,1,2, 1,2,2, 7,1,4,5,1,1, 5,1,1, 6,1,2, 5,1,2, 2,2,2, 1,2,4,5,1,1, 5,1,1, 5,2,2, 3,2,2, 1,2,2, 7,1,2, 6,1,2,4,2,1, 4,2,1, 3,2,2, 1,2,2, 2,2,2, 1,2,4};//祝你生日快乐乐谱uchar code TH_0[]={0xF2,0xF3,0xF5,0xF5,0xF6,0xF7,0xF8,0xF9,0xF9,0xFA,0xFA,0xFB,0xFB,0xFC,0xFC,0xFC,0xFD,0xFD,0xFD,0xFD,0xFE, // 28个音阶高八位频率表装进定时器高八位0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFF,} ;uchar code TL_0[]={0x42,0xC1,0x17,0xB6,0xD0,0xD1,0xB6,0x21,0xE1,0x8C,0xD8,0x68,0xE9,0x5B,0x8F, // 28个音阶低八位频率表装进定时器低八位0xEE,0x44, 0x6B,0xB4,0xF4,0x2D,0x47,0x77,0xA2,0xB6,0xDA,0xFA,0x16,};void delay(uchar t){uchar t1;unsigned long t2;for(t1=0;t1<t;t1++) //延时半拍函数,控制音乐节奏{for(t2=0;t2<8000;t2++){ ; }}}void song(){TH0=timer0h;TL0=timer0l; // 唱歌程序TR0=1;delay(time); //延时,让此音节播放的长短TR0=0; //关定时器,为下个音节响做准备}void delayms(uint x){uint i,j; //去抖延时for(i=x;i>0;i--)for(j=110;j>0;j--);}void keyscan() //检测十六个发出音乐按键函数{ uchar temp;P3=0xfe;temp=P3;temp=0xf0&temp;if(temp!=0x0f){ delayms(10); //检测第一行按键temp=P3 ;temp=temp&0xf0;if(temp!=0xf0){temp=P3;switch(temp){case 0xee: key=0;break;case 0xde: key=1;break;case 0xbe: key=2;break;case 0x7e: key=3;break;}TH0=TH_0[key]; //将按下的键对应发出此频率声音的初值装入TL0=TL_0[key];TR0=1; //打开定时器0while(temp!=0xf0) //一直按下就一直发声{temp=P3;temp=temp&0xf0;}TR0=0; //松手时关闭定时器0,不能发声beep=1;//使蜂鸣器置高关闭,预防在进入中断取反时将它置低打开}}P3=0xfd;temp=P3;temp=0xf0&temp;if(temp!=0x0f) // 检测第二行按键{ delayms(10);temp=P3 ;temp=temp&0xf0;if(temp!=0xf0){temp=P3;switch(temp){case 0xed: key=4;break;case 0xdd: key=5;break;case 0xbd: key=6;break;case 0x7d: key=7;break;}TH0=TH_0[key]; //将按下的键对应发出此频率声音的初值装入TL0=TL_0[key];定时器0while(temp!=0xf0) //一直按下就一直发声{temp=P3;temp=temp&0xf0;}TR0=0; //松手时关闭定时器0,不能发声beep=1; //使蜂鸣器置高关闭,预防在进入中断取反时将它置低打开}}P3=0xfb;temp=P3;temp=0xf0&temp;if(temp!=0x0f){ delayms(10);temp=P3 ;temp=temp&0xf0;if(temp!=0xf0){temp=P3;switch(temp){case 0xeb: key=8;break;case 0xdb: key=9;break;case 0xbb: key=10;break;case 0x7b: key=11;break;}TH0=TH_0[key]; //将按下的键对应发出此频率声音的初值装入TL0=TL_0[key];TR0=1; //打开定时器0while(temp!=0xf0) //一直按下就一直发声{temp=P3;temp=temp&0xf0;}手时关闭定时器0,不能发声beep=1; //使蜂鸣器置高关闭,预防在进入中断取反时将它置低打开}}P3=0xf7;temp=P3;temp=0xf0&temp;if(temp!=0x0f){ delayms(10);temp=P3 ;temp=temp&0xf0;if(temp!=0xf0){temp=P3;switch(temp){case 0xe7: key=12;break;case 0xd7: key=13;break;case 0xb7: key=14;break;case 0x77: key=15;break;}TH0=TH_0[key]; //将按下的键对应发出此频率声音的初值装入TL0=TL_0[key];TR0=1; //打开定时器0while(temp!=0xf0) //一直按下就一直发声{temp=P3;temp=temp&0xf0;}TR0=0; //松手时关闭定时器0,不能发声beep=1; //使蜂鸣器置高关闭,预防在进入中断取反时将它置低打开}}}void main(){uchar k,i;TMOD=1;EA=1;ET0=1;while(1){if(music&&music1) //当两个都为高电平时没有放音乐,扫描键盘{ flag=0;keyscan();}if(!music) //当P1^0管脚为低电平时,播放《世上只有妈妈好》{ flag=1;i=0;while(i<100) //音乐数组长度,唱完从头再来{if(music) //在播放音乐时P1^0为高电平时退出播放此歌曲{ beep=1; //使蜂鸣器置高关闭,预防在进入中断取反时将它置低打开break;}k=yuepu[i]+7*yuepu[i+1]-1;timer0h=TH_0[k]; // 把对应的音乐频率放进定时器0timer0l=TL_0[k];time=yuepu[i+2]; //音乐节拍i+=3;song();}}if(!music1) // music为低电平时,播放《祝你生日快乐》{ flag=1;i=0;while(i<75) //乐谱的长度{if(music1){beep=1;break;}k=yuepu1[i]+7*yuepu1[i+1]-1;timer0h=TH_0[k];timer0l=TL_0[k];time=yuepu1[i+2];i+=3;song();}}}}void time0() interrupt 1{if(flag==0){beep=!beep; //电子琴模式时进入此语句TH0=TH_0[key];TL0=TL_0[key];}else{ beep=!beep;TH0=timer0h; //音乐播放器模式进入此语句TL0=timer0l;}}。
基于单片机电子琴的设计
摘要当今社会,随着单片机的迅速发展以及电力电子器件的广泛应用。
能够熟练的掌握电力电子的应用以及功能成为屹立于沈阳理工大学自动化莘莘学子的一项必不可少的技能。
我所做的是基于单片机的电子琴的课题,单子琴在当今时代已经是很普遍的一种乐器了。
设计的初衷是秉乘低碳环保,节约资源的理念。
采用矩阵键盘,数码管等器件。
制作成本小,用处大。
满足了当今时代的基本要求。
设计完成后,我们可以利用电子琴来发出16个音节以及附属功能,就是16首歌曲的播放。
它被存储在程序内,玩家可以利用不同的按键调用不同的歌曲。
在实验及设计过程中难免有些疏漏及错误之处,望老师级同学及时的批评指出,我将不胜感激。
崔野2011 12 12目录摘要 (1)第一章目录 (2)第二章设计方案 (3)2.1目的及要求要求 (3)2.2 设计原理 (3)第三章硬件部分 (5)3.1 单片机简介及应用 (5)3.2 矩阵键盘 (10)3.3 数码管简介 (14)3.4 晶振电路 (16)3.5 设计图 (18)第四章软件部分 (19)4.1 目的及要求 (19)4.2 LED显示 (19)4.3 设计框图 (22)第五章调试 (23)5.1 仿真软硬件简介 (23)5.2 软硬件调试及结果 (25)第六章结束语 (33)参考资料 (34)实物展示 (35)第二章设计方案2.1目的及要求目的:实现电子琴播放与音乐播放功能要求:1.用键盘作出电子琴的按键,每键代表一个音符。
2.各音符按一定的顺序排列,必须符合电子琴的按键排列顺序。
3.弹奏电子琴时能播放出准确的声音,不弹奏时可以播放内置音乐。
2.2 设计原理单片机是一种集成在电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU随机存储RAM、只读存储器、多种I/O口和中断系统、定时器/计时器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换等电路)集成到一块硅片上构成的一个小而完善的计算机系统。
基于单片机的电子琴机器音乐播放器的方案设计书--开题报告
本科毕业设计(论文)开题报告题目:基于单片机的电子琴及音乐播放器的设计设计?实验研究□论文□题类型:课名:孙浩学生姓3070201411 学号:班业班级:自动化074专学院:电气工程学院杨元园指导教师:月 2011 时间:年3 开题年20113日月9 一、毕业设计(论文)内容及研究意义(价值)本次设计的主要内容是设计一种多功能电子琴,是集电子琴和音乐播放器单片机为核心,并辅有一些外围器件,AT89S52 于一体的新型电子琴。
它是以.采用汇编语言编写程序,实现多功能音乐播放,歌曲自动循环播放和使用琴键自编曲目功能。
此外,彩灯显示歌曲节奏,按键跳转到喜爱曲目,液晶显示当前播英文曲目。
目前流行的MP3,MP4播放器的音质相当好。
但略感遗憾的是除了选择歌曲和显示歌名外,绝大部分播放器没有诸如随意弹奏乐曲、乐曲节奏跳动显示等功能。
正是基于音乐播放器的多功能出发,提出这种电子琴和音乐播放器的设计方案。
之所以以单片机电子琴和音乐播放器为选题,目的在于从日常生活能接触到的细微处着手,通过理论与实践的结合,更明确自己的所学所用,也在实践中发现理论的不足,对目前日益广泛应用的单片机有了更加理性化和感性化的认识,使理论和实践相得益彰。
单片机技术发展非常快,所以目前的产品都致力于在功能全面、技术先进、操作简便、安全可靠、价格合理等方面进行仔细研究,精心设计;及时掌握最新的单片机技术,在条件允许的情况下,尽可能地利用最新的单片机技术来研制其应用系统,再利用单片机体积小、价格低、功能强等特点,以保证所设计的产品在未来的一段时间内仍具生命力。
单片机电子琴只和音乐播放器是单片机应用的一个点,由点及面,希望可以更好的了解和应用单片机技术。
通过单片机电子琴和音乐播放器这个选题,更深层次的了解了单片机技术,以前只是有理论,实践的机会不是很多,在作单片机电子琴这个选题的过程中,更加熟练的掌握了一些单片机芯片的应用,也解决了很多以前理论和实践脱节的问题,可谓对单片机的认识有了一个小的飞跃。
基于51单片机的电子琴设计
基于51单片机的电子琴设计随着科技的不断发展,单片机技术已经成为了现代电子设备中的重要组成部分。
51单片机作为一种广泛应用的单片机系列,具有高性能、低功耗、高集成度等特点,被广泛应用于各种嵌入式系统开发中。
本文将介绍一种基于51单片机的电子琴设计。
一、系统硬件设计1、单片机选择本设计选用AT89C51单片机作为主控制器,AT89C51是一种低功耗、高性能的8位单片机,具有4K字节的可编程存储器和128字节的RAM,同时具有丰富的外设接口,如UART、SPI、I2C等。
2、电子琴设计电子琴采用8×8 LED点阵作为输出设备,通过单片机控制点阵的亮灭状态来展示音乐波形。
具体实现方式是将音频信号通过一个运放放大器放大,然后将其输入到LED点阵中,通过控制点阵的亮灭状态来展示音乐的波形。
3、存储模块设计为了实现电子琴曲目的存储和播放,本设计选用了一块AT24C02 EEPROM芯片作为存储设备。
AT24C02是一种串行E2PROM存储器,容量为256字节,可以通过I2C总线与单片机进行通信。
将曲目信息存储在AT24C02中,可以实现曲目的存储和播放功能。
4、按键模块设计本设计采用4×4矩阵键盘作为输入设备,通过扫描按键状态来实现音符的选择和节奏控制。
矩阵键盘的行线连接到单片机的P1口,列线连接到P2口,通过检测行列组合的变化来确定按下的键位。
二、系统软件设计1、音符解码本设计采用MIDI音符编码方式来存储和播放曲目信息。
在解码过程中,根据音符的频率和持续时间计算出对应的音高和节奏信息,然后将其用于驱动电子琴的输出设备展示音乐的波形。
2、演奏控制为了实现节奏控制,本设计采用了一种基于时间间隔的演奏方式。
在演奏过程中,单片机根据设定的节奏间隔时间来触发音符输出,从而实现对节奏的控制。
同时,为了实现曲目的停止和播放功能,我们需要在软件中加入相应的控制逻辑。
3、存储和播放在软件设计中,我们需要实现将曲目信息存储到AT24C02中以及从AT24C02中读取曲目信息的功能。
毕业论文基于单片机STC52的电子琴设计
毕业论文基于单片机STC52的电子琴设计电子琴是一种能够模拟真实乐器声音的电子音乐乐器,它使用数字信号处理技术来模拟不同音调和音色的声音。
在这篇毕业论文中,我们将基于STC52单片机设计一个电子琴。
首先,我们需要了解电子琴的基本原理和工作方式。
电子琴主要由白键和黑键组成,每个键对应一个音调。
当用户按下一些键时,电子琴会发出相应音调的声音。
为了模拟各种音调和音色,电子琴还需要使用合成器来生成声音波形。
在本设计中,我们将使用STC52单片机作为主控芯片。
这款单片机具有强大的计算和处理能力,并且易于编程和控制。
我们将使用C语言编程来实现电子琴的功能。
首先,我们需要设计一个按键矩阵来接收用户的按键输入。
按键矩阵将通过电子琴的键盘连接到STC52单片机的I/O口。
当用户按下一些键时,相应的I/O口将被触发,并且可以通过编程来检测并响应按键动作。
接下来,我们将设计一个音频输出电路来输出电子琴的声音。
音频输出电路将连接到STC52单片机的PWM输出口。
通过调节PWM输出的频率和占空比,我们可以生成不同频率和音量的声音波形。
然后,我们需要设计一个合成器来生成不同音调和音色的声音波形。
合成器可以通过不同的算法和参数来模拟不同乐器的声音。
我们可以使用数字信号处理技术,如傅里叶变换和滤波器设计,来实现合成器的功能。
最后,我们需要编写软件程序来控制和管理电子琴的功能。
我们可以使用STC52单片机的开发环境和编程工具来编写程序。
程序需要实现按键检测、声音生成和处理等功能。
通过编程,我们可以实现不同音调、音色和演奏效果的电子琴。
在设计实现过程中,我们还需要考虑到电子琴的硬件和电路布局、电源供应、按键和音频接口等方面的问题。
同时,我们还需要进行测试和调试,以保证电子琴的正常工作和良好的声音质量。
通过以上的设计和实现,我们可以制作一个基于STC52单片机的电子琴。
这款电子琴具有丰富的音调和音色选择,可以模拟不同乐器的声音,同时具有简单易用的操作和良好的音质。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
北京邮电大学基于单片机的电子琴和音乐播放器设计实验报告学院:信息与通信工程学院指导老师:葛顺明摘要电子琴是现代电子科技与音乐结合的产物,是一种新型的键盘乐器。
它在现代音乐扮演着重要的角色,单片机具有强大的控制功能和灵活的编程实现特性,它已经溶入现代人们的生活中,成为不可替代的一部分。
本文的主要内容设计为一个基于PIC32MX795F512L单片机的电子琴与音乐播放器,利用单片机上的按键来选择相应功能,利用键盘按键来选择弹奏某一音调或播放某首曲子。
能够实时将数据传至液晶屏显示。
根据单片机的工作原理,通过硬件电路制作和软件编译,设计出一个能够自由弹奏乐曲及流畅播放内置音乐的电子琴与音乐播放器。
该系统主要由液晶显示模块、键盘模块、喇叭模块组成。
设计利用MPLAB软件对源程序进行编译和调试。
关键词:PIC32MX795F512L单片机,模块一.实验目的1.通过学习使用单片机PIC32,使学生增进对单片机的感性认识,加深对单片机理论方面的理解。
2. 使学生掌握单片机的内部功能模块的功能和应用,如定时器/计数器、中断、I/O口等。
3使学生理解和掌握单片机应用系统的软件硬件设计过程、方法及实现,为以后设计和实现单片机应用系统打下良好基础。
二.实验分工本次实验我的队友主要负责的部分是XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX过程期间出现的问题是由我们两个人共同查阅资料完成的,整体合作协调很好,完成的较为顺利。
三.功能简介1.设计一个电子琴。
所能实现的功能如下:(1).能够实现舒适化菜单,由按键选择菜单中的两个功能:播放乐曲和弹奏乐曲,并实现其功能;(2).播放乐曲:又初始化菜单选择进入,进入后屏幕提示”SONGPLAYING”,同时事先在程序中存入了8首不同的乐曲,可以一次通过键盘的按键来选择播放各首乐曲。
在播放曲目中设置了暂停键,按下即暂停,不按下则继续播放循环播放。
(3).自行弹奏:设计键盘上的13个键能够发出低音部5,6,7,中音部1,2,3,4,5,6,7,高音部1,2,3总共14个音,要求按下按键发声,松开延时一段时间停止,中间再换按其他键则发另一音调的声音。
(4).走马灯:设计了4个蓝光走马灯配合播放音乐和演奏时闪烁。
2.当系统扫描到有键被按下,则快速检测出是哪一个键被按下,然后单片机的定时器被启动,发出一定频率的脉冲,该频率的脉冲输入到蜂鸣器后,就会发出相应的音调如果在前一个按下的键发声的同时另一个键被按下,则启动中断系统,前面键的发音停止,转到后按的发音程序,发出后按的键的音调。
四.实验原理4.1 音频脉冲的产生一首音乐是许多不同的音阶组成的,而每个音阶对应着不同的频率,这样我们就可以利用不同的频率的组合,即可构成我们所想要的音乐了,当然对于单片机来产生不同的频率非常方便,我们可以利用单片机的定时/计数器来产生这样方波频率信号,因此,我们只要把一首歌曲的音阶对应频率关系弄正确即可。
若要产生音频脉冲,只要算出某一音频的周期(1/频率),再将此周期除以2,即为半周期的时间。
利用定时器计时半周期时间,每当计时终止后就将相应的端口反相,然后重复计时再反相。
就可在各对应的引脚上得到此频率的脉冲。
我们小组利用PIC32MX795F512L的80M主频,运用delay函数,改变delay的时间以产生不同频率的方法产生不同音阶。
由于主频较高,没有一个音符的频率可以参考,于是我们小组是利用自己的乐理知识将每个音校正。
每个音与delay时间对应如下表所示:音符Delay 音符Delay中音Do 8876高音Re 2446中音Re 7476高音Mi 1936中音Mi 6456高音Fa 1666中音Fa 5886高音So 1186中音So 5036高音La 766中音La 4036高音Xi 376中音Xi 3236高音Do 186高音Do 30064.2音乐节拍的产生每个音符使用1个字节,字节的高4位代表音符的高低,低4位代表音符的节拍,表1-2为节拍与节拍码的对照表。
如果1拍为0.4s,1/4拍是0.1s,只要设定延时时间就可求得节拍的时间。
假设1/4拍为1DELAY,那么1拍应为4DELAY,以此类推。
所以只要求得1/4拍的DELAY,其余的节拍就是它的倍数,表1-3为1/4和1/8拍的时间设定。
本小组的节拍是由while函数实现的,在每个节拍delay的时间中播放对应的音符,1/8为1,1/4为2,以此类推。
而while循环的时间为节拍*310,这是我们经过反复试验确定的最佳的节拍延时。
五.方案设计5.1硬件设计5.1.1电路设计框图输出模块:5.1.2 硬件概述本电路是由PIC32MX795F512L 单片机为控制核心,具有键盘输入、液晶显示屏输出和三极管驱动的喇叭构成的简易电子琴电路。
1.单片机PIC32MX795F512L 型号单片机具有USB 、CAN 和以太网的高性能32 位闪存,其所拥有的主要资源有:✧ 80MHz 的主频,1.56DMIPS/MHz ,总线32位; ✧ USB 2.0 接口;✧ 2个带1024缓存的CAN 2.0接口; ✧ 8通道DMA 通道;✧ 5级流水线,哈佛架构; ✧ 1个以太网接口;✧ 512K 的Flash ,外加12k 的启动Flash ; ✧ 128K 的RAM ;✧ 可编程中断向量控制器; ✧ 16个10位AD 转换器;✧ UART/SPI/IIC 等串行通信方式;✧ 带JTAG 调试口,具有休眠功能,节省能耗。
2.输入模块(键盘)一个简易的电子琴需要键盘15个按键,选择用4*4行列式键盘完成输入。
4*4行列式键盘又称为矩阵键盘,它是用4条I/O 线作为行线,4条I/O 线作为列线组成的键盘。
在行线和列线的每一个交叉点上,设置一个按键。
这样键盘中按键的个数是4×4个。
这种行列式键盘结构能够有效地提高单片机系统中I/O 口的利用率。
而键盘应具有以下几个基本功能:(1)去抖动:每个按键在按下或松开时,都会产生短时间的抖动。
抖动的持续时间与键的质量相关,一般为5—20mm 。
所谓抖动是指在识别被按键是必须避开抖动状态,只有处在稳定接通或稳定断开状态才能保证识别正确无误。
去抖问题可通过软件延时或硬件电路解决。
(2)被按键识别:如何识别被按键是接口解决的主要问题,一般可通过软硬结合的方法完成。
常用的方法有行扫描法和线反转法两种。
行扫描法的基本思想是,由程序对键盘逐行扫描,通过检测到的列输出状态来确定闭合键,为此,需要设置入口、输出口一个,该方法在微机系统中被广泛使用。
本实验采用扫描法。
(3)键码产生:为了从键的行列坐标编码得到反映键功能的键码,一般在内存区中建立一个键盘编码表,通过查表获得被按键的键码。
PIC32MX795F512L 芯片输入模块: 4*4键盘 输出模块: 喇叭 输出模块: 走马灯RG1RD3RE0RG14RE1 RD4 RE3 RE23.输出模块(显示屏)采用型号为RT1602C的液晶显示屏,液晶显示屏的显示功能强大,可显示大量文字、图形,显示多样,清晰可见, 与传统的阴极射线管相比,液晶显示屏具有占用空间小、低功耗、低辐射、无闪烁、降低视觉疲劳等优点。
字符型液晶屏是一种用5*7点阵图形来显示字符的液晶显示器,根据显示的容量可以分为1行16个字、2行16个字、2行20个字等,最常用的为2行16个字。
型号为RT1602C的液晶显示屏就是2行16个字。
它有16个管脚,分别有电源地、电源正、偏压信号、读写控制、使能控制、I/O接口、背光控制等功能。
它的读写操作、屏幕和光标的操作都是通过指令编程来实现的。
VO为显示器对比度调整端,接正电源时对比度最弱,接地时对比度最高。
为了简化电路以及获得最好的显示效果,将VO端口直接接地。
R/W为读写信号线,高电平时进行读操作,低电平时进行写操作。
GND接电源,VDD接正电源。
RS为寄存器选择,高电平时选择数据寄存器,低电平时选择指令寄存器。
源代码中write_cmd函数为向LCD写入指令的函数,因此会有RS=0;write_date函数为向LCD写入数据的函数,因此会有RS=1。
E端为使能端,当E端由高电平跳变成低电平,也就是下降沿时,LCD模块进行命令执行。
BL1和BL2为设置LCD背光,分别接了电源与地。
DO~D7八个为数据I/O口,按照表格内的接法相连。
脚号符号引脚功能以及接法脚号符号引脚功能以及接法1 GND 电源地9 D2 RF132 VDD 电源正10 D3 RB123 V0 显示偏压信号11 D4 RB134.输出模块(喇叭)将一固定端口通过三极管PNP 放大再连接喇叭构成我们的输出音频模块。
喇叭一端接电源一端接发射极,当有方波送入时,喇叭便发出相应频率的响声。
5.输出模块(走马灯)将四个发光二极管与四个端口相连,另外一端通过小电阻接地,通过控制四个端口依次为高电平使得四个灯依次点亮,实现走马灯的效果。
5.2 软件设计5.2.1程序流程图4 RS 数据/命令控制 RA7 12 D5 RB14 5 R/W 读/写控制 RA6 13 D6 RB8 6 E 使能信号 RF4 14 D7 RB9 7 D0 数据I/O RF5 15 BL1 背光源正 8D1RF1216BL2背光源负开始判断LCD 按键 SW1 SW3 弹奏功能播放功能键盘扫描 根据按键值在相应数组中寻找对应键值的音符频率 喇叭播放对应音符 键盘扫描根据按键值含有七首曲子的二维数组中寻找对应键值的曲目相应曲目节拍与音调通过同一参数一一对应喇叭播放相应结束5.2.2 各模块具体软件实现1.键盘模块运用行扫描的方式来判断是否有键按下及按下的是哪一键。
首先令行都为输出并置为零,列为输入且都为高电位,则只要有一列为低就是有键按下。
再依次令每一行为低电平其他行为高电平,检查每一列是否为低电平,行和列均为低电平所对应的交汇处即为按键按下的地方。
#include "KEYBOARD.h"//时延函数void delay(uint ms){uint x,y;for(x=ms;x>0;x--)for(y=10;y>0;y--);}uchar keyboard() //判断按下哪一键{while(1){delay(100);//将R行全部设置为输出为低电平0;PORTSetPinsDigitalOut(IOPORT_G, BIT_14 | BIT_1 );PORTSetPinsDigitalOut(IOPORT_D, BIT_3 );PORTSetPinsDigitalOut(IOPORT_E, BIT_0 );PORTClearBits(IOPORT_G, BIT_14 | BIT_1 );PORTClearBits(IOPORT_D, BIT_3);PORTClearBits(IOPORT_E, BIT_0); delay(1);//将C列全部设置为输入为高电平1PORTSetPinsDigitalIn(IOPORT_E, BIT_1 | BIT_2 | BIT_3);PORTSetPinsDigitalIn(IOPORT_D, BIT_4 );PORTSetBits(IOPORT_E, BIT_1 | BIT_2 | BIT_3);PORTSetBits(IOPORT_D, BIT_4 );delay(1);//第一列R0=0;R1=1;R2=1;R3=1; //第一行if(C0==0) //第一列delay(10);if(C0==0) return 1;}if(C1==0){delay(10);if(C1==0) return 2;}if(C2==0){delay(10);if(C2==0) return 3;}if(C3==0){delay(10);if(C3==0) return 4;}//第二列R0=1;R1=0;R2=1;R3=1;if(C0==0){delay(10);if(C0==0) return 5; }if(C1==0){delay(10);if(C1==0) return 6;}if(C2==0){delay(10);if(C2==0) return 7;}if(C3==0){delay(10);if(C3==0) return 8;}//第三列R0=1;R1=1;R2=0;R3=1;if(C0==0)delay(10);if(C0==0) return 9;}if(C1==0){delay(10);if(C1==0) return 10;}if(C2==0){delay(10);if(C2==0) return 11;}if(C3==0){delay(10);if(C3==0) return 12;}//第四列R0=1;R1=1;R2=1;R3=0;if(C0==0){delay(10);if(C0==0) return 13;}if(C1==0){delay(10);if(C1==0) return 14;}if(C2==0){delay(10);if(C2==0) return 15;}if(C3==0){delay(10);if(C3==0) return 16;}}};uchar presskey() //判断是否有键按下{ delay(100);//将R行全部设置为输出为低电平0;PORTSetPinsDigitalOut(IOPORT_G, BIT_14 | BIT_1 );PORTSetPinsDigitalOut(IOPORT_D, BIT_3 );PORTSetPinsDigitalOut(IOPORT_E, BIT_0 );PORTClearBits(IOPORT_G, BIT_14 | BIT_1 );PORTClearBits(IOPORT_D, BIT_3);PORTClearBits(IOPORT_E, BIT_0); delay(1);//将C列全部设置为输入为高电平1PORTSetBits(IOPORT_E, BIT_1 | BIT_2 | BIT_3);PORTSetBits(IOPORT_D, BIT_4 );PORTSetPinsDigitalIn(IOPORT_E, BIT_1 | BIT_2 | BIT_3);PORTSetPinsDigitalIn(IOPORT_D, BIT_4 );delay(1);R0=0;R1=0;R2=0;R3=0;if(C0==0){delay(10);if(C0==0) return 1;}if(C1==0){delay(10);if(C1==0) return 1 ;}if(C2==0){delay(10);if(C2==0) return 1;}if(C3==0){delay(10);if(C3==0) return 1;}return 0;}2.LCD模块(本模块为组员xx主要编写,此处不再叙述)3.喇叭播放模块通过将不同频率的方波输送到喇叭的端口来使其发出声音。