精品基于单片机的简易电子琴设计40C语言编程41单片机毕业论文报告Word文档下载推荐.docx

上传人:b****3 文档编号:16654490 上传时间:2022-11-25 格式:DOCX 页数:25 大小:47.21KB
下载 相关 举报
精品基于单片机的简易电子琴设计40C语言编程41单片机毕业论文报告Word文档下载推荐.docx_第1页
第1页 / 共25页
精品基于单片机的简易电子琴设计40C语言编程41单片机毕业论文报告Word文档下载推荐.docx_第2页
第2页 / 共25页
精品基于单片机的简易电子琴设计40C语言编程41单片机毕业论文报告Word文档下载推荐.docx_第3页
第3页 / 共25页
精品基于单片机的简易电子琴设计40C语言编程41单片机毕业论文报告Word文档下载推荐.docx_第4页
第4页 / 共25页
精品基于单片机的简易电子琴设计40C语言编程41单片机毕业论文报告Word文档下载推荐.docx_第5页
第5页 / 共25页
点击查看更多>>
下载资源
资源描述

精品基于单片机的简易电子琴设计40C语言编程41单片机毕业论文报告Word文档下载推荐.docx

《精品基于单片机的简易电子琴设计40C语言编程41单片机毕业论文报告Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《精品基于单片机的简易电子琴设计40C语言编程41单片机毕业论文报告Word文档下载推荐.docx(25页珍藏版)》请在冰豆网上搜索。

精品基于单片机的简易电子琴设计40C语言编程41单片机毕业论文报告Word文档下载推荐.docx

4.2.2程序框图24

4.2.3源程序:

25

5结束语32

致谢33

参考文献34

1引言

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

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

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

本文的主要内容是用AT89S51单片机为核心控制元件,设计一个电子琴。

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

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

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

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

2原理图

图2-1电子琴电路图

2.1系统板硬件连线

系统板硬件连线如图2-1所示,发生模块,键盘模块,及LED显示模块连接如下

1.把“单片机系统”区域中的P1.0端口用导线连接到“音频放大模块”区域中的SPKIN端口上;

2.把“单片机系统“区域中的P3.0-P3.7端口用8芯排线连接到“4X4行列式键盘”区域中的C1-C4 R1-R4端口上;

3.把“单片机系统”区域中的P0.0AD0-P0.7AD7端口用8芯排线连接到“四路静态数码显示模块”区域中的任一个a--systemprogrammable)的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISPFlash存储单元,功能强大的微型计算机的AT89S51可为许多嵌入式控制应用系统提供高性价比的解决方案。

AT89S51具有如下特点:

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

此外,AT89S51设计和配置了振荡频率可为0Hz并可通过软件设置省电模式。

空闲模式下,CPU暂停工作,而RAM定时计数器,串行口,外中断系统可继续工作,掉电模式冻结振荡器而保存RAM的数据,停止芯片其它功能直至外中断激活或硬件复位。

同时该芯片还具有PDIP、TQFP和PLCC等三种封装形式,以适应不同产品的需求。

图3-1管脚图

3.1.1主要功能特性

·

兼容MCS-51指令系统·

32个双向IO口

2个16位可编程定时计数器·

全双工UART串行中断口线

2个外部中断源·

中断唤醒省电模式

看门狗(WDT)电路·

灵活的ISP字节和分页编程

4k可反复擦写ISPFlashROM·

4.5-5.5V工作电压

时钟频率0-33MHz·

128x8bit内部RAM

低功耗空闲和省电模式·

3级加密位

软件设置空闲和省电功能·

双数据寄存器指针

3.1.2引脚功能

VCC(40):

+5V;

GND(20):

接地;

P0口(39-32):

P0口为8位漏极开路双向IO口,每引脚可吸收8个TTL门电流;

P1口(1-8):

P1口是从内部提供上拉电阻器的8位双向IO口,P1口缓冲器能接收和输出4个TTL门电流;

P2口(21-28):

P2口为内部上拉电阻器的8位双向IO口,P2口缓冲器可接收和输出4个TTL门电流;

P3口(10-17):

P3口是8个带内部上拉电阻器的双向IO口,可接收和输出4个TTL门电流,P3口也可作为AT89C51的特殊功能口;

RST(9):

复位输入。

当振荡器复位时,要保持RST引脚2个机器周期的高电平时间;

ALEPROG(30):

当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的低位字节,在FLASH编程期间,此引脚用于输入编程脉冲。

在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的16,它可用作对外部输出的脉冲或用于定时目的,要注意的是,每当访问外部数据存储器时,将跳过1个ALE脉冲;

PSEN(29):

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

在由外部程序存储器取指期间,每个机器周期2次PSEN有效,但在访问外部数据存储器时,这2次有效的PSEN信号将不出现;

EAVPP(31):

当EA保持低电平时,外部程序存储器地址为(0000H-FFFFH)不管是否有内部程序存储器。

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

XTAL1(19):

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

XTAL2(18):

来自反向振荡器的输出;

3.2LM386

LM386是一种音频集成功放,具有自身功耗低、电压增益可调整、电源电压范围大、外接元件少和总谐波失真小等优点,广泛应用于录音机和收音机之中。

LM386内部与通用型集成运放相类似,它是一个三级放大电路。

第一级为差分放大电路,T1和T3、T2和T4分别构成复合管,作为差分放大电路的放大管;

T5和T6组成镜像电流源作为T1和T2的有源负载;

T3和T4信号从管的基极输入,从T2管的集电极输出,为双端输入单端输出差分电路。

使用镜像电流源作为差分放大电路有源负载,可使单端输出电路的增益近似等于双端输出电容的增益。

第二级为共射放大电路,T7为放大管,恒流源作有源负载,以增大放大倍数。

第三级中的T8和T9管复合成PNP型管,与NPN型管T10构成准互补输出级。

二极管D1和D2为输出级提供合适的偏置电压,可以消除交越失真。

引脚2为反相输入端,引脚3为同相输入端。

电路由单电源供电,故为OTL电路。

输出端(引脚5)应外接输出电容后再接负载。

电阻R7从输出端连接到T2的发射极,形成反馈通路,并与R5和R6构成反馈网络,从而引入了深度电压串联负反馈,使整个电路具有稳定的电压增益。

3.2.1LM386的引脚图

图3-3LM386的外形和引脚的排列

LM386的外形和引脚的排列如图3-3所示。

引脚2为反相输入端,3为同相输入端;

引脚5为输出端;

引脚6和4分别为电源和地;

引脚1和8为电压增益设定端;

使用时在引脚7和地之间接旁路电容,通常取10μF。

3.2.2音频放大器电路

图2.3音频放大器电路

3.3LED数码管

图3-47段数码管

数码管(如图3-4所示)使用条件:

a、段及小数点上加限流电阻

b、使用电压:

段:

根据发光颜色决定;

小数点:

根据发光颜色决定

c、使用电流:

静态:

总电流80mA(每段10mA);

动态:

平均电流4-5mA峰值电流100mA

上面这个只是七段数码管引脚图,其中共阳极数码管引脚图和共阴极的是一样的。

数码管使用注意事项说明:

(1)数码管表面不要用手触摸,不要用手去弄引角;

(2)焊接温度:

260度;

焊接时间:

5S

(3)表面有保护膜的产品,可以在使用前撕下来。

4模块原理

4.14X4行列式键盘识别及显示

组成键盘的按键有机械式、电容式、导电橡胶式、薄膜式多种,但不管什么形式,其作用都是一个使电路接通与断开的开关。

目前微机系统中使用的键盘按其功能不同,通常可分为编码键盘和非编码键盘两种基本类型。

编码键盘:

键盘本身带有实现接口主要功能所需的硬件电路。

不仅能自动检测被按下的键,并完成去抖动、防串键等功能,而且能提供与被按键功能对应的键码(如ASCII码)送往CPU。

所以,编码键盘接口简单、使用方便。

但由于硬件电路较复杂,因而价格较贵。

非编码键盘:

键盘只简单地提供按键开关的行列矩阵。

有关按键的识别、键码的确定与输入、去抖动等功能均由软件完成。

目前微机系统中,一般为了降低成本大多数采用非编码键盘。

用AT89S51的并行口P1接4×

4矩阵键盘,以P1.0-P1.3作输入线,以P1.4-P1.7作输出线;

在数码管上显示每个按键的“0-F”序号。

4.1.1系统板上硬件连线设计

键盘模块硬件连线如图4-1所示:

图4-1键盘模块连线图

(1)把“单片机系统“区域中的P3.0-P3.7端口用8芯排线连接到“4X4行列式键盘”区域中的C1-C4 R1-R4端口上;

(2)把“单片机系统”区域中的P0.0AD0-P0.7AD7端口用8芯排线连接到“四路静态数码显示模块”区域中的任一个a-(void)

{

while

(1)

for(dispcount=0;

dispcount<

10;

dispcount++)

P0=table[dispcount];

delay02s();

}

4.1.4键盘识别程序

C语言源程序:

#include

unsignedcharcodetable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,

0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};

unsignedchartemp;

unsignedcharkey;

unsignedchari,j;

voidmain(void)

P3=0xff;

P3_4=0;

temp=P3;

temp=temp&

0x0f;

if(temp!

=0x0f)

for(i=50;

i>

0;

i--)

for(j=200;

j>

j--);

switch(temp)

case0x0e:

key=7;

break;

case0x0d:

key=8;

case0x0b:

key=9;

case0x07:

key=10;

P1_0=~P1_0;

P0=table[key];

while(temp!

P3_5=0;

key=4;

key=5;

key=6;

key=11;

P3_6=0;

key=1;

key=2;

key=3;

key=12;

P3_7=0;

key=0;

key=13;

key=14;

key=15;

4.2音乐产生的方法

4.2.1原理

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

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

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

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

计数脉冲值与频率的关系式(如式4-1所示)是:

N=fi÷

fr4-1

式中,N是计数值;

fi是机器频率(晶体振荡器为12MHz时,其频率为1MHz);

fr是想要产生的频率。

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

T=65536-N=65536-fi÷

fr

例如:

设K=65536,fi=1MHz,求低音DO(261Hz)、中音DO(523Hz)、高音DO(1046Hz)的计数值。

单片机12MHZ晶振,高中低音符与计数T0相关的计数值如表4-2所示

表4-2音符频率表

音符

频率(HZ)

简谱码(T值)

低1 DO

262

63628

#4FA#

740

64860

#1 DO#

277

63731

中5SO

784

64898

低2 RE

294

63835

#5SO#

831

64934

#2RE#

311

63928

中6LA

880

64968

低3M

330

64021

#6

932

64994

低4FA

349

64103

中7SI

988

65030

370

64185

高1DO

1046

65058

低5SO

392

64260

#1DO#

1109

65085

415

64331

高2RE

1175

65110

低6LA

440

64400

#2RE#

1245

65134

466

64463

高3M

1318

65157

低7SI

494

64524

高4FA

1397

65178

中1DO

523

64580

1480

65198

554

64633

高5SO

1568

65217

中2RE

587

64684

1661

65235

622

64732

高6LA

1760

65252

中3M

659

64777

1865

65268

中4FA

698

64820

高7SI

1967

65283

我们要为这个音符建立一个表格,单片机通过查表的方式来获得相应的数据

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

DW0

音乐的音拍,一个节拍为单位(C调)(如表4-3所示)

表4-3曲调值表

曲调值

DELAY

调44

125ms

62ms

调34

187ms

94ms

调24

250ms

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

下面用AT89S51单片机产生“生日快乐”歌来说明单片机如何产生的。

在这个程序中用到了两个定时计数器来完成的。

其中T0用来产生音符频率,T1用来产生音拍。

4.2.2程序框图

音乐发声程序框图如图4-5所示:

图4-5音乐发声程序框图

unsignedcharcodetable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,

0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};

unsignedcharSTH0;

unsignedcharSTL0;

TMOD=0x01;

ET0=1;

EA=1;

STH0=tab[key]256;

STL0=tab[key]%6;

TR0=1;

TR0=0;

S

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

当前位置:首页 > 工程科技 > 能源化工

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

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