可演奏的电子琴.doc_第1页
可演奏的电子琴.doc_第2页
可演奏的电子琴.doc_第3页
可演奏的电子琴.doc_第4页
可演奏的电子琴.doc_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

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

文档简介

可演奏的电子琴单片机课程设计项目设计: 可演奏的电子琴专业班级: 计算机应用4班学生姓名: *学号: *指导教师: 万振宇2013年 6 月 25 日摘 要电子琴是现代电子科技与音乐结合的产物,是一种新型的键盘乐器。它在现代音乐扮演着重要的角色,单片机具有强大的控制功能和灵活的编程实现特性,它已经溶入现代人们的生活中,成为不可替代的一部分。本文的主要内容是用AT89c51单片机为核心控制元件,设计一个电子琴。以单片机作为主控核心,与键盘、扬声器等模块组成核心主控制模块,在主控模块上设有16个按键和扬声器。本系统运行稳定,其优点是硬件电路简单,软件功能完善,控制系统可靠,性价比较高等,具有一定的实用和参考价值。关键词:AT89C51,矩阵键盘,LED显示管,扬声器。目录摘 要2第1章 概论4第2章 单片机原理4第3章 题目及代码4第4章 芯片资料8 4.1 AT89C51简介84.1.2管脚功能9第5章 其他硬件105.1矩阵式键盘的识别和显示105.1.1 矩阵式键盘的按键识别方法105.1.2键盘接口必须具有的4个基本功能115.2 LED数码管125.3 扬声器12 第6章 软件分析136.1整体程序处理流程图136.2I/O并行口直接驱动LED显示146.3 音乐播放设计156.4 放歌子程序流程图19第7章 调试19 7.1 Proteus简介197.2 Keil简介207.3 利用Keil于Proteus进行调试21第8章 总结23第9章 致谢24第1章 概论单片机是一种集成在电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU随机储存器 RAM、只读储存器ROM、多种I/O口和中断系统、定时器/计时器等功能(可能还包括显示驱动电路、脉宽调整电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的计算机系统。第2章 单片机原理单片机自动完成赋予它的任务的过程,也就是单片机执行程序的过程,即一条条执行的指令的过程。单片机所能执行的全部指令,就是该单片机的指令系统。为使单片机能自动完成某一特定任务,必须把要解决的问题编成一系列指令,这一系列指令的集合就成为程序,程序需要预先存放在具有存储功能的部件存储器中。程序通常是顺序执行的,所以程序中的指令也是一条条顺序存放的,单片机在执行程序时要能把这些指令一条条取出并加以执行,必须有一个部件能追踪指令所在的地址,这一部件就是程序计数器PC(包含在CPU中),在开始执行程序时,给PC赋以程序中第一条指令所在的地址,然后取得每一条要执行的命令,PC在中的内容就会自动增加,增加量由本条指令长度决定,可能是1、2或3,以指向下一条指令的起始地址,保证指令顺序执行。第3章 题目及代码可演奏的电子琴本例运行过程中,按下键盘矩阵中的按键会使数码管显示当前按键,扬声器播放对应的音符。本例电路图如下程序设计调试与实训本例综合应用了键盘矩阵识别和不同频率音符播放两项设计,读者在此前相关章节中已经掌握了这些功能的C语言程序设计技术,阅读调试本例后,读者可尝试添加代码,使系统不仅可以单独通过键盘演奏不同音符,在演奏的同时还可以播放某种节奏的背景音乐。要注意Keys_Scan函数是最后给全局变量KeyNo赋值的,此前类似代码中没有使用变量k,KeyNo直接代替k使用,这样改写是因为某键按下后,定时器中断启用,音符频率随即输出,在输出过程中,键盘扫描函数在主程序控制下继续调用,这时频率输出与键盘扫描是“并行”的,如果直接使用KeyNo,则定时器中断函数内所是用的KeyNo可能是扫描中途的KeyNo值而不是扫描结束后最终的KeyNo值,从而导致输出错误。另外,相关案例给出过几种不同的代码设计的键盘矩阵扫描程序,读者可尝试改写本例的代码,还可以尝试将键盘矩阵改为6X6键盘矩阵,以实现更广音域的演奏。源程序代码/-/名称:可演奏的电子琴/-/说明本例在键盘矩阵上模拟演奏电子琴,数码管显示按键号。/-#include #define uchar unsigned char#define uint unsigned int/共阳数码管编码Uchar code DSY_Table=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80, /0,1,2,3,4,5,6,7,80x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,0xBF; /9,A,B,C,D,E,F,-/各音符对应的延时Uint code Tone_Delay_Table= 64021,64103,64260,64400,64524,64580,64684,64777,64820,64898,64968,65030,65058,65110,65157,65178 ; Sbit BEEP=p30; /蜂鸣器Uchar KeyNo; /按键序号/-/延时/-Void DelayMS(uchar x)uchar I;while(x-) for(i=;i4)0X0F;/对03行分别附加起始值0,4,8,12Switch (Tmp)case 1:k+=0;break;case 2:k+=4;break;case 4:k+=8;break;case 8:k+=12;break;default:return;KeyNo=k;/-/定时器0中断程序,不同频率的声音由该中断产生/-Void Play_Tone() interrupt 1TH0=Tone_Delay_TableKeyNo/256;TL0=Tone_Delay_TablekeyNo%256;BEEP=BEEP;/-/主程序/-Void main()P0=0XBF; /初始显示“”TMOD=0x01;IE=0x82;While(1)P1=0XF0; /发送扫描码If (P1 !=0XF0) /如果有键按下Keys_Scan(); /扫描键盘矩阵P0=DSY_TableKeyNo; /显示按键TR0=1; /启动定时器,根据KeyNo发音ElseTR0=0; /停止播放DelayMS(2);第4章 芯片资料4.1 AT89C51简介AT89C51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROMFlash Programmable and Erasable Read Only Memory)的低电压,高性能CMOS 8位微处理器,俗称单片机。AT89C2051是一种带2K字节闪烁可编程可擦除只读存储器的单片机。单片机的可擦除只读存储器可以反复擦除100次。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。AT89C单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。外形及引脚排列如下图所示。4.1.2 管脚功能VCC:供电电压。GND:接地。P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收。P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。P3口也可作为AT89C51的一些特殊功能口,如下表所示:口管脚 备选功能P3.0 RXD(串行输入口)P3.1 TXD(串行输出口)P3.2 /INT0(外部中断0)P3.3 /INT1(外部中断1)P3.4 T0(记时器0外部输入)P3.5 T1(记时器1外部输入)P3.6 /WR(外部数据存储器写选通)P3.7 /RD(外部数据存储器读选通)P3口同时为闪烁编程和编程校验接收一些控制信号。RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。/PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。XTAL2:来自反向振荡器的输出。第5章 其他硬件5.1 矩阵式键盘的识别和显示5.1.1.矩阵式键盘的按键识别方法确定矩阵式键盘上何键被按下介绍一种“行扫描法”。行扫描法 行扫描法又称为逐行(或列)扫描查询法,是一种最常用的按键识别方法,如上图所示键盘,介绍过程如下。1、判断键盘中有无键按下 将全部行线Y0-Y3置低电平,然后检测列线的状态。只要有一列的电平为低,则表示键盘中有键被按下,而且闭合的键位于低电平线与4根行线相交叉的4个按键之中。若所有列线均为高电平,则键盘中无键按下。2、判断闭合键所在的位置 在确认有键按下后,即可进入确定具体闭合键的过程。其方法是:依次将行线置为低电平,即在置某根行线为低电平时,其它线为高电平。在确定某根行线位置为低电平后,再逐行检测各列线的电平状态。若某列为低,则该列线与置为低电平的行线交叉处的按键就是闭合的按键。5.1.2. 键盘接口必须具有的4个基本功能(1)去抖动:每个按键在按下或松开时,都会产生短时间的抖动。抖动的持续时间与键的质量相关,一般为520mm。所谓抖动是指在识别被按键是必须避开抖动状态,只有处在稳定接通或稳定断开状态才能保证识别正确无误。去抖问题可通过软件延时或硬件电路解决。(2)防串键:防串键是为了解决多个键同时按下或者前一按键没有释放又有新的按键按下时产生的问题。常用的方法有双键锁定和N键轮回两种方法。双键锁定,是当有两个或两个以上的按键按下时,只把最后释放的键当作有效键并产生相应的键码。N键轮回,是当检测到有多个键被按下时,能根据发现它们的顺序依次产生相应键的键码。(3)被按键识别:如何识别被按键是接口解决的主要问题,一般可通过软硬结合的方法完成。常用的方法有行扫描法和线反转法两种。行扫描法的基本思想是,由程序对键盘逐行扫描,通过检测到的列输出状态来确定闭合键,为此,需要设置入口、输出口一个,该方法在微机系统中被广泛使用。线反转法的基本思想是通过行列颠倒两次扫描来识别闭合键,为此需要提供两个可编程的双向输入/输出端口。(4)键码产生:为了从键的行列坐标编码得到反映键功能的键码,一般在内存区中建立一个键盘编码表,通过查表获得被按键的键码。用AT89C51的并行口P0接44矩阵键盘,以P0.0P0.3作输入线,以P0.4P0.7作输出线;在数码管上显示每个按键的“0F”序号。5.2 LED数码管图3-3 LED数码管【数码管的分类】 数码管按段数分为七段数码管和八段数码管,八段数码管比七段数码管多一个发光二极管单元(多一个小数点显示);按能显示多少个“8”可分为1位、2位、4位等等数码管;按发光二极管单元连接方式分为共阳极数码管和共阴极数码管。图3-3为2位数码管。【数码管的驱动方式】数码管要正常显示,就要用驱动电路来驱动数码管的各个段码,从而显示出我们要的数字,因此根据数码管的驱动方式的不同,可以分为静态式和动态式两类。【习题中LED模块】利用AT89S51单片机的P0端口的P0.0P0.7连接到一个七段数码管的ah的笔段上,数码管的公共端接电源。矩阵扫描显示当前按键模块如下:5.3 扬声器矩阵扫描扬声器发出对应音符模块如下:第6章 软件分析6.1 整体程序处理流程图 图4-1 整体程序处理流程图 在电子琴开始工作时,系统默认电子琴处于弹奏状态,歌曲选择功能键的目的是赋予矩阵键盘第二功能,即对系统内置的歌曲进行选择,在放歌时能且只能通过弹奏/停止键来结束放歌,选歌时必须先按下歌曲选择功能键,在通过矩阵键盘来选择和切换曲目。6.2 I/O并行口直接驱动LED显示把“AT89C51”区域中的P2.0/A8P2.7/A15端口用8芯排线连接到一位数码管的ah端口上;要求:P2.0/A8与a相连,P2.1/A9与b相连,P2.2/A10与c相连,P2.7/A15与h相连。 表1 字形码表及对应的音符10x3f低 5 SO90x7f中 6 LA20x06低 6 LAA0x6f中 7 SI30x5b低 7 SIb0x77高 1 DO40x4f中 1 DOC0x7c高 2 RE50x66中 2 RED0x39高 3 M60x6d中 3 ME0x5e高 4 FA70x7d中 4 FAF0x79高 5 SO80x07中 5 SO00x71高 6 LA在本设计中,数码管的显示通过 P2=DSY_CODEk 这句语言来查表并输出,实现音符的显示。 6.3 音乐播放设计一首音乐是许多不同的音阶组成的,而每个音阶对应着不同的频率,这样我们就可以利用不同的频率的组合,即可构成我们所想要的音乐了,当然对于单片机来产生不同的频率非常方便,我们可以利用单片机的定时/计数器T0来产生这样方波频率信号,因此,我们只要把一首歌曲的音阶对应频率关系弄正确即可。若要产生音频脉冲,只要算出某一音频的周期(1/频率),再将此周期除以2,即为半周期的时间。利用定时器计时半周期时间,每当计时终止后就将P3.7反相,然后重复计时再反相。就可在P3.7引脚上得到此频率的脉冲。利用AT89C51的内部定时器使其工作计数器模式(MODE1)下,改变计数值TH0及TL0以产生不同频率的方法产生不同音阶,例如,频率为523Hz,其周期T1/5231912s,因此只要令计数器计时956s/1s956,每计数956次时将I/O反相,就可得到中音DO(523Hz)。 计数脉冲值与频率的关系式是: Nfi2fr 式中,N是计数值;fi是机器频率(晶体振荡器为12MHz时,其频率为1MHz);fr是想要产生的频率。其计数初值T的求法如下: T65536N65536fi2fr例如:设K65536,fi1MHz,求低音DO(261Hz)、中音DO(523Hz)、高音DO(1046Hz)的计数值。 T65536N65536fi2fr6553610000002fr 65536500000/fr低音DO的T65536500000/26263628中音DO的T65536500000/52364580高音DO的T65536500000/104665058 单片机12MHZ晶振,高中低音符与计数T0相关的计数值如表4-1所示 表4-1 音符频率表音符频率(HZ)简谱码(T值)音符频率(HZ)简谱码(T值)休止00中 4 FA69864820低1 DO26263628中 5 SO78464898低2 RE29463835中 6 LA88064968低 3 M33064021中 7 SI98865030低 4 FA34964103高 1 DO104665058低 5 SO39264260高 2 RE117565110低 6 LA44064400高 3 M131865157低 7 SI49464524高 4 FA139765178中 1 DO52364580高 5 SO156865217中 2 RE58764684高 6 LA176065252中 3 M65964777高 7 SI196765283我们要为这个音符建立一个表格,单片机通过查表的方式来获得相应的数据 uint code tab= 0,63628,63835,64021,64103,64260,64400,64524, 64580,64684,64777,64820,64898,64968,65030, 65058,65110,65157,65178,65217,65252,65283 音乐的音拍,一个节拍为单位(C调)(如表4-2所示) 表4-2 曲调值表曲调值DELAY曲调值DELAY调4/4125ms调4/462ms调3/4187ms调3/494ms调2/4250ms调2/4125ms 对于不同的曲调我们也可以用单片机的另外一个定时/计数器来完成。在这个程序中用到了两个定时/计数器来完成的。其中T0用来产生音符频率,T1用来产生音拍。 图4-3 音频播放流程图6.4 放歌子程序流程图 图4-2 放歌子程序流程图该程序实现的是单首曲目循环播放,无法在程序内部实现歌曲的切换。只能通过外部功能键来实现曲目及功能的切换,是该电子琴设计的一个缺憾。相信如果有更多的时间来进行调试和设计,这个设计会更加好。第7章 调试7.1 Proteus 简介Proteus(海神)的ISIS是一款Labcenter出品的电路分析实物仿真系统,可仿真各种电路和IC,并支持单片机,元件库齐全,使用方便,是不可多得的专业的单片机软件仿真系统。该软件的特点: 全部满足我们提出的单片机软件仿真系统的标准,并在同类产品中具有明显的优势。具有模拟电路仿真、数字电路仿真、单片机及其外围电路组成的系统的仿真、RS-232动态仿真、C调试器、SPI调试器、键盘和LCD系统仿真的功能;有各种虚拟仪器,如示波器、逻辑分析仪、信号发生器等。 目前支持的单片机类型有:68000系列、8051系列、AVR系列、PIC12系列、PIC16系列、PIC18系列、Z80系列、HC11系列以及各种外围芯片。 支持大量的存储器和外围芯片。总之该软件是一款集单片机和SPICE分析于一身的仿真软件,功能极其强大 ,可仿真51、AVR、PIC。7.2 keil 简介单片机开发中除必要的硬件外,同样离不开软件,我们写的汇编语言源程序要变为CPU可以执行的机器码有两种方法,一种是手工汇编,另一种是机器汇编,目前已极少使用手工汇编的方法了。机器汇编是通过汇编软件将源程序变为机器码,用于MCS-51单片机的汇编软件有早期的A51,随着单片机开发技术的不断发展,从普遍使用汇编语言到逐渐使用高级语言开发,单片机的开发软件也在不断发展,Keil软件是目前最流行开发MCS-51系列单片机的软件,这从近年来各仿真机厂商纷纷宣布全面支持Keil即可看出。Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(uVision)将这些部份组合在一起。运行Keil软件需要Pentium或以上的CPU,16MB或更多RAM、20M以上空闲的硬盘空间、WIN98、NT、

温馨提示

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

评论

0/150

提交评论