课程设计(论文)基于单片机的电子琴设计

上传人:仙*** 文档编号:33660751 上传时间:2021-10-18 格式:DOC 页数:15 大小:228KB
收藏 版权申诉 举报 下载
课程设计(论文)基于单片机的电子琴设计_第1页
第1页 / 共15页
课程设计(论文)基于单片机的电子琴设计_第2页
第2页 / 共15页
课程设计(论文)基于单片机的电子琴设计_第3页
第3页 / 共15页
资源描述:

《课程设计(论文)基于单片机的电子琴设计》由会员分享,可在线阅读,更多相关《课程设计(论文)基于单片机的电子琴设计(15页珍藏版)》请在装配图网上搜索。

1、电子琴设计摘要:本设计是用AT89S52单片机为核心控制元件,设计一个电子琴。以单片机作为主控核心,与键盘、扬声器、LED显示器等模块组成核心主控制模块。在主控模块上设有8个按键,其中7个按键控制7个音符,而1个作为功能转换键使用,具有手动随意弹奏和自动播放乐曲的功能。本系统运行稳定,其优点是硬件电路简单,软件功能完善,控制系统可靠,性价比较高等,具有一定的实用和参考价值。关键词:AT89C52单片机 LED显示器 扬声器 18矩阵键盘 7个音符 自动播放乐曲 1 引言电子琴是现代电子科技与音乐结合的产物,是一种新型的键盘乐器。目前市场上各种品牌、型号的电子琴有上百种,由几十块的玩具电子琴到几

2、百,几千的学习、演奏用琴真是琳琅满目,电子琴能够模仿各种音色和具有自动伴奏功能,这些是电子琴最基本的特征。档次的高低无非是音色模仿的是否逼真,自动伴奏设计的是否丰富,或者增加了其他制作,编曲功能的。本设计主要对使用单片机设计简易电子琴进行了分析,并介绍了基于单片机电子琴系统硬件组成。利用单片机产生不同频率来获得我们要求的7个音符,最终可随意弹奏想要表达的音乐。并且本设计分别从原理图,主要芯片,各模块原理及各模块的程序的调试来详细阐述。 一首音乐是许多不同的音阶组成的,而每个音阶对应着不同的频率,这样我们就可以利用不同的频率的组合,即可构成我们所想要的音乐了,当然对于单片机来产生不同的频率非常方

3、便,我们可以利用单片机的定时/计数器T0来产生这样方波频率信号,因此,我们只要把一首歌曲的音阶对应频率关系弄正确即可。2 总体设计方案2.1 设计思路2.1.1 从系统实现的功能上来看,电子琴的设计主要分为手动弹奏乐曲和自动播放音乐两大部分组成。手动弹奏乐曲是根据具体的硬件键盘设置了7个音符按键和1个功能转换键,自动播放音乐是在单片机的存储器中通过软件编程的方法放置音乐代码和相关播放程序来实现。2.1.2 从系统硬件结构上来看,主要使用到52系列单片机、矩阵18键输入电路、LED数码管显示电路、扬声器以及电源电路等等。将这些硬件电路有机地结合起来使之满足电子琴设计的基本硬件要求。2.1.3 从

4、系统软件设计角度来看,将电子琴的设计采用程序模块化设计方法,将程序分为主程序、键盘扫描程序模块、数码显示模块、转换控制模块、音乐产生模块等等。此外,采用程序设计思想,将中断定时方式与外部按键查询方式相结合,实现手动弹奏乐曲到自动播放音乐的切换。2.1.4 从音乐产生原理方面来看,通过控制单片机的定时器的定时时间产生不同频率的音频脉冲,经放大后驱动扬声器发出不同音乐的声音。用软件延时来控制发音时间的长短,控制节拍。把音乐的音符和相应的节拍变换为定时常数和延时常数,作为数据表格存放在程序存储器中,由程序查表得到定时常数和延时常数,分别用来控制定时器产生的脉冲频率和发出音频脉冲的持续时间。 因此,我

5、们可以综合上述的不同角度的方案设计原理,主要从软件和硬件两部分进行有计划有步骤的系统分析与设计,最终确立总体的设计方案。方案确立 1、手动弹奏乐曲和自动播放音乐用非编码的矩阵键盘来实现,其中包括数字键和功能键,功能键主要是将手动弹奏模块转换到自动播放乐曲模块。手动弹奏乐曲中7个键分别设置不同的7个音符,然后通过功能键可实现手动弹奏乐曲到播放乐曲之间的切换。2、一位LED数码管显示当前工作状态,将按下的键值送入显示,并一一对应各个音符。采用动态扫描输出。3、软件的设计主要包括矩形键盘键值的读取、LED动态扫描输出程序、手动弹奏乐曲程序和音乐自动播放程序。4、此次程序设计主要分为两大块:手动弹奏乐

6、曲程序和自动播放程序。两者之间用功能转换程序对其进行结合,并实现各种不同功能的控制。2.2 设计方框图基于单片机系统的电子琴的基本结构如图(1)所示图(1)3 设计原理分析3.1演奏音乐原理通过控制单片机定时器的定时时间产生不同频率的音频脉冲,经放大后驱动蜂鸣器发出不同音节的声音。用软件延时来控制发音时间的长短,控制节拍。把乐谱的音符和相应的节拍变换为定时常数和延时常数,作为数据表格存放在存储器中,由程序到定时常数和延时常数,分别用来控制定时器产生的脉冲频率和发出该音频脉冲的持续时间。单片机晶振频率为12MHZ时,乐曲中的音符、频率及定时常数之间的对应关系可制成表格。本次设计中,定时常数是有1

7、6定时器T0根据不同的音符,装入不同的初值实现延时的,而延时常数是在自动播放音乐部分使用,控制不同音符的节拍,其延时常数是通过16位定时器T1实现的。根据设计要求给出的各音符频率,我们只需要的各音符频率与计数值T的关系如表(1)所示表(1): C调各音符频率与计数值T的关系音符频率(Hz)半周期(ms) 简谱码T值定时值(H)简谱码T值定时值(D)1 Do2621.90F894H626282 Re2941.70F95CH638353 Mi3301.51FA1AH640214 Fa3491.43FA6AH641035 So3921.28FB00H642606 La4401.14FB8CH6440

8、07 Si4941.01FC0EH645243.2 键盘扫描原理先将18矩阵键盘的行(P2.0)和列(P1口)全部置为高电平,然后再逐行置为低电平,当有键按下时P1口的值会发生相应的改变,通过与给定数的比较,判定是否有键按下和是否键已松开。并给定列号并保存,根据所给的列号的值,一方面通过P0口给LED送入确定好的段码数值,从而相对应地在LED上显示音符数字,另一方面从TABLE表中取出相应的值,给此时作为16位定时器的T0装入初值,不同的音符给T0装入的初值不同,即定时器的定时时间将不相同,将产生不同频率的音频脉冲,转换成声音播出的频率也将不同,从而实现7个不同的音符。同时,通过示波器可查看P

9、3.7的音频输出方波。3.3 硬件电路设计分析 因为AT89CXX系列与MCS-51系列单片机相比,有两大优势:第一,片内程序存储器采用闪速存储器,使程序的写入更方便;第二,提供了更小尺寸的芯片,使整个硬件电路的体积更小。它以较小的体积、良好的性能价格比倍受青睐。本次综合实验设计采用89C52单片机。3.3.1 按键模块的设计如图(2)所示为18矩阵键盘模块,其行接P2.0口,其列逐一与P1口相接图(2)因为不同的音符对应的频率是不同的,当按到不同的按键,发出的声音不一样,所以其产生的方波频率信号也会不一样,如下列7个小图对应着7个不同音符的方波频率信号。 图 1 Do 图 2 Re 图 3

10、Mi 图 4 Fa 图 5 So 图 6 La 图 7 Si 3.3.2 LED数码管显示模块的设计 如图(3)所示,为LED数码显示模块电路的设计部分 图(3) 一位共阳数码管 本系统用单片机的P0口的P0.0P0.6来控制LED显示器的数字显示。当有7个音符按键17中有被按下,LED数码管将对应显示出该音符的数字,从而可以通过手动和眼看来确定所按的是哪个音符,应该发出哪个音符的声音。而最后一个功能转换键一旦被按下,程序将会调用倒计3秒子程序,LED数码管将从3开始倒数到0,紧接着进入自动播放音乐子程序,播放程序中通过表格数据形式存放在ROM的音乐代码而形成的乐曲3.3.3 扬声器模块的设计

11、 如图(4)所示为扬声器模块电路图(4) 扬声器模块电路电磁式蜂鸣器由振荡器、电磁线圈、磁铁振动膜片及外壳等组成。接通电源后,振荡器产生的音频信号电流通过电磁线圈,使电磁线圈产生磁场。振动膜片在电磁线圈和磁铁的相互作用下,周期性地振动发声。本设计的蜂鸣器通过驱动电路与单片机的P3.7连接,单片机就可以通过P3.7的输出信号频率就行控制。令外,通过示波器接到P3.7可方便我们观察波形。3.3.4 复位和晶振等其他附属部分的电路设计如图(5)所示,为复位和晶振等其他附属部分的电路图(5) 复位和晶振等其他附属部分的电路 XTAL1、XTAL2分别是系统时钟信号fosc的输入和输出端。晶振电路的设计

12、可以两个电容与一个晶振即可,用来产生一个约等于12MHZ的稳定的频率。复位是单片机的初始化操作,其作用是使CPU和系统中其他部件都处于一个确定的初始状态,并从这个状态开始工作。本系统采用上电与按键复位电路,为了防止干扰串扰复位端,所以再接一个去耦电容。4 实验数据1、利用AT89C52的内部定时器T0使其工作在方式1的定时方式下,改变计数值TH0及TL0以产生不同频率的方法产生不同音符。计数脉冲值与频率的关系式是: Nfi2fr式中,N是计数值,fi是机器频率(晶体振荡器为12MHz时,其频率为1MHz),fr是想要产生的频率。其计数初值T的求法如下: T65536N65536fi2fr实验中

13、的K65536,fi1MHz,根据设计要求中给出的音阶频率表,可求出各自的计数初值。T65536N65536fi2fr6553610000002fr65536500000/fr因此,可以通过计算求得各音阶的简谱码T值如下:1 Do的T65536500000/262.1636282 Re的T65536500000/293.7638363 Mi的T65536500000/329.6640214 Fa的T65536500000/349.2641045 So的T65536500000/392.0642616 La的T65536500000/440.0644007 Si的T65536500000/493

14、.964524相应求得在要发出不同音符时先给定时器T0装入的初值如下表:音阶1 Do2 Re3 Mi4 Fa5 So6 La7 Si频率(HZ)261.1293.7329.6349.2392.0440.0493.9 初值 636286383664021641046426164400645242、因为实验中用到的LED数码显示管是共阳极的,所以07八个数字的段码分别为:数字 01234567段码40H79H24H30H19H12H02H78H5 结束语在这一周里,一有空余时间都把时间花在本次实验。其过程很艰苦,有时候做到深夜,但收获是颇多。一开始拿到题目,关于不同频率的音符,我就知道肯定需要用到

15、定时中断来实现,可是自己学习的进度很慢,大多数时间都是自学。不过后来用大量时间去细看每一章节,做起实验来就容易多了。本次设计性实验让我无论是在硬件还是软件方面都有了很大的提高,同时也增强了自己的信心和对学习的兴趣。这些也是老师严格要求我们做好每一个实验的好处。参考文献1潘永雄.新编单片机原理与应用(第二版).西安电子科技大学出版社,20072杨欣.51单片机应用从零开始:清华大学出版社,20083彭伟.单片机C语言程序设计实训100例基于8051+proteus仿真. 电子工业出版社,2010附录1:总体电路图附录2:程序流程图设计附录3:源程序代码KEYBUF EQU 30HSTH0 EQU

16、 31HSTL0 EQU 32HTEMP EQU 33HSPKEQU P3.7 ; 发声器所在端口 ORG 0000H LJMP START ORG 000BH LJMP INT_T0 ;定时器0放置弹奏乐曲程序 ORG 001BH LJMP TIME0START: MOV TMOD,#11H ;设置定时器的工作方式,定时器T0和T1都是方式1,作为16为定时计数器使用(定时方式) SETB ET0 ;开各中断开关 SETB ET1 SETB EA ;开放中断总允许和源允许 ACALL SAOMIAO ;进入手动弹奏程序 SJMP START;*手动弹奏程序*SAOMIAO: MOV P2,#

17、0FFH ;手动弹奏程序 MOV P1,#0FFH ;先将键盘的行和列全部置为高电平,然后再逐行置为低电平 CLR P2.0 MOV A,P1 XRL A,0FFH CJNE A,#00H,NEQ ;判断有没键按下 LJMP NOKEYS ;没有按键按下即跳转到NOKEYSNEQ: ;有按键按下即跳到NEQ LCALL DELY10MS ;延时10ms MOV A,P1 ;消除扰动和干扰 XRL A,0FFH CJNE A,#00H,NEQ1 LJMP NOKEYSNEQ1: MOV A,P1 ;判断是否按下#0键 CJNE A,#0FEH,NK1 ;按下#0键即顺序执行程序,否则跳到NK1检

18、查下一键位 MOV KEYBUF,#0 ;保存列号#0 MOV P0,#79H ;让LED显示为1 LJMP DK1NK1: CJNE A,#0FDH,NK2 ;判断是否按下#1键 MOV KEYBUF,#1 ;保存列号#1 MOV P0,#24H ;让LED显示为2 LJMP DK1NK2: CJNE A,#0FBH,NK3 ;判断是否按下#2键 MOV KEYBUF,#2 ;保存列号#2 MOV P0,#30H ;让LED显示为3 LJMP DK1NK3: CJNE A,#0F7H,NK4 ;判断是否按下#3键 MOV KEYBUF,#3 ;保存列号#3 MOV P0,#19H ;让LED

19、显示为4 LJMP DK1NK4: CJNE A,#0EFH,NK5 ;判断是否按下#4键 MOV KEYBUF,#4 ;保存列号#4 MOV P0,#12H ;让LED显示为5 LJMP DK1NK5: CJNE A,#0DFH,NK6 ;判断是否按下#5键 MOV KEYBUF,#5 ;保存列号#5 MOV P0,#02H ;让LED显示为6 LJMP DK1 NK6: CJNE A,#0BFH,NK7 ;判断是否按下#6键 MOV KEYBUF,#6 ;保存列号#6 MOV P0,#78H ;让LED显示为7 LJMP DK1NK7: CJNE A ,#7FH,NK8 NK8: LJMP

20、 CHOICEDK1: MOV A,KEYBUF MOV B,#2 MUL AB ;对应读取表格TABLE1的数据 MOV TEMP,A MOV DPTR,#TABLE1 MOVC A,A+DPTR MOV STH0,A MOV TH0,A INC TEMP MOV A,TEMP MOVC A,A+DPTR MOV STL0,A MOV TL0,A SETB TR0 ;开启定时器T0,T0开始计数DK1A: MOV A,P1 XRL A,#0FFH JNZ DK1A MOV A,P2 ANl A,#0f0H MOV P2,A CLR TR0NOKEYS: RET;*功能转换程序*CHOICE:

21、 MOV P2,#0FFH ;功能转换程序 MOV P1,#0FFH CLR P2.0 MOV A,P1 CJNE A,#7FH,NEXT1111 ;按下了P1.7键后,顺序执行,否则则跳转到NEXT1111 NEXT111: MOV P2,#0FFH MOV P1,#0FFH CLR P2.0 MOV A,P1 XRL A,#0FFH JNZ NEXT111 ;如果A不为0,即按键有变化,继续循环 ACALL DISPLAY ;如果按键没变化,即调用DISPLAY MOV SP,#60H MOV DPTR,#TABLE ACALL MUSICNEXT1111: LJMP SAOMIAO;*自

22、动播放音乐程序*MUSIC: MOV 21H,#00H MOV P2,#0FFH MOV P1,#0FFH CLR P2.0 MOV A,P1 JNB ACC.7,AA1 SETB 21H.7 AA1: MOV P2,#0FFH MOV P1,#0FFH CLR P2.0 MOV A,P1 XRL A, #0FFH JNZ AA1 JNB 21H.7,NEXT1111 CLR A MOVC A,A+DPTR MOV R1,A INC DPTR CLR A MOVC A,A+DPTR MOV R0,A ORL A,R1 JZ NEXT1 MOV A,R0 ANL A,R1 CJNE A,#0FF

23、H,NEXT SJMP MUSIC NEXT: MOV TH1,R1 MOV TL1,R0 SETB TR1 SJMP NEXT2 NEXT1: CLR TR1 NEXT2: CLR A INC DPTR MOVC A,A+DPTR MOV R2,A LOOP1: ACALL DELAY DJNZ R2,LOOP1 INC DPTR SJMP MUSIC REP12: CLR TR1 RET TIME0: MOV TH1,R1 MOV TL1,R0 CPL P3.7 RETIDEL1S: MOV R5,#30 D1: MOV R6,#100 D2: MOV R7,#80 DJNZ R7,$ D

24、JNZ R6,D2 DJNZ R5,D1 RETDEL: NOPDEL3: MOV R4,#02HDEL4: NOP DJNZ R4,DEL4 NOP DJNZ R3,DEL3 RET NOP;*延时10ms子程序*DELY10MS: MOV R6,#10D3: MOV R7,#248DJNZ R7,$DJNZ R6,D3RET;*T0中断服务子程序*INT_T0: MOV TH0,STH0MOV TL0,STL0CPL P3.7RETI;*倒计3秒进入自动播放音乐子程序*DISPLAY:MOV DPTR,#table0 MOV R0,#0LOOP10 :MOV A,R0 MOVC A,A+D

25、PTR MOV P0,A CLR P2.0 LCALL DELAY0 INC R0 CJNE R0,#4,LOOP10 RET;*数码显示DISPLAY9*DISPLAY9:MOV DPTR,#table8 ;数码管显示数字 MOV R0,#0LOOP15 :MOV A,R0 MOVC A,A+DPTR MOV P0,A ;送到P0口显示数字 CLR P2.0 LCALL DELAY0 INC R0 CJNE R0,#10,LOOP15 RET DELAY0: MOV R7,#50 DELA: MOV R6,#100 DEL12: MOV R5,#100 DJNZ R5,$ DJNZ R6,D

26、EL12 DJNZ R7,DELA RET;*延时子程序DELAY*DELAY: MOV R7,#02 D5: MOV R6,#187 D6: MOV R5,#248 DJNZ R5,$ DJNZ R6,D6 DJNZ R7,D5 RETtable0: DB 30h,24h,79h,40h ;倒计时3秒table8: DB 10h,00h,78h,02h,12h,19h,30h,24h,79h,40h ;9,8,7,6,5,4,3,2,1,0TABLE1: DW 62628,63835,64021,64103,64260,64400,64524 ;定时器TO初值TABLE: DB 0FDH,8

27、0H,03H, 0FDH,80H,01H ;音乐代码 DB 0FDH,0C6H,04H, 0FDH,80H,04H DB 0FEH,2AH,04H, 0FEH,02H,04H DB 00H,00H,04H DB 0FDH,80H,03H, 0FDH,80H,01H DB 0FDH,0C6H,04H, 0FDH,80H,04H DB 0FEH,5CH,04H, 0FEH,2AH,04H DB 00H,00H,04H DB 0FDH,80H,03H, 0FDH,80H,01H DB 0FEH,0C0H,04H, 0FEH,84H,04H DB 0FEH,2AH,04H,0FEH,02H,04H DB 0FDH,0C6H,04H DB 0FEH,98H,03H,0FEH,98H,01H DB 0FEH,84H,04H,0FEH,2AH,04H DB 0FEH,5CH,04H,0FEH,2AH,04H DB 00H,00H,04H DB 0FFH,0FFHEND

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


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