51单片机电子琴.docx

上传人:b****5 文档编号:12119073 上传时间:2023-04-17 格式:DOCX 页数:27 大小:893.92KB
下载 相关 举报
51单片机电子琴.docx_第1页
第1页 / 共27页
51单片机电子琴.docx_第2页
第2页 / 共27页
51单片机电子琴.docx_第3页
第3页 / 共27页
51单片机电子琴.docx_第4页
第4页 / 共27页
51单片机电子琴.docx_第5页
第5页 / 共27页
点击查看更多>>
下载资源
资源描述

51单片机电子琴.docx

《51单片机电子琴.docx》由会员分享,可在线阅读,更多相关《51单片机电子琴.docx(27页珍藏版)》请在冰豆网上搜索。

51单片机电子琴.docx

51单片机电子琴

摘要本设计对使用单片机设计简易电子琴进行了分析,并介绍了基于单片机电子琴统硬件组成。

利用单片机产生不同频率来获得我们要求的音阶,最终可随意弹奏想要表达的音乐。

并且本文分别从原理图,主要芯片,各模块原理及各模块的程序的调试来详细阐述。

电子琴音色优美,音域较宽,和声丰富,表现力极其丰富。

它可模仿多种音色,还可随意配上类似打击乐音响的节拍伴奏,适合于演奏节奏性较强的现代音乐。

它还能够作为独奏乐器出现,具有鲜明的时代特色,深受广大音乐爱好者的喜爱,又是我国广大中小学生学习音乐的重要工具,而且电子琴容易制作,价格便宜,有很好的市场前景。

随着科技的不断发展,电子产品也在不断的进步。

现在的电子产品越来越接近智能化,性能也精益求精。

现阶段,单片机发展日益成熟,且发展迅猛,以单片机为核心部件的电子琴将会比以555定时器为核心部件电子琴的性能更加稳定,而且依靠单片机强大的编程功能更易实现电子琴各音节所对应频率的产生。

所以此次设计具有很现实的意义。

本次设计的目的主要是复习并运用我们所学的单片机知识,同时通过本次设计能够对电子电路以及作图软件等方面的知识有进一步的认识并掌握;熟悉AT89S52单片机的内部结构和功能,合理利用其功能实现简单设计,能够完成相关软件编程设计工作;掌握一般的简单电子电路的设计方法。

本次设计的主要内容是利用单片机编程设计出具有发出标准高中低的Dou,Ruai,Mi,Fa、Sou,La,

Si,Dou(高音)21个音的功能并能通过9个按键控制的电子琴。

它包括数码显示电路、时钟电路、复位电路、发声电路以及键盘接口电路。

1概述错误!

未定义书签。

电子琴功能模式介绍错误!

未定义书签。

系统设计的任务与要求错误!

未定义书签。

2系统总体方案及硬件设计错误!

未定义书签。

2.1系统总体方案错误!

未定义书签。

定时/计数器的设计和状态字定义错误!

未定义书签。

音调数据表错误!

未定义书签。

总体硬件组成框图错误!

未定义书签。

主要芯片简介错误!

未定义书签。

子系统模块一错误!

未定义书签。

子系统模块二错误!

未定义书签。

子系统模块三错误!

未定义书签。

AT89S52复位模块错误!

未定义书签。

AT89S52晶振模块错误!

未定义书签。

3软件设计错误!

未定义书签。

系统软件设计错误!

未定义书签。

内置歌曲输出错误!

未定义书签。

音阶键识别错误!

未定义书签。

系统总流程图错误!

未定义书签。

4Proteus软件仿真错误!

未定义书签。

程序仿真错误!

未定义书签。

proteus仿真错误!

未定义书签。

5课程设计体会错误!

未定义书签。

参考文献错误!

未定义书签。

附1源程序代码错误!

未定义书签。

附2系统原理图错误!

未定义书签。

1概述

电子琴功能模式介绍

本次设计提出了用AT89S52单片机为核心控制元件,设计一个简易的电子琴。

本方案以AT89S52单片机作为主控核心,与键盘、扬声器、显示等模块组成核心主控制模块在主控模块上设有7个按键和扬声器。

在弹奏模式方面,可根据使用者的操作随意弹奏想要表达的音乐。

而在播放音乐方面,一首音乐是许多不同的音阶组成的,而每个音阶对应着不同的频率,再加上一定的延时作为节拍,这样我们就可以利用不同的频率的组合,即可构成我们所想要的音乐了,当然对于单片机来产生不同的频率非常方便,我们可以利用单片机的定时/计数器T0来产生这样方波频率信号。

查找想要播放歌曲的歌谱,翻译出对应的频率及延时节拍,存储到单片机存储单元里,再通过所编程序即可控制歌曲播放。

系统设计的任务与要求

实现电子琴发声控制系统;要求电路实现如下功能:

利用蜂鸣器作为发声部件,1个数码管作为显示部件,设置8个按键,实现高音、中音、低音的1、2、3、4、5、6、7的发音。

并在存储一首歌曲的内容,可以实现自动播放。

用PROTEU实现的电子琴仿真设计。

说明:

单片机的工作时钟频率为12MHz。

2系统总体方案及硬件设计

本系统采用单片机AT89S52为电子琴的控制核心,系统主要包括播放模块、按键弹奏模块。

下面对各模块的设计逐一进行论证比较。

2.1系统总体方案

本次设计提出了用AT89S52单片机为核心控制元件,设计一个简易的电子琴。

本方案以AT89S52单片机作为主控核心,与键盘、扬声器等模块组成核心主控制模块在主控模块上设有7个按键和扬声器。

根据使用者的操作随意弹奏想要表达的音乐。

一首音乐是许多不同的音阶组成的,而每个音阶对应着不同的频率,这样我们就可以利用不同的频率的组合,即可构成我们所想要的音乐了,当然对

于单片机来产生不同的频率非常方便,我们可以利用单片机的定时/计数器T0来

产生这样方波频率信号。

定时/计数器的设计和状态字定义

若要产生音频脉冲,只要算出某一音频的周期(1/频率),再将此周期除以2,即为半周期的时间。

利用定时器计时半周期时间,每当计时终止后就将反相,然

后重复计时再反相。

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

利用AT89S52的内部定时器使其工作计数器模式(M0DE1)下,改变计数值TH0及TL0以产生不同频率的方法产生不同音阶,例如,频率为523Hz,其周期T=1/523=1912卩§因此只要令计数器计时956卩s/1=s956,每计数956次时将I/O反相,就可得到中音DO(523Hz)。

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

N=fi-2了式中,N是计数值;

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

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

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

例如:

设K=65536,fi=1MHz,求中音DO(261Hz)0T=65536-N=65536—fi-2M65536-1000000十2-fr65536-500000/fr,中音DO的T=65536-500000/523=64580。

单片机12MHZ晶振,中音符与计数T0相关的计数值如表所示:

表2-1音符频率表

音符

频率(HZ)

简谱码(T值)

音符

频率(HZ)

简谱码(T值)

低1DO

262

63628

#4FA#

740

64860

#1DO#

277

63731

中5SO

784

64898

低2RE

294

63835

#5SO#

831

64934

#2RE#

311

63928

中6LA

880

64968

低3M

330

64021

#6

932

64994

低4FA

349

64103

中7SI

988

65030

#4FA#

370

64185

高1DO

1046

65058

低5SO

392

64260

#1DO#

1109

65085

#5SO#

415

64331

高2RE

1175

65110

低6LA

440

64400

#2RE#

1245

65134

#6

466

64463

高3M

1318

65157

低7SI

494

64524

高4FA

1397

65178

中1DO

523

64580

#4FA#

1480

65198

#1DO#

554

64633

高5SO

1568

65217

中2RE

587

64684

#5SO#

1661

65235

#2RE#

622

64732

高6LA

1760

65252

中3M

659

64777

#6

1865

65268

中4FA

698

64820

高7SI

1967

65283

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

低音0—19之间,中音在20-39之间,高音在40—59之间

用单片机播放音乐,或者弹奏电子琴,实际上是按照特定的频率,输出一连串的方波。

为了输出合适的方波,首先应该知道音符与频率的关系。

音调数据表

单片机发出不同频率的方波,人听起来,就是不同的音调。

上表中的频率数值,有些过多,去掉不常用的黑键频率,只是把白键对应的数据存放在单片机中,

即可满足绝大部分的应用需求。

定义音调数据表的程序如下:

DW63628,63835,64021,64103,64260,64400,64524,64580氐音区:

1234567DW64580,64671,64777,64820,64898,64968,65030,6505沖音区:

1234

567

DW65058,65110,65157,65178,65217,65252,65283,6531高音区:

1234567把这个数据表,放在程序中,需要播音的时候,就从表中取出一个数据送到定时器,当定时器溢出中断的时候,再对输出引脚取反,那么,在扬声器中,即可听到上表中频率的声音。

音乐的音拍,一个节拍为单位(C调)

表2-2曲调值表

曲调值

DELAY

曲调值

DELAY

调4/4

125ms

调4/4

62ms

调34

187ms

调34

94ms

调04

250ms

调2/4

125ms

总体硬件组成框图

实验中每按下一个琴键,单片机能够检测到键盘的按键,并根据按键的位置,通过程序来控制,使蜂鸣器发出不同频率(音调)的声音,声音延迟一段时间,等到按键放开之后,声音停止。

然后再继续扫描,看是否有键按下。

如此循环,即可实现基本的琴键功能。

显示输出

播放模块蜂鸣器

中心控制模块

按键控制模块

#

图2-1总体硬件组成框图

主要芯片简介

与MCS-51单片机产品兼容、8K字节在系统可编程Flash存储器、1000次擦写周期、全静态操作:

0Hz〜33Hz、三级加密程序存储器、32个可编程I/O口线、三个16位定时器/计数器八个中断源、全双工UART串行通道、低功耗空闲和掉电模式、掉电后中断可唤醒、看门狗定时器、双数据指针、掉电标识符。

AT89S52具有如下特点:

40个引脚(引脚图如图1-1所示),4kBytesFlash片内程序存储器,128bytes的随机存取数据存储器(RAM),32个外部双向输入/输出(I/O)口,5个中断优先级2层中断嵌套中断,2个16位可编程定时计数器,2个全双工串行通信口,看门狗(WDTC电路,片内时钟振荡器。

P0口:

P0口是一个8位漏极开路的双向I/O口。

作为输出口,每位能驱动8个TTL逻辑电平。

对P0端口写“1时,引脚用作高阻抗输入。

当访问外部程序

和数据存储器时,P0口也被作为低8位地址/数据复用。

在这种模式下,P0具有内部上拉电阻。

在flash编程时,P0口也用来接收指令字节;在程序校验时,输出指令字节。

程序校验时,需要外部上拉电阻。

P1口:

P1口是一个具有内部上拉电阻的8位双向I/O口,P1输出缓冲器能驱动4个TTL逻辑电平。

对P1端口写“1时,内部上拉电阻把端口拉高,此时可以作为输入口使用。

P2口:

P2口是一个具有内部上拉电阻的8位双向I/O口,P2输出缓冲器能驱动4个TTL逻辑电平。

对P2端口写“1时,内部上拉电阻把端口拉高,此时可以作为输入口使用。

作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。

P3口:

P3口是一个具有内部上拉电阻的8位双向I/O口,p2输出缓冲器能驱动4个TTL逻辑电平。

P3口亦作为AT89S52特殊功能(第二功能)使用,在flash编程和校验时,P3口也接收一些控制信号。

PIl-D^.Da

ra.idMDi

ra.unDi

P1Q.TAD7

piMirrTp^anwTipi^.VTO"E凰3民亦1艮

图2-2AT89S52

子系统模块一

LED显示模块如图2-2所示,利用AT89S52单片机的P2端口的—连接到一个七段数码管的a—h的笔段上,数码管的公共端接电源。

矩阵扫描显示当前按键模块如下:

图2-3LED数码管

子系统模块二

播放模块是蜂鸣器构成。

它几乎不存在噪声,音响效果较好,而且由于所需

驱动功率较小,且价格低廉,所以被广泛应用。

图2-4蜂鸣器播放器

子系统模块三

电子琴设有7个按键,分别代表7个音符,包括中音段的全部音符。

通过软硬件设计,按键触发外部中断,中断使程序跳转,实现模式转换,启动电子琴。

然后通过查询电子琴所按下的按键,读取电子琴输入状态,跳转到对应的程序人口,实现各种琴键的声音。

图2-5按键排列

AT89S52复位模块

开关按下,实现单片机的复位。

此复位电路连接到AT89S52的RST管脚上

AT89S52晶振模块

本次采用12MHZ晶振,机器周期为1us,连接两个电容,连接到AT89S52的XTAL1,XTAL上面,连接电路图2-7。

■■C2

30p

'^TEXT^'

C3

30p

图2-7晶振模块

3软件设计

 

系统软件设计

软件是该电子琴控制系统的重要组成部分,在系统的软件设计中我们也才用了模块化设计,将系统的各部分功能编写成子模块的形式,这样增强了系统软件的可读性和可移植性。

本设计用的C语言编程。

C语言是一种计算机程序设计语言。

它既有高级语言的特点,又具有汇编语言的特点。

它可以作为系统设计语言,编写工作系统应用程序,也可以作为应用程序设计语言,编写不依赖计算机硬件的应用程序。

因此,它的应用范围广泛。

本设计用的keil软件,KeilC51卩Visic集2成开发环境是KeilSoftware,Inc/KeilElektronikGmbH开发的基于80C51内核的微处理器软件开发平台,内嵌多种符合当前工业标准的开发工具,可以完成从工程建立到管理、编译、链接、目标代码的生成、软件仿真、硬件仿真等完整的开发流程尤其是C编译工具在产生代码

的准确性和效率方面达到了较高的水平,而且可以附加灵活的控制选项,在开发大型项目时非常理想。

内置歌曲输出

一首音乐是许多不同的音阶组成的,而每个音阶对应着不同的频率,这样我们就可以利用不同的频率的组合,即可构成我们所想要的音乐了,当然对于单片机来产生不同的频率非常方便,我们可以利用单片机的定时/计数器TO来产生这样方波频率信号,因此,我们只要把一首歌曲的音阶对应频率关系正确即可。

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

将编写好的歌曲程序写入单片机存储区,其中高四位表示音阶,低四位代表其所延时的节拍。

通过开关控制其播放。

本设计所选歌曲截自邓丽君的《月亮代表我的心》其歌曲程序如下:

ucharcodeMusic[]={0X16,0X12,0X14,0X22,0X32,0X26,0X12,0X94,0X22,0X32,

0X2C,0X32,0X52,0X36,0X22,0X14,0X54,0XAC,0X92,0XA2,0X96,0X0A2,0X96,0X82,0X3C,0X54,0X36,0X22,0X14,0X54,0XAC,0X92,0XA2,0X16,0X12,0X14,0X22,0X32,0X2C,0X02,0X82,0X16,0X32,0X56,0X12,0XA6,0X32,0X56,0X52,0X66,0X72,0XB6,0X62,0X62,0X52,0X58,0X32,0X22,0X16,0X12,0X14,0X32,0X22,0X16,0X12,0X14,0X22,0X32,0X26,0X92,0XA4,0X12,0X22,0X1C,0XFF};

音阶键识别

七段LED显示器内部由七个条形发光二极管和一个小圆点发光二极管组成,

根据各管的极管的接线形式,可分成共阴极型和共阳极型。

LED数码管的g~a

七个发光二极管因加正电压而发亮,因加零电压而不以发亮,不同亮暗的组合就能形成不同的字形,这种组合称之为字形码。

本系统按键显示模块软件流程图如下:

图3-1音阶显示流程

系统总流程图

图3-2总流程图

 

4Proteus软件仿真

程序仿真

在系统设计中采用模块设计法,所以方便对各电路模块功能进行逐级测试:

中心控制模块的调试,音乐播放模块的调试,按键控制模块的调试等,最后将各

模块组合后进行整体测试。

首先对各模块的功能进行调试,主要调试各模块能否实现指定的功能。

然后通过Keil软件对编好的程序进行调试,检查语法错误。

Keil下编译,产生目标HEX文件,Proteus下ProgrammeFiles选择产生的HEX文件,点击运行开始模拟。

其中keil的运行截图如下:

gnifjul1CTnijfli圧码|rruiiefjn巒j¥Wrrmo^ryp

17®1薦

17S

171

130

181

1321器

IIH

W

1ST

1&

1葡

191

19?

ilU*IE1u.4§

BuildtargetTa^&t1

Mtpilibfpy.c...liunnq...

ProgrfflSim:

data-lSJxdstHcode町59cratiigtaifilefnn够"

■jj/'0Eii3a[£i±'Wcidihs(s).

图4-1程序运行

proteus仿真

首先,尝试仿真模拟,低音曲调。

通过长按和断开微动开关,改变频率,实

现高中低音的切换。

低音的频率最低,故最先实现。

如图4-2,用显示数字“0”

代表低音。

据观察,实现方便。

图4-2低音显示

再次长按住微动开关,即可提高频率,使之达到设定的中音频率,用数字“1”代表中音。

尝试比较,同一音符的不同音调即可辨别中低音的区别。

其音调略高于低音,需细细辨别。

如图4-3,中音显示。

中音相比较,便可分辨出。

本次仿真用数字“2”代替高音。

仿真结果显示2

图4-4咼音显示

接上电源,即开始播放。

虽然有点小模糊,但是依稀可以辨别歌曲。

另一个微动开关可实现乐曲的停止,即单片机的复位。

再次按住,实现重新播放。

见图4-5。

图4-5歌曲播放

电子琴的关键功能是能弹奏乐符,上述仿真已经完成了高中低音和内置歌曲播放。

现在,开始真正的音符仿真调试。

音符有7个,分别是1,2,3,4,5,6,7,形声以DO、RA、M、FASOLA、SI试音。

分别尝试按七个微动开关,切换于不同的频率,发出不同的音阶。

再分别用高、中、低音发声,分别听取不同的音调。

声音清脆悦耳,但有点延时,有待调整。

另外,一个微动开关的动合实现内置歌曲和弹奏的切换。

在播放内置歌曲时,按下某微动开关,歌曲停止,便可开始音阶弹奏。

本次报告截取音阶7的Proteus仿真图。

见图4-6。

by哨佩佩主翠云

date:

2012-^15:

图4-6音阶7的仿真

5课程设计体会

通过这次单片机课程设计,我们加深了对单片机理论的理解,将理论很好的应用到实际当中去。

尤其是这次做了一个实物,锻炼了动手能力,很好的克服了眼高手低的毛病。

这次单片机课程设计,让我有不小的收获。

在学习态度上,这次课程设计是对我们的学习态度的一次检验。

对于这次单片机综合课程设计,我的第一大心得体会就是作为一名工程技术人员,要求具备的首要素质绝对应该是严谨。

我们这次设计所遇到的多半问题都是由于我们不够严谨。

在做人处事上,我认识到,无论做什么事情,只要你足够坚强,有足够的毅力和决心,有足够的挑战困难的勇气,就没有什么办不到的;同学们相互帮助,可以进步很快,团队协作真的很重要,帮助他人可以有更多成就感,获得更大的快乐。

在实习之前,我们要对所用单片机的内部结构有一个比较系统的了解,知道该单片机内有哪些资源;要有一个清晰的思路和一个完整的软件流程图;在设计程序时,不能妄想一次性就将整个程序设计好,反复修改,不断改进是程序设计的必经之路;要养成注释程序的好习惯,一个程序的完美与否不仅仅是实现功能,而应该让人一看就明白你的思路,这样也为资料的保存与交流提供了方便,从实践中学到的知识会让我们受益终身。

发现、提出、分析、解决问题和实践能力提高都会受益于我在今后的学习、工作和生活中。

在设计过程中和完成后,我认真总结,有以下体会:

1.此次课程设计是在上学期《单片机原理与技术》的基础上进行的,整个实验设计过程相对比较熟悉,是把以前学习的零碎的内容系统的整合学习。

2.本实验要充分了解电子琴的程序,清楚每个模块功能,认真按照步骤编译、链接、运行以生成可执行文件,并将此文件植入AT89S52中进行仿真。

3.在经过两周的设计过程中,通过大量的查阅资料,认真的研究教材,并向指导老师请教很多问题,自己对单片机有了更为深刻的理解。

我们认真演示原理,画出程序流程图,通过源程序,做出电路图,在仿真中发现很多问题,通过仔细研究,不但解决了问题,还学到了在平时的学习中学不到的东西。

4.在设计过程中,进一步的掌握Proteus、Word、Keil等软件的应用,也了解了单片机开发的基本环节。

5.在焊接实物过程中应合理布局各元件,不仅要实现功能而且还要美观

参考文献

[1]余发山,王福忠.单片机原理及应用技术.中国矿业大学出版社,

[2]杨凌霄.微型计算机原理与应用.中国矿业大学出版社,

[3]贾立新,王涌.电子系统设计与实践[M].清华大学出版社,

[4]陶春鸣,陈享成,瓮嘉民.单片机使用技术[M].人民邮电出版社,

[5]李光飞.单片机课程设计实例指导[M].航空航天大学出版社,

⑹余永权.ATMEL89系列单片机[M].北京航空航天大学出版社,

[7]胡宴如,耿苏燕.模拟电子技术[M].高等教育出版社,

[8]赵润林,张迎辉.单片机原理与应用教程[M].北京大学出版社,

[9]马淑华,王凤文,张美金.单片机原理与接口技术[M].北京邮电大学出版社,

[10]李建忠.单片机原理及应用[M].西安电子科技大学出版社,

附1源程序代码

#include<>#defineucharunsignedchar

voidRun(void);

voidKeyScan(void);

voidPlayKey(void);

voiddelay_1ms(uchari);

voidPlayMusic(void);

voidDisPlay(void);//显示

sbitBeep=P3A7;〃蜂鸣器接口

ucharTh0,Tl0;

uchar

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

当前位置:首页 > 党团工作 > 入党转正申请

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1