基于单片机的简易电子琴设计毕业设计Word下载.docx

上传人:b****6 文档编号:20294986 上传时间:2023-01-21 格式:DOCX 页数:28 大小:422.07KB
下载 相关 举报
基于单片机的简易电子琴设计毕业设计Word下载.docx_第1页
第1页 / 共28页
基于单片机的简易电子琴设计毕业设计Word下载.docx_第2页
第2页 / 共28页
基于单片机的简易电子琴设计毕业设计Word下载.docx_第3页
第3页 / 共28页
基于单片机的简易电子琴设计毕业设计Word下载.docx_第4页
第4页 / 共28页
基于单片机的简易电子琴设计毕业设计Word下载.docx_第5页
第5页 / 共28页
点击查看更多>>
下载资源
资源描述

基于单片机的简易电子琴设计毕业设计Word下载.docx

《基于单片机的简易电子琴设计毕业设计Word下载.docx》由会员分享,可在线阅读,更多相关《基于单片机的简易电子琴设计毕业设计Word下载.docx(28页珍藏版)》请在冰豆网上搜索。

基于单片机的简易电子琴设计毕业设计Word下载.docx

说明:

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

1.3主要芯片简介

AT89C52是一个低功耗,高性能CMOS8位单片机,片内含4kBytesISP(In-systemprogrammable)的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C52引脚结构,芯片内集成了通用8位中央处理器和ISPFlash存储单元,功能强大的微型计算机的AT89S51可为许多嵌入式控制应用系统提供高性价比的解决方案。

AT89C52具有如下特点:

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

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

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

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

图1-1AT89C52

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

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

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

总电路图见附页二。

2.1系统总体方案

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

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

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

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

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

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

N=fi÷

fr,式中,N是计数值;

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

fr是想要产生的频率。

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

T=65536-N=65536-fi÷

fr

例如:

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

fr=65536-1000000÷

fr=65536-500000/fr,中音DO的T=65536-500000/523=64580。

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

音符

频率(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之间

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

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

2.1.2音调数据表

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

上表中的频率数值,有些过多,去掉不常用的黑键频率,只是把白键对应的数据存放在单片机中,即可满足绝大部分的应用需求。

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

DW63628,63835,64021,64103,64260,64400,64524;

64580,低音区:

1234567

DW64580,64671,64777,64820,64898,64968,6503065058中音区:

DW65058,65110,65157,65178,65217,65252,6528365312高音区:

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

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

曲调值

DELAY

调4/4

125ms

62ms

调3/4

187ms

94ms

调2/4

250ms

2.2总体硬件组成框图

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

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

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

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

2.2.1子系统模块一

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

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

2.2.2子系统模块二

播放模块是喇叭构成。

它几乎不存在噪声,音响效果较好,而且由于所需驱动功率较小,且价格低廉,所以,被广泛应用。

2.2.3子系统模块三

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

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

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

矩阵键盘模块图如下:

2.2.4AT89C52复位模块

2.2.5AT89C52晶振模块

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

3.1软件流程

3.1.1音阶键识别

3.1.2内置歌曲输出

3.1.3总流程图

3.2软件程序

本系统的上位机软件主要是编辑电子琴播放状态的内容,在设计中采用汇编语言编写了电子琴控制系统控制和播放内容的程序。

见附录一。

图4-1低音显示

图4-2中音显示

图4-3高音显示

图4-4歌曲播放

图4-5音阶5

图4-6音阶7

通过这次单片机课程设计,我收获很多。

在这次设计过程中,第一次接触实物,硬件的设计跟焊接都要我们自己动手,软件的编程也要我们不断的调试,最终一个能完成课程设计的劳动成果出来了,很高兴它能按着设计的思想和要求运行起来。

当然,这其中也有很多的问题。

第一,不够细心比如由于粗心大意焊错了线,由于对课本理论的不熟悉导致编程出现错误。

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

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

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

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

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

在实习之前,我们要对所用单片机的内部结构有一个比较系统的了解,知道该单片机内有哪些资源;

要有一个清晰的思路和一个完整的软件流程图;

在设计程序时,不能妄想一次性就将整个程序设计好,反复修改,不断改进是程序设计的必经之路;

要养成注释程序的好习惯,一个程序的完美与否不仅仅是实现功能,而应该让人一看就明白你的思路,这样也为资料的保存与交流提供了方便;

在实习过程中遇到问题是很正常的,但我们应该讲每次遇到的问题记录下来,并分析清楚,以免下次再碰到同样的问题。

但是从中学到的知识会让我们受益终身。

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

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

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

2.程序调试时,应该讲各模块单独调试,提高调试的速度。

3.本实验要充分了解电子琴的程序,按照要求编译。

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

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

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

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

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

[3]康华光.电子技术基础(数字部分),高等教育出版社.第五版

[4]邓红.单片机实验与应用设计教程出版日期:

2004年05月第1版

[5]以及其他的网上资源

附1源程序代码

#include<

reg52.h>

#defineucharunsignedchar

voidRun(void);

voidKeyScan(void);

voidPlayKey(void);

voiddelay_1ms(uchari);

voidPlayMusic(void);

voidDisPlay(void);

sbitBeep=P3^7;

ucharTh0,Tl0;

ucharflag=0;

//模式,0表示音乐,1表示按键

ucharkey=0;

//按键代号

uchara;

uchargaodi=0;

ucharcodeMusicCode[]={0XFc,0X44,0XFc,0Xac,0XFd,0X09,0XFd,0X34,

0XFD,0X82,0XFD,0Xc8,0XFD,0X06,0XFb,0X04,

0Xfb,0X90,0Xfc,0X0c,0Xfe,0X22,0Xf9,0X5b,0Xfa,0x15};

ucharcodeMusic[]={0X88,0X14,0X24,0X36,0X42,0X34,0X14,0X28,0X14,0X94,

0X1f,0X88,0X14,0X24,0X34,0X32,0X42,0X54,0X14,

0X46,0X32,0X54,0X22,0X32,0X32,0X22,0X2C,0X38,0X54,0X74,

0X76,0X62,0X68,0X54,0X52,0X62,0X74,0X62,0X52,0X3f,

0X46,0X42,0X54,0X64,0X54,0X42,0X32,0X28,0X0a4,0Xa2,

0X92,0X84,0X94,0X1f,0Xb8,0X68,0X46,0X52,0X68,

0X74,0X72,0X72,0X74,0X62,0X52,0X3f,0Xb8,0X68,

0X46,0X52,0X68,0X64,0X62,0X62,0X64,0X42,0X32,0X2f,

0X58,0X14,0X24,0X36,0X42,0X34,0X12,0X12,0X26,0X22,0X24,0X22,0X12,

0X94,0X9c,0Xa8,0Xa6,0X92,0X84,0X64,0X54,0X22,0X22,0X46,0X42,0X44,0X32,0X22,0X5f,

0XFF};

ucharcodeKeyCode[]={0XFF,0XFF,

0xF8,0x8B,0xF9,0x5B,0xFA,0x14,0xFA,0x66,0xFB,0x03,0xFB,0x8F,0xFC,0x0B,

0xFC,0x43,0xFC,0xAB,0xFD,0x08,0xFD,0x33,0xFD,0x81,0xFD,0xC7,0xFE,0x05,

0xFE,0x21,0xFE,0x55,0xFE,0x84,0xFE,0X99,0XFE,0xC0,0xFE,0xE3,0xFF,0x02,

};

voidmain(void)

{

P1=0XFF;

P2=0;

TMOD=0X01;

IT0=1;

TR0=0;

EX0=1;

ET0=1;

EA=1;

while

(1)

{

KeyScan();

Run();

DisPlay();

}

}

voidRun(void)

if(flag==0)

PlayMusic();

else

PlayKey();

voidKeyScan(void)

if(P1==0X7f)

delay_1ms(12);

if(P1==0X7f)

gaodi++;

if(gaodi>

2)

gaodi=0;

a=gaodi;

elseif(P1==0XFE)

if(P1==0XFE)

key=1;

a=key;

elseif(P1==0XFD)

if(P1==0XFD)

key=2;

elseif(P1==0XFB)

if(P1==0XFB)

key=3;

elseif(P1==0XF7)

if(P1==0XF7)

key=4;

elseif(P1==0XEF)

if(P1==0XEF)

key=5;

elseif(P1==0XDF)

if(P1==0XDF)

key=6;

elseif(P1==0XBF)

if(P1==0XBF)

key=7;

return;

voidPlayKey(void)

if(key==0)

return;

Th0=KeyCode[gaodi*14+key*2];

Tl0=KeyCode[gaodi*14+key*2+1];

TR0=1;

delay_1ms(187);

TR0=0;

key=0;

time0()interrupt1

TH0=Th0;

TL0=Tl0;

Beep=~Beep;

voidinterrupt0()interrupt0

flag=~flag;

a=8;

P2=0;

voiddelay_1ms(uchari)

ucharj,k;

for(j=0;

j<

i;

j++)

for(k=0;

k<

148;

k++)

;

}

voidPlayMusic(void)

ucharyinfu,jiepai;

uchari,j;

for(i=0;

Music[i]!

=0XFF;

i++)

yinfu=(Music[i]>

>

4);

jiepai=(Music[i]&

0X0F);

if(yinfu==0)

continue;

Th0=MusicCode[(yinfu-1)*2];

Tl0=MusicCode[(yinfu-1)*2+1];

for(j=jiepai;

j>

0;

--j)

{

delay_1ms(187);

}

if(flag!

=0)

break;

voidDisplay(void)

switch(a)

case0:

P2=0X3F;

break;

case1:

P2=0X06;

case2:

P2=0X5B;

case3:

P2=0X4F;

case4:

P2=0X66;

case5:

P2=0X6D;

case6:

P2=0X7D;

case7:

P2=0X07;

default:

P2=0X00;

附2系统原理图

毕业设计(论文)原创性声明和使用授权说明

原创性声明

本人郑重承诺:

所呈交的毕业设计(论文),是我个人在指导教师的指导下进行的研究工作及取得的成果。

尽我所知,除文中特别加以标注和致谢的地方外,不包含其他人或组织已经发表或公布过的研究成果,也不包含我为获得及其它教育机构的学位或学历而使用过的材料。

对本研究提供过帮助和做出过贡献的个人或集体,均已在文中作了明确的说明并表示了谢意。

作者签名:

     日 期:

     

指导教师签名:

     日  期:

使用授权说明

本人完全了解大学关于收集、保存、使用毕业设计(论文)的规定,即:

按照学校要求提交毕业设计(论文)的印刷本和电子版本;

学校有权保存毕业设计(论文)的印刷本和电子版,并提供目录检索与阅览服务;

学校可以采用影印、缩印、数字化或其它复制手段保存论文;

在不以赢利为目的前提下,学校可以公布论文的部分或全部内容。

作者签名:

     日 期:

学位论文原创性声明

本人郑重声明:

所呈交的论文是本人在导师的指导下独立进行研究所取得的研究成果。

除了文中特别加以标注引用的内容外,本论文不包含任何其他个人或集体已经发表或撰写的成果作品。

对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式标明。

本人完全意识到

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

当前位置:首页 > 医药卫生 > 预防医学

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

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