电子琴课程设计-- 基于单片机的电子琴设计.doc_第1页
电子琴课程设计-- 基于单片机的电子琴设计.doc_第2页
电子琴课程设计-- 基于单片机的电子琴设计.doc_第3页
电子琴课程设计-- 基于单片机的电子琴设计.doc_第4页
电子琴课程设计-- 基于单片机的电子琴设计.doc_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

物理与信息工程系课 程 设 计 报 告 课程名称 专 业 综 合 课题名称 基于单片机的电子琴设计 专 业 电子信息科学与技术 年 班 级 09级电科3班 学 号 09417348 姓 名 周志力 指导教师 谢莉 2012年6月1 日 目 录封面1目录2 第一章 设计要求及工作原理 31.1 设计指标31.2 设计要求31.3 设计说明31.4 设计原理简介3第二章 硬件电路设计52.1 单片机最小系统52.2 键盘模块72.3数码管模块72.4 发声模块8第三章 软件设计93.1 软件功能模块93.2 软件程序流程图103.3 软件源程序11第四章 实验焊接及调试134.1 元器件清单134.2电路焊接144.2软件烧写与调试144.2系统联调 14附录1:电子琴成品图14心得体会15第一章 设计要求及工作原理1.1)、设计指标:(1)设计一个(44)的键盘,并将16个键设计成16个音;(2)按下按键显示相应的键值(2)可弹奏想要表达的音乐;(3)该电子琴包含1首示例音乐,接通电源按下按键可播放示例音乐。1.2)、设计要求:(1)按仿真图进行电路设计;(2)制作符合设计指标的硬件电路。1.3)、设计说明: 电子琴是高科技在音乐领域的一个代表,它是古典文化与现代文明的一个浓缩体。它不但可以帮助我们的音乐教师进行传统音乐文化的教育教学工作,而且由于它又具备现代音乐,特别是电子音乐、电脑音乐的基本结构、特征,因而使我们的教师在进行现代音乐、电子音乐、电脑音乐的教学时,更直接、更简便。单片微型计算机是大规模集成电路技术发展的产物,属第四代电子计算机,它具有高性能、高速度、体积小、价格低廉、稳定可靠、应用广泛的特点。它的应用必定导致传统的控制技术从根本上发生变革。因此,单片机的开发应用已成为高科技和工程领域的一项重大课题。 电子琴是现代电子科技与音乐结合的产物,是一种新型的键盘乐器。它在现代音乐扮演着重要的角色,单片机具有强大的控制功能和灵活的编程实现特性,它已经溶入现代人们的生活中,成为不可替代的一部分。本文的主要内容是用AT89C51单片机为核心控制元件,设计一个电子琴。以单片机作为主控核心,与键盘、扬声器等模块组成核心主控制模块,在主控模块上设有15个弹奏按键、1个播放键和扬声器。1.4)、设计简单原理介绍 一首音乐是许多不同的音阶组成的,而每个音阶对应着不同的频率,这样我们就可以利用不同的频率的组合,即可构成我们所想要的音乐了,当然对于单片机来产生不同的频率非常方便,我们可以利用单片机的定时/计数器T0来产生这样方波频率信号,因此,我们只要把一首歌曲的音阶对应频率关系弄正确即可。若要产生音频脉冲,只要算出某一音频的周期(1/频率),再将此周期除以2,即为半周期的时间。利用定时器计时半周期时间,每当计时终止后就将P1.0反相,然后重复计时再反相。就可在P1.0引脚上得到此频率的脉冲。 利用AT89S51的内部定时器使其工作计数器模式(MODE1)下,改变计数值TH0及TL0以产生不同频率的方法产生不同音阶,例如,频率为523Hz,其周期T1/5231912s,因此只要令计数器计时956s/1s956,每计数956次时将I/O反相,就可得到中音DO(523Hz)。 计数脉冲值与频率的关系式(如式3-1所示)是: Nfi2fr 3-1式中,N是计数值;fi是机器频率(晶体振荡器为12MHz时,其频率为1MHz);fr是想要产生的频率。其计数初值T的求法如下: T65536N65536fi2fr 例如:设K65536,fi1MHz,DO(523Hz)的计数值。 T65536N65536fi2fr6553610000002fr65536500000/f, DO的T65536500000/52364580 单片机12MHZ晶振,高中低音符与计数T0相关的计数值如表4-2所示 表3-2 音符频率表低音音符频率HZ中音音符频率HZ高音音符频率HZ1261.631523.2511045.52293.672587.3321174.663329.633659.4631318.514349.234698.4641396.925391.995738.9951567.986440.006880.0061760.007493.887987.7671975.52 我们要为这个音符建立一个表格,单片机通过查表的方式来获得相应的数据 低音019之间,中音在2039之间,高音在4059之间在这个程序中,弹奏音乐的程序是和播放音乐都用定时/计数器T0来完成的第二章 硬件电路设计2)、硬件总体方案及说明: 51单片机P2口通过连接4*4的矩阵键盘,各键盘的音调在程序中做解释,P1口接通过74LS247译码器连接两个数码管,按下相应的按键产生相应键值,P3.0连接一个蜂鸣器用于产生示例音乐,P3.7接一个扬声器,用于各按键的音调发声,通过执行相应的功能程序使电子琴发出不同音色的声音。2.1)、芯片介绍:在本次电子琴设计中,我们组成员单片机芯片选用了STC89C52芯片,因为发下来的AT89S52我们无法下载程序所以改用了自己买的芯片,但是芯片无太大差异,89C51系列的兼容性比较好。下图为单片机AT89S52的引脚说明及其最小系统。复位电路: 复位电路我们本来在方案选择的时候有两种选择的,上电复位和按扭复位,上电复位是利用电容充电来实现的,而按扭复位是电源对外节电容的充电使RST为高电平,复位松开后,电容通过下拉电阻放电,使RST恢复低电平。为了制作软件的方便我们还是选择用按扭复位,因为它比较直观。时钟电路: 用两个30pf的陶瓷电容与12M的晶振并联产生。其他引脚: 31、40引脚接电源,20引脚接地。P3口特殊功能引脚说明:P3口引脚特殊功能P3.0RXD(串行输入口)P3.1TXD(串行输出口)P3.2(外部中断0)P3.3(外部中断1)P3.4T0(定时器0外部输入)P3.5T1(定时器1外部输入)P3.6WR(外部数据存储器写选通)P3.7RD(外部数据存储器读先通)2.2)、矩阵模块:65433217 7654B.3.2.1(1)利用P2口为按键接入口,形成44组成16个按键矩阵,设计成15个音,下图所示:321 0765 4 11109 815141312所对应的音调为:所对应的键码为: 说明:按下按键显示键值,并发出相应的音调。2.3)、数码管模块一位静态数码管管脚及封装说明74LS247引脚及其封装说明 硬件连接说明:通过按键显示相应的键值,通过74LS247产生相应的二进制代码一次传送给数码管的各个引脚,使其显示相应的键值数,如图protues仿真所示,2.4)、发声模块 通过一个P3.7引脚,连接一个2N3906然后与扬声器使其放大发声, P3.0也通过一个三极管接到蜂鸣器用于示例音乐播放输出。连线说明:具体参照protues仿真电路图(4)protues仿真设计图如下:第三章 软件设计3.1)、软件功能模块(3.1.1)键盘扫描程序: 检测是否有键按下,有键按下则记录按下键的键值,并跳转至功能转移程序;无键按下,则返回键盘扫描程序继续检测(3.1.2)功能转移程序: 对检测到得按键值进行判断,是琴键则跳转至琴键处理程序,是功能键则跳转至相应的功能程序,我们设计的功能程序有两种,即音色调节功能和自动播放乐曲功能(3.1.3)琴键处理程序: 根据检测到得键值,查询音律表,给计时器赋值,使发出相应频率的声音(3.1.4)数码管显示程序 根据得到的键值,通过74LS247转换得到相应的八位二级制并传送给数码管显示相应的键值。(3.1.5)自动播放歌曲程序: 检测到按键按下的是自动播放歌曲功能键后执行该程序,电子琴会自动播放事先已经存放好的歌曲,歌曲播放完毕之后自动返回至键盘扫描程序,继续等待是否有键按下3.2)、程序简易流程图开始T0初始化并开中断允许T0中断键盘扫描程序有键按下否 否延时去抖动识别按键功能 是是否弹奏键播放键 否 是跳入播放子程序根据按键功能装入相应音符值到T0启动T0启动T0按键释放成功否播放是否结束停止T0工作停止T1工作返回键盘扫描返回键盘扫描3.3)、设计源程序#include #include #define uint unsigned int #define uchar unsigned charsbit SPK = P37; /P3.7外接扬声器sbit BEEP=P30; /生日快乐歌的音符频率表,不同频率由不同的延时来决定 uchar code SONG_TONE=212,212,190,212,159,169,212,212,190,212,142,159, 212,212,106,126,159,169,190,119,119,126,159,142,159,0; /生日快乐歌节拍表,节拍决定每个音符的演奏长短 uchar code SONG_LONG=9,3,12,12,12,24,9,3,12,12,12,24, 9,3,12,12,12,12,12,9,3,12,12,12,24,0; /延时 void DelayMS(uint x) uchar t; while(x-) for(t=0;t120;t+); /播放函数 void PlayMusic() unsigned int i=0,j,k; while(SONG_LONGi!=0|SONG_TONEi!=0) /播放各个音符,SONG_LONG 为拍子长度 for(j=0;jSONG_LONGi*20;j+) BEEP=BEEP; /SONG_TONE 延时表决定了每个音符的频率 for(k=0;kSONG_TONEi/3;k+); DelayMS(50); i+; uint FreqTemp;unsigned int code Freqtab = /定时半周期的初始值 64021,64103,64260,64400, /低音3 4 5 6 64524,64580,64684,64777, /低音7,中音1 2 3 64820,64898,64968,65030, /中音4 5 6 7 65058,65110,65157,65178; /高音1 2 3 4 uchar Keyscan(void) uchar i, j, temp, Buffer4 = 0xfe, 0xfd, 0xfb, 0xf7; for(j = 0; j 4; j+) /循环四次,扫描四行 P2 = Bufferj; /在低四位分别输出一个低电平 _nop_(); temp = 0x10; /计划先读出P1.7位 for(i = 0; i 4; i+) /循环四次,检查四列 if(!(P2 & temp) /从高四位,截取1位 return (i + j * 4); /返回取得的按键值 temp = 1; /换右边一位 return 16; /没有键按下就返回16 void Display(uchar k) P1=(k/10)4)+(k%10);void Main(void) uchar Key_Value = 16, Key_Temp1, Key_Temp2;/读出的键值 TMOD = 0x01; /T0定时方式1 ET0 = 1; /允许T0中断 EX0 = 1; /允许X0中断 EA = 1; while(1) TR0 = 0; /暂不发音 Key_Temp1 = Keyscan(); /读入按键 if(Key_Temp1 != 16) /有键按下 Display(Key_Value); /显示键值、延时消抖 Key_Temp2 = Keyscan(); /再读一次 if (Key_Temp1 = Key_Temp2) /两次相等 Key_Value = Key_Temp1; /就确认下来 FreqTemp = FreqtabKey_Value; /根据键值,取出定时半周期的初始值 Display(Key_Value); /显示 /启动定时器,发音 if( FreqTemp = Freqtab15) BEEP=0; SPK=1; PlayMusic(); /播放生日快乐 DelayMS(500); /播放完后暂停一段时间 TR0 = 1; while (Keyscan() 8; SPK =SPK; /发音 /=第四章 实验焊接及调试4.1)、元器件清单主要仪器设备:计算机、万用表、烙铁等设备、5V电源适配器主要元器件: 独立按键 17个单片机AT89S52一片12MHz晶振 1个2N3906三极管 2个不同阻值电阻 数个电源开关 1个喇叭 1个蜂鸣器 1个30pf电容 2个22u电解电容 1个万能板 1块共阳数码管 2个 74ls247译码器 2个 导线 若干4.2)、电路焊接 根据protues仿真图,和万能板的排版,把元器件一一的通过电烙铁焊接,并尽量简洁美观。4.3)、软件调试 通过要实现的功能,编写相应的程序,通过自顶向下的模块化程序设计,编写出各模块的程序,用keil软件进行调试与编译,并到protues仿真验证,最终得出成功的程序。4.4)、系统联调 通过开发板,我们用自己的芯片烧写程序,到单片机中,并把单片机放入我们所焊接的万能板上面,接通电源,通过万用表,能工具不断的调试,终于能够稳定的工作了。附录一:电子琴成品图五、心得体会:这次设计从软件方面来讲不是很难,protues仿真也不是很难,所以比较容易就做好了准备,在焊

温馨提示

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

评论

0/150

提交评论