单片机音乐播放器设计报告.docx
- 文档编号:7236825
- 上传时间:2023-01-22
- 格式:DOCX
- 页数:16
- 大小:280.21KB
单片机音乐播放器设计报告.docx
《单片机音乐播放器设计报告.docx》由会员分享,可在线阅读,更多相关《单片机音乐播放器设计报告.docx(16页珍藏版)》请在冰豆网上搜索。
单片机音乐播放器设计报告
第1章系统硬件原理及设计
1.1核心器件AT89C51介绍
AT89C51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROM—FalshProgrammableandErasableReadOnlyMemory)的低电压,高性能CMOS8位微处理器,俗称单片机。
AT89C2051是一种带2K字节闪烁可编程可擦除只读存储器的单片机。
单片机的可擦除只读存储器可以反复擦除100次。
该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。
由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。
AT89C单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。
外形及引脚排列如图所示
图2-1AT89C51外形图及引脚序列
1.1.1主要特性:
·与MCS-51兼容
·4K字节可编程闪烁存储器
·寿命:
1000写/擦循环
·数据保留时间:
10年
·全静态工作:
0Hz-24MHz
·三级程序存储器锁定
·128×8位内部RAM
·32可编程I/O线
·两个16位定时器/计数器
·5个中断源
·可编程串行通道
·低功耗的闲置和掉电模式
·片内振荡器和时钟电路
1.1.2.管脚说明:
VCC:
供电电压。
GND:
接地。
P0口:
P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。
当P1口的管脚第一次写1时,被定义为高阻输入。
P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。
在FIASH编程时,P0口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。
P1口:
P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。
P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。
在FLASH编程和校验时,P1口作为第八位地址接收。
P2口:
P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。
并因此作为输入时,P2口的管脚被外部拉低,将输出电流。
这是由于内部上拉的缘故。
P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。
在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。
P2口在FLASH编程和校验时接收高八位地址信号和控制信号。
P3口:
P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。
当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。
作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。
P3口也可作为AT89C51的一些特殊功能口,如下表所示
表2.1P3口被选功能
口管脚备选功能
P3.0RXD(串行输入口)
P3.1TXD(串行输出口)
P3.2/INT0(外部中断0)
P3.3/INT1(外部中断1)
P3.4T0(记时器0外部输入)
P3.5T1(记时器1外部输入)
P3.6/WR(外部数据存储器写选通)
P3.7/RD(外部数据存储器读选通)
P3口同时为闪烁编程和编程校验接收一些控制信号。
RST:
复位输入。
当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。
ALE/PROG:
当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。
在FLASH编程期间,此引脚用于输入编程脉冲。
在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。
因此它可用作对外部输出的脉冲或用于定时目的。
然而要注意的是:
每当用作外部数据存储器时,将跳过一个ALE脉冲。
如想禁止ALE的输出可在SFR8EH地址上置0。
此时,ALE只有在执行MOVX,MOVC指令是ALE才起作用。
另外,该引脚被略微拉高。
如果微处理器在外部执行状态ALE禁止,置位无效。
/PSEN:
外部程序存储器的选通信号。
在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。
但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。
/EA/VPP:
当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。
注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。
在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。
XTAL1:
反向振荡放大器的输入及内部时钟工作电路的输入。
XTAL2:
来自反向振荡器的输出。
1.1.3.振荡器特性:
XTAL1和XTAL2分别为反向放大器的输入和输出。
该反向放大器可以配置为片内振荡器。
石晶振荡和陶瓷振荡均可采用。
如采用外部时钟源驱动器件,XTAL2应不接。
有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度。
1.1.4.芯片擦除:
整个PEROM阵列和三个锁定位的电擦除可通过正确的控制信号组合,并保持ALE管脚处于低电平10ms来完成。
在芯片擦操作中,代码阵列全被写“1”且在任何非空存储字节被重复编程以前,该操作必须被执行。
此外,AT89C51设有稳态逻辑,可以在低到零频率的条件下静态逻辑,支持两种软件可选的掉电模式。
在闲置模式下,CPU停止工作。
但RAM,定时器,计数器,串口和中断系统仍在工作。
在掉电模式下,保存RAM的内容并且冻结振荡器,禁止所用其他芯片功能,直到下一个硬件复位为止。
1.2硬件电路设计
电路主要由AT89C51芯片,LED发光二极管,喇叭,晶振电路组成,由引脚输出定时器产生的各种固定频率的方波信号,然后由喇叭产生各种频率的声音。
同理,方波信号通过发光二极管可以使二极管闪烁发光,产生韵律灯的效果。
由于该方案中使用内部振荡电路,XTAL1、XTAL2引脚外界石英晶体和微调电容构成的晶振电路。
第二章系统软件原理及设计
总体原理:
乐曲中不同的音符,实质就是不同频率的声音。
通过单片机产生不同的频率的脉冲信号,经过放大电路,由蜂鸣器放出,就产生了美妙和谐的乐曲。
2.1单片机产生不同频率脉冲信号的原理:
(1)要产生音频脉冲,只要算出某一音频的脉冲(1/频率),然后将此周期除以2,即为半周期的时间,利用定时器计时这个半周期的时间,每当计时到后就将输出脉冲的I/O反相,然后重复计时此半周期的时间再对I/O反相,就可以在I/O脚上得到此频率的脉冲。
(2)利用8051的内部定时器使其工作在计数器模式MODE1下,改变计数值TH0及TL0以产生不同频率的方法如下:
例如,频率为523Hz,其周期天/523S=1912uS,因此只要令计数器计时956uS/1us=956,在每计数956次时就将I/O反接,就可得到中音DO(532Hz)。
计数脉冲值与频率的关系公式如下:
N=Fi/2/Fr
(N:
计数值,Fi:
内部计时一次为1uS,故其频率为1MHz,Fr:
要产生的频率)
(3)其计数值的求法如下:
T=65536-N=65536-Fi/2/Fr
计算举例:
设K=65536,F=1000000=Fi=1MHz,求低音DO(261Hz)、中音DO(523Hz)、高音DO(1046Hz)的计数值。
T=65536-N=65536-Fi/2/Fr=65536-1000000/2/Fr=65536-500000/Fr
低音DO的T=65536-500000/262=63627
中音DO的T=65536-500000/523=64580
高音DO的T=65536-500000/1047=65059
(4)C调个音符频率与计数值T的对照表如下表所示:
表3-1C调各音符频率与计数值T的对照表
音符频率(Hz)简谱码(T值)音符频率(Hz)简谱码(T值)
低1DO26263628#4FA#74064860
#1DO#27763731中5SO78464898
低2RE29463835#5SO#83164923
#2RE#31163928中6LA88064968
低3M33064103#693264994
低4FA34964103中7SI98865030
#4FA#37064260高1DO104665058
低5SO39264260#1DO#110965085
#5SO#41564331高2RE117565110
低6LA44064400#2RE#124565124
#646664463高3M131865157
低7SI49464524高4FA139765178
中1DO52364580#4FA#148065198
(5)每个音符使用1个字节,字节的高4位代表音符的高低,低4位代表音符的节拍,下表为节拍码的对照。
但如果1拍为0.4秒,1/4拍是0.1秒,只要设定延迟时间就可求得节拍的时间。
假设1/4节拍为1DELAY,则1拍应为4DELAY,以此类推。
所以只要求得1/4拍的DELAY时间,其余的节拍就是它的倍数,如下表为1/4和1/8节拍的时间设定。
表3-2节拍码对照表
1/4节拍1/8节拍
节拍码节拍数节拍码节拍数
11/4拍11/8拍
22/4拍21/4拍
33/4拍33/8拍
41拍41/2拍
51又1/4拍55/8拍
61又1/2拍63/4拍
71又3/4拍77/8拍
82拍81拍
92又1/4拍91又1/8拍
A2又1/2拍A1又1/4拍
B2又3/4拍B1又3/8拍
C3拍C1又1/2拍
D3又1/4拍D1又5/8拍
E3又1/2拍E1又3/4拍
F3又3/4拍F1又7/8拍
表3-3各调节拍的时间设定表
1/4节拍
1/8节拍
曲调值
DELAY
曲调值
DELAY
调4/4
125毫秒
调4/4
62毫秒
调3/4
187毫秒
调3/4
94毫秒
调2/4
250毫秒
调2/4
125毫秒
1/4拍的延迟时间=187毫秒
DELAY:
MOVR7,#2
D2:
MOVR4,#187
D3:
MOVR3,#248
DJNZR3,$
DJNZR4,D3
DJNZR7,D2
RET
(6)移调
一般的歌曲,有3/8、2/4、3/4、4/4等节拍类型,但不管有几拍,基本上是在C调下演奏的。
如果是C调,则音名C唱Do,音名D唱Re,音名E唱Mi,音名E唱Mi,音名F唱Fa,音名G唱So,音名A唱La,音名B唱Ti等。
但是,并不是所有的歌曲都是在C调下演奏的,还有D调、E调、F调、G调等。
D调是将C调各音符上升一个频率实现的,即C调下的音名D在D调下唱Do,C调下的音名E在D调下唱Re,C大调的音名F在D调下上升高半音符F#唱Mi,C调下的音名G在D调下唱Fa,C调下的音名C在D调下上升高伴音C#符唱Ti。
这种唱法称为移调。
表3-4C调在各调中的音名
音名
调
Do
Re
Mi
Fa
So
La
Ti
C调
C
D
E
F
G
A
B
D调
D
E
F#
G
A
B
C
E调
E
F#
G#
A
B
C
D
F调
F
G
A
B
C
D
E
G调
G
A
B
C
D
E
F#
A调
A
B
C#
D
E
F#
G#
B调
B
C
D
E
F
G
A
2.2音乐软件的设计
2.2.1音乐代码库的建立方法
(1)先找出乐曲的最低音和最高音范围,然后确定音符表T的顺序。
(2)把T值表建立在TABLE1,构成发音符的计数值放在“TABLE”。
(3)简谱码(音符)为高位,节拍为(节拍数)为低4位,音符节拍码放在程序的“TABLE”处。
(4)音符节拍码00H为音乐结束标记。
2.2.2选曲
在一个程序中,需要演奏两首或两首以上的歌曲时,音乐代码库的建立有两种方法:
(1)将每首歌曲建立相互独立的音符表T和发音符计数值TABLE。
(2)在建立公用音符表T后,再写每首歌的发音计数值TABLE中的代码
不管采用那种方法,每首歌曲结束时,在TABLE中均需加上音乐结束符00H。
2.2.3歌曲的设计
下面以歌曲《送别》和《三个和尚》的设计为例,讲述歌曲在单片机中的实现。
曲谱如下图所示
从两首歌中可看出,最低音为低7Si,最高音为高1Do。
根据音乐软件的设计方法,简谱对应的简谱码、T值、节拍数如表所示。
表3-5简谱对应的简谱码、T值、节拍数
简谱
发音
简谱码
T值
节拍码
节拍数
低7
低音Si
1
64524
1
1/4
1
中音Do
2
64580
2
2/4
2
中音Re
3
64684
3
3/4
3
中音Mi
4
64777
4
1
4
中音Fa
5
64820
5
1+1/4
5
中音So
6
64898
6
1+1/2
6
中音La
7
64968
8
2
7
中音Ti
8
65030
A
2+1/2
高1
高音Do
9
65058
C
3
低6
低音La
A
64400
F
3+3/4
低5
低音So
B
64260
程序源代码如下:
ORG0000H
LJMPSTART
ORG001BH
LJMPTIME1
START:
MOVTMOD,#10H;T1工作在方式1
MOVIE,#88H;中断使能
MAIN:
MOV40H,#00H;设简谱码指针初始值
NEXT:
MOVA,40H;简谱码指针暂存累加器A
MOVDPTR,#TABLE;设简谱码
MOVCA,@A+DPTR
CJNEA,#00H,PLAY;取到的简谱码不是结束码,传PLAY取节拍码
LJMPSTOP;是结束码,退出
PLAY:
MOVR1,A;R1暂存简谱码
ANLA,#0FH;取节拍码
MOVR2,A节拍码暂存R2
MOVA,R1
ANLA,#0F0H;取音符码
CJNEA,#00H,MUSIC;音符码不为0,调发音子程序
CLRTR1;音符码为0,不发音
LJMPDEL
MUSIC:
SWAPA
DECA
MOV22H,A
ADDA,22H
MOVR3,A
MOVDPTR,#TABLE1;取相应计数值
MOVCA,@A+DPTR
MOVTH1,A;暂存高位字节
MOV21H,A
MOVA,R3
INCA
MOVCA,@A+DPTR;取相应计数值的低位字节
MOVTL1,A;暂存低位字节
MOV20H,A
SETBTR1;启动定时器
DEL:
LCALLDELAY
INC40H;指向下一个简谱码
LJMPNEXT
STOP:
CLRTR1;停止计时器
LJMPMAIN
TIME1:
PUSHACC;现场保护
PUSHPSW
CPLP1.7;P1.7反相输出,演奏音乐
MOVTL1,20H;重设计数值
MOVTH1,21H
POPPSW
POPACC
RETI
DELAY:
MOVR7,#02H;4/4曲调,演示125ms子程序
DELA1:
MOVR6,#125
DELA2:
MOVR5,#248
DJNZR5,$
DJNZR6,DELA2
DJNZR7,DELA1
DJNZR2,DELAY
RET
TABLE1:
DW64524,64580,64684,64777;简码值
DW64820,64898,64968,65030,65058
DW64400,64260
TABLE:
DB14H,42H,62H,98H;歌曲《送别》
DB74H,92H,72H,68H
DB64H,22H,32H,44H,32H,22H
DB3CH
DB64H,42H,62H,94H,04H,82H
DB74H,94H,68H
DB64H,32H,42H,54H,04H,12H
DB2CH
DB74H,94H,98H
DB84H,72H,82H,98H
DB72H,82H,92H,72H,72H,62H,42H,22H
DB3CH
DB64H,42H,62H,94H,04H,82H
DB74H,94H,68H
DB64H,32H,42H,54H,04H,12H
DB2CH
DB42H,62H,72H,41H,61H,41H,31H,22H,0B2H;歌曲《三个和尚》
DB62H,61H,61H,71H,61H,41H,64H
DB0B2H,0B2H,62H,61H,61H,71H,61H,41H,64H
DB0B2H,0B2H,62H,61H,61H,71H,61H,41H,64H
DB42H,62H,72H,41H,61H,41H,31H,22H,0B2H
DB22H,31H,41H,31H,21H,0A2H,0B4H
DB22H,31H,41H,31H,21H,0A2H,0B4H
DB22H,31H,41H,31H,21H,0A2H,0B4H
DB0A2H,21H,32H,42H,62H,61H,41H,62H,71H
DB42H,41H,61H,42H,32H,22H,31H,21H,0A2H
DB42H,41H,61H,42H,32H,22H,31H,21H,0A2H
DB42H,41H,61H,42H,32H,22H,31H,21H,0A2H
DB62H,61H,42H,62H,71H,61H,72H,62H,71H
DB62H,61H,71H,32H,42H,64H
DB00H
END
心得体会
课程设计是培养学生综合运用所学知识,发现、提出、分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程。
随着科学技术发展的日新日异,单片机已经成为当今计算机应用中空前活跃的领域,在生活中可以说得是无处不在。
因此作为自动化专业的学生来说掌握单片机的开发技术是十分重要的。
我的题目是音乐播放器硬软件的设计,对于我们这些工科学生来说,这是一次考验。
怎么才能找到课堂所学与实际应用的最佳结合点?
怎样让自己的业余更接近专业?
怎样让自己的计划更具有序性,而不会忙无一用?
这都是我们所要考虑和努力的。
这次课程设计我学到很多很多的东西,学会了怎么样去制定计划,怎么样去实现这个计划,并掌握了在执行过程中怎么样去克服心理上的不良情绪。
不仅巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识,掌握了一种系统的研究方法,可以进行一些简单的编程。
通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。
同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,对单片机汇编语言掌握得不够好。
这次课程设计通过自己的努力,同学的帮助,还有老师的辛勤指导下,最终顺利完成了。
参考文献
1侯玉宝,陈忠平,,李成群.基于Proteus的51系列单片机设计与仿真.北京电子工业出版社,2008
2沈德金,陈粤初.MCS-51系列单片机接口电路与应用程序实例.北京航空航天大学出版社,1990
3胡汉才.单片机原理及接口技术.清华大学出版社,1996
4何立民.MCS-51系列单片机应用系统设计.北京航空航天大学出版社,1990.1
5张毅刚、彭喜元、姜守达、乔立岩.新编MCS-51系列单片机应用设计.哈尔滨工业大学出版社,2003.6
6杨世成.信号放大电路.电子工业出版社,1995
7潘立民,王燕芳.微型计算机控制技术.人民邮电出版社,1990
8邵敏权,刘刚.单片机原理实验及应用.吉林科学技术出版社,1995.1
9陈汝全.实用微机与单片机控制技术.电子科技大学出版社,1995.7
10李华.MCS-51系列单片机应用接口技术.北京航空航天大学出版,1993
11童诗白.模拟电子技术基础。
高等教育出版社,2001
12
13
14
致谢
为期两周的课程设计结束了,在这次设计中,我得到了陈志旺讲师和臧怀刚副教授的悉心指导,在此深表感谢,同时,我也要向在设计过程中给予我帮助的几位同学以及班委的协助工作致以诚挚的谢意。
附录
附录一:
程序流程图
附录二:
硬件电路图
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 音乐 播放 设计 报告
![提示](https://static.bdocx.com/images/bang_tan.gif)