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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

完整版基于51单片机的简易电子琴设计.docx

1、完整版基于51单片机的简易电子琴设计鉴于 51 单片机的简略电子琴设计一问题提出为何选择简略电子琴设计?1 关于音乐的兴趣我们对音乐都有着浓重的兴趣,喜爱听钢琴曲,如理查德克莱德曼演奏的思乡曲星空秋天的密语等,音乐在我们的生活中饰演着很重要的角色。有人曾说,喜爱音乐的人不会向恶。从前不认为然,但是跟着这些年来慢慢喜爱上阴暗, 听了愈来愈多的钢琴曲以后,感觉这句话特别有道理。音乐是用艺术家用音符记录世界,传达感情的一种艺术形式, 音乐里有一种和睦之美, 听音乐能够让人心情愉快,与外界和睦一致。 音乐此刻已经成为我生活中很重要的一部分,我们每周都会抽些时间去赏识世界名曲,作为对精神的浸礼。2 关于

2、电子琴的好奇好奇是人的本性, 人类关于自然的认识,关于科学的探究,无不始于好奇。我们对电子琴怎样实现其功能,如音色选择、声音强弱控制、节拍器、自动放音功能等等也很好奇,想经过学习单片机这个时机,深入认识电子琴的功能实现原理。3 关于 51 单片机强盛功能的信任51单片机有基本特征:(1)面向控制的 8 位 CPU 和指令系统(2)4K 字节的程序储存器( ROM 或 EPROM)(3)128 字节的数据储存器(4)可编程的并行 I/O 口 P0P3,有 32 位双向输入 /输出线(5)一个全双工串行口(6)两个 16 位准时器 /计数器(7)五其中止源,两个优先级的中止构造(8)一个片内时钟振

3、荡器和时钟电路(9)能够寻址 64K 字节的程序储存器和 64K 字节的外面数据储存器51单片机功能强盛,性能日益完美,在工业测控、智能仪器仪表、机电一体化产品、家电领域中应用宽泛,所以鉴于 51 单片机设计简易的电子琴可行性特别大。二功能需求1.能够实现基本的琴键功能即每按下一个琴键, 单片机能够检测到键盘的按键, 并依据按键的地点,经过程序来控制,使蜂鸣器发出不一样频次(音调)的声音,声音延缓一段时间,等到按键松开后,声音停止。而后再连续扫描,看能否有键按下,这样循环下去,即可实现基本的琴键功能。2.能够实现调理电子琴音色的功能在键盘上设置功能键,经过按键来选择不一样的音色。入选通后,按下

4、琴键,蜂鸣器就向来发出此种音色的声音。 直到下一次再次按下音色选择功能键,才会改变音色。系统共设置五种音色:长笛音,钢琴音,小号音,小提琴音,短笛音,默认状态为钢琴音。3.能够实现经过按键自动播放歌曲的功能在键盘上设置几个功能键, 按下以后会依据功能键跳转到自动播放歌曲的程序,来播放相应的歌曲。播放歌曲的默认音色为钢琴音,若希望调整音色, 只要在自动播放歌曲从前, 按下相应的音色选择功能键即可实现。三整体方案1 电子琴原理在介绍整体方案从前,先简单介绍一下电子琴的发生原理以及怎样改变音色的基来源理:声音的频谱范围约在几十到几千赫兹 , 若能利用程序来控制单片机某个口线不停输出“ 高” “ 低”

5、电平 , 则在该口线上就能产生必定频次的方波 , 将该方波接上喇叭就能发出必定频次的声音 , 若再利用程序控制 “ 高”“ 低”电平的连续时间 , 就能改变输出波形的频次进而改变音调。乐曲中 , 每一音符对应着确立的频次 , 下表给出各音符频次。假如单片机某个口线输出 “ 高”“ 低”电平的频次和某个音符的频次同样 , 那么将此口线接上喇叭就能够发出此音符的声音。本系统就是依据此原理设计 , 关于单片机来说要产生必定频次的方波大概是先将某口线输出高电平而后延时一段时间再输出低电平 , 这样循环的输出就会产生必定频次的方波 , 经过改变延时的时间就能够改变输出方波的频次。 单片机内部有两个位的准

6、时计数器 T1和T0, 单片机的准时计数器其实是个计数装置它既能够对单片机的内部晶振驱动时钟计数也能够对外面输入的脉冲计数 , 对内部晶振计数时称为准时器 , 对外面时钟计数时称为计数器。当对单片机的内部晶振驱动时钟计数时 ,每个机器周期准时计数器的计数值就加, 当计数值达到计数最大值时计数完成并通知单片机的尸比对外面输入的时钟信号计数时 , 外面时钟的每个时钟上涨沿准时计数器的计数值就加 , 当计数值达到计数最大值时计数完成并通知单片机的尸。所以 , 假如知道单片机的机器周期或许外面输入时钟信号的周期单片机就能够依据准时器的计数值计算出准时的时间。 用此方法准时十分正确 , 想获得多大的延不

7、时间就能够给准时器赋必定的计数初值, 定时器从早先设置的计数初值开始不停增当增添到计数最大值时计数完成 , 调整计数初值的大小就能够调整准时器准时的时间 , 进而达到正确的延时。在本设计中我们使用的外面时钟信号的晶振频次为12MHz,而采纳的计数方式为方式 1,所以计数器的初始值能够由以下公式求得。T=65536-1000000/2/ff为对应音调的频次;经过以上方法,可求出各音调对应的频次,以下表2.外观设计2 硬件部分整体方案51 单片机 P0 口经过 8155 扩展,连结 4*8 的矩阵键盘,作为琴键键盘和相应的功能控制键;并 P2 口一同,与 EPROM 连结; P0 口则接通不通音色

8、的滤波电路,经过程序控制 P0 口,选通不通的琴声音色滤波电路,使电子琴发出不一样音色的声音。3 软件部分整体方案(1)键盘扫描程序:检测能否有键按下,有键按下则记录按下键的键值,并跳转至功能转移程序;无键按下,则返回键盘扫描程序连续检测(2)功能转移程序:对检测到得按键值进行判断, 是琴键则跳转至琴键办理程序, 是功能键则跳转至相应的功能程序, 我们设计的功能程序有两种, 即音色彩节功能和自动播放乐曲功能(3)琴键办理程序 :依据检测到得按键值,查问乐律表,给计时器赋值,使发出相应频次的声音(4)音色彩节程序:检测到键盘按下的是音色彩节功能键后履行该程序,改变P0 端口的值,选通相应的音色滤

9、波电路,达到调理音色的目的(5)自动播放歌曲程序:检测到按键按下的是自动播放歌曲功能键后履行该程序, 电子琴会自动播放早先已经寄存好的歌曲, 歌曲播放完成以后自动返回至键盘扫描程序,连续等候能否有键按下四硬件详尽设计总电路图8155 扩展外面 EPROM 扩展电路键盘电路长笛滤波电路钢琴滤波电路小号滤波电路小提琴滤波电路短笛滤波电路四软件框图总程序简略流程图键盘扫描程序流程图弹奏程序流程图音色彩整子程序自动播放歌曲程序流程图六软件清单ORG0200HMOVP1, #02H; 初始化 P1 口,使得电子琴默认为钢琴声KEYPRO:;键盘扫描程序ACALLKEXAM; 检查能否有键按下JZKEYP

10、RO;若无键按下,则转KEYPRO, 连续等候并检查ACALLD10ms;如有键按下,则延时10ms,进行曲颤动办理ACALLKEXAM;再次检查能否有键按下JZKEYPRO;若无键按下,则转 KEYPROKEY1:MOVR2,#OFEH;输出使第 X0 行为低电平模型数值MOVR3,#OFFH;列值寄存器预置初值MOVR4,#OOH;行值寄存器清零KEY2:MOVDPTR,#0303H;送 8155PC 口地点MOVA,R2;扫描第一行MOVXDPTR,AMOVDPTR,#0301H;送 8155PA 口地点MOVXA,DPTR;读列数据值CPLAANLA,#OFFHJNZKEY3;有键按下

11、,恳求转值MOVA,R4;无键按下,行值寄存器加8ADDA,#08HMOVR4,AMOVA,R2;求下一行为低电平模型数值RLAMOVR2,AJBACC.4,KEY2;判断各行能否完整扫描完,若未完,则连续扫描下一行AJMPKEYPRO;若所有扫描完成,则等候下一次按键KEY3:CPLA;恢复列模型KEY4:INCR3RRCA;求列值JCKEY4KEY5:ACALLD10msACALLKEXAMJNZKEY5;如有键按下,则转 KEY5, 等候键开释MOVA,R4;计算键值ADDA,R3MOVBUFF,AAJMPKEYADR;转查找功能键进口地点子程序D10ms:;延时 10ms 的子程序MO

12、VR5,#14HDL: MOVR6,DL0DL0: DJNZR6,DL0DJNZR5,DLRETBUFFEQU30HKEXAM:MOVDPTR,#0303H;送端口 C 地点MOVA,#00H;输出使所有的行均为低电平模型数值MOVX DPTR,AMOVDPTR,#0301HMOVX A,DPTRCPLAANLA,#0FFHRETORG8000H; 跳转功能程序KEYADR:MOVA, BUFF;拿出键值CJNEA, #17H, KYARD1AJMPPLAY; 等于 17H,转琴键办理KEYRD1:JCPLAY; 小于 17H,转琴键办理KEYTBL:MOVDPTR, # JMPTBL;送功能

13、键地点表指针CLRC;清进位位SUBBA , #10HRLAJMPA+DPTR;转相应的功能键办理程序BUFFEQU30HJMPTBL:AJMPSONG1; 跳转至化蝶AJMPSONG2;跳转至童年AJMPSONG3;跳转至龙的传人AJMPFLUTE;调理成长笛音色状态AJMPPIANO;调理成钢琴音色状态AJMPTRUMPET;调理成小号音色状态AJMPVIOLIN;调理成小提琴音色状态AJMPPICCOLO;调理成短笛音色状态SONG1:MOVDPTR, #BUTTERFLY;赋梁祝谱初值ACALLSUB_SONG;调用播放歌曲子程序AJMPKEYPRO;返回至键盘扫描程序SONG2:MO

14、VDPTR, #YOUTH;赋童年谱值ACALLSUB_SONG;调用播放歌曲子程序AJMPKEYPRO;返回至键盘扫描程序SONG3:MOVDPTR, #MULTIPLY_OF_THE_DRAGON;赋龙的传人谱初值ACALLSUB_SONGAJMPKEYPROFLUTE:MOVP1, #01H;使长笛滤波电路选通AJMPKEYPRO;跳转回键盘扫描程序PIANO:MOVP1, #02H;使钢琴琴滤波电路选通AJMPKEYPRO;跳转回键盘扫描程序TRUMPET:MOVP1, #04H;使小号滤波电路选通AJMPKEYPRO;跳转回键盘扫描电路VIOLIN:MOVP1, #08H;使小提琴滤

15、波电路选通AJMPKEYPRO;跳转回键盘扫描电路PICCOLO:MOVP1, #10H;使短笛滤波电路选统统AJMPKEYPRO;跳转回键盘扫描电路PLAY:;抚琴子程序ORG0F00H;子程序进口地点SJMPMAINORG0F1BH;设置中止进口地点LJMP TINT1MAIN:MOVTMOD, #10H; 计时器控制字T1 方式计时SETBEA;开中止总开关SETBET1; 同意T1中止SETBTR1;准时开始MOVDPTR, #TABLE1;查问乐律表PUSHACCMOVCA, A+DPTRMOVTH1,A;乐律表查问值高八位赋值POPACCINCAMOVCA, A+DPTRMOVTL

16、1,A;乐律表查问值低八位赋值ACALLDLAYAJMPKEYPRO;跳转回键盘扫描程序TINT1:JBP1.0,FLUTE_ON;判断能否跳到长笛音色档JBP1.1,PIANO_ON;判断能否调到钢琴音色档JBP1.2,TRUMPET_ON;判断能否调到小号音色档JBP1.3,VIOLIN_ON;判断能否跳到小提琴音色档JBP1.4,PICCOLO_ON;判断能否跳到短笛音色档FLUTE_ON:;假如长笛音色档,则控制P1.0 口电压变化CPLPOPDPHPOPDPLPUSHDPLPUSHDPHRETIPIANO_ON:;假如钢琴琴音色档,则控制P1.1 口电压变化CPLPOPDPHPOPD

17、PLPUSHDPLPUSHDPHRETITRUMPET_ON:;假如小号音色档,则控制P1.2 口电压变化CPLPOPDPHPOPDPLPUSHDPLPUSHDPHRETIVIOLIN_ON:;假如小提琴音色档,则控制P1.2 口电压变化CPLPOPDPHPOPDPLPUSHDPLPUSHDPHRETIPICCOLO_ON:;假如短笛音色档,则控制P1.2 口电压变化CPLPOPDPHPOPDPLPUSHDPLPUSHDPHRETIDLAY:MOVR2, #0F0H ;延时程序DL2:MOVR3,#0F0HDL1:NOPNOPDJNZR3, DL1DJNZR2, DL2RETTABLE1 :;

18、乐律表DW0F88BH; -1DW0F95BH; -2DW0FA14H; -3DW0FA67H; -4DW0FB07H; -5DW0FB8FH; -6DW0FB9EH; -6#DW0FC0BH; -7DW0FC43H; 1DW0FCACH; 2DW0FD09H; 3DW0FD33H; 4DW0FD83H; 5DW0FDC7H;6DW0FDE7H; 6#DW0FE05H; 7DW0FE22H; +1DW0FE56H; +2DW0FE84H; +3DW0FE9AH; +4DW0FEC1H; +5DW0FEE3H; +6DW0FEF3H; +6#DW0FF02H; +7ORG0F00HSUB_SON

19、G:;自动播放歌曲的子程序-1EQU0H; 低音域简谱码-2EQU1H-3EQU2H-4EQU3H-5EQU4H-6EQU5H-6#EQU6H-7EQU7H1EQU8H;中音域简谱码2EQU9H3EQU0AH4EQU0BH5EQU0CH6EQU0DH6#EQU0EH7EQU0FH+1EQU10H;高音域简谱码+2EQU11H+3EQU12H+4EQU13H+5EQU14H+6EQU15H+6#EQU16H+7EQU17HFREQ_TEMP.EQU31HTIME_TEMP.EQU32HTH0_TEMP.EQU 33HTL0_TEMP.EQU34HORG00H;播放乐曲子程序的主程序JMPSTAR

20、TORGOBHJMPTIMER0START:MOVSP, #50HMOVIE, #10000010B;中止, EA=ET0=1MOVTMOD, #00000001B; 设定计数器 0 为 mode1BEGIN:MOVA, #00HMOVCA,A+DPTR;获得简谱码MOVFREQ_TEMP,AINCDPTR;指向下一个地点MOVA, #00HMOVCA, A+DPTR;获得节拍码MOVTIME_TEMP, AJZSTOP;比较唱歌能否结束PUSHDPHPUSHDPLMOVA,FREQ_TEMPCJNEA, #FFH, SING_SONG;比较能否停止发音CLRTR0;停止计时JMPHOLDSI

21、NG_SONG:CLRTR0;停止计时MOVDPTR, #TABLE;频次值寄存开始地点MOVA, FREQ_TEMP;RLA; FREQ_TEMP 地点乘以 2MOVCA, A+DPTR;获得频次值高位组MOVTH0,A; TH0= 频次值高位组MOVTH0_TEMP, AMOVA, FREQ_TEMPRLA; FREQ_TEMP 地点乘以 2INCA;再加 1MOVCA,DPTR;获得频次值低位组MOVTL0,A;TL0= 频次值低位组MOVTL0_TEMP,ASETBTR0;开始计时HOLD:CALLDELAY_TIME;延缓节拍数POPDPLPOPDPHINCDPTR;指向下一个地点J

22、MPBEGINSTOPCLRTR0;乐曲播放结束SETB;关掉蜂鸣器JMP $DELAY_TIME:;节拍数DELAY#254, #245; 125msDJNZTIME_TEMP, DELAY_TIMERETTIMER0:MOVTH0, TH0_TEMP;从头载入频次值高位组MOVTL0, TL0_TEMP;从头载入频次值低位组JBP1.0,FLUTE_ON;判断能否调长笛音色档JBP1.1,PIANO_ON;判断能否调到钢琴音色档JBP1.2,TRUMPET_ON;判断能否调到小号音色档JBP1.3,VIOLIN_ON;判断能否跳到小提琴音色档JBP1.4,PICCOLO_ON;判断能否跳到短笛音色档FLUTE_ON:;假如长笛音色档,则是长笛版乐曲CPLPOPDPHPOPDPLPUSHDPLPUSHDPHRETIPIANO_ON:;假如钢琴音色档,则是钢琴版乐曲C

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

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