基于51单片机的音乐盒设计报告.doc

上传人:wj 文档编号:8854699 上传时间:2023-05-15 格式:DOC 页数:8 大小:581.50KB
下载 相关 举报
基于51单片机的音乐盒设计报告.doc_第1页
第1页 / 共8页
基于51单片机的音乐盒设计报告.doc_第2页
第2页 / 共8页
基于51单片机的音乐盒设计报告.doc_第3页
第3页 / 共8页
基于51单片机的音乐盒设计报告.doc_第4页
第4页 / 共8页
基于51单片机的音乐盒设计报告.doc_第5页
第5页 / 共8页
基于51单片机的音乐盒设计报告.doc_第6页
第6页 / 共8页
基于51单片机的音乐盒设计报告.doc_第7页
第7页 / 共8页
基于51单片机的音乐盒设计报告.doc_第8页
第8页 / 共8页
亲,该文档总共8页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

基于51单片机的音乐盒设计报告.doc

《基于51单片机的音乐盒设计报告.doc》由会员分享,可在线阅读,更多相关《基于51单片机的音乐盒设计报告.doc(8页珍藏版)》请在冰点文库上搜索。

基于51单片机的音乐盒设计报告.doc

摘要

本作品利用单片机的IO口对蜂鸣器输送不同频率的信号,让单片机发出不同音调的声音。

以“新年好”曲调为基础以C51为语法编出51音乐盒的程序。

根据电路图焊接了蜂鸣器模块与TX-1C51开发板用杜邦线进行连接。

除了蜂鸣器外接模块外还使用了1602液晶显示模块作为外设连接。

本人对单片机演奏音乐比较有兴趣。

在此,本人将就这方面的知识做一些简介,但愿能对单片机演奏音乐比较有兴趣而又不知其解的朋友能有所启迪。

一般说来,单片机演奏音乐基本都是单音频率,它不包含相应幅度的谐波频率,也就是说不能象电子琴那样能奏出多种音色的声音。

因此单片机奏乐只需弄清楚两个概念即可,也就是“音调”和“节拍”。

音调表示一个音符唱多高的频率,节拍表示一个音符唱多长的时间。

一般说来,单片机演奏音乐基本都是单音频率,它不包含相应幅度的谐波频率,也就是说不能象电子琴那样能奏出多种音色的声音。

因此单片机奏乐只需弄清楚两个概念即可,也就是“音调”和“节拍”。

音调表示一个音符唱多高的频率,节拍表示一个音符唱多长的时间。

关键词:

51单片机音乐盒液晶屏幕显示模块蜂鸣器模块C51

目录

1设计任务目的与要求 1

1.1 任务设计目的 1

1.2 任务要求 1

2模块及其原理介绍 2

2.1蜂鸣器模块 2

2.21602液晶显示模块 2

3设计方案 3

3.1软件设计 3

3.2硬件设计 3

4实验结果与数据分析 4

4.1测试步骤 4

4.2实验现象 4

5结论与问题讨论 4

5.1完成设计的要求程度 4

5.2遇到的问题以及解决办法 4

5.3存在的不足及改进思路 4

参考文献 5

附录 5

附录一:

C51程序 5

2

1设计任务目的与要求

1.1任务设计目的

本人对单片机演奏音乐比较有兴趣,所以选择51音乐盒的题目。

本设计通过两个模块的制作并与开发板一并使用。

通过本次设计不止熟悉焊接和熟悉各个电子元器件,而且还提高了对外设模块使用单片机编程的技能。

1.2任务要求

设计任务要求有两个:

要求一:

制作的蜂鸣器能正常发声,失真率小于5%;

要求二:

液晶模块正常显示个歌曲名称以及设计的有关内容;

要求三:

使用C51编程让蜂鸣器唱出新年好的歌曲;

2模块及其原理介绍

2.1蜂鸣器模块

蜂鸣器模块电路图如图2.1所示,该模块三个接口分别为P3.7、VCC、GND。

P3.7通过与单片机IO口连接来接收51单片机的信号;VCC与5V电压连接;GND接地。

图2.1

2.21602液晶显示模块

液晶显示模块电路图如图2.2所示

图2.2

3设计方案

3.1软件设计

软件设计狂徒如图3.1.1,设计包括init(void)main(void)display(uint)bee(void)等功能函数以及delay(uint)write_com(uchar)write_data(uchar)等调用多个辅助函数,具体程序见附录一。

3.1.1

3.2硬件设计

模块及其原理介绍已经对各个模块电路进行介绍,接下来再介绍一下使用的电子元器件:

有源蜂鸣器:

蜂鸣器是一种一体化结构的电子讯响器,采用直流电压供电,广泛应用于计算机、打印机、复印机、报警器、电子玩具、汽车电子设备、电话机、定时器等电子产品中作发声器件。

;蜂鸣器主要分为压电式蜂鸣器和电磁式蜂鸣器两种类型。

蜂鸣器在电路中用字母“H”或“HA”(旧标准用“FM”、“LB”、“JD”等)表示;

NPN三极管:

NPN型三极管,由三块半导体构成,其中两块N型和一块P型半导体组成,P型半导体在中间,两块N型半导体在两侧。

三极管是电子电路中最重要的器件,它最主要的功能是电流放大和开关作用;

10k电阻;

杜邦线:

杜邦线可用于实验板的引脚扩展,增加实验项目等。

可以非常牢靠地和插针连接,无需焊接,可以快速进行电路试验。

4实验结果与数据分析

4.1测试步骤

使用电脑com4口通过USB线下载程序,然后打开电源对现象进行观察,再对程序进行修改然后下载程序观察如此重复,直到实验目的功能。

4.2实验现象

1602液晶显示模块正确显示”HAPPYNEWYSAR!

!

Will~~2014.12.27:

”;

蜂鸣器正常发声,响起新年好旋律并重复歌唱。

5结论与问题讨论

5.1完成设计的要求程度

经过测试、修改等步奏后,实现液晶的正常显示完全达到目标;蜂鸣器正常歌唱,不过在部分会出现少许失真,不过失真率保证在5%以内。

5.2遇到的问题以及解决办法

问题:

蜂鸣器失真严重;

解决:

导线以及焊接口出现接触问题,所以进行修复;npn三极管不适用故更换三极管;

5.3存在的不足及改进思路

这次设计当中也有不足之处;

(1)焊接比较差;

(2)杜邦线与排针型号不吻合,连接不稳定。

参考文献

[1]雷伏容、张小林、催浩.《51单片机常用模块设计查询手册》.北京:

清华大学出版社,2010.01:

2-823.

[2]郭天祥.《新概念51单片机入门、提高、开发、拓展全攻略》.哈尔滨:

哈尔滨工业大学出版社

[2]“科学男孩.51单片机音乐盒[word].2010年春/2014.12.27.”

附录

附录一:

C51程序

/*******************************************/

/*音乐:

新年好*/

/*日期:

2014.12.27*/

/*******************************************/

#include

#include

#defineuintunsignedint

#defineucharunsignedchar

uintcount,bai,shi,ge,num_1;

charnum,distance;

sbitTrig=P2^0;

sbitEcho=P2^1;

sbitdula=P2^6;

sbitwela=P2^7;

sbitrs=P3^5;

sbitlcden=P3^4;

sbitbeepIO=P3^7;

ucharm,n;

ucharcodetable_distance[]="Distance:

cm";

ucharcodetable[]="HAPPYNEWYEAR!

!

";

ucharcodetable_num[]="0123456789";

voiddelay_1(uintms)//液晶显示延时函数

{

uintx,y;

for(x=ms;x>0;x--)

for(y=110;y>0;y--);

}

voidwrite_com(ucharcom)//命令书写函数

{

rs=0;

P0=com;

delay_1(5);

lcden=1;

delay_1(5);

lcden=0;

}

voidwrite_date(ucharnum)//数据书写函数

{

rs=1;

P0=num;

delay_1(5);

lcden=1;

delay_1(5);

lcden=0;

}

ucharcodeT[49][2]={{0,0},

{0xF8,0x8B},{0xF8,0xF2},{0xF9,0x5B},{0xF9,0xB7},{0xFA,0x14},{0xFA,0x66},{0xFA,0xB9},{0xFB,0x03},{0xFB,0x4A},{0xFB,0x8F},{0xFB,0xCF},{0xFC,0x0B},

{0xFC,0x43},{0xFC,0x78},{0xFC,0xAB},{0xFC,0xDB},{0xFD,0x08},{0xFD,0x33},{0xFD,0x5B},{0xFD,0x81},{0xFD,0xA5},{0xFD,0xC7},{0xFD,0xE7},{0xFE,0x05},

{0xFE,0x21},{0xFE,0x3C},{0xFE,0x55},{0xFE,0x6D},{0xFE,0x84},{0xFE,0x99},{0xFE,0xAD},{0xFE,0xC0},{0xFE,0x02},{0xFE,0xE3},{0xFE,0xF3},{0xFF,0x02},

{0xFF,0x10},{0xFF,0x1D},{0xFF,0x2A},{0xFF,0x36},{0xFF,0x42},{0xFF,0x4C},{0xFF,0x56},{0xFF,0x60},{0xFF,0x69},{0xFF,0x71},{0xFF,0x79},{0xFF,0x81}

};

ucharcodemusic[][2]={{0,4},

{19,4},{19,4},{19,8},{14,8},{23,4},{23,4},{23,8},{19,8},

{19,4},{23,4},{26,8},{26,8},{24,4},{23,4},{21,16},{21,4},{23,4},{24,8},{24,8},

{23,4},{21,4},{23,8},{19,8},{19,4},{23,4},{21,8},{14,8},{18,4},{21,4},{19,16},

{0xFF,0xFF}};

/*******************************************/

/*音乐延时函数*/

/*******************************************/

voiddelay(ucharp)//音乐延时函数

{

uchari,j;

for(;p>0;p--)

for(i=181;i>0;i--)

for(j=181;j>0;j--);

}

voidpause()

{

uchari,j;

for(i=150;i>0;i--)

for(j=150;j>0;j--);

}

voidT0_int()interrupt1

{

beepIO=!

beepIO;

TH0=T[m][0];TL0=T[m][1];

}

voidmain()

{

uchari=0;

TMOD=0x01;

EA=1;

ET0=1;

wela=0;//嵌入液晶显示

dula=0;

lcden=0;

write_com(0x38);

write_com(0xf);

write_com(0x6);

write_com(0x80);

for(num_1=0;num_1<16;num_1++)

{

write_date(table_distance[num_1]);

delay_1(5);

}

write_com(0x80+0x40);

for(num_1=0;num_1<16;num_1++)

{

write_date(table[num_1]);

delay_1(5);

}//液晶初始显示结束

while

(1)//音乐播放

{

m=music[i][0];n=music[i][1];

if(m==0x00)

{ TR0=0;

delay(n);

i++;

}

elseif(m==0xFF)

{ TR0=0;

delay(30);

i=0;

}

elseif(m==music[i+1][0])

{ TR0=1;

delay(n);

TR0=0;

pause();

i++;

}

else

{ TR0=1;

delay(n);

i++;

}

}

}

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

当前位置:首页 > 外语学习 > 韩语学习

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

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