




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 信息工程学院 PAGE 单片机原理及应用结课大作业电子琴模拟(mn) 说明书学生(xu sheng)姓名 薛仁杰 学 号 5011212510 所属(sush)学院 信息工程学院 专 业 计算机科学与技术 班 级 17-6班 信息工程学院目 录 HYPERLINK l _Toc265582398 摘 要 页摘 要电子琴是现代电子科技与音乐结合的产物,是一种新型的键盘乐器。它在现代音乐扮演着重要的角色,单片机具有强大的控制功能和灵活的编程实现特性(txng),它已经溶入现代人们的生活中,成为不可替代的一部分。本文的主要内容是用AT89S51单片机为核心控制元件,设计一个电子琴。以单片机作为主控
2、核心,与键盘、扬声器等模块组成核心主控制模块,在主控模块上设有16个按键和扬声器。本系统运行稳定,其优点是硬件电路简单,软件功能完善,控制系统可靠,性价比较高等,具有一定的实用和参考价值。关键词:AT80c51,单片机音色(yns),节拍器,自动放音一丶项目概述(i sh)和要求1.1 项目开发背景随着电子科技的飞速发展,电子技术正在逐渐改善着人们的学习、生活、工作,因此开发本系统希望能够给人们多带来一点生活上的乐趣。基于当前市场上的玩具市场需求量大,其中电子琴就是一个很好的应用方面。单片机技术使我们可以利用软硬件实现电子琴的功能,从而实现电子琴的微型化,可以用作玩具琴、音乐转盘以及音乐童车等
3、等。并且可以进行一定的功能扩展。鉴于传统电子琴可以用键盘上的“1”到“A”键演奏从低So到高DO等11个音,从而可以用来弹奏喜欢的乐曲。该设计将十一个琴键改成16个,使电子琴的功能更加完美。不但可以实现对乐曲的演奏,同时还具有存储音乐、播放歌曲以及显示按键的功能。使该设计功能更加完善。1.2 项目目的利用AT80C51单片机自带资源,设计一款能实现弹奏和带存储功能的电子琴。(1)能够对电子电路、电子元器件、印制电路板等方面的知识有进一步的认识,独立对其进行测试与检查。(2)熟悉8051单片机的内部结构和功能,合理使用其内部寄存器,能够完成相关软件编程设计工作。(3)为实现预期功能,能够对系统进
4、行快速的调试,并能够对出现的功能故障进行分析,及时修改相关软硬件。(4)对软件编程、排错调试、焊接技术、相关仪器设备的使用技能等方面得到较全面(qunmin)的锻炼和提高。1.3设计(shj)要求设计出15个音符,随意(su y)弹奏,按“0”键为音乐休止符,不发声,用它时间的长短表示休止时间的长短。用功能键转换成歌曲演奏,可播放预存的音乐。可存储现场弹奏的音乐。扩充功能:采用LCD显示信息,开机时有欢迎提示符,播放时显示歌曲序号(或名称)。显示乐曲播放时间或剩余时间。 二丶 系统硬件设计2.1电子琴原理 在介绍总体方案之前,先简单介绍一下电子琴的发生原理以及如何改变音色的基本原理:声音的频谱
5、范围约在几十到几千赫兹, 若能利用程序来控制单片机某个口线不断输出“高”“低”电平, 则在该口线上就能产生一定频率的方波, 将该方波接上喇叭就能发出一定频率的声音, 若再利用程序控制“高”“低”电平的持续时间, 就能改变输出波形的频率从而改变音调。乐曲中, 每一音符对应着确定的频率, 下表给出各音符频率。如果单片机某个口线输出“高”“低”电平的频率和某个音符的频率一样, 那么将此口线接上喇叭就可以发出此音符的声音1。本系统就是根据此原理设计, 对于单片机来说要产生一定频率的方波大致是先将某口线输出高电平然后延时一段时间再输出低电平, 如此循环的输出就会产生一定频率的方波, 通过改变延时的时间就
6、可以改变输出方波的频率。单片机内部有两个位的定时计数器T1和T0, 单片机的定时计数器实际上是个计数装置它既可以对单片机的内部晶振驱动时钟计数也可以对外部输入的脉冲计数, 对内部晶振计数时称为定时器, 对外部时钟计数时称为计数器。当对单片机的内部晶振驱动时钟计数时,每个机器周期定时计数器的计数值就加, 当计数值达到计数最大值时计数完毕并通知单片机的尸比对外部输入的时钟信号计数时, 外部时钟的每个时钟上升沿定时计数器的计数值就加, 当计数值达到计数最大值时计数完毕并通知单片机。因此(ync), 如果知道单片机的机器周期(zhuq)或者外部输入时钟信号的周期单片机就可以根据定时器的计数值计算出定时
7、的时间。用此方法定时十分准确, 想得到多大的延时时间就可以(ky)给定时器赋一定的计数初值, 定时器从预先设置的计数初值开始不断增当增加到计数最大值时计数完毕, 调整计数初值的大小就可以调整定时器定时的时间, 从而达到准确的延时。2.2系统结构本系统主要由四部分组成:(1)键盘:控制系统和演奏音乐(2)扬声器:发声(3)LED:显示欢迎界面,显示操作,显示演奏音乐歌词(后期开发计划)(4)AT80C51:系统控制中心系统结构图如图2-1所示。振荡器分频器电源键 盘放大器扬声器图2-1 系统结构图2.3硬件部分总体方案 51单片机P0口通过8155扩展,连接4*8的矩阵键盘,作为琴键键盘和相应的
8、功能控制键;并P2口一起,与EPROM连接;P0口则接通不通音色的滤波电路,通过程序控制P0口,选通不通的琴声音色滤波电路,使电子琴发出不同音色的声音。硬件(yn jin)电路包括中心控制模块、播放模块、按键控制模块三大模块。其电路图如图2-2所示:图2-2 电子琴电路(dinl)图2.4元件(yunjin)清单1) AT80C51 AT80C51是一种带4K字节闪存可编程可擦除只读存储器(FPEROMFlash Programmable and Erasable Read Only Memory)的低电压,高性能CMOS 8位微处理器,俗称单片机。AT80C51是一种带2K字节闪存可编程可擦
9、除只读存储器的单片机。单片机的可擦除只读存储器可以反复擦除100次。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT80C51是一种高效微控制器,AT80C51是它的一种精简版本2。AT89C单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。本次(bn c)设计中中心控制(kngzh)模块是采用(ciyng)AT80C51单片机来控制整个系统。其中P1口作为输入口,连接蜂鸣器驱动电路,而P2口连接按键控制电路, 从而实现播放音乐的功能。2) LCD1602LCD106
10、2 在本次中主要用于显示,有如下特点:显示质量高:由于液晶显示器每一个点在收到信号后就一直保持那种色彩和亮度,恒定发光,而不像阴极射线管显示器(CRT)那样需要不断刷新新亮点。因此,液晶显示器画质高且不会闪烁。数字式接口:液晶显示器都是数字式的,和单片机系统的接口更加简单可靠,操作更加方便。体积小、重量轻:液晶显示器通过显示屏上的电极控制液晶分子状态来达到显示的目的,在重量上比相同显示面积的传统显示器要轻得多。功耗低:相对而言,液晶显示器的功耗主要消耗在其内部的电极和驱动IC上,因而耗电量比其它显示器要少得多3。其硬件原理图如图2-3所示。 图2-3 LCD1062 硬件原理图3)4X4行列式
11、键盘识别及显示键盘接口必须具有去抖动、防串键、按键识别和键码产生(chnshng)4个基本功能。(1)去抖动(dudng):每个按键在按下或松开时,都会产生短时间的抖动(dudng)。抖动的持续时间与键的质量相关,一般为520mm。所谓抖动是指在识别被按键是必须避开抖动状态,只有处在稳定接通或稳定断开状态才能保证识别正确无误。去抖问题可通过软件延时或硬件电路解决。(2)防串键:防串键是为了解决多个键同时按下或者前一按键没有释放又有新的按键按下时产生的问题。常用的方法有双键锁定和N键轮回两种方法。双键锁定,是当有两个或两个以上的按键按下时,只把最后释放的键当作有效键并产生相应的键码。N键轮回,是
12、当检测到有多个键被按下时,能根据发现它们的顺序依次产生相应键的键码。(3)被按键识别:如何识别被按键是接口解决的主要问题,一般可通过软硬结合的方法完成。常用的方法有行扫描法和线反转法两种。行扫描法的基本思想是,由程序对键盘逐行扫描,通过检测到的列输出状态来确定闭合键,为此,需要设置入口、输出口一个,该方法在微机系统中被广泛使用。线反转法的基本思想是通过行列颠倒两次扫描来识别闭合键,为此需要提供两个可编程的双向输入/输出端口。 (4)键码产生:为了从键的行列坐标编码得到反映键功能的键码,一般在内存区中建立一个键盘编码表,通过查表获得被按键的键码4。用 HYPERLINK / AT80c51的并行
13、口P1接44矩阵键盘,以P1.0P1.3作输入线,以P1.4P1.7作输出线;在数码管上显示每个按键的“0F”序号。4)speaker蜂鸣器5)三极管三丶软件设计本软件设计关键是要实现一种由单片机控制的简单音乐发生器,它由16个音节(ynji)组成的的键盘,用户可以根据乐谱在键盘上进行演奏,音乐发生器会根据用户的弹奏,通过扬声器将音乐播放出来。3.1单片机实现(shxin)音乐一首音乐是由许多不同的音符组成的,而每个音符对应着不同的频率,这样就可以利用不同频率的组合,加以(jiy)与拍数对应的延时,构成音乐。(1)节拍设计除了音符以外,节拍也是音乐的关键组成部分。节拍实际上就是音持续时间的长短
14、,在单片机系统中可以用延时来实现,如果1/4拍的延时是0.4秒,则1拍的延时是1.6秒,只要知道1/4拍的延时时间,其余的节拍延时时间就是它的陪数。如果单片机要自己播放音乐,那么必须在程序设计中考虑到节拍的设置,由于本例实现的音乐发生器是由用户通过键盘输入弹奏乐曲的,所以节拍由用户掌握,不由程序控制。对于不同的曲调我们也可以用单片机的另外一个定时/计数器来完成。音乐的音拍,一个节拍为单位(C调)具体如表3-1:表3-1 音乐节拍表曲调值 DELAY曲调值DELAY调4/4125ms调4/462ms调3/4187ms调3/494ms调2/4250ms调2/4125ms (2)音频脉冲实现了解音乐
15、的一些基本知识后可知,产生不同频率的音频脉冲即能产生音乐,对于单片机而言,产生不同频率有脉冲非常方便,可以利用它的定时/计数器来产生这样的方波频率信号,因此,需要弄清楚音乐中的音符和对应的频率,以及单片机定时计数的关系。在本实验中,单片机工作于12MHZ时钟频率,使用其定时/计数器T0,工作模式为1,改变计数值TH0和TL0可以产生不同频率的脉冲信号,在此情况下,C调的各音符频率与计数值T的对照如表3-2:表3-2 音符频率与计数值T的对照表音符频率(HZ)计数值(T值)音符频率(HZ)计数值(T值)低1DO26263628#4FA#74064860#1DO#27763737中5SO78464
16、898低2RE29463835#5SO#83194934#2RE#31163928中6LA88064968低3MI33064021#6LA#93264994低4FA34964103中7SI96865030#4FA#37064185低1DO104665058低SO39264260#1DO#110965085#5SO#41564331高2RE117565110低6LA44064400#2RE#124565134#6LA#46664463高3MI131865157低7SI49464524高4FA139765178中1DO52364580#4FA#149065198#1DO#55464633高5SO1
17、56865217中2RE58764633#5SO#166165235#2RE#62264884高6LA176065252中3MI65964732#6LA#186565268中4FA69864820高7SI196765283 T的值决定(judng)了TH0和TL0的值,其关系为:TH0=T/256,TL0=T%2563.2软件(run jin)框图及部分(b fen)代码(1)总程序简易流程图如图3-1:键盘扫描程序有键按下赋键值功能键地址转移程序取键值A17H A1A转至音色调节转至弹奏转自动播放乐曲NYYNN 图 3-1 总程序(chngx)简易流程图(2)显示(xinsh)流程图如图3-
18、2:开始R1=0根据R1的值查表查表获得的数据送P0延时0.2秒R1=R1+1R1的内容=10吗?图3-2显示(xinsh)流程图C语言源程序#include#define uchar unsigned char#define uint unsigned intunsigned char code table=0 x3f,0 x06,0 x5b,0 x4f,0 x66,0 x6d,0 x7d,0 x07,0 x7f,0 x6f;unsigned char discount;void delay02s(void) unsigned char i, j, k; for(i=20;i0;i-) fo
19、r(j=20;j0;j-) for(k=248;k0;k-);void main(void) while(1) for(discount=0;dispcount10;dispcount+) P0=tablediscount; delay02s(); (3)键盘(jinpn)识别程序框图如图3-3所示:图3-3 键盘(jinpn)识别程序框图语言(yyn)源程序#includeunsigned char code table=table=0 x3f,0 x06,0 x5b,0 x4f, 0 x66,0 x6d,0 x7d,0 x07,0 x7f,0 x6f,0 x77, 0 x7c, 0 x39
20、,0 x5e,0 x79,0 x71;unsigned char temp;unsigned char key;unsigned char i,j;void main(void) while(1)P3=0 xff; P3_4=0; temp=P3; temp=temp & 0 x0f; if (temp!=0 x0f) for(i=50;i0;i-)for(j=200;j0;j-);temp=P3;temp=temp & 0 x0f;if (temp!=0 x0f)temp=P3; temp=temp & 0 x0f;switch(temp)case 0 x0e: key=7; break;
21、case 0 x0d: key=8; break; case 0 x0b: key=9; break; case 0 x07: key=10; break;temp=P3; P1_0=P1_0; P0=tablekey; temp=temp & 0 x0f; while(temp!=0 x0f) temp=P3; temp=temp & 0 x0f; P3=0 xff; P3_5=0; temp=P3; temp=temp & 0 x0f; if (temp!=0 x0f) for(i=50;i0;i-)for(j=200;j0;j-);temp=P3;temp=temp & 0 x0f; t
22、emp=P3; temp=temp & 0 x0f; switch(temp) case 0 x0e: key=4; break; case 0 x0d: key=5; break; case 0 x0b: key=6;break; case 0 x07: key=11; break; temp=P3; P1_0=P1_0; P0=tablekey; temp=temp & 0 x0f; while(temp!=0 x0f) temp=P3; temp=temp & 0 x0f; P3=0 xff; P3_6=0; temp=P3; temp=temp & 0 x0f; if (temp!=0
23、 x0f) for(i=50;i0;i-)for(j=200;j0;j-);temp=P3; temp=temp & 0 x0f; if (temp!=0 x0f) temp=P3; temp=temp & 0 x0f; switch(temp)case 0 x0e: key=1;break;case 0 x0d: key=2;break;case 0 x0b: key=3;break;case 0 x07: key=12; break; temp=P3;P1_0=P1_0;P0=tablekey;temp=temp & 0 x0f;while(temp!=0 x0f)temp=P3;temp
24、=temp & 0 x0f;P3=0 xff;P3_7=0;temp=P3;temp=temp & 0 x0f;if (temp!=0 x0f)for(i=50;i0;i-)for(j=200;j0;j-);temp=P3; temp=temp & 0 x0f; if (temp!=0 x0f)temp=P3;temp=temp & 0 x0f;switch(temp)case 0 x0e:key=0;break;case 0 x0d:key=13;break;case 0 x0b:key=14;break;case 0 x07:key=15;break;temp=P3; P1_0=P1_0;
25、 P0=tablekey; temp=temp & 0 x0f; while(temp!=0 x0f) temp=P3; temp=temp & 0 x0f;(4)音乐(ynyu)发声程序框图如图3-4所示:图3-4 音乐(ynyu)发声程序框图3.3程序设计(chn x sh j)说明(1)对声音的控制对音调的控制:根据不同的按键,对定时器T1送入不同的初值,调节T1的溢出时间,这样就可以输出不同音调频率的方波。不同音调下各个音阶的定时器对音长的控制:先向定时器T0送入一个固定初值,控制中断循环的次数,从而得到成倍数关系的时间间隔。按一拍0.64S计算,取1/16拍为最小间隔,即0.04S,
26、为此设定T0的初值为63C0。乐谱的编码规则:对于每个音符,定义用8位二进制数表示。其中,最高位为1的字符为结束符,当读到最高位为1时,停止播放;低3位存储音阶码,即音阶表的列数,可为000B111B (17和休止符),休止符表示停顿,不发音,只有时间长短属性;第3位和第4位存储音高码,即音阶表的行数,可为00B10B;第5位和第6位存储音长码,即中断次数,可为00B10B。(2)对演奏的控制在手动演奏时,规定先按音调键,后按音阶键。每次音阶键按下时,调用键盘扫描子程序,获得键值,查询音阶表,获取定时器的计时初值,向喇叭输入相应频率的驱动脉冲,发出相应的声音,若按键没有松开,则一直发声;若按键
27、松开,则停止发声。在自动演奏时,通过选曲键来确定要播放的音乐,根据键值查询曲目表获取所点歌曲的首地址,依次读取歌曲的代码,获得音阶(ynji)、音调和音长信息,播放相应的音乐。当读到结束符时,停止播放音乐。四丶 系统调试与测试(csh)结果分析4.1使用(shyng)的仪器仪表 单片机仿真器KEILC蜂鸣器 LS14.2系统调试根据系统设计方案,本系统的调试共分为三大部分:硬件调试,软件调试和软硬件联调。由于在系统设计中采用模块设计法,所以方便对各电路模块功能进行逐级测试:中心控制模块的调试,音乐播放模块的调试,按键控制模块的调试等,最后将各模块组合后进行整体测试。(1)对各个模块的功能进行调
28、试,主要调试各模块能否实现指定的功能。(2)软件调试采用单片机仿真器KEILC及微机,将编好的程序进行调试,主要是检查语法错误。(3)将调试好的硬件和软件进行联调,主要调试系统的实现功能。4.3 测试结果此次系统设计结果较好,分别发出8种高低不同的声音,如果送入音乐程序,则会播放歌曲。五丶源程序程序为:#includeunsigned char code table=0 x3f,0 x06,0 x5b,0 x4f,0 x66,0 x6d,0 x7d,0 x07,0 x7f,0 x6f,0 x77,0 x7c,0 x39,0 x5e,0 x79,0 x71;unsigned char temp;
29、unsigned char key;unsigned char i,j;unsigned char STH0;unsigned char STL0;unsigned int code tab=64021,64103,64260,64400, 64524,64580,64684,64777,64820,64898,64968,65030, 65058,65110,65157,65178;void main(void)TMOD=0 x01; ET0=1; EA=1;while(1) P3=0 xff;P3_4=0;temp=P3;temp=temp & 0 x0f;if (temp!=0 x0f)
30、for(i=50;i0;i-) for(j=200;j0;j-); temp=P3; temp=temp & 0 x0f; if (temp!=0 x0f) temp=P3; temp=temp & 0 x0f; switch(temp) case 0 x0e: key=0; break; case 0 x0d: key=1;break; case 0 x0b: key=2; break; case 0 x07: key=3; break; temp=P3; P1_0=P1_0; P0=tablekey; STH0=tabkey/256; STL0=tabkey%6; TR0=1; temp=
31、temp & 0 x0f; while(temp!=0 x0f) temp=P3; temp=temp & 0 x0f; TR0=0; P3=0 xff; P3_5=0; temp=P3; temp=temp & 0 x0f; if (temp!=0 x0f) for(i=50;i0;i-) for(j=200;j0;j-); temp=P3; temp=temp & 0 x0f; if (temp!=0 x0f) temp=P3; temp=temp & 0 x0f; switch(temp) case 0 x0e: key=4; break; case 0 x0d: key=5; brea
32、k; case 0 x0b: key=6; break; case 0 x07: key=7; break; temp=P3; P1_0=P1_0; P0=tablekey; STH0=tabkey/256; STL0=tabkey%6; TR0=1; temp=temp & 0 x0f; while(temp!=0 x0f) temp=P3; temp=temp & 0 x0f; TR0=0; P3=0 xff; P3_6=0; temp=P3; temp=temp & 0 x0f; if (temp!=0 x0f) for(i=50;i0;i-) for(j=200;j0;j-); tem
33、p=P3; temp=temp & 0 x0f; if (temp!=0 x0f) temp=P3; temp=temp & 0 x0f; switch(temp) case 0 x0e:key=8; break; case 0 x0d: key=9; break; case 0 x0b: key=10; break; case 0 x07: key=11; break; temp=P3; P1_0=P1_0; P0=tablekey; STH0=tabkey/256; STL0=tabkey%6; TR0=1; temp=temp & 0 x0f; while(temp!=0 x0f) temp=P3; temp=temp & 0 x0f; TR0=0; P3=0 xff; P3_7=0; temp=P3; temp=temp & 0 x0f; if (temp!=0 x0f) for(i=50;i0;i-) for(j=200;j0;j-); temp=P3; temp=temp & 0
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 25年公司员工安全培训考试试题附参考答案【A卷】
- 2024-2025新工人入场安全培训考试试题A4版可下载
- 2024-2025项目部安全管理人员安全培训考试试题打印
- 2025网络小说版权转让合同
- 2025地下室基础承包土方挖掘工程合同
- 2025标准房屋买卖合同模板
- 2025深圳租房合同
- 2025关于电子产品购销合同样本
- 2025卖方知识产权合同范本
- 2025吉林省医疗器械集中招标采购合同
- 《洗地机培训方案》课件
- 郑州市2025年高中毕业年级第一次质量预测(一模) 化学试卷(含标准答案)
- 云辐射效应研究-洞察分析
- 免疫组库临床应用
- 2025中国海油春季校园招聘笔试高频重点提升(共500题)附带答案详解
- 消防安全培训课件讲稿
- 四川省乐山市(2024年-2025年小学六年级语文)部编版期末考试((上下)学期)试卷及答案
- 2025届徐州市高考英语二模试卷含解析
- 《延续性护理在永久性肠造口患者中的应用研究》4600字(论文)
- 康复人才培养
- 建设工程消防验收现场评定工作报告(第三方机构模板)
评论
0/150
提交评论