音乐盒设计单片机课程设计Word文档下载推荐.docx

上传人:b****3 文档编号:17347233 上传时间:2022-12-01 格式:DOCX 页数:34 大小:228.12KB
下载 相关 举报
音乐盒设计单片机课程设计Word文档下载推荐.docx_第1页
第1页 / 共34页
音乐盒设计单片机课程设计Word文档下载推荐.docx_第2页
第2页 / 共34页
音乐盒设计单片机课程设计Word文档下载推荐.docx_第3页
第3页 / 共34页
音乐盒设计单片机课程设计Word文档下载推荐.docx_第4页
第4页 / 共34页
音乐盒设计单片机课程设计Word文档下载推荐.docx_第5页
第5页 / 共34页
点击查看更多>>
下载资源
资源描述

音乐盒设计单片机课程设计Word文档下载推荐.docx

《音乐盒设计单片机课程设计Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《音乐盒设计单片机课程设计Word文档下载推荐.docx(34页珍藏版)》请在冰豆网上搜索。

音乐盒设计单片机课程设计Word文档下载推荐.docx

方案二:

该方案以AT89S52单片机为核心,主要设计模块包括数码管显示部分,功能键盘部分,蜂鸣器发声部分,彩灯部分。

数码管采用共阳极数码管,通过单片机P1口控制,实现歌曲序号的显示;

功能键盘采用1*8键盘按键开关,通过单片机P3口控制,实现歌曲播放顺序的调换和暂停播放功能;

蜂鸣器由单片机的P2口控制,实现歌曲播放;

彩灯是由普通发光二极管代替,能实现单色长亮和闪烁效。

综上所述:

由于方案一的琴键输入是通过独立式键盘来完成的,这样便于控制且直观。

且本方案是采用我们所熟知的单片机类型和显示电路,便于我们理解。

而方案二中其他电路部分与方案一相差不大,但系统实现比较困难。

且主控芯片采用的是我们少用的AT89S51,所以我们选择方案一。

第二章总体方案设计

2.1原理简介

当键盘有键按下时,判断键值,启动计数器T0,产生一定频率的脉冲,驱动蜂鸣器,放出乐曲。

同时启动定时器T1,显示乐曲播放的时间,并驱动LCD,显示歌曲号。

2.2方案设计思想

(1)要产生音频脉冲,只要算出某一音频的周期(1/音频),然后将此周期除以2,即为半周期的时间,利用定时器计时这个半周期时间,每当计时到后就将输出脉冲的I/O反相,然后重复计时此半周期时间再对I/O口反相,就可在I/O脚上得到此频率的脉冲

(2)利用8951的内部定时器使其工作在计数器模式MODE1下,改变记数值TH0及TL0以产生不同频率的方法。

例如频率为523HZ,其周期T=1/523=1912微秒,因此只要令计数器定时956/1=956在每记数9次时将I/O口反相,就可得到中音D0(523HZ)。

记数脉冲值与频率的关系公式如下:

N=Fi/2/FrN:

记数值

    Fi:

内部计时一次为1微秒.故其频率为1MHZ

  Fr;

要产生的频率

(3):

起记数值的求法如下:

T=65536-N=65536-Fi/2/Fr

例如:

设K=65536,F=1000000=Fi=1MHZ,求低音D0(523HZ),高音的D0(1046HZ)的记数值。

T=65536-N=65536-Fi/2/Fr=65536-1000000/2/Fr=65536-500000/Fr

低音D0的T=65536-500000/262=63627

中音D0的T=65536-500000/523=64580

低音D0的T=65536-500000/1047=65059

第三章方案实现

3.1、音频脉冲的产生

对于音乐盒而言发出悦耳的音乐是其最主要的功能,那么对于使用单片机来制作出来的音乐盒怎么实现音符的发声呢?

通过查看资料我们知道音符的发音主要靠不同的音频脉冲。

利用单片机的内部定时器/计数器0,使其工作在模式1,定时中断,然后控制引脚的输出音乐(本实验采用P1.0做为输出引脚)。

只要算出某一音频的周期(1/频率),然后将此周期除以2,即为半周期的时间,利用定时器计时这个半周期时间,每当计时到后就将输出脉冲的I/O反相,然后重复计时此半周期时间再对I/O反相,就可在I/O脚上得到此频率的脉冲。

具体做法如下所示(以中音DO为例):

中音1(DO)的音频=523HZ,周期T=1/523s=1912

定时器/计数器0的定时时间为:

T/2=1912/2

=956

定时器956

的计数值=定时时间/机器周期=956

/1

=956(时钟频率=12MHZ)

装入T0计数器初值为65536-956=64580

将64580装入T0寄存器中,启动T0工作后,每计数956次时将产生溢出中断,进入中断服务时,每次对P1.0引脚的输出值进行取反,就可得到中音DO(523HZ)的音符音频。

将51单片机内部定时器工作在计数器模式1下,改变计数初值TH0,TL0以产生不同的频率。

下表3-1是C调各音符频率与计数初值T的对照表:

表3-1C调各音符频率与计数初值T的对照表

音符

频率(Hz)/初值(

低1DO

262/63627

中1DO

523/64580

高1DO

1042/65056

低2RE

294/63835

中2RE

589/64687

高2RE

1245/65134

低3M

330/64021

中3M

661/64780

高3M

1318/65157

低4FA

350/64107

中4FA

700/64822

高4FA

1397/65178

低5SO

393/64264

中5SO

786/64900

高5SO

1568/65217

低6LA

441/64402

中6LA

882/64969

高6LA

1760/65252

低7SI

495/64526

中7SI

990/65031

高7SI

1967/65282

3.2.音乐节拍的生成

要唱出一首歌,只产生出音频脉冲还不够,还要考虑节拍。

定义:

每个音符占用一个字节,字节的高4位代表音符的高低,低4位表示该音符的节拍,如果一拍为0.4秒,则1/4拍是0.1秒,只要设定延迟时间就可获得节拍的时间。

我们也可以设1/4拍为1个DELAY,则1拍应该是4个DELAY,只要求得1/4拍的DELAY时间,其余的节拍就是它的倍数。

(见表3-2)

表3-2

节拍数

1/4节拍

2/4节拍

3/4节拍

1拍

1又1/4拍

节拍码

1

2

3

4

5

1又1/2拍

2拍

2又1/2拍

3拍

3又3/4拍

6

8

A

C

F

3.3.建立音乐的步骤

先把谱的音符找出,然后由上表建立时间常数初值T的顺序表,标号为TABLE1。

建立音符和节拍表,标号为TABLE,将构成发音符的计数值放在其中。

TABLE表的结构为:

简谱码(代表音符)为高4位,节拍码(表示节拍数)为低4位,在唱歌程序中对每一个有节拍的音符能通过设计共同生成音符节拍码,本程序的音符节拍码表见表3-2。

第四章硬件设计

4.1硬件电路

本设计中用到了89C51单片机,其引脚图如右图4-1-1所示,矩阵式键盘模块,蜂鸣器,16*2LCD,扬声器、LED数码管显示器等。

(数字音乐盒总硬件图如附录一所示)

图4-1-189C51引脚图

4.1.1、AT89C51的工作特性

•内含4KB的FLASH存储器檫写次数1000次;

•内含128字节的RAM;

•具有32根可编程I/O线;

•具有2个16位编程定时器

•具有6个中断源,5个中断矢量,2级优先权的中

断结构;

•具有1个全双工的可编程串行通信接口;

•具有1个数据指针DPTR;

•具有可编程3级程序锁定位;

•AT89C51的工作电源为5(1±

0.2)V且典型值为5V;

•AT89C51最高工作频率为24MHZ;

•AT89C51的编程频率为3~24MHZ,编程启动电流和启动电压

分别为1mA、5或12V。

4.2原理说明

同时启动定时器T1,显示歌曲号。

(1)硬件电路中用

分别接S1、S2作为上、下一曲的功能键

(2)用P1.0-P1.6控制七段码a,b,c,d,e,f。

(3)用P2.0口控制喇叭。

(4)电路为12MHZ晶振频率工作,起振电路中C1,C2均为30pf。

4.3电路各模块说明

4.3.1键盘系统

键盘模块采用4*4按键模式(S1-S16),接在单片机的P1口上。

键盘系统的链接电路图如图4-3-1所示:

当用手按下一个键时,往往按键在闭合位置和断开位置之间跳几下才稳定到闭合状态的情况;

在释放一个键时,也回会出现类似的情况。

这就是抖动。

抖动的持续时间随键盘材料和操作员而异,不过通常总是不大于10ms。

很容易想到,抖动问题不解决就会引起对闭合键的识别。

用软件方法可以很容易地解决抖动问题,这就是通过延迟10ms来等待抖动消失,这之后,在读入键盘码。

具体编码如下所示:

MAI:

CLRTR0;

关闭上一次定时,进入下一次按键判断

MOVTMOD,#01H

MOVIE,#82H

MOVA,P1

MOV30H,A;

保存键盘状态值

LCALLD10MS;

延迟10ms消除抖动

MOVA,P1;

再读键盘状态

CJNEA,30H,MAI;

两次结果不同,是抖动引起,转MAI

图4-3-1键盘模块电路图

4.3.2放大电路

放大电路的分析如下所示,其电路图如图4-3-2所示:

此部分的放大电路简单容易实现。

可以采用一个小功率PNP型硅管2905,利用“分压偏置式工作点稳定直流通路”,达到了对静态工作点的稳定。

分压电阻分别选择1K和5.5K。

蜂鸣器一端接+5V电压,一端接晶体管的发射极。

由P1.0输出预定的方波,加到晶体管进行放大,再输出到嗡宁器,很好的实现了频率、声音的转换。

图4-3-2放大电路模块电路图

4.3.3时钟电路

此系统的时钟电路设计是采用内部方式,即是利用芯片内部的振荡电路。

MCS-51内部有一个用于构成振荡器的高增益反相放大器。

以此系统电路采用12MHz的晶振,起振电路中C1,C2均为30pf。

时钟电路模块电路图如图4-3-3所示。

图4-3-3晶振电路模块电路图

4.3.4复位电路

51单片机的RST引脚是复位信号的输入端,复位信号是高电平有效,其有效时间应持续24个振荡脉冲周期(即二个机器周期)以上。

一般有两种复位方式:

上电复位和手动复位。

复位电路图如图4-3-4所示。

图4-3-4复位电路模块电路图

上电复位上电时,利用电容C1的充电延时特性,一开始,+5V电压全部降落在电阻R6上,高电平输入RST脚,单片机复位操作,当电容C1充电接近结束时,电阻R6电压趋于0,RST脚输入低电平,结束复位操作。

手动复位在系统出现操作错误或程序运行出错时使用。

在单片机系统运行过程中,按下复位键K0,高电平输入RST脚,单片机被强制执行复位操作,系统可退出错误运行状态,恢复正常工作。

5.3.5显示电路

显示电路采用LCD模块,LCD显示模块采用14引脚的LCDLM032L,它有八个数据端口,三个控制口。

当控制口R/W为低电平时,单片机向LCD写入指令,当其为高电平时,单片机读取LCD的信息。

单片机的P2.0~P2.2作为LCD的RS,R/W,E的控制信号。

用P0.0~P0.7作为LCD的D0~D7的控制信号。

用LCD来显示播放歌曲时间和歌曲号。

当按下开机键时,会在LCD上显示英文欢迎字符,按其他键可显示歌曲号和播放时间。

LCD显示模块电路图分别如图4-3-5所示。

图4-3-5LCD显示模块电路图

第五章软件设计

5.1主模块的设计

主模块是系统软件的主框架。

结构化程序设计一般有“自上而下”和“自下而上”两种方式,“自上而下”法的核心就是主框架的构建。

它的合理与否关系到程序最终的功能的多少和性能的好坏。

本程序可以实现课程设计的基本要求,并可以通过按键播放多首歌曲,主程序流程图如下所示(图5-1-1),其中显示子程序的流程图如图5-1-2所示。

图5-1-1数字音乐盒主程序流程图

图5-1-2显示子程序流程图

第六章仿真、安装和调试

按照上面设计的电路在proteus软件内画图,打开单片机软件开发系统Keil,选择89c51单片机,在其中编写程序,运行生成一个后缀名为hex的文件,然后将该文件下载到proteus中的AT89c51单片机中进行仿真,观察实验现象。

仿真能实现播放音乐,按键选择曲目,暂停,播放功能。

仿真成功后,安装好实验板,然后将音乐程序下载到电路板内,观察结果。

能实现播放音乐,按键换曲等功能。

(其中仿真截图如图6-1-1所示)

程序调试中出现的问题及解决的办法:

(1)有时会出现程序一点错误也没有,但就是不能正常运行的现象,最后我们发现是因为程序中有的指令书写得不规范导致的,例如有的RET返回指令一定要按正确格式书写或在两行指令间最好不要留空行。

(2)程序中的跳转指令的运用很重要,为保险起见,都用LJMP,我们就遇到过跳转指令用错程序无法正常运行的现象。

当用JNZ指令时,跳转范围比较少,这时要用一个标号中转。

(3)编程时要注意,在程序开始时,要写入各定时器中断的入口地址。

(4)编程过程中要注意加注释或分割线,否则,在程序过长时容易变得很乱,不便于查找或更改。

(5)编程前要加流程图,这样会使思路清晰,例如数字音乐盒的设计思路完全可以按着MP3的工作方式列写流程图。

(6)LCD计时正常显示的解决办法:

a.两个定时器同时工作,存在中断时序问题,刚开始时我们把定时器1设定在方式3,计250us,由于定时中断过于频繁,使CPU负载过大,导致音乐不能正常播放,时间不能正常显示。

解决办法:

将定时器1设定在工作方式1,16位计数,计50ms,效果有很大改观。

但还有问题。

b.当音乐为全4拍起始时,此时音乐节奏与定时器T1中断频率错开,LCD显示和音乐播放都会好一些。

c.另外,在歌曲中,当遇到一个音符发音为4拍,在编曲中为*CH,因时间较长,当定时器T1此时来中断时,就会对歌曲播放产生影响,若改为发音一拍,中断对歌曲播放影响减弱,但音乐效果变差。

改进方案:

若采用可以定时时间更长的单片机,可以避免所有问题。

图6-1-1Proteus仿真图

总结

这学期我们已接触了单片机的课,有了一定的基础知识,这次的单片机课程设计使我有了实践和提高能力的机会,让我受益良多。

在此次单片机的课程设计中,我不但对单片机的基础知识掌握的更牢固,而且对其硬件和软件方面有了更深一层的认识。

在做数字音乐盒的课程设计时,我掌握了AT89C51单片机的内部振荡方式及振荡频率和单片机的复位电路形式。

此次设计的软件编程采用的是我们所学的汇编语言,通过对数字音乐盒的编程,我更熟悉了键盘扫描和动态显示的编程以及定时计数器和中断的编程。

巩固了对AT89C51的内部结构和接口扩展的知识。

本次设计中,我用到了protel99画图软件,keilC51编程软件和proteus仿真软件。

以前虽然对protel99有一定的认识,能运用其画图,不缺不熟练,这次设计是我对其的熟练程度提高了不少。

在大三上学期我自学过一点keilC51软件,但并不会用proteus,更不知道怎样将其结合起来使用。

在做数字音乐盒的仿真时,通过向同学青椒和查找资料,我能够运用它来画图,并和keilC51结合起来进行仿真,更有幸的是,仿真实现了。

这次课程设计,让我收获到了成功的喜悦,学会了做事严谨的态度。

希望下次还有这样学习的机会,并且希望下次能做的更好。

致谢

这次基于单片机的数字音乐盒设计得以完成,首先要感谢不畏辛辞的王老师,通过王老师的指导,是我增涨了单片机的知识,也使这次课程设计得以顺利完成。

其次,还要感谢我的同学,在这次课程设计中,遇到了许多的困难,是通过询问他们才解决的,所以要感谢他们的赐教。

参考文献

[1]许珉.单片机原理及应用[M].北京:

中国电力出版社,2007.08

[2]三恒星科技.MCS-51单片机原理与应用实例[M].北京:

电子工业出版社,2008.01

[3]王为青,程国钢.单片机KeilCx51应用开发技术[M].北京:

人民邮电出版社,2007.02

[4]JohnMarkus.电子电路大全[M].北京:

计量出版社,1995

[5]阎石.数字电子技术基础[M].北京:

高等教育出版社,1998.12,第4版

[6]邓元庆.数字电路与逻辑设计[M].北京:

电子工业出版社,2001

[7]高锋,单片微型计算机原理与接口技术.科学出版社,2003年.

[8]李传军,单片机原理及应用(第一版).河南科学技术出版社,2006年.

[9]杨志忠.数字电子技术.高等教育出版社(第二版)[M].2003年.

[10]张友德.单片微型机原理应用与实验.上海复旦大学出版社,2000

[11]《融会贯通Protel99电路设计》弘道工作室北京人民交通出版设,2000.

[12]《单片机原理及接口技术实验》朱定华北京北方交通大学出版社2002.11

附录

附录一:

音乐程序

RSBITP2.0

RWBITP2.1

EBITP2.2

;

********************

L50MSEQU60H

L1MSEQU61H

L250MSEQU62H

SECEQU65H

MINEQU64H

HOUEQU63H

*********************

ORG0000H

LJMPMAIN

ORG000BH

LJMPTT0

ORG001BH

LJMPT1INT

ORG1000H

MAIN:

液晶初始化

MOVSP,#70H

MOVP0,#01H;

清屏

CALLENABLE

MOVP0,#38H;

8位,2行显示

LCALLENABLE

MOVP0,#0FH;

屏显ON,光标ON,闪烁ON

MOVP0,#06H;

计数地址加1,显示幕ON

LCALLENABLE内存初始化

LCALLI

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

当前位置:首页 > 小学教育 > 语文

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

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