基于单片机的电子琴设计.docx

上传人:b****1 文档编号:2006192 上传时间:2023-05-02 格式:DOCX 页数:29 大小:309.99KB
下载 相关 举报
基于单片机的电子琴设计.docx_第1页
第1页 / 共29页
基于单片机的电子琴设计.docx_第2页
第2页 / 共29页
基于单片机的电子琴设计.docx_第3页
第3页 / 共29页
基于单片机的电子琴设计.docx_第4页
第4页 / 共29页
基于单片机的电子琴设计.docx_第5页
第5页 / 共29页
基于单片机的电子琴设计.docx_第6页
第6页 / 共29页
基于单片机的电子琴设计.docx_第7页
第7页 / 共29页
基于单片机的电子琴设计.docx_第8页
第8页 / 共29页
基于单片机的电子琴设计.docx_第9页
第9页 / 共29页
基于单片机的电子琴设计.docx_第10页
第10页 / 共29页
基于单片机的电子琴设计.docx_第11页
第11页 / 共29页
基于单片机的电子琴设计.docx_第12页
第12页 / 共29页
基于单片机的电子琴设计.docx_第13页
第13页 / 共29页
基于单片机的电子琴设计.docx_第14页
第14页 / 共29页
基于单片机的电子琴设计.docx_第15页
第15页 / 共29页
基于单片机的电子琴设计.docx_第16页
第16页 / 共29页
基于单片机的电子琴设计.docx_第17页
第17页 / 共29页
基于单片机的电子琴设计.docx_第18页
第18页 / 共29页
基于单片机的电子琴设计.docx_第19页
第19页 / 共29页
基于单片机的电子琴设计.docx_第20页
第20页 / 共29页
亲,该文档总共29页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

基于单片机的电子琴设计.docx

《基于单片机的电子琴设计.docx》由会员分享,可在线阅读,更多相关《基于单片机的电子琴设计.docx(29页珍藏版)》请在冰点文库上搜索。

基于单片机的电子琴设计.docx

基于单片机的电子琴设计

河南理工大学

《单片机应用与仿真训练》设计报告

 

题目:

基于单片机的电子琴设计

 

姓名:

学号:

专业班级:

指导老师:

所在学院:

电气工程与自动化学院

 

2012年5月18日

摘要

单片机即单片微型计算机(Single-ChipMicrocomputer),是集CPU,RAM,ROM,定时,计数和多种接口于一体的微控制器。

其中51单片机是各种单片机中最为典型和最有代表性的一种,广泛应用于各个领域。

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

而单片机具有强大的控制功能和灵活的编程实现特性,它已经溶入现代人们的生活中,成为不可替代的一部分。

本文的主要内容是用AT89S52单片机为核心控制元件,设计一个电子琴,以单片机作为主控核心,与键盘、蜂鸣器等模块组成核心主控制模块。

在主控模块上设有11个按键和蜂鸣器,利用蜂鸣器作为发声部件,两个数码管作为显示部件,实现高音、中音、低音的1、2、3、4、5、6、7的发声与显示,并存储一首歌曲的内容,可实现自动播放。

一首音乐是许多不同的音阶组成的,而每个音阶对应着不同的频率,可以利用不同的频率的组合,构成我们所要的设定的音乐,利用单片机的定时/计数器T0来产生这样方波频率信号,因此,只要将一首歌曲的音阶对应频率关系对照即可。

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

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

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

本系统运行稳定,其优点是硬件电路简单,软件功能完善,控制系统可靠,性价比高等,具有一定的实用和参考价值。

 

目录

1概述…………………………………………………………………………………3

1.1课题开发背景…………………………………………………………………3

1.2设计任务与要求………………………………………………………………3

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

2.1系统组成及总体框图…………………………………………………………4

2.2硬件电路图……………………………………………………………………4

2.2.1电路总接线图……………………………………………………………4

2.2.2单片机最小应用系统……………………………………………………5

2.2.3数码管显示模块…………………………………………………………7

2.2.4按键及声音控制模块……………………………………………………7

2.3元件介绍………………………………………………………………………8

2.3.1AT89S52……………………………………………………………………8

2.3.2LED数码管………………………………………………………………10

3软件设计…………………………………………………………………………12

3.1音乐相关知识简述…………………………………………………………12

3.2利用单片机实现节拍控制原理……………………………………………12

3.3系统总体功能流程图………………………………………………………13

4Proteus软件仿真………………………………………………………………14

4.1仿真图形……………………………………………………………………14

4.2系统调试……………………………………………………………………14

4.2.1软件仿真调试…………………………………………………………14

4.2.2软件调试………………………………………………………………15

5课程设计体会……………………………………………………………………16

参考文献……………………………………………………………………………16

附:

源程序代码……………………………………………………………………17

 

1概述

1.1课题开发背景

随着电子科技的飞速发展,电子技术正在逐渐改善着人们的学习、生活、工作,因此开发本系统希望能够给人们多带来一点生活上的乐趣。

基于当前市场上的玩具市场需求量大,其中电子琴就是一个很好的应用方面。

单片机技术使我们可以利用软硬件实现电子琴的功能,从而实现电子琴的微型化,可以用作玩具琴、音乐转盘以及音乐童车等等。

并且可以进行一定的功能扩展。

不但可以实现对乐曲的演奏,同时还具有存储音乐、播放歌曲以及显示按键的功能,使该设计功能更加完善。

1.2设计任务与要求

利用所给键盘的1,2,3,4,5,6,7,七个按键,能够发出7个不同的音调,而且有一个按键可以自动播放歌曲,要求按键按下时发声,松开延时一小段时间,中间再按别的键则发另外一音调的声音,当系统扫描到键盘按下,则快速检测出是哪一个按键被按下,然后单片机的定时器启动,发出一定频率的脉冲,该频率的脉冲经喇叭驱动电路放大滤波后,就会发出相应的音调。

如果在前一个按下的键发声的同时有另一个按键被按下,则启动中断系统。

前面的发音停止,转到后按的键的发音程序。

发出后按的键的音调。

 

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

2.1系统组成及总体框图

该设计方案是通过按键随意按下所要表达的音符,作为电平送给主体电路,中央处理器通过识别,解码输出音符,在扬声器中发出有效的声音。

通过这样可以不断的弹奏我们想要的音符或者是音调,电路由复位电路,指示灯电路,和功能按键电路组成,通过功能键可以选择播放音乐或者弹奏音节,硬件主要有下面几个部分组成。

 

图2-1电子琴硬件设计框图

在本设计中,采用P1.0-P1.6口作为七个音符的输入,通过按下其中任一个键实现1,2,3,4,5,6,7的演奏,P3.0-P3.3口四位作为按键输入实现低、中、高音切换,P0、P2口作为显示输出,实现音符显示和音调显示,P3.4接蜂鸣器作为声音输出,实现音符发声和音乐歌曲播放功能。

2.2硬件电路图

2.2.1电路总接线图

如图所示,本设计包括单片机芯片AT89S52最小应用系统、键盘输入电路、数码管显示电路、蜂鸣器发声电路等模块组成。

图2.1电路总接线图

2.2.2单片机最小应用系统

单片机加上适当的外围器件(保证单片机系统运行的最小外围器件)和应用程序,构成的应用系统称为最小系统。

包括单片机、复位电路和时钟电路,

图2.2单片机最小应用系统接线图

复位电路采用按键复位方式,若要复位,只需按下复位按钮,此时电源Vcc经电阻器R1、R2分压,在RST端产生一个复位高电平。

 

图2.3按键复位电路图

时钟电路用于产生单片机工作所需要的时钟信号,时序所研究的是指令执行中各信号之间的相互关系。

单片机本身如同一个复杂的同步时序逻辑电路,为了保证同步工作方式的实现,电路应在唯一的时钟信号控制下严格地按时序进行工作。

AT89S52内部有一个用于构成振荡器的高增益反相放大器,引脚XTAL1和XTAL2上外接时钟源即可构成时钟电路

图2.4时钟电路图

2.2.3数码管显示模块

数码管显示模块核心是共阳级数码管,通过来自单片机I/O口的电平高低来点亮和熄灭数码管上的发光二极管,通过单片机送来的数码管显示编码可以在数码管上显示数字和字符,可以很容易地理解按键按下所对应的音符。

图2.5数码管显示模块电路原理图

2.2.4按键及声音控制模块

如图2.6、2.7所示,音节按键从P1口进行输入,实现1,2,3,4,5,6,7,播放。

音调切换按键从P3.0-P3.3口输入,实现高、中、低音切换及音乐歌曲播放控制。

蜂鸣器接P3.4实现声音输出。

图2.6按键输入电路图

图2.7音调切换按键输入及发声输出电路图

2.3元件介绍

2.3.1AT89S52

一、功能特性:

AT89S52是一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器。

使用Atmel公司高密度非易失性存储器技术制造,与工业80C51产品指令和引脚完全兼容。

片上Flash允许程序存储器在系统可编程,亦适于常规编程器。

在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得AT89S52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。

AT89S52具有以下标准功能:

8k字节Flash,256字节RAM,32位I/O口线,看门狗定时器,2个数据指针,三个16位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。

另外,AT89S52可降至0Hz静态逻辑操作,支持2种软件可选择节电模式。

空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。

掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止[1]。

二、主要性能:

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

0Hz~33Hz 、三级加密程序存储器 、32个可编程I/O口线 、三个16位定时器/计数器八个中断源、全双工UART串行通道、低功耗空闲和掉电模式、掉电后中断可唤醒、看门狗定时器、双数据指针、掉电标识符[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的一些特殊功能口,如下表所示:

 

表2.1各管脚其它功能

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脚两个机器周期的高电平时间。

ALE/PROG:

当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。

在FLASH编程期间,此引脚用于输入编程脉冲。

在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。

因此它可用作对外部输出的脉冲或用于定时目的。

然而要注意的是:

每当用作外部数据存储器时,将跳过一个ALE脉冲。

如想禁止ALE的输出可在SFR8EH地址上置0。

此时,ALE只有在执行MOVX,MOVC指令是ALE才起作用。

另外,该引脚被略微拉高。

如果微处理器在外部执行状态ALE禁止,置位无效。

/PSEN:

外部程序存储器的选通信号。

在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。

但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。

/EA/VPP:

当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。

注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。

在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。

XTAL1:

反向振荡放大器的输入及内部时钟工作电路的输入。

XTAL2:

来自反向振荡器的输出

2.3.2LED数码管

本次设计的显示电路采用LED数码管显示,LED(Light-EmittingDiode)是一种外加电压从而流过电流并发出可见光的器件。

LED是属于电流控制器件,使用时必须加限流电阻。

LED有单个LED和八段LED之分,也有共阴和共阳两种。

常用的七段显示器的结构如图下图所示。

(a)外形(b)共阳极(C)共阴极

图2.5数码管引脚图

发光二极管的阳极连在一起的称为共阳极显示器(如图b所示),阴极连在一起的称为共阴极显示器(如图c所示)。

1位显示器由八个发光二极管组成,其中七个发光二极管a~g控制七个笔画(段)的亮或暗,另一个控制一个小数点的亮和暗,这种笔画式的七段显示器能显示的字符较少,字符的开头有些失真,但控制简单,使用方便[5]。

此外,要画出电路图,首先还要搞清楚他的引脚图的分布,在了解了正确的引脚图后才能进行正确的字型段码编码。

才能显示出正确的数字来。

 

3软件设计

本软件设计关键是要实现一种由单片机控制的简单音乐发生器,它由7音节组成的的键盘,用户可以根据乐谱在键盘上进行演奏,音乐发生器会根据用户的弹奏,通过蜂鸣器将音乐播放出来。

3.1音乐相关知识简述

音乐听起来有的高,有的低,这就叫音高,音高是由发音物体振动频率的高低决定的,频率高声音就高,频率低,声音就低,不同音调的乐音是用C、D、E、F、G、A、B表示的,这7个字母就是乐音的音名,它们一般依次唱成DO、RE、MI、FA、SO、LA、SI,这是唱曲时乐音的发音,所以叫唱名。

音持续时间的长短即时值,一般用拍数表示,休止符表示暂停发音。

一首音乐是由许多不同的音符组成的,而每个音符对应着不同的频率,这样就可以利用不同频率的组合,加以与拍数对应的延时,构成音乐。

3.2利用单片机实现节拍控制原理

除了音符以外,节拍也是音乐的关键组成部分。

节拍实际上就是音持续时间的长短,在单片机系统中可以用延时来实现,如果1/4拍的延时是0.4秒,则1拍的延时是1.6秒,只要知道1/4拍的延时时间,其余的节拍延时时间就是它的陪数。

如果单片机要自己播放音乐,那么必须在程序设计中考虑到节拍的设置,由于本例实现的音乐发生器是由用户通过键盘输入弹奏乐曲的,所以节拍由用户掌握,不由程序控制。

对于不同的曲调我们也可以用单片机的另外一个定时/计数器来完成[7]。

音乐的音拍,一个节拍为单位(C调)具体如下表:

表3.1音乐节拍表

曲调值

DELAY

曲调值

DELAY

调4/4

125ms

调4/4

62ms

调3/4

187ms

调3/4

94ms

调2/4

250ms

调2/4

125ms

了解音乐的一些基本知识后可知,产生不同频率的音频脉冲即能产生音乐,对于单片机而言,产生不同频率有脉冲非常方便,可以利用它的定时/计数器来产生这样的方波频率信号,因此,需要弄清楚音乐中的音符和对应的频率,以及单片机定时计数的关系。

在本设计中,单片机工作于12MHZ时钟频率,使用其定时/计数器T0,工作模式为1,改变计数值TH0和TL0可以产生不同频率的脉冲信号,在此情况下,C调的各音符频率与计数值T的对照如表3-2所示。

T的值决定了TH0和TL0的值,其关系为:

TH0=T/256,TL0=T/256

3.3系统总体功能流程图

图3.1主程序框图

 

4Proteus软件仿真

4.1仿真图形

图4.1Proteus仿真图

4.2系统调试

电路调试是整个系统功能否实现的关键步骤,我们将整个调试过程分为三大部分:

硬件调试、软件调试和综合调试。

4.2.1软件仿真调试

软件仿真调试主要是针对单片机部分进行调试。

在软件运行前,先确保电路中连线正确,这一工作是整个调试工作的第一步,也是非常重要的一个步骤。

在这部分调试中主要通过目测,用来完成检测电路中是否存在断路或者短路情况等。

在确保软件仿真电路正常,无异常情况(断路或短路)方可进行软件运行,在本次设计中,软件运行主要是测试单片机键盘控制部分、数码管点亮部分、和音频功放电路调试。

A、数码管LED电路调试:

软件运行,随机按下按钮可以看到数码管显示数字;

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

软件运行,随机按动键盘可以发现各个按键对应的音正确。

4.2.2仿真调试

调试主要方法和技巧:

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

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

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

 

5课程设计体会

这次实验总共经历了两周的时间,从功能需求分析到功能分析,从程序的设计到程序的调试,下载,最后终于完成了这次具有实际使用价值的实验。

在设计中我运用自己平时学到的一些知识,以及自己在课下所查找的进行设计,刚开始遇到很多困难,包括对使用汇编语言环境语言的不熟悉,后来一起和同学研究,而一些课程设计中的故障,也请同学帮忙参考一下,最终找到了解决问题的答案,在程序修改中用了大量时间,但是是值得的。

我感觉自己在设计方面提高很大,特别是在设计程序时,逻辑思维能力有所加强,同时对以前所学的知识有了更深刻的认识,并进一步的得到了巩固和提高,充分的做到了理论联系实际,也使我认识到理论与实际的差别,通过该课程设计,不但对单片机有了较为全面的认识,而且相关的知识也有了足够的掌握,我感觉最重要的还是设计思维的形成。

更发现自己在平时学习中的缺陷。

对以后的学习也有很大的帮助。

这次的单片机课程设计,我所收获的不仅是学习知识方面,更多的是生活方面。

我了解到,在我们生活中,应该学会与别人共同分享,分享知识,分享问题,这样更有助于我们的交流,有利于我们共同进步,有利于我们对学习养成良好的兴趣。

最后,我要感谢那些带我们课程设计的老师们,感谢你们对我们的耐心,感谢你们对我们的鼓励,让我们有信心继续下去,成功走到最后。

参考文献

[1]张毅刚.MCS-51单片机应用设计[M].哈尔滨工业大学出版社,2004

[2]龙威林.单片机应用入门:

AT89S51和AVR[M].北京:

化学工业出版社,2008

[3]张虹.单片机原理及应用[M].北京:

中国电力出版社,2009.

[4]张毅刚.MCS-51单片机应用设计[M].哈尔滨工业大学出版社,2004

[5]徐新艳.单片机原理、应用与实践[M].北京:

高等教育出版社,2005年3月.

 

附:

源程序代码

ORG00H

JMPSTART

ORG0BH

JMPEXT0

ORG1BH

JMPEXT1

START:

MOVTMOD,#00010001B

MOVIE,#10001010B

SETBP3.4

MOVC,P3.3

JCSTART1

JMPSTART2

START1:

JNBP3.0,DY

JMPSTART11

DY:

MOVP2,#06H

JNBP1.0,DK1

JNBP1.1,DK2

JNBP1.2,DK3

JNBP1.3,DK4

JNBP1.4,DK5

JNBP1.5,DK6

JNBP1.6,DK7

JMPSTART

DK1:

MOVP0,#06H

MOVR1,#0F8H

MOVR0,#8CH

MOVTH0,R1

MOVTL0,R0

SETBTR0

LCALLDELAY

CLRTR0

JMPSTART

DK2:

MOVP0,#5BH

MOVR1,#0F9H

MOVR0,#5BH

MOVTH0,R1

MOVTL0,R0

SETBTR0

LCALLDELAY

CLRTR0

JMPSTART

DK3:

MOVP0,#4FH

MOVR1,#0FAH

MOVR0,#15H

MOVTH0,R1

MOVTL0,R0

SETBTR0

LCALLDELAY

CLRTR0

JMPSTART

DK4:

MOVP0,#66H

MOVR1,#0FAH

MOVR0,#67H

MOVTH0,R1

MOVTL0,R0

SETBTR0

LCALLDELAY

CLRTR0

JMPSTART

DK5:

MOVP0,#6DH

MOVR1,#0FBH

MOVR0,#04H

MOVTH0,R1

MOVTL0,R0

SETBTR0

LCALLDELAY

CLRTR0

JMPSTART

DK6:

MOVP0,#7DH

MOVR1,#0FBH

MOVR0,#90H

MOVTH0,R1

MOVTL0,R0

SETBTR0

LCALLDELAY

CLRTR0

JMPSTART

DK7:

MOVP0,#07H

MOVR1,#0FCH

MOVR0,#0CH

MOVTH0,R1

MOVTL0,R0

SETBTR0

LCALLDELAY

CLRTR0

JMPSTART

START11:

JNBP3.1,ZY

JMPSTART12

ZY:

MOVP2,#5BH

JNBP1.0,ZK1

JNBP1.1,ZK2

JNBP1.2,ZK3

JNBP1.3,ZK4

JNBP1.4,ZK5

JNBP1.5,ZK6

JNBP1.6,ZK7

JMPSTART

ZK1:

MOVP0,#06H

MOVR1,#0FCH

MOVR0,#44H

MOVTH0,R1

MOVTL0,R0

SETBTR0

LCALLDELAY

CLRTR0

JMPSTART

ZK2:

MOVP0,#5BH

MOVR1,#0FCH

MOVR0,#0ACH

MOVTH0,R1

MOVTL0,R0

SETBTR0

LCALLDELAY

CLRTR0

JMPSTART

ZK3:

MOVP0,#4FH

MOVR1,#0FDH

MOVR0,#09H

MOVTH0,R1

MOVTL0,R0

SETBTR0

LCALLDELAY

CLRTR0

JMPSTART

ZK4:

MOVP0,#66H

MOVR1,#0FDH

MOVR0,#34H

MOVTH0,R1

MOVTL0,

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

当前位置:首页 > 总结汇报 > 学习总结

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

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