基于51单片机的电子琴设计Word文档格式.docx

上传人:b****4 文档编号:8319492 上传时间:2023-05-11 格式:DOCX 页数:19 大小:875.09KB
下载 相关 举报
基于51单片机的电子琴设计Word文档格式.docx_第1页
第1页 / 共19页
基于51单片机的电子琴设计Word文档格式.docx_第2页
第2页 / 共19页
基于51单片机的电子琴设计Word文档格式.docx_第3页
第3页 / 共19页
基于51单片机的电子琴设计Word文档格式.docx_第4页
第4页 / 共19页
基于51单片机的电子琴设计Word文档格式.docx_第5页
第5页 / 共19页
基于51单片机的电子琴设计Word文档格式.docx_第6页
第6页 / 共19页
基于51单片机的电子琴设计Word文档格式.docx_第7页
第7页 / 共19页
基于51单片机的电子琴设计Word文档格式.docx_第8页
第8页 / 共19页
基于51单片机的电子琴设计Word文档格式.docx_第9页
第9页 / 共19页
基于51单片机的电子琴设计Word文档格式.docx_第10页
第10页 / 共19页
基于51单片机的电子琴设计Word文档格式.docx_第11页
第11页 / 共19页
基于51单片机的电子琴设计Word文档格式.docx_第12页
第12页 / 共19页
基于51单片机的电子琴设计Word文档格式.docx_第13页
第13页 / 共19页
基于51单片机的电子琴设计Word文档格式.docx_第14页
第14页 / 共19页
基于51单片机的电子琴设计Word文档格式.docx_第15页
第15页 / 共19页
基于51单片机的电子琴设计Word文档格式.docx_第16页
第16页 / 共19页
基于51单片机的电子琴设计Word文档格式.docx_第17页
第17页 / 共19页
基于51单片机的电子琴设计Word文档格式.docx_第18页
第18页 / 共19页
基于51单片机的电子琴设计Word文档格式.docx_第19页
第19页 / 共19页
亲,该文档总共19页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

基于51单片机的电子琴设计Word文档格式.docx

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

基于51单片机的电子琴设计Word文档格式.docx

4.1Proteus软件简介1..0

4.2仿真调试1..2.

5设计心得1..3.

6参考文献1..4.

附录1..5..

附录A元件清单、器件识别与检测1.5

附录B程序源代码1..6

1系统方案设计

1.1设计指标

1设计一个简易的八音符电子琴,它可通过按键输入来控制音响。

2演奏时可以选择是手动演奏(由键盘输入)还是自动演奏已存曲目,并且在演奏完已存曲目后可自动复位。

1.2系统方案综述

从系统实现的功能上来看,电子琴的设计主要利用所给键盘的1,2,3,4,5,6,7,8八个键,能够发出八个不同的音调,并且要求按下按键发声,松开延时一段时间停止,中间再按别的键再发出另外一种音调的声音。

从系统硬件结构上来看,我们主要使用到AT89C51单片机,复位电路以及开关等。

将这些硬件电路有机的结合起来使之满足电子琴的实现硬件需要。

从音乐产生的原理方面来看,通过控制单片机的定时器的定时时间产生不同频率的音频脉冲,经放大驱动发出不同音乐的声音。

用软件延时来控制发音时间的长短。

把音乐的音符和相应的节拍变换为定时常数和延时常数,分别来控制定时器产生的脉冲频率和发出该音频脉冲持续时间。

因此,我们可以综合上述方案设计原理,从软件和硬件两部分进行有计划有步骤的分析和设计。

1.3系统设计思路

当系统扫描到键盘上有键被按下,则快速检测是哪一个键被按下,然后单片机的定时器被启动,发出一定频率的脉冲,该频率的脉冲输入到蜂鸣器后,就会发出相应的音调,如果在前一个按下的键发声的同时有另一个键被按下,则启动中断系统,前面键的发音停止,转到后按得键的发音程序,发出后按的键的音调。

这样,设计一个时钟方式的电路来产生11.0592MHZ的振荡频率产生时钟脉冲,一个按键电平复位电路对AT89C51单片机进行复位,8个开关分别从P2.0,P2.1,P2.2,P2.3,P2.4,P2.5,P2.6,P2.7输出,用于产生八个不同频率的音,一个扬声器电路,从P3.2连接一个开关播放已存曲目,从P3.3与扬声器之间连接

一个上拉电阻和三极管,驱动扬声器响应,以此来设计硬件电路。

总体框图如图

1-1所示。

数码管

键盘矩阵

扬声器

1-1总体框图

2硬件设计

2.1电路图

硬件电路图如图2-1所示。

2.2单片机AT89C51简介

AT89C51是51系列单片机的一个型号,它是STC公司生产的。

AT89C51是

个低电压,高性能CMOS8位单片机,片内含8kbytes的可反复擦写的Flash只读程序存储器和256bytes的随机存取数据存储器(RAM),器件采用STC公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元,功能强大的STC89C51单片机可提供许多较复杂系统控制应用场合。

AT89C51有40个引脚,32个外部双向输入/输出(I/O)端口,同时内含2个外中断口,3个16位可编程定时计数器,2个全双工串行通信口,2个读写口线,STC89C51可以按照常规方法进行编程,但不可以在线编程(S系列的才支持在线编程)。

其将通用的微处理器和Flash存储器结合在一起,特别是可反复擦写的Flash存储器可有效地降低开发成本AT89C51有PDIP、PQFP/TQFP及PLCC等三种封装形式,以适应不同产品的需求。

其封装及引脚图如图2-2。

图2-2单片机外封装及单片机引脚图

AT89C51具体介绍如下:

1主电源引脚(2根)

VCC(Pin40):

电源输入,接+5V电源

GND(Pin20):

接地线

2外接晶振引脚(2根)

XTAL1(Pin19):

片内振荡电路的输入端

XTAL2(Pin20):

片内振荡电路的输出端

3控制引脚(4根)

RST/VPP(Pin9):

复位引脚,引脚上出现2个机器周期的高电平将使单片机复位。

ALE/PROG(Pin30):

地址锁存允许信号

PSEN(Pin29):

外部存储器读选通信号EA/VPP(Pin31):

程序存储器的内外部选通,接低电平从外部程序存储器读指令,如果接高电平则从内部程序存储器读指令。

4可编程输入/输出引脚(32根)

AT89C52单片机有4组8位的可编程I/O口,分别为P0、P1、P2、P3口,每个口有8位(8根引脚),共32根。

P0口(Pin39~Pin32):

8位双向I/O口线,名称为P0.0~P0.7。

P1口(Pin1~Pin8):

8位准双向I/O口线,名称为P1.0~P1.7。

P2口(Pin21~Pin28):

8位准双向I/O口线,名称为P2.0~P2.7。

P3口(Pin10~Pin17):

8位准双向I/O口线,名称为P3.0~P3.7。

2.3单片机的工作过程

单片机自动完成赋予它的任务的过程,也就是单片机执行程序的过程,即一条条执行的指令的过程,所谓指令就是把要求单片机执行的各种操作用的命令的形式写下来,这是在设计人员赋予它的指令系统所决定的,一条指令对应着一种基本操作;

单片机所能执行的全部指令,就是该单片机的指令系统,不同种类的单片机,其指令系统亦不同。

为使单片机能自动完成某一特定任务,必须把要解决的问题编成一系列指令(这些指令必须是选定单片机能识别和执行的指令),这一系列指令的集合就成为程序,程序需要预先存放在具有存储功能的部件——存储器中。

存储器由许多存储单元(最小的存储单位)组成,就像大楼房有许多房间组成一样,指令就存放在这些单元里,单元里的指令取出并执行就像大楼房的每个房间的被分配到了唯一一个房间号一样,每一个存储单元也必须被分配到唯一的地址号,该地址号称为存储单元的地址,这样只要知道了存储单元的地址,就可以找到这个存储单元,其中存储的指令就可以被取出,然后再被执行。

程序通常是顺序执行的,所以程序中的指令也是一条条顺序存放的,单片机在执行程序时要能把这些指令一条条取出并加以执行,必须有一个部件能追踪指令所在的地址,这一部件就是程序计数器PC(包含在CPU中),在开始执行程序时,给PC赋以程序中第一条指令所在的地址,然后取得每一条要执行的命令,PC在中的

内容就会自动增加,增加量由本条指令长度决定,可能是1、2或3,以指向下

2-3所示。

一条指令的起始地址,保证指令顺序执行。

单片机最小应用系统如

 

图2-3单片机最小应用系统

2.4键盘电路

本实验还用到单独的一个按键用于控制播放音乐。

该键与单片机的P3.2口连接可见主电路图单片机电子琴硬件连接图。

2.5显示电路

8段LED数码管是利用8个LED(发光二极管)外加一个小数点的LED组合而成的显示设备,可以显示0—9等10个数字和小数点,使用非常广泛。

这类数码管可以分为共阳极与共阴极两种,共阳极就是把所有LED的阳极连接到

共同接点com,而每个LED的阴极分别为a、b、c、d、e、f、g及dp(小数点);

共阴极则是把所有LED的阴极连接到共同接点com,而每个LED的阳极分别为

a、b、c、d、e、f、g及dp(小数点),如下图所示。

图中的8个LED分别与上面那个图中的A—DP各段相对应,通过控制各个LED的亮灭来显示数字,如图2-5所示。

VCC

图2-5数码管共阳极与共阴极原理图

选用单片机的P0口P0.0到P0.7分别接在LED端的a—dp上来控制LED各个段码灯的控制,来实现数字,例如要显示低音符3,只需将共阴极的数码管的a、b、e、f接高电平即可显示“c”共阳极的对应的接低电平。

这里我们选用共阳极的LED数码管,对于中音音符3,则需要将数码管的b、c、d、e、g置于低电平。

数码管就会显示“3”。

具体可参考数码管相关的书籍。

LED数码管与单片机连接图如图2-6所示。

3

图2-6单片机与数码管连接图

2.6声音电路

喇叭在数字电路中的应用,可以通过不断的给喇叭通断电,使其产生声音,且通电断电时间的间隔不同其声音的音色就不同,所以通过控制通断时间就可以控制不同的音阶产生。

这里我们选用单片机的P1.0口来控制喇叭的通断电。

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

单片机与喇叭接线图如图2-7所示。

图2-7单片机电子琴放音控制系统

3系统软件设计

一首乐曲是由多个音符构成的。

每一个音符都对应着一个确定的频率。

另外,每一个音符根据乐曲的要求和设定一个确定的节拍。

声音的产生就是是单片机产生一定的延时,所以延时不同,生成的音乐就不同。

我们利用定时器计数的方式产生延时的效果,就可以将歌曲中每一个音符所对应的音率换算成相应的计数初值。

然后,将这首乐曲所有音符的计数初值编成一个表,并把每一个音符的计数初值。

然后,将这首乐曲所有音符的计数初值编成一个表,并把每一个音符的计数初值与一个确定的数字码来联系。

这个数组码为简谱码。

这里我们选用播放的

歌曲为祝你平安和八月桂花遍地开。

软件设计流程图如图3-1所示

图3-1软件设计流程图

3.1延时程序设计

因程序设计中很多都要用到延时程序所以延时程序用其程序如下:

delay()函数来实现,

voidDelay_xMs(unsignedintx)

{

unsignedinti,j;

for(i=0;

i<

x;

i++)//1ms延时{

for(j=0;

j<

3;

j++);

}

3.2定时器初始化及其中断函数

//定时器1的初始化

voidTime1_Init()

TMOD=TMOD|0x10;

//

EA=1;

ET1=1;

TH1=0xD8;

TL1=0xEF;

//定时器中断函数

voidTime1_Int()interrupt3//

Count++;

定时器1,方式1

外部中断1

3.3示例音乐播放程序

while(!

eg_music)

P0=0xc6;

//C表示播放示例音乐

Time1_Init();

Play_Song(0);

//调用示例音乐函数TR0=0;

3.4单独按键中断处理函数

voidinit_interrupt(void)interrupt1

TR0=0;

TH0=table[key]/256;

TL0=table[key]%256;

speak=~speak;

TR0=1;

}

4实验结果与分析

4.1Proteus软件简介

ProteusISIS是英国Labcenter公司开发的电路分析与实物仿真软件。

它运行于Windows操作系统上,可以仿真、分析各种模拟器件和集成电路,该软件的特点是:

①实现了单片机仿真和数字电路仿真相结合。

具有模拟电路仿真、数字电路仿真、单片机及其外围电路组成的系统的仿真、RS232动态仿真、I2C调试器、SPI调试器、键盘和LCD系统仿真的功能;

有各种虚拟仪器,如示波器、逻辑分

析仪、信号发生器等。

②支持主流单片机系统的仿真。

目前支持的单片机类型有:

68000系列、8051系列、AVR系列、PIC12系列、PIC16系列、PIC18系列、Z80系列、HC11系列以及各种外围芯片。

3提供软件调试功能。

在硬件仿真系统中具有全速、单步、设置断点等调试功能,同时可以观察各个变量、寄存器等的当前状态,因此在该软件仿真系统中,也必须具有这些功能;

同时支持第三方的软件编译和调试环境,如KeilC51uVision2等软件。

4具有强大的原理图绘制功能。

总之,该软件是一款集单片机和电路分析于一身的仿真软件,功能极其强大。

单击屏幕左下方的“开始”→“程序”→“Proteus7.7Professional”→“ISIS7.1Professional”,如图4-1所示。

图4-1Proteus启动时的屏幕

ProteusISIS的工作界面是一种标准的Windows界面,如图4-2所示。

包括:

标题栏、主菜单、标准工具栏、绘图工具栏、状态栏、对象选择按钮、预览对象方位控制按钮、仿真进程控制按钮、预览窗口、对象选择器窗口、图形编辑窗口。

图4-2ProteusISIS的工作界面

运行Proteus程序后,进入软件的主界面。

通过左侧工具栏中的P(从库中

选择元件命令)命令,在PickDevices左侧窗口中选择所需元件的关键字,然后放置元件并调整方向和位置以及参数设置,进行连线。

最后载入hex文件后可以进行模拟仿真,可以全速运行也可以单步调试运行。

图4-3Proteus运行按键

4.2仿真调试

在Proteus中添加单片机AT89C51,2个100Ω电阻,,2个30pF电容,2个10μF电解电容,1个共阳极数码管,1个共阳极晶振,10个按钮开关和1个扬声器即可得到仿真原理图。

按下按钮开关“1”,扬声器发出do声,并且数码管显示“1”。

如图4-5示。

图4-5按下按键1的仿真图

按下按钮开关“EG”,扬声器播放示例曲目,并且数码管显示“C”。

如图5-6示

5设计心得

这次创新实践周活动加深了我们对单片机以及C51语言的学习与应用,不但对单片机有了较为全面的认识,而且相关的知识也有了足够的掌握,最重要的还是设计思维的形成。

与此同时,我们还做到对μVision和Proteus两个软件更加熟练的应用。

在之前的学习过程中没有能够很好的掌握单片机的学习,在很多地方还有生疏和遗漏,并且在此次设计电子琴过程中也遇到困难不能自已独立解决。

电路初步焊接完成后,发现扬声器声音较小,分析原因是P3.3电流太小,无法正常驱动扬声器。

在老师指导下采用了c8550三极管结合上拉电阻的方式,增大驱动电流,最终扬声器正常发声。

这次创新实践周活动,增加了自己的编程能力,还提高了自己的动手能力,并且编程的逻辑思维能力也有所加强。

通常设计程序时都是按照先总后分、先分后总的原则来设计,这样增强了程序的逻辑性,在设计时不易出错而且出错时易查找。

同时我们也深感“认真严谨”这个词的重要性,一点点小的马虎,便会导致整个程序不能正常运行。

在今后的学习中,我将继续保持严谨的学习态度。

与此同时,在同学的帮助下,我们更体会到了相互学习的重要性。

总之,这次活动让我们受益匪浅。

6参考文献

[1]《单片机的C语言程序设计与应用——基于(Proteus仿真)(第2版)》姜志海赵海雷陈松编著电子工业出版社

[2]《C语言程序设计(第4版)》潭浩强编著清华大学出版社

[3]《基于Proteus的电路及单片机设计与仿真(第2版)》周润景张丽娜丁莉编著北京航空航天大学出版社

[4]《单片机系统设计与仿真——基于Proteus》肖婧编著北京航空航天大学出版社

附录

附录A元件清单、器件识别与检测

表1

元件名称

型号

主要参数

数量

备注

单片机

AT89C51

4KB,33MHz

1

电阻

RES

100Ω

2

电容

CAP

30pF

电解电容

A700D107M006

10μF

ATE018

7SEG-COM-AN

共阳极

ODE

晶振

CRYSTAL

开关

BUTTON

10

SOUNDER

器件识别与检测:

P0、P1、P2、P3:

AT89C51单片机有4组8位的可编程I/O口,分别为

P1口(Pin1~Pin8):

P2口(Pin21~Pin28):

P3口(Pin10~Pin17):

所用的一般元器件有电阻、电容、开关、扬声器、数码管。

晶振是一种能把电能和机械能相互转化的晶体在共振的状态下工作,以提供稳定,精确的单频振荡。

它结合单片机内部的电路,产生单片机所必须的时钟频率,单片机的一切指令的执行都是建立在这个基础上的,晶振的提供的时钟频率越高,那单片机的运行速度也就越快,一般为6MHZ或12MHZ。

而数码管LED数码管(LEDSegmentDisplays)是由多个发光二极管封装在一起组成“8”字型的器件,引线已在内部连接完成,只需引出它们的各个笔划,公共电极。

LED数码管常用段数一般为7段有的另加一个小数点,还有一种是类似于3位“+1”型。

位数有半位,1,2,3,4,5,6,8,10位等等,LED数码管根据LED的接法不同分为共阴和共阳两类,它们的发光原理是一样的,只是它们的电源极性不同而已。

颜色有红,绿,蓝,黄等几种。

附录B程序源代码

#include<

reg51.h>

sbiteg_music=P3^2;

//

播放音乐控制位

sbitspeak=P3^3;

喇叭控制位

inttemp,key=16;

unsignedcharCount;

code

unsigned

char

led[]={0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0xff};

共阳极数码管显

示按键号

//七个音符的号码

codeunsignedint

table[]={63628,63835,64021,64103,64260,64400,64524,64550,64580,64684,

64777,64820,64898,64968,65030,65050,65058,65110,65157,65178,65217,65252,65283,65310};

//示例音乐

unsignedcharcode

SONG[]={0x26,0x20,0x20,0x20,0x20,0x20,0x26,0x10,0x20,0x10,0x20,0x80,0x26,0x20,0x30,0x20,0x30,0x20,0x39,0x10,0x30,0x10,0x30,0x80,0x26,0x20,0x20,0x20,0x20,0x20,0x1c,0x20,0x20,0x80,0x2b,0x20,0x26,0x20,0x20,0x20,0x2b,0x10,0x26,0x10,0x2b,0x80,0x26,0x20,0x30,0x20,0x30,0x20,0x39,0x10,0x26,0x10,0x26,0x60,0x40,0x10,0x39,0x10,0x26,0x20,0x30,0x20,0x30,0x20,0x39,0x10,0x26,0x10,0x26,0x80,0x26,0x20,0x2b,0x10,0x2b,0x10,0x2b,0x20,0x30,0x10,0x39,0x10,0x26,0x10,0x2b,0x10,0x2b,0x20,0x2b,0x40,0x40,0x20,0x20,0x10,0x20,0x10,0x2b,0x10,0x26,0x30,0x30,0x80,0x18,0x20,0x18,0x20,0x26,0x20,0x20,0x20,0x20,0x40,0x26,0x20,0x2b,0x20,0x30,0x20,0x30,0x20,0x1c,0x20,0x20,0x20,0x20,0x80,0x1c,0x20,0x1c,0x20,0x1c,0x20,0x30,0x20,0x30,0x60,0x39,0x10,0x30,0x10,0x20,0x20,0x2b,0x10,0x26,0x10,0x2b,0x10,0x26,0x10,0x26,0x10,0x2b,0x10,0x2b,0x80,0x18,0x20,0x18,0x20,0x26,0x20,0x20,0x20,0x20,0x60,0x26,0x10,0x2b,0x20,0x30,0x20,0x30,0x20,0x1c,0x20,0x20,0x20,0x20,0x80,0x26,0x20,0x30,0x10,0x30,0x10,0x30,0x20,0x39,0x20,0x26,0x10,0x2b,0x10,0x2b,0x20,0x2b,

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

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

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

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