大学毕业论文---基于单片机的电子琴设计.doc

上传人:教**** 文档编号:88906285 上传时间:2023-05-04 格式:DOC 页数:21 大小:1.09MB
返回 下载 相关 举报
大学毕业论文---基于单片机的电子琴设计.doc_第1页
第1页 / 共21页
大学毕业论文---基于单片机的电子琴设计.doc_第2页
第2页 / 共21页
点击查看更多>>
资源描述

《大学毕业论文---基于单片机的电子琴设计.doc》由会员分享,可在线阅读,更多相关《大学毕业论文---基于单片机的电子琴设计.doc(21页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

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

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

3、确即可。目录1 概述22 系统总体方案及硬件设计33课程设计结果与体会8附:源程序代码 参考文献课题概述 乐曲的音程取决于声音信号的频率,不同的频率信号产生不同的音程。一个 8 度的音阶与频率 的关系如表 4.2.3 所示: 表 4.2.3 音阶与频率、周期的关系 音名CDEFGABC唱名 12345671频率264297330352396440495528周期37873367 303028402525227220201893声音信号,可以直接通过方波输出产生,也可以通过正弦波输出产生,区别在于音色。一般来 说,方波产生的声音比较沉闷,正弦波产生的声音信号则比较圆润。 本课题要求利用正弦波产生

4、声 音信号。 利用 8 个按键 K0K7 作为简易电子琴的 8 个音阶按键,当不同的按键按下时,通过 D/A 转换 器件 TLV5617 输出不同频率的正弦波信号。D/A 转换输出值通过一个正弦函数表查得,正弦函数表 中储存一个正弦周期的 100 个表值。利用 MCS51 的定时器 1 控制 D/A 转换的输出,每发生一次定 时器 1 周期中断,从正弦函数表中查一个表值输出到 D/A 转换器件。 系统总体方案及硬件设计 1.单片机与TLV5617接线 单片机与 TLV5617 之间的连接 实验箱核心板上,MCS51 单片机与 TLV5617 之间已经连接好,其接口电路原理如图 3.1.11 所

5、 示。单片机与 TLV5617 之间接口只用到三个 I/O 引脚:P3.4 用于传送串行移位数据,P3.5 用于产生 串行移位时钟,P3.7 用于产生片选信号。TLV 5617DIN CLK/CSP3.4 P3.5 P3.7MCS51 单片机 图 1.1 单片机与 TLV5617 之间的连接 在核心板上,TLV5617 的 DIN、CLK 引脚,与 TLC1543 共用单片机的 P3.4、P3.5 脚,由各自 的片选信号,确定单片机的 P3.4、P3.5 脚上的信号对哪个器件发生作用。 图1.1 TLV56172. 音调的产生频率的高低决定了音调的高低。音乐的十二平均率规定:每两个八度音(如简

6、谱中的中音1和高音1)之间的频率相差一倍。在两个八度音之间又分为十二个半音。另外,音名A(简谱中的低音6)的频率为440Hz,音名B到C之间、E到F之间为半音,其余为全音。由此可以计算出简谱中从低音1到高音1之间每个音名对应的频率,所有不同频率的信号都是从同一个基准频率分频得到的。1、要产生音频脉冲,只要算出某一音频的周期(1/频率),然后将此周期除以2,即为半周期的时间。利用定时器计时这半个周期时间,每当计时到后就将输出脉冲的I/O反相,然后重复计时此半周期时间再对I/O反相,就可在I/O脚上得到此频率的脉冲。2、利用AT89C51的内部定时器使其工作在计数器模式MODE1下,改变计数值TH

7、0及TL0以产生不同频率的方法。此外结束符和休止符可以分别用代码00H和FFH来表示,若查表结果为00H,则表示曲子终了;若查表结果为FFH,则产生相应的停顿效果。3、例如频率为523Hz,其周期T=1/523=1912us,因此只要令计数器计时956us/1us=956,在每次技术956次时将I/O反相,就可得到中音DO(523Hz)。计数脉冲值与频率的关系公式如下:N=Fi2FrN:计算值;Fi:内部计时一次为1us,故其频率为1MHz; 4、其计数值的求法如下:初值T=65536-N=65536-Fi2Fr例如:设K=65536,F=1000000=Fi=1MHz,球低音DO(261Hz

8、)。中音DO(523Hz)。高音的DO(1046Hz)的计算值T=65536-N=65536-Fi2Fr=65536-10000002Fr=65536-500000/Fr低音DO的T=65536-500000/262=63627低音DO的T=65536-500000/523=64580低音DO的T=65536-500000/1047=65059C调各音符频率与计数值T的对照表如表1.2所示。表1.2 C调各音符频率与计数值T的对照表低音频率N参数中音频率N参数高音频率N参数Do2621908229Do523956115Do10465757Do#2771805217Do554903108Do11

9、095454Re32941701204Re587852102Re11755151Re3111608193Re62280497Re12454848Mi3301515182Mi65975991Mi13184545Fa3491433172Fa69871686Fa13974343Fa3701351162Fa74067681Fa14804141So3921276153So78463877So15683838So4151205145So83160272So16613636La4401136136La88056868La17603434La4641078129La93253664La18653232Si49

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

11、音乐。了解音乐的一些基础知识,我们可知产生不同频率的音频脉冲即能产生音乐。对于单片机来说,产生不同频率的脉冲是非常方便的,利用单片机的定时/计数器来产生这样的方波频率信号。因此,需要弄清楚音乐中的音符和对应的频率,以及单片机定时计数的关系。表1.3节拍与节拍码对照节拍码节拍数节拍码节拍数11/4拍11/8拍22/4拍21/4拍33/4拍33/8拍41拍42/1拍51又1/4拍55/8拍61又1/2拍63/4拍82拍81拍A2又1/2拍A1又1/4拍C3拍C1又1/2拍F3又3/4拍每个音符使用1个字节,字节的高4位代表音符的高低,低4位代表音符的节拍,表2.41为节拍码的对照。如果1拍为0.4

12、秒,1/4拍实0.1秒,只要设定延迟时间就可求得节拍的时间。假设1/4拍为1DELAY,则1拍应为4DELAY,以此类推。所以只要求得1/4拍的DELAY时间,其余的节拍就是它的倍数,如图1.4为1/4和1/8节拍的时间设定。表1.4 1/4和1/8节拍的时间设定曲调值DELAY曲调值DELAY调4/4125毫秒调4/462毫秒调3/4187毫秒调3/494毫秒调2/4250毫秒调2/4125毫秒4.音符的编码do re mi fa so la si分别编码为17,重音do编为8,重音re编为9,停顿编为0。播放长度以十六分音符为单位(在本程序中为165ms),一拍即四分音符等于4个十六分音符

13、,编为4,其它的播放时间以此类推。音调作为编码的高4位,而播放时间作为低4位,如此音调和节拍就构成了一个编码。以0xff作为曲谱的结束标志。举例1:音调do,发音长度为两拍,即二分音符,将其编码为0x18举例2:音调re,发音长度为半拍,即八分音符,将其编码为0x22歌曲播放的设计。先将歌曲的简谱进行编码,储存在一个数据类型为unsigned char 的数组中。程序从数组中取出一个数,然后分离出高4位得到音调,接着找出相应的值赋给定时器0,使之定时操作蜂鸣器,得出相应的音调;接着分离出该数的低4位,得到延时时间,接着调用软件延时。 5.电子琴键盘的电路接线 通用板右下角(区)装有一套44小键

14、盘,其电路连接如图1.5所示。图1.5 小键盘电路连接按键的行、列线,可以通过单根连线端子“KR0”等连接到单片机的I/O引脚,也可以通过排线端子“KEY”连接到单片机的I/O口。 6.点阵的原理与接线LED点阵使用88模块,每4个安排排成一个1616点阵,用于显示一个汉字。每行LED点阵是共阳极的,每列LED点阵是共阴极的。系统由微型计算机控制。89C5l单片机的P0.0 P0.3(D0 D3)端口通过一个通用逻辑阵列GALl6V8D和收发器74HC245输出行选通信号(OIAOID),P3.0和P3.1端口通过74HC245输出列选通信号,如图1.6。 图1.6行选通信号原理图线驱动部件使

15、用两个74CHl38译码.线选通信号信号将被用作译码器的输入,它可以获得16行数值信号。考虑到74CHl38的驱动能力是有限的,因此, LED阳极通过给晶体管TIPl27提供2A电流连接到电源,74HCl38输出引脚的开关可以通过几毫安的电流控制。列输入是由八位8-bit串行输入驱动,串行或并行输出由移位寄存器74HC595完成。芯片有两个独立的串行输入和并行的时钟信号。在串行移位时钟SRCLK的上升沿,输入数据从SER输入到串行移位寄存器芯片同时,SQH串行输出;当门闩时钟RCLK 的上升沿到达时,内部的串行移位寄存器芯片输出8-bit并行数据。正常工作时,他们应该被重置使SRCL和RCLK

16、分别为高电平和低电平。单片机输出信号直接连接设备的输出字符串的门闩进出移位寄存器74HC595.列驱动程序电路原理图如图1.7。 图1.7列驱动电路原理图 在本次实验中,我们将键盘与P1口用排线相连,点阵驱动的LSIO,LSCLK,LRCLK,DRCLK分别于P2.0,P2.1,P2.2,P2.3相连,蜂鸣器与P3.2相连系统总体方案程序框图如下:初始化变量接口初始化计数器T0,定时器T1定义音调 等待按键,是否有按键?音调显示在点阵上主程序开始依据按键码播放音调或者完整的歌YN 实验程序及实验结果反思 总实验程序详见附录。 实验结果:电子琴的两个基本功能,按键和音乐完好地实现了,但是点阵虽有

17、显示但不完全正确。 结果反思:由于对于点阵功能的了解不够,虽然做了很多尝试,但到最后点阵功能还是未能完好的实现。经过这次单片机电子琴课设,我重新对单片机课程内容知识有了新的了解,尤其是AD转换和定时器方面。附录 电子琴实现的总程序 D_DAT0EQU60HD_DAT1 EQU61HD_DAT2EQU62HD_DAT3 EQU63H;03为定义数码管显示数据存储单元D_DAT4EQU64HD_DAT5 EQU65HD_DAT6 EQU 66HD_DAT7 EQU 67H;47为点阵LED行数据D_DAT8 EQU 68H;点阵LED列数据DOT_A0EQU69HDOT_A1EQU6AH;点阵数据

18、表首地址K_VALU EQU 6BHTIME EQU 6CHNOTE EQU 6DHREFRESH EQU 6EHLSIOEQUP2.0;串行移位数据引脚LSCLKEQUP2.1;串行移位时钟信号LRCLKEQUP2.2;数码管LED输出锁存信号DRCLKEQUP2.3;点阵LED输出锁存信号RING EQU P3.2 ;蜂鸣器正方波信号 ORG 0000H SJMP START ORG 001BH LJMP PLAY1 ORG 0030HSTART: MOV SP,#30H MOV TMOD,#10H ;T1工作于定时器方式1 MOV D_DAT0,#0 MOV D_DAT1,#0 MOV

19、D_DAT2,#0 MOV D_DAT3,#0;初始化显示数据 MOV D_DAT4,#4 MOV D_DAT5,#5 MOV D_DAT6,#6 MOV D_DAT7,#7 MOV D_DAT8,#01H SETB EA SETB ET1MAIN: LCALL RD_KEY MOV A,K_VALU CJNE A,#10H,TONE1 SJMP MAINTONE1: LCALL TONE SJMP MAIN RD_KEY:ORLP1,#0FFHANLP1,#0EFHMOVR2,#0EFHMOVR3,#4MOVK_VALU,#0RD_K1: MOVR4,#4MOVA,P1RD_K2:RRCAJ

20、NCRD_K3INCK_VALUDJNZ R4,RD_K2MOVA,R2RLCAMOVR2,AORLA,#0FHORLP1,#0FFHANLP1,ADJNZ R3,RD_K1RD_K3:RETTONE: MOV A,K_VALU ADD A,K_VALU MOV DPTR,#INSTAB JMP A+DPTRINSTAB: AJMP ZERO AJMP DO_L AJMP RE_L AJMP MI_L AJMP FA_L AJMP SO_L AJMP LA_L AJMP SI_L AJMP DO_H AJMP RE_H AJMP MI_H AJMP FA_H AJMP SO_H AJMP LA

21、_H AJMP SI_H AJMP AUTO ZERO: NOP NOP LCALL DELAY500MS RET DO_L: MOV R1,#0F8H MOV R0,#8CH MOV DPTR,#M1 LCALL PLAY RET RE_L: MOV R1,#0F9H MOV R0,#5BH MOV DPTR,#M2 LCALL PLAY RET MI_L: MOV R1,#0FAH MOV R0,#15H MOV DPTR,#M3 LCALL PLAY RET FA_L: MOV R1,#0FAH MOV R0,#67H MOV DPTR,#M4 LCALL PLAY RET SO_L:

22、MOV R1,#0FBH MOV R0,#04H MOV DPTR,#M5 LCALL PLAY RET LA_L: MOV R1,#0FBH MOV R0,#90H MOV DPTR,#M6 LCALL PLAY RET SI_L: MOV R1,#0FCH MOV R0,#0CH MOV DPTR,#M7 LCALL PLAY RET DO_H: MOV R1,#0FCH MOV R0,#44H MOV DPTR,#M8 LCALL PLAY RET RE_H: MOV R1,#0FCH MOV R0,#0ACH MOV DPTR,#M9 LCALL PLAY RET MI_H: MOV

23、R1,#0FDH MOV R0,#09H MOV DPTR,#M10 LCALL PLAY RET FA_H: MOV R1,#0FDH MOV R0,#2AH MOV DPTR,#M11 LCALL PLAY RET SO_H: MOV R1,#0FDH MOV R0,#82H MOV DPTR,#M12 LCALL PLAY RET LA_H: MOV R1,#0FDH MOV R0,#0C8H MOV DPTR,#M13 LCALL PLAY RET SI_H: MOV R1,#0FEH MOV R0,#2EH MOV DPTR,#M14 LCALL PLAY RET AUTO: MOV

24、 TIME,#64 MOV NOTE,#0 CLR A LOOP: MOV A,NOTE MOV DPTR,#TABLE MOVC A,A+DPTR MOV K_VALU,A INC NOTE LCALL TONE DJNZ TIME,LOOP RETTABLE:DB 1,2,3,4,5,5,5,3,4,4,4,2,1,3,5,0 DB 1,2,3,4,5,5,5,3,4,4,4,2,1,3,1,0 DB 6,6,6,4,5,5,5,3,4,4,4,2,1,3,5,0 DB 6,6,6,4,5,5,5,3,4,4,4,2,1,3,1,0 TABLE: DB 3,0,3,2,3,0,0,0,3,

25、5,3,2,3,0,0,0 DB 1,0,1,2,3,5,3,0,2,0,2,1,2,0,0,0 DB 3,0,5,3,6,5,0,0,6,5,5,3,5,0,0,0 DB 3,0,2,3,5,0,3,2,2,0,2,1,2,0,0,0 DB 3,0,3,2,3,0,0,0,3,5,3,2,3,0,0,0 DB 1,0,1,2,3,5,3,0,2,0,2,1,2,0,0,0 DB 3,0,5,3,6,5,0,0,6,5,5,3,5,0,0,0 DB 0,3,2,3,5,0,3,2,2,1,1,1,1,0,0,0 DB 1,2,3,0,3,5,6,0,6,10,9,8,8,6,5,0 DB 0,

26、0,6,5,3,2,1,0,0,1,2,0,2,1,2,0 DB 1,2,3,0,3,5,6,0,6,10,9,8,8,9,8,0 DB 0,0,5,0,5,3,7,8,1,2,3,0,0,0,2,0 DB 0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0;一共208个音符 ;*;响铃子程序;* PLAY: MOV TH1,R1 MOV TL1,R0 SETB RING SETB TR1 LCALL DLED ACALL DELAY500MS CLR TR1 RET PLAY1: CLR TR1 CPL RING MOV TH1,R1 MOV TL1,R0 SETB TR1 RETIDELAY500MS: MOV R7,#66H DL1: MOV R6,#74H DL0: MOV R5,#09H

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com