单片机课程设计电子琴按键演奏.doc

上传人:知****量 文档编号:43170817 上传时间:2022-09-17 格式:DOC 页数:13 大小:1.96MB
返回 下载 相关 举报
单片机课程设计电子琴按键演奏.doc_第1页
第1页 / 共13页
单片机课程设计电子琴按键演奏.doc_第2页
第2页 / 共13页
点击查看更多>>
资源描述

《单片机课程设计电子琴按键演奏.doc》由会员分享,可在线阅读,更多相关《单片机课程设计电子琴按键演奏.doc(13页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、目录一、课题名称1二、设计容概要1三、设计任务和要求1四、系统设计方案14.1 系统设计思路14.2 系统总体的组成框图1五、系统硬件设计与说明25.1 系统控制模块AT89C5125.2 琴键控制模块25.3 播放模块3六、系统软件设计与说明36.1 设置单片机产生音频脉冲的初值36.2 实验主要程序46.3 系统总体功能流程图5七、系统调试67.1 使用的主要仪器和仪表67.2 调试步骤67.3 测试数据77.4 故障与排除7八、课设答辩7九、课设小结8参考文献8附录911 / 13一、课题名称电子琴设计按键演奏二、设计容概要电子琴是现代电子科技与音乐结合的产物,是一种新型的键盘乐器。它在

2、现代音乐扮演着重要的角色,单片机具有强大的控制功能和灵活的编程实现特性,它已经溶入现代人们的生活中,成为不可替代的一部分。本文的主要容是用单片机为核心控制元件,设计一个电子琴。以单片机作为主控核心,与键盘、扬声器等模块组成核心主控制模块,在主控模块上设有8个按键和扬声器。三、设计任务和要求任务:设计并实现按键演奏电子琴要求:利用数字键1、2、3、4、5、6、7、8作为电子琴键,按下数字键发出相应的音调。四、系统设计方案4.1 系统设计思路利用所给单片机实验仪中键盘的1,2,3,4,5,6,7,8八个键,能够发出8个不同的音调,并且要求按下按键发声,松开延时一段时间停止,中间再按别的键则发另一音

3、调的声音。当系统扫描到键盘上有键被按下,则快速检测出是哪一个键被按下,然后单片机的定时器被启动,发出一定频率的脉冲,该频率的脉冲经喇叭驱动电路放大滤波后,就会发出相应的音调。4.2 系统总体的组成框图本系统采用AT89C51为电子琴控制中心,系统主要包括主控制模块、琴键控制模块、播放模块。如图1所示:AT89C51控制中心模块琴键控制模块按键状态响应播放模块发出音调 图1系统总体的组成框图五、系统硬件设计与说明5.1 系统控制模块AT89C51AT89C51是一种带4K字节闪烁可编程可擦除只读存储器的低电压,高性能CMOS 8位微处理器,俗称单片机。该器件采用ATMEL高密度非易失存储器制造技

4、术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器, AT89C51单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。外形与引脚排列如图所示。P0口:漏极开路的双向I/O口。当使用外部存储器时(ROM或RAM)时,作为地址和数据总线分时复用。在程序效验时,输出指令字节(这时需加外部上拉电阻)。作为总线时P0口能驱动8个LSTTL负载。P1口:准双向I/O口,具有部上拉电阻,是通用的I/O口。在编程/校验时,用作输入低位字节地址,P1口可驱动4个LSTTL负载。P2口:准双向I/O口,具

5、有部上拉电阻,是通用的I/O口。让使用片外存储器(ROM或RAM)时,输出高8位地址。在编程/校验时,接收高位字节地址。P2口可驱动4个LSTTL负载。P3口:准双向I/O口,具有部上拉电阻,是通用的I/O口。P3口可驱动4个LSTTL负载。同时P3口还具有第二个功能,在使用第二个功能时,其输出锁存器应由程序置1。5.2 琴键控制模块琴键的按键选用的XL2000的JP37独立按键模块,此8个独立的按键开关按下为低电平。如图3所示: 图3 按键控制模块5.3 播放模块扬声器是一种把电平转变为声信号的换能器件,扬声器和性能对音质的高低音响很大。扬声器的种类很多,按其换能原理可分为电动式、静电式、电

6、磁式、压电式等几种,后两种多用于农村有线广播网中,按频率围可分为低音扬声器、中音扬声器,这些常在音箱中作为组合扬声器使用。在本次课程设计使用XL2000中JP16小喇叭模块。如图4所示:六、 系统软件设计与说明6.1 设置单片机产生音频脉冲的初值音乐实际上是有固定周期的信号,通过单片机的定时器的设置可以产生相应音频的音调。产生不同频率的音频脉冲即能产生音乐,对于单片机而言,产生不同频率有脉冲非常方便,可以利用它的定时/计数器来产生这样的方波频率信号,因此,需要弄清楚音乐中的音符和对应的频率,以与单片机定时计数的关系。在本实验中,单片机工作于12MHZ时钟频率,使用其定时/计数器T1,工作模式为

7、1,改变计数值TH0和TL0可以产生不同频率的脉冲信号,在此情况下,C调的各音符频率与计数值T的对照如下表1所示。其计算方法如下:计数脉冲值与频率的关系式是: Nfi2fr式中,N是计数值;fi是机器频率(晶体振荡器为12MHz时,其频率为1MHz);fr是想要产生的音调的频率。其计数初值T的求法如下:T65536N65536fi2fr例如:设K65536,fi1MHz,求低音DO(262Hz)、中音DO(523Hz)、高音DO(1046Hz)的计数值。 T65536N 65536fi2fr 6553610000002fr 65536500000/fr低音DO的T65536500000/262

8、63627;中音DO的T65536500000/52364580;高音DO的T65536500000/104665058。表1 音符频率与计数值T的对照表音符频率(HZ)计数值(T值)TLTH音符频率(HZ)计数值(T值)TLTH低1DO262636270x8B0xF8#4FA#740648590x5B0xFD#1DO#277637300xF20xF8中5SO784648970x810xFD低2RE294638350x5B0xF9#5SO#831649330xA50xFD#2RE#311639270xB70xF9中6LA880649670xC70xFD低3MI330640200x140xFA#

9、6LA#932649990xE70xFD低4FA349641020x660xFA中7SI968650290x050xFE#4FA#370641850xB90xFA低1DO1046650570x210xFE低SO392642590x030xFB#1DO#1109650840x3C0xFE#5SO#415643300x4A0xFB高2RE1175651090x550xFE低6LA440643990x8F0xFB#2RE#1245651330x6D0xFE#6LA#466644630xCF0xFB高3MI1318651560x840xFE低7SI494645230x0B0xFC高4FA1397651

10、770x990xFE中1DO523645790x430xFC#4FA#1490651970xAD0xFE#1DO#554646320x780xFC高5SO1568652160xC00xFE中2RE587646830xAB0xFC#5SO#1661652340x020xFE#2RE#622647310xDB0xFC高6LA1760652510xE30xFE中3MI659647760x080xFD#6LA#1865652670xE30xFE中4FA698648190x330xFD高7SI1967652820x020xFF6.2 实验主要程序1) 音频输出引脚接入:sbit BEEP=P17; /喇

11、叭输出脚 2) 按键控制引脚接入:sbit K1= P20;sbit K2= P21;sbit K3= P22;sbit K4= P23;sbit K5= P24;sbit K6= P25;sbit K7= P26;sbit K8= P27;3) 中断控制:timer0() interrupt 1 TL0=tl0_f;TH0=th0_f; /调入预定时值 BEEP=BEEP; /取反音乐输出 IO 4) 按键控制音阶声音输出(电子琴)if(!Ki) /i取值为18 tl0_f=freqf0*2; /置一个音符的值 th0_f=freqf0*2+1; TR0 = 1; for(n=0;n8000

12、;n+); /延时 6.3 系统总体功能流程图在主程序流程图中,T0初始化后,首先要通过扫描键盘,判断是否有按键按下。若没有按键按下,则要继续扫描,不断重复循环过程,直到发现按键按下,程序才能根据按键的功能,将相对应的音符T值装入到T0以后,T0就会开始启动。程序随后继续扫描按键,若按键保持按下状态,则T0继续保持工作状态,直到按键松下,T0就会停止工作,返回初始状态,等待下一次的扫描按键结果。如图5所示,为主程序流程图开始T0初始化并开中断允放T0中断按键识别功能根据按键功能,装入音符T值到T0中启动T0工作停止T0工作按键按下是否成功按键释放与否图5 主程序流程图NYYN当程序中断时,程序

13、保存现场,并重装TH0、TL0的初值,然后将P1.7按位取反,重新送入到P1.7,最后中断返回。如图6所示,为T0中断子程序图。T0中断入口重装TH0、TL0初值P1.7取反中断返回图6 T0中断子程序图六、 系统调试7.1 使用的主要仪器和仪表PC(装有XLSP、keil软件)一台、XL2000实验仪、若干连接线等。7.2 调试步骤根据系统设计方案,本系统的调试共分为三大部分:硬件调试,软件调试和软硬件联调。1) 硬件调试主要就是对课程设计中所需使用的每个实验仪器,进行调试,是各个硬件能够正常工作,并做好一些必要设置,确保在后续调试中正常工作。2) 软件调试软件调试主要就是采用keil软件,

14、将编写的程序进行调试,检查是否有语法错误。图7是所设计的运行代码的调试结果。3) 综合调试综合调试,是将软件和硬件联合在一起进行调试。首先,将XL2000实验仪通过数据线与PC的USB相连。接着,接将keil生成的.hex文件导入到软件XLSP中,进行运行。使其加载到XL2000实验仪中的AT89C51中。最后,通过XL2000实验仪中的JP37独立按键模块的8个按键,测试JP16小喇叭模块所产生的音频是否达到预先所设计的要求。7.3 测试数据 表2 按键音符对应表按键频率(HZ)音符按键频率(HZ)音符K1440doK5554soK2466reK6587faK3494miK7622xiK45

15、23laK8659do7.4 故障与排除课设最重要环节是编码的设计,它的调试的成功与否,决定着本次课程设计结果。而编码中对于每个音符多对应的T码值计算中,我们出现了错误,导致了所产生的音调达不到课设的要求。但是通过书本上方式1中的计算方法,以与老师的帮助,我们很快的就将所有音符对应的正确的T码值计算完毕,并且通过调试达到了课设要求。其他的一些就都是一些小的问题,像串口错误等,通过组合作,也都各个击破了。八、课设答辩问题:可不可以把工作方式1改成工作方式0?答案:可以,因为这里工作方式0的计数初值T=-1*/2/f也满足。九、课设小结我们大家都知道,课设、实训、实验等等的实践项目都是理论联系实际

16、,让我们对所学的理论的知识有个比较客观,比较具体的了解。本次课设的题目是电子琴设计按键演奏,这次的课设老师要求我们以小组为单位分工合作完成任务。对于课题的选择我们是觉得题目很新颖,觉得很好玩,就选了。通过为期一周的课程设计,让我对于单片机原理与应用这门课程有了更深一层次的了解。在课设的过程中,不管从查资料还是从对于课题的审题以与把握上,老实说,这是我做的最认真的一次,我觉得自己在很努力地把它做好。通过本次的课设,不仅培养了我独立思考、动手操作的能力,在其它能力上也都有了很大的提高。更重要的是,在课设课上,我学会了很多学习的方法,比如说应该怎样去查资料,应该去找什么样的资料来让自己对于这个课题有

17、更好的了解,而这是日后最实用的。虽然在最后答辩的时候,对于老师的提问,我没有完全答出来,但在事后我还是经过查阅书本,知道了正确的答案。而这其实也在告诉我,课设还是要结合课本上的理论知识,这样才能知其然且知其所以然。最后我要感老师的指导,也同样其他各组同学的无私帮助!参考文献1 王浩全等.单片机原理与应用.:人民邮电出版,2013.2 毅刚,喜元.单片机原理与应用.:高等教育,20073 乐喜.微机计算机接口技术与应用.湖北:华中科技大学,20054 群芳等.单片微型计算机原理与接口技术.:电子工业.2002附录源程序:#include #define uchar unsigned char /

18、定义一下方便使用 #define uint unsigned int #define ulong unsigned long int char code dx5163 _at_ 0x003b;/这是为了仿真设置的 sbit BEEP=P17; /喇叭输出脚 sbit K1= P20; sbit K2= P21; sbit K3= P22; sbit K4= P23;sbit K5= P24; sbit K6= P25; sbit K7= P26; sbit K8= P27; uchar th0_f; /在中断中装载的 T0 的值高 8 位 uchar tl0_f; /在中断中装载的 T0 的值

19、低 8 位 /T0 的值,与输出频率对照表 uchar code freq36*2= 0x8B,0xF8,/00262HZ ,1 /0 0xF2,0xF8,/00277HZ ,1# 0x5B,0xF9,/00293HZ,20xB7,0xF9,/00311HZ ,2#0x14,0xFA,/00329HZ ,30x66,0xFA,/00349HZ ,40xB9,0xFA,/00370HZ ,4#0x03,0xFB,/00392HZ ,50x4A,0xFB,/00415HZ ,5#0x8F,0xFB,/00440HZ ,60xCF,0xFB,/00466HZ ,6#0x0B,0xFC,/00494H

20、Z ,70x43,0xFC,/00523HZ 10x78,0xFC,/00553HZ 1#0xAB,0xFC,/00586HZ 20xDB,0xFC,/00621HZ 2#0x08,0xFD,/00658HZ 30x33,0xFD,/00697HZ 40x5B,0xFD,/00739HZ 4#0x81,0xFD,/00783HZ 50xA5,0xFD,/00830HZ 5#0xC7,0xFD,/00879HZ 60xE7,0xFD,/00931HZ 6#0x05,0xFE,/00987HZ 70x21,0xFE,/01045HZ10x3C,0xFE,/01106HZ1#0x55,0xFE,/0

21、1171HZ20x6D,0xFE,/01241HZ2#0x84,0xFE,/01316HZ30x99,0xFE,/01393HZ40xAD,0xFE,/01476HZ4#0xC0,0xFE,/01563HZ50x02,0xFE,/01658HZ5#0xE3,0xFE,/01755HZ60xE3,0xFE,/01860HZ6#0x02,0xFF,/01971HZ7; /定时中断 0,用于产生唱歌频率 timer0() interrupt 1 TL0=tl0_f;TH0=th0_f; /调入预定时值 BEEP=BEEP; /取反音乐输出 IO /按键控制音阶声音输出(电子琴) void main(

22、void) / 主程序 ulong n; uchar code f8=9,11,13,14,16,18,20,21;/12345671 八个音符在频率表中的位置 TMOD = 0x01; /使用定时器 0 的 16 位工作模式 TR0 = 0; ET0 = 1; EA = 1; while(1) if(!K1) tl0_f=freqf0*2; /置一个音符的值 th0_f=freqf0*2+1; TR0 = 1; for(n=0;n8000;n+); /延时 if(!K2) tl0_f=freqf1*2; /置一个音符的值 th0_f=freqf1*2+1; TR0 = 1; for(n=0;

23、n8000;n+); /延时 if(!K3) tl0_f=freqf2*2; /置一个音符的值 th0_f=freqf2*2+1; TR0 = 1; for(n=0;n8000;n+); /延时 if(!K4) tl0_f=freqf3*2; /置一个音符的值 th0_f=freqf3*2+1; TR0 = 1; for(n=0;n8000;n+); /延时 if(!K5) tl0_f=freqf4*2; /置一个音符的值 th0_f=freqf4*2+1; TR0 = 1; for(n=0;n8000;n+); /延时 if(!K6) tl0_f=freqf5*2; /置一个音符的值 th0_f=freqf5*2+1; TR0 = 1; for(n=0;n8000;n+); /延时 if(!K7) tl0_f=freqf6*2; /置一个音符的值 th0_f=freqf6*2+1; TR0 = 1; for(n=0;n8000;n+); /延时 if(!K8) tl0_f=freqf7*2; /置一个音符的值 th0_f=freqf7*2+1; TR0 = 1; for(n=0;n8000;n+); /延时 TR0 = 0;

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

当前位置:首页 > 应用文书 > 工作计划

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

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁