基于51单片机带存储播放功能功能的电子琴【参考】.docx

上传人:聆听****声音 文档编号:1968524 上传时间:2023-05-02 格式:DOCX 页数:31 大小:682.48KB
下载 相关 举报
基于51单片机带存储播放功能功能的电子琴【参考】.docx_第1页
第1页 / 共31页
基于51单片机带存储播放功能功能的电子琴【参考】.docx_第2页
第2页 / 共31页
基于51单片机带存储播放功能功能的电子琴【参考】.docx_第3页
第3页 / 共31页
基于51单片机带存储播放功能功能的电子琴【参考】.docx_第4页
第4页 / 共31页
基于51单片机带存储播放功能功能的电子琴【参考】.docx_第5页
第5页 / 共31页
基于51单片机带存储播放功能功能的电子琴【参考】.docx_第6页
第6页 / 共31页
基于51单片机带存储播放功能功能的电子琴【参考】.docx_第7页
第7页 / 共31页
基于51单片机带存储播放功能功能的电子琴【参考】.docx_第8页
第8页 / 共31页
基于51单片机带存储播放功能功能的电子琴【参考】.docx_第9页
第9页 / 共31页
基于51单片机带存储播放功能功能的电子琴【参考】.docx_第10页
第10页 / 共31页
基于51单片机带存储播放功能功能的电子琴【参考】.docx_第11页
第11页 / 共31页
基于51单片机带存储播放功能功能的电子琴【参考】.docx_第12页
第12页 / 共31页
基于51单片机带存储播放功能功能的电子琴【参考】.docx_第13页
第13页 / 共31页
基于51单片机带存储播放功能功能的电子琴【参考】.docx_第14页
第14页 / 共31页
基于51单片机带存储播放功能功能的电子琴【参考】.docx_第15页
第15页 / 共31页
基于51单片机带存储播放功能功能的电子琴【参考】.docx_第16页
第16页 / 共31页
基于51单片机带存储播放功能功能的电子琴【参考】.docx_第17页
第17页 / 共31页
基于51单片机带存储播放功能功能的电子琴【参考】.docx_第18页
第18页 / 共31页
基于51单片机带存储播放功能功能的电子琴【参考】.docx_第19页
第19页 / 共31页
基于51单片机带存储播放功能功能的电子琴【参考】.docx_第20页
第20页 / 共31页
亲,该文档总共31页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

基于51单片机带存储播放功能功能的电子琴【参考】.docx

《基于51单片机带存储播放功能功能的电子琴【参考】.docx》由会员分享,可在线阅读,更多相关《基于51单片机带存储播放功能功能的电子琴【参考】.docx(31页珍藏版)》请在冰点文库上搜索。

基于51单片机带存储播放功能功能的电子琴【参考】.docx

基于AT89C51的屏幕声光式可录音电子琴设计报告

单片机课程设计报告书

小组成员:

吕梦莎吴玉凤

学 号:

1121307211213078

班 级:

自动化1106

指导教师:

于振宇

基于AT89C51的屏幕声光式可录音电子琴

北京交通大学电子信息工程学院吕梦莎吴玉凤

摘要:

本文的主要内容是用AT89S51单片机为核心控制元件,通过脉冲触发产生出电子音调,与按键、扬声器、LCD显示屏等模块组成控制模块,设计一个电子琴。

该系统运行稳定,其优点是硬件电路简单,软件功能完善,控制系统

可靠,性价比较高等,具有一定的实用与参考价值。

关键词:

AT89C51、脉冲触发、屏幕声光式、录音、播放、演奏、电子琴。

第一章引言

1.1设计背景

单片微型计算机是大规模集成电路技术发展的产物,属第四代电子计算机,它具有高性能、高速度、体积小、价格低廉、稳定可靠、应用广泛的特点。

它的应用必定导致传统的控制技术从根本上发生变革。

因此,单片机的开发应用已成为高科技和工程领域的一项重大课题。

电子琴是现代电子科技与音乐结合的产物,是一种新型的键盘乐器。

它在现代音乐扮演着重要的角色,单片机具有强大的控制功能和灵活的编程实现特性,它已经溶入现代人们的生活中,成为不可替代的一部分。

本文对利用单片机设计简易电子琴进行了分析,分别从原理图,主要芯片,各模块原理及各模块的程序的调试来详细阐述。

本系统是简易电子琴的设计,按下四角自锁开关会使LCD显示屏显示当前音符名称、播放的歌曲名称或播放的录音名称,同时扬声器播放对应的音符,LED闪烁相应的节奏。

通过设计本系统可熟悉掌握单片机的基本功能。

1.2设计任务

1、设计以单片机为核心的简易电子琴系统,可随意弹奏想要表达的音乐;

2、针对要求控制的对象完成程序的编制;

3、硬件软件联调,完成题目所要求的功能;

1.3设计思路

1、发声部分设计思路

音乐是由不同频率的声音组成的。

利用程序来控制单处机某个口线的“高”

电平或低电平,则在该口线上就能产生一定频率的矩形波。

利用延时程序控制“高”“低”电平的持续时间,就能改变输出频率,从而改变音调。

于是产生do,re,mi,fa,so,la,xi七个音符的变换。

2、显示部分设计思路

考虑到信息的多媒体传播已经成为信息化时代的主流,我们给电子琴设计了

LCD显示器和节拍指示LED灯,带来视听双重冲击。

LCD具有功耗低,显示质量高,数字式接口更加稳定可靠的优点。

演示过程中可显示欢迎语,当前功能,按下的音符名称,当前播放的歌曲名称等。

第二章 方案论证

采用AT89C51单片机作为主控芯片,设置独立按键、扬声器、LCD显示

屏等外围器件,另外还用到一些简单器件如NPN型三极管及电阻等。

利用按键实现音符和音调的输入;LCD显示屏进行被操作的按键显示;用PNP型三极管2N2907实现低音频功率放大;最后用扬声器发音。

主控芯片采用AT89C51单片机,它是大规模集成电路技术发展的产物,具有高性能、高速度、体积小、价格低廉、稳定可靠、应用广泛的特点。

避免了由于元器件种类、个数繁多,而过于复杂的硬件电路也容易引起系统的精度不高、体积过大等不利因素。

同时具有强大的控制功能和灵活的编程实现特性,由于本设计主要用于娱乐方面,因此在设计上尽量使其安全以及简单易操作。

具有经济可行性、技术可行性、实物应用性。

第三章 硬件系统设计

3.1时钟电路

MCS-51内部有一个用于构成振荡器的高增益反相放大器,引脚XTAL1和XTAL2分别是此放大器的输入端输出端。

本图采用内部时钟电路,如图3-1所示,通常在引脚XTALl和XTAL2上跨接石英晶体X1和两个补偿电容C1、C2构成自激振荡器。

可以根据情况选择2~12MHz频率之间的石英晶体,补偿电容通常选择30pF左右的瓷片电容。

3.2复位电路

图3-1 时钟电路

单片机小系统常采用上电自动复位和手动按键复位两种方式实现系统的复位操作。

本实验采用上电自动复位方式,其结构图如图3-2所示。

上电复位要求接通电源后,自动实现复位操作。

复位电路的基本功能是:

系统上电时提供复位信号,直至系统电源稳定后,撤销复位信号。

对于MCS-51单片机,只要在RST复位端接一个电容至VCC和一个电阻至VSS即可。

在加电瞬间,RST端出现一定时间的高电平,只要高电平保持时间足够长,就可以使MCS-51复位。

图3-2 复位电路

3.3原理框图

本系统有主控芯片AT89C52、扬声器、显示模块、按键模块和晶振复位电路组成。

图3-3 原理框图

3.4显示部分设计

为了让电子琴能够显示出音调,我们另外附加了一个LCD1602提供屏幕式音调显示,LCD1602属于字符型液晶,可以显示字母和数字等字符。

LCD1602是指显示的内容为16X2,即可以显示两行,每行16个字符液晶模块(显示字符和数字)。

图3-4 显示电路

3.5按键部分设计

3.5.1键盘设计

键盘可以分为2类:

独立连接式键盘和矩阵式键盘。

本设计采用独立式键盘。

独立式按键是直接用I/O口线构成的单个按键电路,其特点是每个按键单独占用一

根I/O口线,每个按键的工作不会影响其它I/O口线的状态。

独立式按键电路配置灵活,软件结构简单。

独立式按键软件常采用查询式结构。

先逐位查询每根I/O口线的输入状态,如某一根I/O口线输入为低电平,则可确认该I/O口线所对应的按键已按下,然后,再转向该键的功能处理程序。

由于本程序较为简单,为了使用方便及节省资源,选择独立式键盘。

下图为独立式键盘电路图:

3.5.2去抖动

图3-5 独立式键盘电路图

键盘编程中主要考虑去抖动的问题。

当测试表明有键被按下之后,紧接着就进行去抖动处理。

因为按键是机械开关结构,由于机械触点的弹性及电压突跳等原因,在触点闭合或断开的瞬间会出现电压抖动。

为保证键识别的准确,在电压信号抖动的情况下不能进行行状态输入。

为此需进行去抖动处理。

去抖动有硬件和软件两种方法。

硬件方法就是加去抖动电路,从根本上避免抖动的产生。

软件消抖,在第一次检测到有键按下时,执行一段延时程序之后,再检测此按键,如果第二次检测结果仍为按下状态,CPU便确认此按键己按下,消除了抖动。

本实验采用软件消抖法,在按键按下后,执行一段延时程序。

3.6发音部分设计

如下图所示,发音电路是由扬声器、三极管、变位器构成。

由三极管来驱动扬声器发音的,同时加上变位器实现电阻的可调来增强驱动电流,提高驱动能力,从而调节扬声器的音效。

图3-6扬声器电路图

第四章软件系统设计

4.1系统分析

4.1.1系统软件的组成

(1)键盘扫描程序:

检测是否有按键按下,有按键按下则记录按下键的键

值,并跳转至功能转移程序;无按键按下,则返回键盘扫描程序继续检测。

(2)功能转移程序:

对检测到的按键值进行判断,是琴键则跳转至琴键处理程序,是功能键则跳转至相应的功能程序,我们设计的功能程序有三种,即音色调节功能、自动播放乐曲和录音的功能。

(3)琴键处理程序:

根据检测到的按键值,查询音调表,给计时器赋值,使发出相应频率的声音。

(4)自动播放歌曲程序:

检测到按键按下的是自动播放歌曲功能键后执行该程序,电子琴会自动播放事先已经存放的歌曲或录音歌曲,歌曲播放完毕之后自动返回至键盘扫描程序,继续等待是否有按键按下。

(5)录音程序:

检测到按键按下的是录音功能键后执行该程序,跳转到键盘扫描程序,检测是否有键按下,有按键按下则记录按下键值,根据检测到的按键值,查询音调表,给计时器赋值,使发出相应频率的声音并跳转到功能转移程序。

录音功能键按下

Y

记录音符

N

N

演奏功能键按下

自动播放键按

Y

Y

播放音符

查表得到按键音符频率

播放音符

播放内部存储的音乐

查表得到按键音符频率

键盘扫描程序

初始化T0

开始

4.1.2系统总体功能流程图

4.2参数计算

4.2.1发音原理

若要产生音频脉冲,只要算出某一音频的周期(1/频率),再将此周期除以

2,即为半周期的时间。

利用定时器计时半周期时间,每当计时终止后就将P1.0反相,然后重复计时再反相。

就可在P1.0引脚上得到此频率的脉冲。

利用AT89C51的内部定时器使其工作计数器模式(MODE1)下,改变计数值TH0及TL0以产生不同频率的方法产生不同音阶。

4.2.2音调的确定

音调是唱曲时乐音的发音,一般依次唱成

DO、RE、MI、FA、SO、LA、SI,即唱成简谱的1、2、3、4、5、6、7,相当于汉字“多来米发梭拉西”的读音。

例如,频率为523Hz,其周期T=1/523=1912μs,因此只要令计数器计时956μs/1μs=956,每计数956次时将I/O反相,就可得到中音DO(523Hz)。

计数脉冲值与频率的关系式是:

N=fi÷2÷fr,式中,N是计数值;fi是机器频率

(晶体振荡器为12MHz时,其频率为1MHz);fr是想要产生的频率。

其计数初值T的求法如下:

T=65536-N=65536-fi÷2÷fr

例如:

设K=65536,fi=1MHz,求中音DO(261Hz)。

T=65536-N=65536-fi÷2÷fr=65536-1000000÷2÷fr=65536-500000/fr,中音DO的T=65536-500000/523=64580。

由音符的频率值可以计算得出各个音调的计数值,如表4-1所示:

(﹟叫升记号,表示把音在原来的基础上升高半音,b叫降记音,表示在原来的基础上降低半音。

表4-1音调频率与计数初值对照

音符

频率

(Hz)

计数值(T

值)

音符

频率

(Hz)

计数值(T值)

1DO

262

63628

#4FA#

740

64860

#

1DO#

277

63737

中5SO

784

64898

2RE

294

63835

#5SO#

831

94934

#

2RE#

311

63928

中6LA

880

64968

3MI

330

64021

#6LA#

932

64994

4FA

349

64103

中7SI

968

65030

#

4FA#

370

64185

1DO

104

6

65058

SO

392

64260

#1DO#

110

9

65085

#

5SO#

415

64331

高2RE

117

5

65110

6LA

440

64400

#2RE#

124

5

65134

#

6LA#

466

64463

高3MI

131

8

65157

7SI

494

64524

高4FA

139

7

65178

1DO

523

64580

#4FA#

149

0

65198

#

1DO#

554

64633

高5SO

156

8

65217

2RE

587

64633

#5SO#

166

1

65235

#

2RE#

622

64884

高6LA

176

0

65252

3MI

659

64732

#6LA#

186

5

65268

4FA

698

64820

高7SI

196

7

65283

采用查表程序进行查表时,可以为这个音符建立一个表格,有助于单片机通过查表的方式来获得相应的数据。

4.2.3节拍的确定

若要构成音乐,光有音调是不够的,还需要节拍,让音乐具有旋律(固定的律动),而且可以调节各个音的快满度。

“节拍”,即Beat,简单说就是打拍子,就像我们听音乐不自主的随之拍手或跺脚。

若1拍实0.5s,则1/4拍为0.125s,只要设定延迟时间就可以求得节拍的时间,假设1拍为4DELAY,则1/4应为1DELAY,以此类推,得到如表4-2所示的节

拍与延迟时间对照表。

休止符表示暂停发音。

表4-2 1/4和1/8节拍的时间设定

曲调值

DELAY

曲调值

DELAY

调4/4

125毫秒

调4/4

62毫秒

调3/4

187毫秒

调3/4

94毫秒

调2/4

250毫秒

调2/4

125毫秒

4.3程序设计

4.3.1播放子程序(包括自动播放存储音乐和按键发音)

本设计共两种播放模式,包括自动播放存储音乐和按键发音。

上电后,首

先开中断并设定定时器0为工作方式1,当自动播放键按下时,进入中断,根据乐谱在定义的音频数组中查找相应音律,然后给定时器赋初值,即开始播放音乐。

当DO、RE、MI、FA、SO、LA、SI七种音符键按下时,根据音符值在定义的音频数组中查找相应音律,然后给定时器赋初值,即按键发音。

自动播放键按

N

Y

Y

播放音乐

给定时器T0赋

播放键值对应的音符

给定时器T0赋值

根据乐谱在数组中查找相应音律

进入中断

根据yinfu和工作方式取值,并在数组中查找相应音律

进入中断

有键按下

开中断并设定工作寄存器

开始

第五章实验结果

5.1硬件调试

硬件调试主要是针对单片机部分进行的调试。

在上电之前,先确保电路中不存在断路或短路情况,这一工作是整个调试工作的第一步,也是非常重要的一个步骤。

在这部分调试中主要使用的工具是万用表,用来完成检测电路中是否存在断路或者短路情况的任务。

注意焊点之间,确保焊点没有短接在一起,同时注意焊点的美观,确保没有开路以及短路的现象出现。

在确保硬件电路正常且无异常情况(断路或短路)的情况下方可上电调试,上电调试的目的是检验电路是否接错,同时还要检验原理是否正确,在本次设计中,上电调试主要是检测单片机控制部分、数码管点亮部分、和音频转换电路硬件调试。

1、数码管LED电路调试:

接通电源,随机按下按钮可以看到数码管显示数字。

2、键盘单片机控制部分调试:

上电后,随机按动键盘可以发现各个按键对应的音正确。

5.2软件调试

调试主要方法和技巧:

通常一个调试程序应该具备至少四种性能:

跟踪、

断点、查看变量、更改数值。

整个程序是一个主程序调用各个子程序实现功能的过程,要使主程序和整个程序都能平稳运行,各个模块的子程序的正确与平稳运行必不可少,所以在软件调试的最初阶段就是把各个子程序模块进行分别调试。

5.3仿真结果

第六章 总结

本次51单片机课程设计我们组做的是《基于AT89C51单片机的屏幕式声

光电子琴的设计》,通过这次的DIY制作的学习,我学到了不少知识,真正体会到了学以致用的快感,通过自己动手制作小作品不仅加深了我们对51单片机的理解,而且也增强了我们对音乐的兴趣,也因此喜欢上了各种基于51单片机的小制作,从而更好地将课本知识与实践过程相结合。

在这次课程设计中,主要涉及了软件和硬件两个方面的内容。

在软件方面,我们掌握了仿真软件proteus的仿真方法,实现了7音符的发声、录音以及音乐的自动播放功能,同时也提高了我们用汇编语言编程的能力;在硬件方面,我们对电子产品的开发流程和功能应用有了一定的了解,进一步熟悉和掌握了单片机的内部结构和工作原理,了解了单片机应用系统设计的基本方法和步骤。

并且提高了我们运用所学的专业基础知识来解决实际问题的能力,加深了对所学理论知识的理解和运用,动手能力也得到了相应的提高,创新意识得到了锻炼。

在本次的实验设计中,我们在借鉴前人的基础上也对自己的作品进行了一部分创新,①在设置录音功能方面,根据随机弹奏的音调,将其偏移地址存入36H单元中,然后通过查询音调表,使其发出相应频率的声音,从而弹奏出事先录好的一段音乐。

②在控制节奏方面,我们设置了休止符,来控制节奏的停顿,这样就能产生有停顿感的音乐,而不是连续的,使音乐听起来更加悦耳。

而这些创新均基于汇编语言的学习。

总体来说,此次单片机课程设计使我们收获良多,虽然课程设计的过程中遇到了很多困难与问题,但我们最终还是完成了设计的任务及要求。

也让我认识到,无论做什么事情,只要你足够坚强,有足够的毅力和决心,有足够的挑战困难的勇气,就没有什么办不到的。

最后,衷心感谢老师给我们提供了这样一次难得的机会来展示自己的作品,激发了我们对单片机DIY小制作的兴趣,也感谢老师在这个学期孜孜不倦的教悔,让我们在学习单片机的基础知识的同时,真正体会到学以致用带来的快感。

由此我觉得,我们的学习不仅要在教师引导和帮助下顺利入门,还要掌握自动控制原理课程的精髓和要点,并且能够“由厚及薄”,达到对课程整体的把握,

具有一定的工程概念和实践能力。

附录一:

源程序

RSEQUP3.5RWEQUP3.6EEQUP3.7ORG00HSJMPMAINORG00BHMOVTH0,33HMOVTL0,34HCPLP3.4

RETI

;!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

ORG 001BH

INC 3CH ;中断服务,中断计数器加1MOV TH1,#0D8H

MOV TL1,#0EFH ;12M晶振,形成10毫秒中断RETI

;!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

ORG30H

MAIN:

SETBP3.4 ;关闭扬声器LCALLCSH1602 ;初始化1602

MOV TMOD,#11H ;设置定时器0为工作模式1SETB EA ;开总中断

SETB ET0 ;开定时器0中断HUANYING:

MOVP1,#80H ;欢迎语显示地址LCALLENABLE

MOVDPTR,#TAB_HYMOV30H,#00

LP:

MOVA,30HMOVCA,@A+DPTRJZKEY

LCALLDELAY_100MSLCALLWRITE_1602INC30H

SJMPLP

KEY:

MOVP1,#01H ;清屏ACALLENABLE

MOVP1,#80HLCALLENABLE

MOVDPTR,#TAB_YANZHOUMOV30H,#00

LP7:

MOVA,30H

MOVCA,@A+DPTRJZKEY_0

LCALLWRITE_1602INC30H

SJMPLP7

KEY_0:

MOVP1,#0C0H ;音符的显示地址LCALLENABLE

MOV38H,#16 ;写入1602的显示地址指针

MOV35H,#2 ;控制节拍

KEY_1:

MOVP2,#0FFH ;置P2为输入

JBP2.0,KEY_2 ;K1键没按下,转移

LCALLDELAY_10MS ;延时消抖JNBP2.0,$

MOV36H,#0 ;装入1的音符码相对地址

LCALL BOFANG_YF

KEY_2:

KEY_3:

KEY_4:

KEY_5:

KEY_6:

KEY_7:

KEY_9:



JBP2.1,KEY_3 ;K2键没按下,转移

LCALLDELAY_10MS ;延时消抖JNBP2.1,$

MOV36H,#2

LCALL BOFANG_YF

JBP2.2,KEY_4 ;K3键没按下,转移LCALLDELAY_10MS ;延时消抖JNBP2.2,$

MOV36H,#4

LCALL BOFANG_YF

JBP2.3,KEY_5 ;K4键没按下,转移LCALLDELAY_10MS ;延时消抖JNBP2.3,$

MOV36H,#6

LCALL BOFANG_YF

JBP2.4,KEY_6 ;K5键没按下,转移LCALLDELAY_10MS ;延时消抖JNBP2.4,$

MOV36H,#8

LCALL BOFANG_YF

JBP2.5,KEY_7 ;K6键没按下,转移LCALLDELAY_10MS ;延时消抖JNBP2.5,$

MOV36H,#10

LCALL BOFANG_YF

JBP2.6,KEY_9 ;K7键没按下,转移

LCALLDELAY_10MS ;延时消抖JNBP2.6,$

MOV36H,#12

LCALL BOFANG_YF

JBP3.2,KEY_1 ;K9键没按下,重新扫描

LCALLDELAY_10MS ;延时消抖JNBP3.2,$

LCALLDELAY_10MS

;-----------播放音乐程序段---------------

MOVP1,#01H ;清屏ACALLENABLE

MOVP1,#80HLCALLENABLE

MOVDPTR,#TAB_PLAYMOV30H,#00

LP8:

MOVA,30H

MOVCA,@A+DPTRJZPLAY

LCALLWRITE_1602INC30H

SJMPLP8

PLAY:

MOVP2,#0FFH ;置P2为输入

JBP2.0,PLAY_2 ;K1键没按下,转移

MOVDPTR,#TAB_GEQU1 ;存曲目标志LCALL BOFANG_GEQU

PLAY_2:

JBP2.1,PLAY_3 ;K2键没按下,转移

SETBET1MOV3BH,TMOD

MOV TMOD,#11H

movdptr,#tab2movp1,#0c0hlcallenablelcallwrite1

MOV DPTR,#DAT2LCALLMUSIc0CLRTR1

CLRET1

MOVTMOD,3BHPLAY_3:

JBP2.2,PLAY_4 ;K3键没按下,转移

SETBET1

MOV3BH,TMOD

MOV TMOD,#11H

movdptr,#tab1movp1,#0c0hlcallenablelcallwrite1

MOV DPTR,#DAT1LCALLMUSIc0CLRTR1

CLRET1

MOVTMOD,3BHPLAY_4:

JBP2.3,PLAY_9MOVR1,#50H

LCALLBOFANG_LUYIN

PLAY_9:

JBP3.2,PLAY ;K8键没按下,重新扫描

LCAL

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

当前位置:首页 > IT计算机 > 电脑基础知识

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2