简易音乐播放器单片机课设Word格式.docx
- 文档编号:18151171
- 上传时间:2022-12-13
- 格式:DOCX
- 页数:33
- 大小:998.28KB
简易音乐播放器单片机课设Word格式.docx
《简易音乐播放器单片机课设Word格式.docx》由会员分享,可在线阅读,更多相关《简易音乐播放器单片机课设Word格式.docx(33页珍藏版)》请在冰豆网上搜索。
[2]高锋.单片微型计算机原理与接口技术[M].北京:
科学出版社,2007
[3]胡汉才.单片机原理及其接口技术[M].北京:
清华大学出版社,2004
教研室审核意见:
教研室主任签字:
指导教师(签名)
日
学生(签名)
课程设计总结:
我的课程设计题目是简易音乐播放器,刚看到题目的时候还是有些激动的,毕竟这个题目不难,当天下午我就去图书馆找资料了,确定了最初的课设的思路。
在老师的教学群里,老师说不要仅仅按照报告上的要求去做,要扩张功能,就把平时做实验学的数码管显示、键盘控制等都运用上去,基本确定自己课设最后的总体方案。
我的课程设计功能主要由音乐播放和串口下载两部分组成,为了更好的进行体验,加了键盘和LED数码管显示屏,键盘用了中断扫描的方法,产生音频用了定时中断产生方波,当完成这两个功能时发现自己的定时器不够用,因为串行口之间的协议还得用到一定时器进行波特率的设置。
正当愁在鱼和熊掌不可兼得的情境下,老师在群里说8052也可以用,并且比8051多一个定时器T2,自己立马去查8052单片机的用法,解决了自己的燃眉之急,加快自己课设的进程,有一点不足的是在Proteus软件上仿真时出现了电脑CPU无法实时仿真的警告,然后2天天天跑到实验室进行联合仿真测试,达到了自己想要的结果,之后进行相应的完善后,这次的课程设计实验部分就基本结束了。
这次的单片机课程设计能成功做出来,其中自然有我的努力与汗水,但也多亏了吴昊老师的帮助和同学的鼓励。
以前的课设大多是软件编程或者仿真实验,但这次需要用到实验箱进行实验,对于单片机实验都不能全部自己做出来的我来说是有一定难度的。
不过通过吴昊老师孜孜不倦的指导与帮助,学会了以前自己忽略掉的很多技巧,设置断点查值,单步调试等,让自己对程序运行过程有了进一步的了解。
总之,这次课设在两个星期的坚持下顺利的完成了,十分感谢我的指导老师吴昊,从中也学到了很多,了解到了更多东西,尤其是对单片机的认知。
人生就是处于知识的不断探索和追求之中,加油吧!
!
目录
1概述1
1.1设计内容和要求1
1.1.1课程设计内容1
1.1.2课程设计要求1
1.2课程设计原理1
2总体设计方案2
2.1设计思路2
2.1.1音调的产生2
2.1.2节拍的产生3
2.2系统总功能模块设计4
2.3设计环境5
3程序设计5
3.1主要函数设计5
3.1.1总体流程图5
3.2各主要子函数设计6
3.2.1数码管显示函数6
3.2.2键盘扫描7
3.2.3计时函数8
3.2.4串口下载函数9
4仿真电路图设计10
4.1系统原理10
4.2单片机的选取11
4.3主要电路器件12
4.3.1蜂鸣器12
4.3.2键盘12
4.3.3数码管13
4.3.4串口13
5调试14
5.1调试过程14
5.2调试结果15
参考文献16
附录1Proteus软件仿真总电路图17
附录2Lab8000实验箱仿真图18
附录3(关键部分程序清单)19
1概述
1.1设计内容和要求
1.1.1课程设计内容
利用LAB8000试验箱开发单片机实现简易音乐播放器的设计。
具体要求如下:
(1)音高由频率决定,首先查出各个音符对应的频率,然后利用蜂鸣器实现发出不同频率的声音,从而实现简易的音乐播放器。
(2)程序中保存一首简单乐谱,同时提供通过串口下载乐谱的功能。
1.1.2课程设计要求
(1)独立完成课程设计任务;
(2)通过老师当场验收;
(3)交出完整的课程设计报告;
(4)使用Proteus仿真。
1.2课程设计原理
用8052单片机实现简易音乐播放器的设计,主要分为音乐播放和串口下载功能。
音乐播放又可细化成选择播放歌曲、上一首、下一首、暂停/播放等功能。
本次课设采用8052的原因是8052的内存比8051的更大,在设计过程中发现获取键盘按键的值需要中断用一个定时器,产生乐谱的方波需要一定时器;
这时候在8051单片机中的2个定时器都已经被占用,而8052比8051多一个定时器T2,正好可以来满足自己的需求,为串行通信协议的设置留一个定时器,实现更多的功能,让这次课设更加完美。
音乐播放功能:
在这个模块中,利用实验箱上的键盘去进行选择,实验室的键盘为4*6键盘,在这里,利用线扫描法去扫描键盘,利用定时器中断每隔50us判断是否有键按下,若有的话,就响应事件。
键盘1-6选择播放程序中已经存在的歌曲和通过串口下载的歌曲;
“A”按键播放上一首歌曲;
“B”按键播放下一首歌曲;
“C”播放/暂停。
利用实验箱上的6位LED数码显示管用来显示当前播放歌曲的序号和已经播放的时间。
利用定时器中断每隔1s对播放时间进行更新。
在音乐乐频产生信号,利用定时器根据乐谱简谱产生音频脉冲驱动蜂鸣器工作产生音乐。
串口下载:
实验要求通过串口下载音乐,用串口上传音乐简谱信息,存放在PC内存中。
首先设置通信协议,采用中断的方式进行串口通信,这样可以随时通过串口下载音乐,PC端预存音乐简谱信息发送给单片机,此时单片机接收数据放入内存,在使用播放音乐功能时可以播放上传的音乐简谱。
2总体设计方案
2.1设计思路
2.1.1音调的产生
频率的高低决定了音调的高低。
音乐的十二平均率规定:
每两个八度音(如简谱中的中音1和高音1)之间的频率相差一倍。
在两个八度音之间又分为十二个半音。
另外,音名A(简谱中的低音6)的频率为440Hz,音名B到C之间、E到F之间为半音,其余为全音。
由此可以计算出简谱中从低音1到高音1之间每个音名对应的频率,所有不同频率的信号都是从同一个基准频率分频得到的。
要产生音频脉冲,只要算出某一音频的周期(1/频率),然后将此周期除以2,即为半周期的时间。
利用定时器计时这半个周期时间,每当计时到后就将输出脉冲的I/O反相,然后重复计时此半周期时间再对I/O反相,就可在I/O脚上得到此频率的脉冲。
利用52单片机的内部定时器使其工作在计数器方式一下,改变计数值TH0及TL0以产生不同频率的方法。
此外结束符和休止符可以分别用代码00H和FFH来表示,若查表结果为00H,则表示曲子终了;
若查表结果为FFH,则产生相应的停顿效果。
例如频率为523Hz,其周期T=1/523=1912us,因此只要令计数器计时956us/1us=956,在每次技术956次时将I/O反相,就可得到中音DO(523Hz)。
计数脉冲值与频率的关系公式如下:
N:
计算值;
Fi:
内部计时一次为1us,故其频率为1MHz;
其计数值的求法如下:
音符频率与计数值T的对照表如表2.1所示。
表2.1音符频率与计数值T的对照表
低音
频率
N
参数
中音
高音
Do
262
1908
229
523
956
115
1046
57
Do#
277
1805
217
Do﹟
554
903
108
1109
54
Re3
294
1701
204
Re
587
852
102
1175
51
Re﹟
311
1608
193
622
804
97
1245
48
Mi
330
1515
182
659
759
91
1318
45
Fa
349
1433
172
698
716
86
1397
43
Fa﹟
370
1351
162
740
676
81
1480
41
So
392
1276
153
784
638
77
1568
38
So﹟
415
1205
145
831
602
72
1661
36
La
440
1136
136
880
568
68
1760
34
La﹟
464
1078
129
932
536
64
1865
32
Si
494
1012
121
988
506
61
1976
30
2.1.2节拍的产生
构成音乐需要节拍,让音乐具有旋律,而且可以调节各个音的快慢度。
若1拍实0.5s,则1/4拍为0.125s。
至于1有多长时间,可以按照设计者来决定,只要好听就行。
音持续时间的长短即时值,一般用拍数表示。
休止符表示暂停发音。
一首音乐是由许多不同的音符组成的,而每个音符对应着不同频率,这样就可以利用不同的频率的组合,加以与拍数对应的延时,构成音乐。
节拍与节拍码对照表如表2.2所示。
表2.2节拍与节拍码对照
节拍码
节拍数
1
1/4拍
1/8拍
2
2/4拍
3
3/4拍
3/8拍
4
1拍
2/1拍
5
1又1/4拍
5/8拍
1又1/2拍
8
2拍
A
2又1/2拍
C
3拍
F
3又3/4拍
每个音符使用1个字节,字节的高4位代表音符的高低,低4位代表音符的节拍。
如果1拍为0.4秒,1/4拍为0.1秒,只要设定延迟时间就可求得节拍的时间。
假设1/4拍的延迟时间为1,则1拍的延迟时间应为4,以此类推。
所以只要求得1/4拍的延迟时间,其余的节拍就是它的倍数。
表1.3所示。
表2.31/4和1/8节拍的时间设定
曲调值
DELAY
调4/4
125毫秒
62毫秒
调3/4
187毫秒
94毫秒
调2/4
250毫秒
2.2系统总功能模块设计
该音乐播放器播放器系统有多种功能,用户控制,音乐计时,数据显示和串口上传乐谱。
音乐计时的数据显示采用8段显示数码管,在实验箱上,6个LED数码管分别用来显示歌曲的序号以及播放时间;
用户控制主要用来实现选择播放的歌曲;
串口下载为通过串行口来随时发送子昂要播放的音乐简谱;
系统功能模块结构图如图2.1所示。
图2.1系统功能结构模块图
2.3设计环境
硬件环境:
伟福LAB8000;
软件环境:
Keilμvision4和仿真软件Proteus
3程序设计
3.1主要函数设计
3.1.1总体流程图
程序的第一步是变量的初始化,定义了flag、time、sec等变量,并且设置了各个音调对应的十六进制码,然后开中断,对定时器进行模式的选择和初值的计算,接着调用LED显示函数使数码管按照程序设计的方式运行,其中扫描键盘是用定时器中断的方法,设置每隔3ms中断一次,即扫描一次键盘。
流程图如图3.1所示。
图3.1总体流程图
3.2各主要子函数设计
3.2.1数码管显示函数
数码管的显示在这里用的是动态显示方法,并且通过电路图得知,为了让74HC138芯片和74HC573芯片有效,计算出段控制口和位控制口分别为0x8004和0x8002。
流程图如图3.2所示。
图3.2数码管显示函数流程图
3.2.2键盘扫描
扫描键盘主要用的是unsignedcharGetKey()函数,而且还是用定时器中断的方法,设置每隔50毫秒中断一次,在一秒中大约会产生中断20次,就是说在一秒钟扫描键盘20次。
在扫描键盘的过程中,先是扫描哪一个的按键别按下,把第几列记录下来后,再扫描是哪一行的按键,记录是哪一行;
最后根据公式“键值=列x4+行”,就能计算出是哪一个按键被按下。
如图3.3所示。
图3.3键盘扫描函数流程图
3.2.3计时函数
为了对歌曲进行计时,所以设计了一个计时函数jishi()。
利用定时器T2定时,放在中断函数里,一次中断的时间为50ms,设置一个中断次数计数器,当满20次中断时,定时1s调用计时函数分钟和秒钟分别用两个数码管来显示,当歌曲响起时开始计时,若秒钟个位加到10时,则十位加一,并且个位清零;
秒钟的十位加到5时,分钟个位加一,并且将秒钟清零,分钟的十位同理,最后通过缓冲区在数码管中显示。
计时函数如图3.4所示。
图3.4计时函数流程图
3.2.4串口下载函数
利用串口中断函数来上传乐谱,保存在内存数组shou[]中,用户选择播放的下载歌曲可以从shou数组中获得定时器T1工作在方式2自动装载,串口通信协议设置为PCON设置为0x00,SCON设置为0x50;
波特率设置为2400bit/s。
串口下载函数图如图3.5所示。
图3.5串口下载函数图
4仿真电路图设计
4.1系统原理
数字音乐盒的核心主要分为四个方面,分别是七段数码管、键盘、串口下载和蜂鸣器。
用定时器中断的方式来控制蜂鸣器和扫描4*6键盘,在程序中用显示函数让数码管显示,需要显示出歌曲序号和播放时间,并且能用键盘控制播放的音乐,通过串口可以随时下载要播放的上传的音乐简谱原理框图如图4.1所示。
图4.1系统原理框图
4.2单片机的选取
8052单片机是基于课堂学习的8051单片机的“加强版”,它有3个定时器T2、T1、T0;
内存是8051的两倍也是这次课程设计的核心器件,它是8位的单片机,具有品种全、兼容性强、性能价格比高等特点。
8052单片机具有很多的I/O口,其中P2.4、P2.5、P2.6连接74LS138译码器,而译码器则可以控制片选信号和位选信号;
P0的八个I/O口要与译码器74HC374相连,然后在与键盘连接,从而能确认数码管的段选信号,此次课程设计的位选码为0x8002。
段选码是0x8004;
P1.5口则控制的是蜂鸣器。
单片机电路图如图4.2所示。
图4.2单片机电路图
4.3主要电路器件
4.3.1蜂鸣器
蜂鸣器是整个电路中重要的输出部分之一,没有了蜂鸣器就不会响起悦耳的音乐,本次课程设计,运用了单片机I/O口中的P1.5口,当程序中的play变量等于1时,蜂鸣器响,反之,若play等于0,则停止响声。
端口输出的方波经放大滤波后,驱动蜂鸣器发声,蜂鸣器的电路图如图4.3所示。
图4.3蜂鸣器电路图
4.3.2键盘
Lab8000实验箱内的键盘是4*6的键盘,但是这次课程设计只用到了前四列,所以也就只扫描了四列按键,键盘的主要功能就是用户的输入,也是实现程序现象的重要部分,当用户想播放哪首歌曲就在键盘中输入哪个按键。
实验箱内的键盘还连接了一个ULN2003芯片,这个芯片的特点是电流增益高、工作电压高、温度范围宽、带负载能力强等特点,适应于要求高速大功率驱动的系统。
键盘的电路图如图4.4所示。
图4.4键盘电路
4.3.3数码管
此次课程设计运用了六的数码管,第一个显示了歌曲的序号,第二个是空位,第三和第四个显示了分钟的计时,第五和第六个显示了秒钟的计时。
数码管的主要作用就是显示出当前程序运行时的现象,数码管的位选位与ULN2003相连后再接到键盘上,段选位则是连到74HC374译码器上,实验箱的数码管为共阴极,显示方式为动态显示。
由电路图得知,位选信号为1时有效。
数码管示意图如图4.5所示。
图4.5数码管示意图
4.3.4串口
Lab8000实验箱上的串口为RS-232,在仿真时用虚拟端口和串行口助手进行调试,实验箱上的串口硬件电路图如图4.6所示
图4.6串口电路图
5调试
5.1调试过程
本次的课程设计是先进行功能拆分,分别进行设计与实现,再将程序进行组合调试,最终实现基本要求。
数码管显示信息:
数码管实时显示音乐播放信息,程序编译通过的前提下。
在Proteus进行仿真时发现很大的延迟问题,总是报错CPU无法实时仿真;
后来在实验室的Lab8000上能够正确的显示。
串行口通信:
之前做过串行口通信实验,但是没有完全掌握,导致再次去实现是出现不少问题,在吴老师以及实验室曹老师的帮助下,学会了断点以及单步调试的方法,使自己调试程序游刃有余,实现了基本的串行口通信。
蜂鸣器:
在电脑上仿真时,蜂鸣器不响,在XX查阅知识时才知道要设置蜂鸣器的参数问。
将上面两部分进行组合后进行调试时由于信号输入的I/O口和寄存器都有冲突,刚开始的时候没有任何实验现象,两部分分别进行调试,更改I/O口和寄存器,分别调试成功后组合调试,初步调试也没有问题。
之后加上串口通信后响应的数据处理就行了。
程序的初步调试基本完成。
5.2调试结果
根据课程设计要求,已基本实现简易音乐播放器的功能,能够通过按键选择播放歌曲,能在数码管上显示播放的序号以及时间,能够通过串行口进行音乐的下载;
十分感谢在此过程中老师的教诲和同学们的帮助。
参考文献
[1]张毅刚,刘杰.MCS-51单片机原理及应用.哈尔滨:
哈尔滨工业大学出版社,2015
[2]徐爱钧.KeilC51单片机高级语言应用编程技术.北京:
电子工业出版社,2015
[3]阮喻,扈啸,刘鹏,杨光瑜.让单片机更好玩:
零基础学用51单片机.北京:
化学工业出版社,2014
[4]钱宗峰,刘培国,于飞.单片机原理与项目实践:
基于C语言.北京:
机械工业出版社,2014
[5]段晨东,爨莹.单片机原理及接口技术[M].北京:
清华大学出版社,2008
[6]伟福Lab8000系列单片机仿真实验系统使用说明书[M].南京伟福实业有限公司,2015
[7]高峰.单片微型计算机原理与接口技术[M].北京:
附录1Proteus软件仿真总电路图
附录2Lab8000实验箱仿真图
附录3(关键部分程序清单)
#include<
reg52.h>
#defineucharunsignedchar
#defineuintunsignedint
#defineLEDLen6
xdataunsignedcharIN_at_0x8001;
//键盘
xdataunsignedcharOUTBIT_at_0x8002;
//位控制口
xdataunsignedcharOUTSEG_at_0x8004;
//段控制口读入口
unsignedcharLEDBuf[LEDLen];
//显示缓冲
sbitfm=P1^5;
//蜂鸣器
uintflag=0,flag2=0;
ucharu=0,num=0,num1=0;
uchartimeh,timel;
ucharmin0=0,min1=0,sec0=0,sec1=0;
ucharplay=0,flag1=0;
voiddelay(uintz);
//延时165ms即十六分音符
voidsong();
uchartnum=0;
uchartemp;
ucharshou[50];
voidinput();
//简谱音调对应的定时器初值适合11.0592M的晶振
ucharcodechuzhi[]={
0xff,0xff,//占位停顿
0xFC,0x8E,//中音1-7
0xFC,0xED,
0xFD,0x43,
0xFD,0x6A,
0xFD,0xB3,
0xFD,0xF3,
0xFE,0x2D,
0xFE,0x47,//高音1-7
0xFE,0x76,
0xFE,0xA1,
0xFE,0xC7,
0xFE,0xD9,
0xFE,0xF9,
0xFF,0x16};
codeunsignedcharLEDMAP[]={//八段管显示码
0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71
};
ucharcodetiger[]={//两只老虎
0x14,0x24,0x34,0x14,0x14,0x24,0x34,0x14,0x34,0x44,0x58,0x34,
0x44,0x58,0x52,0x61,0x52,0x41,0x34,0x14,0x52,0x61,0x52,0x41,
0x34,0x14,0x14,0xb4,0x18,0x14,0xb4,0x18,0xff
ucharcodexqw[]={//小青蛙
0x52,0x32,0x32,0x32,0x52,0x32,0x32,0x32,0x54,0x61,0x52,0x32,
0x42,0x24,0x42,0x22,0x22,0x22,0x42,0x22,0x22,0x22,0x44,0x51,
0x42,0x22,0x32,0x18,0xff
ucharcodeqnzl[]={
0x12,0x22,0x34,0x84,0x74,0x54,0x38,0x42,0x32,0x22,0x42,0x34,
0x84,0x72,0x82,0x94,0xA8,0x08,0x32,0x31,0x21,0x32,0x52,0x32,
0x31,0x21,0x32,0x62,0x32,0x31,0x21,0x32,0x82,0x71,0x81,0x71,
0x51,0x32,0x22,0x32,0x31,0x21,0x32,0x52,0x32,0x31,0x21,0x32,
0x62,0x32,0x31,0x21,0x32,0x83,0x82,0x71,0x72,0x02,0x63,0xA1,
0xA2,0x62,0x92,0x82,0x52
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 简易 音乐 播放 单片机
![提示](https://static.bdocx.com/images/bang_tan.gif)