收藏 分享(赏)

单片机简易电子琴课程设计报告.doc

上传人:HR专家 文档编号:5026248 上传时间:2019-01-31 格式:DOC 页数:15 大小:2.71MB
下载 相关 举报
单片机简易电子琴课程设计报告.doc_第1页
第1页 / 共15页
单片机简易电子琴课程设计报告.doc_第2页
第2页 / 共15页
单片机简易电子琴课程设计报告.doc_第3页
第3页 / 共15页
单片机简易电子琴课程设计报告.doc_第4页
第4页 / 共15页
单片机简易电子琴课程设计报告.doc_第5页
第5页 / 共15页
点击查看更多>>
资源描述

1、山东交通学院单片机原理课程设计说明书题目:简易电子琴设计院(系)别 交通与物流工程学院专 业 物联网工程 班 级 物联 141 学 号 140516112 姓 名 解文博 指导教师 侯贻蒙 二一六年六月山东交通学院课程设计说明书1摘 要本课题的主要内容就是用单片机实现简易电子琴的设计。本设计的主要内容是用 AT89C52 单片机为核心控制元件并与键盘、扬声器等模块聚城核心主控制模块,利用所给键盘的1,2,3,4,5,6,7,8,八个键,能够发出 8 个不同的音调,并且要求按下按键发声。当系统扫描到键盘上有键被按下,则快速检测出是哪一个键被按下,然后单片机的定时器被启动,发出一定频率的脉冲,该频

2、率的脉冲经喇叭驱动电路放大滤波后,就会发出相应的音调。如果在前一个按下的键发声的同时有另一个键被按下,则启用中断系统,前面键的发音停止,转到后按的键的发音程序,发出后按的键的音调。先根据要求设计硬件电路和编写相应的程序,然后进行仿真调试,最后细心焊接硬件电路图,将程序烤入芯片中,最终达到设计目的。本系统运行稳定,其优点是硬件电路简单,软件功能完善,控制系统可靠,性价比较高等,具有一定的实用和参考价值。关键词:单片机,按键,音阶,扬声器山东交通学院课程设计说明书21 设计的目的和意义单片机(单片微型计算机)是大规模集成电路技术发展的产物,具有高性能、高速度、体积小、价格低廉、稳定可靠等特点。单片

3、机的应用相当广泛,从平常的家用电器到航空航天系统和国防军事、尖端武器都能找到它的身影。因此,单片机的开发应用已成为高科技和工程领域的一项重大课题。 音乐随着人们的生活水平也逐步提高已经成为了我们生活中很重要的一部分,在工作和学习之余,欣赏音乐不仅使身心得到放松,同时也提高人们的精神品质和个人素养。当代,爱好音乐的年轻人越来越多,也有不少人自己练习弹奏乐器,作为业余爱好和一种放松的手段,鉴于一些乐器学习难度大需花费太多精力,且其价格太过于高昂,使得一部分有这种想法的人不得不放弃这种想法,而电子琴又是一种新型的键盘乐器,它是现代电子科技与音乐结合的产物,价格相对便宜,能够满足一般爱好者的需求,因此

4、,在现代音乐中扮演着重要的角色。 故简易电子琴的研制具有一定的社会意义。2 设计系统的功能(1)利用所给键盘的 1,2,3,4,5,6,7,8 八个键,能够发出8 个不同的音调(2)当系统扫描到键盘上有键被按下单片机的定时器被启动,发出一定频率的脉冲,如果在该频率的脉冲经喇叭驱动电路放大滤波后,就会发出相应的音调。山东交通学院课程设计说明书3(3)中间再按别的键则发另一音调的声音(4)前一个按下的键发声的同时有另一个键被按下,则启用中断系统,前面键的发音停止,转到后按的键的发音程序,发出后按的键的音调。并且要求按下按键发声,松开延时一段时间停止 3 硬件系统结构3.1 总体电路设计电子琴总体电

5、路分别由单片机最小系统模块、显示模块、按键模块、发音模块四个模块组成。如下图所示。8 9 S 5 2单片机按键模块发音单元显示模块图 3-1 总体电路设计3.2 原理图山东交通学院课程设计说明书4图 3-2 原理图3.3 键盘设计键盘在单片机应用系统中是一个关键的部件,它能实现向计算机输入数据,传送命令等功能,是人工干预计算机的主要手段。键盘可以分为 2 类:独立连接式键盘和矩阵式键盘。(1)矩阵式键盘单片机系统中,若按键较多时,通常采用矩阵式(也称行列式)键盘。矩阵式键盘由行线和列线组成,按键位于行、列线的交叉点上。显然,在按键数量较多时,矩阵式键盘较之独立式按键键盘要节省很多 I/O 口。

6、矩阵式键盘中,行、列线分别连接到按键开关的两端,行线通过上拉电阻接到+5V 上当无键按下时,行线处于高电平状态;当有键按下时,行、列线将导通,此时,行线电平将由与此行线相连山东交通学院课程设计说明书5的列线电平决定。这是识别按键是否按下的关键。(2)独立连接式键盘独立式按键是直接用 I/O 口线构成的单个按键电路,其特点是每个按键单独占用一根 I/O 口线,每个按键的工作不会影响其它I/O 口线的状态。独立式按键电路配置灵活,软件结构简单,但每个按键必须占用一根 I/O 口线,然而,在按键较多时,I/O 口线浪费较大,不宜采用。独立式按键软件常采用查询式结构。先逐位查询每根 I/O 口线的输入

7、状态,如某一根 I/O 口线输入为低电平,则可确认该 I/O 口线所对应的按键已按下,然后,再转向该键的功能处理程序。由于本程序较为简单,为了使用方便及节省资源,选择独立式键盘。下图为独立式键盘电路图:图 3-3 独立式键盘电路图山东交通学院课程设计说明书6键盘编程中主要考虑去抖动的问题。当测试表明有键被按下之后,紧接着就进行去抖动处理。因为键是机械开关结构,由于机械触点的弹性及电压突跳等原因,在触点闭合或断开的瞬间会出现电压抖动。为保证键识别的准确,在电压信号抖动的情况下不能进行行状态输入。为此需进行去抖动处理。去抖动有硬件和软件两种方法。硬件方法就是加去抖动电路,从根本上避免抖动的产生。软

8、件消抖,在第一次检测到有键按下时,执行一段延时程序之后,再检测此按键,如果第二次检测结果仍为按下状态,CPU 便确认此按键己按下,消除了抖动。3.4 发音模块设计如下图所示,发音电路是由蜂鸣器、三极管、上拉电阻构成。由三极管来驱动扬声器发音的,同时加上拉电阻增强驱动电流,提高驱动能力。图 3-4 发音电路图一首音乐是许多不同的音阶组成的,而每个音阶对应着不同的频率,这样我们就可以利用不同的频率的组合,即可构成我们所想要的音乐了,当然对于单片机来产生不同的频率非常方便,我们可山东交通学院课程设计说明书7以利用单片机的定时/计数器 T0 来产生这样方波频率信号,因此,我们只要把一首歌曲的音阶对应频

9、率关系正确即可。4 软件功能实现4.1 软件系统流程分析(1)键盘扫描程序:检测是否有按键按下,有按键按下则记录按下键的键值,并跳转至功能转移程序;无按键按下,则返回键盘扫描程序继续检测。(2)琴键处理程序:根据检测到的按键值,查询音调表,给计时器赋值,使发出相应频率的声音。图 4-1 主程序流程图开始开启定时器初始化判断是否按键YN键盘扫描,确定按下的按键关闭定时器,无声音发出发出相应音调山东交通学院课程设计说明书84.2 关键代码的实现4.2.1键盘扫描unsigned char keys_scan(void) unsigned char Tmp,k=16;P2=0x0F; delay_1

10、ms(2000); Tmp=P2 0x0F; switch(Tmp)/确定扫描的是哪一列 case 1: k=0;break; case 2: k=1;break; case 3: k=2;break;case 4: k=3;break;default: return 16; /无键按下, 返回 P2=0xF0;delay_1ms(2000); Tmp=(P24)0x0F;switch(Tmp)/确定扫描的是那一行 case 1: k+=0; break;case 2: k+=4; break;case 3: k+=8; break;case 4: k+=12; break;default:

11、return 16; /无键按下, 返回 return k;4.2.2发声程序/音符发生的中断void play_tone() interrupt 1 TH0=Sound_Temp_TH0; TL0=Sound_Temp_TL0;beep=!beep; 山东交通学院课程设计说明书94.3 其他关键技术定时器产生音乐原理利用单片机的内部定时器使其工作计数器模式(MODE1)下,改变计数值TH0 及 TL0 以产生不同频率的方法产生不同音阶。例如,频率为 523Hz,其周期 T 1/5231912s ,因此只要令计数器计时 956s/1s956,每计数 956 次时将 I/O 反相,就可得到中音

12、DO(523Hz)。计数脉冲值与频率的关系式(如式 2-1 所示)是:Nfi2fr 2-1式中,N 是计数值;fi 是机器频率(晶体振荡器为 12MHz 时,其频率为1MHz); fr 是想要产生的频率。其计数初值 T 的求法如下:T65536N65536fi2fr例如:设 K65536,fi1MHz,求低音 DO(261Hz)、中音DO(523Hz)、高音 DO(1046Hz )的计数值。T65536N65536fi2fr6553610000002fr65536500000/fr低音 DO 的 T65536500000/26263627中音 DO 的 T65536500000/5236458

13、0高音 DO 的 T65536500000/104665059音符频率表音符 频率(HZ)简谱码(T值)音符 频率(HZ)简谱码(T值)低 1 DO 262 63628 # 4 FA# 740 64860#1 DO# 277 63731 中 5 SO 784 64898低 2 RE 294 63835 # 5 SO# 831 64934#2 RE# 311 63928 中 6 LA 880 64968低 3 M 330 64021 # 6 932 64994低 4 FA 349 64103 中 7 SI 988 65030# 4 FA# 370 64185 高 1 DO 1046 65058低

14、 5 SO 392 64260 # 1 DO# 1109 65085# 5 SO# 415 64331 高 2 RE 1175 65110低 6 LA 440 64400 # 2 RE# 1245 65134# 6 466 64463 高 3 M 1318 65157低 7 SI 494 64524 高 4 FA 1397 65178中 1 DO 523 64580 # 4 FA# 1480 65198# 1 DO# 554 64633 高 5 SO 1568 65217山东交通学院课程设计说明书10中 2 RE 587 64684 # 5 SO# 1661 65235# 2 RE# 622

15、64732 高 6 LA 1760 65252中 3 M 659 64777 # 6 1865 65268中 4 FA 698 64820 高 7 SI 1967 65283采用查表程序进行查表时,可以为这个音符建立一个表格,有助于单片机通过查表的方式来获得相应的数据:低音 019 之间,中音在 2039 之间,高音在4059 之间。用单片机弹奏电子琴,实际上是按照特定的频率,输出一连串的方波。为了输出合适的方波,首先应该知道音符与频率的关系。5 设计中的难点本次课程对知识的要求较为综合,我们用到了单片机,数字电路,单片机各引脚,中断系统原理等知识。在老师的帮助下,以及自己不断查找资料,慢慢进

16、入状态。我们将编好的源程序输入电脑,编译后出现很多错误,这些错误有许多是平时实验遇到过的,例如:输入的分号格式不正确,零和字母O弄混淆。对于中断程序,运行过程中按键控制不稳定,不能按照预想的要求控制中断。键盘编程中主要考虑去抖动的问题。 当测试表明有键被按下之后,紧接着就进行去抖动处理。因为键是机械开关结构,由于机械触点的弹性及电压突跳等原因,在触点闭合或断开的瞬间会出现电压抖动。为保证键识别的准确,在电压信号抖动的情况下不能进行行状态输入。6 设计结果当按下键盘的1,2,3,4,时,可以发出DO,RE,M,FA四个音调;按5,6,7,8,八个键,能够发出升一调的DO,RE,M,FA,如果在前

17、一个按下的键发声的同时有另一个键被按下,则启用中断系统,前面键的发音停止,转到后按的键的发音程序,发出后按的键的音调。山东交通学院课程设计说明书117 总结与心得在为期一周的单片机课程设计中,我在增长知识、提高能力的同时,产生了很深的感触。从初步定下方案到编出程序,从不断的运行排错到调试成功,在整个设计过程中,着实受益匪浅,不仅可以巩固以前所学过的知识,而且学到了很多在书本上所没有学到过的东西。 通过这次的课程设计作品的制作让我对单片机的理论有了更加深入的了解,同时在具体的制作过程中我们发现现在书本上的知识与实际的应用存在着不小的差距,书本上的知识很多都是理想化后的结论,忽略了很多实际的因素,

18、或者涉及的不全面,可在实际的应用时这些是不能被忽略的,我们不得不考虑这方的问题,这让我们无法根据书上的理论就轻易得到预想中的结果,有时结果甚至很差别很大。通过这次设计,我基本掌握了如何利用 keil 生成 hex 文件。通过开发板的设计和硬件搭建的过程,使我对 89c52 系单片机的接口有了更深层次的理解,熟悉了一些单片机常用的外围电路引脚和连接方法。我熟悉了89c52 系列单片机内部的寄存器和编程规则,以及如何控制外围电路。总之,通过这次课程设计,我们都清楚明白了自己的能力有多深,想提高还得归于多锻炼,多动手,多向别人学习。8 参考文献1 陈明荧 8051 单片机课程设计实训教材M北京:清华

19、大学出版社,2003年 9 月2 徐新艳单片机原理、应用与实践M北京:高等教育出版社,2005 年 3月3 张淑清,姜万录等,单片微型计算机接口技术及应用M国防工业出版社,20034 冯博琴,微型计算机原理与接口技术M清华大学出版社,2004山东交通学院课程设计说明书129 附录:系统程序源码/*实验名称:简易电子琴的程序程序说明:能够实现单独演奏功能,其中按键-8是用于单独演奏的*/#include #include /本程序是电子琴的程序, 能够实现单独演奏功能。 其中, 按键 1-8 是用于单独演奏的unsigned int code tone_delay_table=63628,638

20、35,64021,64103,64260,64400,64524,64580,64684,64777,64820,64898,64968,65030,65058,65110;/各音符对应的延时表 sbit beep=P35;/蜂鸣器的位定义 unsigned char Sound_Temp_TH0,Sound_Temp_TL0; /音符定时器初值暂存 void delay_1ms(unsigned int i) while(i-); /延时/键盘矩阵扫描 /返回按下的键的值 unsigned char keys_scan(void) unsigned char Tmp,k=16;P2=0x0F

21、; delay_1ms(2000); Tmp=P2 0x0F; switch(Tmp)/确定扫描的是哪一列 case 1: k=0;break; case 2: k=1;break; case 3: k=2;break;case 4: k=3;break;default: return 16; /无键按下, 返回 P2=0xF0;delay_1ms(2000); Tmp=(P24)0x0F;山东交通学院课程设计说明书13switch(Tmp)/确定扫描的是那一行 case 1: k+=0; break;case 2: k+=4; break;case 3: k+=8; break;case 4

22、: k+=12; break;default: return 16; /无键按下, 返回 return k; void main() /主程序 unsigned char key_NO=0;/设置定时器工作方式 3, 以及相关开启寄存器 TMOD |= 0x11;/使用模式 1,16 位定时器,使用“|“符号可以在使用多个定时器时不受影响 ET0 = 1; /定时器中断打开TR0 = 1; /定时器开关打开EA = 1; /总中断打开TH0=tone_delay_tablekey_NO/256;TL0=tone_delay_tablekey_NO%256; while(1) P2=0xF0;i

23、f(P2!=0xF0)/当有按键按下时, 需要设置定时器的开启 key_NO=keys_scan();/调用键盘扫描if(key_NO15)/按下那个键, 发出对应的音调delay_1ms(2000);if(key_NO15) Sound_Temp_TH0=tone_delay_tablekey_NO/256;Sound_Temp_TL0=tone_delay_tablekey_NO%256; TR0=1;/开启定时器 0, 音符中断 else/当没有键按下时, 无声音发出; TR0=0;/关闭定时器 beep=1; 山东交通学院课程设计说明书14delay_1ms(2000);/稍做延时, 可以避免误判断 /音符发生的中断 void play_tone() interrupt 1 TH0=Sound_Temp_TH0; TL0=Sound_Temp_TL0;beep=!beep;

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 实用文档 > 工作总结

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报