基于单片机的音乐播放器设计.docx
《基于单片机的音乐播放器设计.docx》由会员分享,可在线阅读,更多相关《基于单片机的音乐播放器设计.docx(34页珍藏版)》请在冰豆网上搜索。
基于单片机的音乐播放器设计
专业课程设计论文
(2010年)
题目基于单片机的音乐播放器设计
学院:
信息工程学院系:
电子信息工程系
专业:
电子信息工程
班级:
电子072班
学号:
学生姓名:
指导教师:
起讫日期:
2010.9.6--2010.10.25
学士学位论文原创性申明
本人郑重申明:
所呈交的论文是本人在导师的指导下独立进行研究所取得的研究成果。
除了文中特别加以标注引用的内容外,本论文不包含任何其他个人或集体已经发表或撰写的成果。
对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式表明。
本人完全意识到本申明的法律后果由本人承担。
作者签名:
日期:
2010年10月21日
学位论文版权使用授权书
本学位论文作者完全了解学校有关保留、使用学位论文的规定,同意学校保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。
本人授权南昌大学可以将本论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。
保密□,在年解密后适用本授权书。
本学位论文属于
不保密□。
(请在以上相应方框内打“√”)
作者签名:
日期:
导师签名:
日期:
基于单片机的音乐播放器设计
学生姓名:
指导教师:
摘要
本音乐播放器是利用AT89S52单片机结合内部定时系统及LCD显示器,设计一个简易的微电脑音乐播放器。
本设计按下单键可以实现音乐播放功能,演奏预先设置的歌曲旋律,并且在数码管上显示出该曲目的编号,最重要的是自己还可以经过程序设计来输入新的歌曲,将自己喜爱的歌曲输入程序中,它可以经常发出宜人的音乐旋律,增加生活的乐趣。
关键词:
AT89S52单片机;音乐播放器;LCD液晶显示器
ThedesignofmusicplayerwhichisbasedonSingleChipMicrocontroller
Summary
ThemusicbroadcastbycombininginternaltimingistheuseofAT89S52singlechipmicrocontrollerLCDdisplaysystemsandthedesignofasimplemicrocomputermusicboxes.Thedesignpresssinglecomputerachievablemusicbroadcastfunctionatthepre-establishmentsongmelodies,andincontrolofthedigitalshowtherepertoireofnumbers,themostimportantthingisitcanreadtheproceduresdesignedtoimportnewsongs,thesongshelovedtoimportprocedures,itcanoftensendpleasantmusic,andincreaselifefun.
Keyword:
AT89S52SingleChipMicrocontroller;Musicplayer;LCDcrystaldisplay
第一章单片机及其在相关领域的应用和发展
1.1单片机的定义
单片机即单片微型计算机,是把中央处理器、存储器、定时/计数器、输入输出接口都集成在一块集成电路芯片上的微型计算机。
与应用在个人电脑中的通用型微处理器相比,它更强调自供应(不用外接硬件)和节约成本。
它的最大优点是体积小,可放在仪表内部,但存储量小,输入输出接口简单,功能较低。
由于其发展非常迅速,旧的单片机的定义已不能满足,所以在很多应用场合被称为范围更广的微控制器;由于单晶片微电脑常用于当控制器故又名singlechipmicrocontroller。
1.2单片机的发展趋势
1.2.1低功耗CMOS化
随着当今人们对单片机功耗要求越来越低,现在的各个单片机制造商基本都采用CMOS(互补金属氧化物半导体工艺)。
CMOS虽然功耗较低,但由于其物理特征决定其工作速度不够高,而CHMOS则具备了高速和低功耗的特点,这些特征,更适合于在要求低功耗的应用场合。
所以这种工艺将是今后一段时期单片机发展的主要途径
1.2.2微型单片化
现在的产品普遍要求体积小、重量轻,这就要求单片机除了功能强和功耗低外,还要求其体积要小。
现在的许多单片机都具有多种封装形式,其中SMD(表面封装)越来越受欢迎,使得由单片机构成的系统正朝微型化方向发展。
1.2.3主流与多品种共存
现在虽然单片机的品种繁多,各具特色,但以80C51为核心的单片机是主流。
而Microchip公司的PIC精简指令集(RISC)单片机,中国台湾的HOLTEK公司近年的单片机产量与日俱增,与其低价质优的优势,占据一定的市场分额。
在一定的时期内,这种情形将得以延续,将不存在某个单片机一统天下的垄断局面,走的是依存互补,相辅相成、共同发展的道路。
1.3基于单片机的音乐播放器的应用
对于音乐播放器产品及其它有关消费电器产品都是一些开环或闭环控制系统,都由核心控制部分,执行部分与人机界面三部分组成。
而最为重要的控制部分一般是由单片机来执行完成的,这就必将导致和促进单片机在音乐领域应用的发展。
现在这些由单片机实现的音乐播放器的功能越来越强、费用越来越低。
例如,就市场上的mp3目前的功能越来越强大体积却越来越小,价格也逐渐便宜,被大多数人所能接受。
但这些音乐播放器也或多或少的存在着一些问题,解决这些问题,非智能化的单片机莫属。
所以基于单片机的音乐播放器不仅仅设计简单快捷操作方便,而且通用性好,元器件易于购买,因此是掌握单片机相关知识的理想设计。
第二章基于单片机的音乐播放器设计
2.1电路所用器件介绍
2.1.1硬件电路所用器件
AT89S52芯片、4×4小键盘、1602LCD液晶显示器、蜂鸣器、晶振,三极管,电容、电阻、排阻、导线、排插、排座等
2.1.2核心器件AT89S52介绍
AT89S52是一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器。
使用Atmel公司高密度非易失性存储器技术制造,与工业80C51产品指令和引脚完全兼容。
片上Flash允许程序存储器在系统可编程,亦适于常规编程器在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得AT89S52为众。
多嵌入式控制应用系统提供高灵活、超有效的解决方案。
它具有以下标准功能:
8k字节Flash,256字节RAM,32位I/O口线,看门狗定时器,2个数据指针,三个16位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。
另外,AT89S52可降至0Hz静态逻辑操作,支持2种软件可选择节电模式。
空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。
掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。
2.1.3振荡器特性
XTAL1和XTAL2分别为反向放大器的输入和输出。
该反向放大器可以配置为片内振荡器。
石晶振荡和陶瓷振荡均可采用。
如采用外部时钟源驱动器件,XTAL2应不接。
有输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度。
2.1.4芯片擦除
AT89S52设有稳态逻辑,可以在低到零频率的条件下静态逻辑,支持两种软件可选的掉电模式。
在闲置模式下,CPU停止工作。
但RAM,定时器,计数器,串口和中断系统仍在工作。
在掉电模式下,保存RAM的内容并且冻结振荡器,禁止所用其他芯片功能,直到下一个硬件复位为止。
2.2设计原理
2.2.1音频脉冲产生原理
音乐是由音符组成的,而不同的音符对应的是不同的震动频率。
而不同的频率可以利用单片机的定时器产生,再驱动通过蜂鸣器或者是喇叭,就可以播放乐曲了。
要产生音频脉冲,只要算出某一音频的周期T,然后将周期除以2得到半周期的时间,再对P1.0口反相,就可在单片机P1.0引脚得到此频率的脉冲。
例如,频率为523Hz,其周期为天/523S=1912uS,因此只要令计数器计时956uS/1us=956,在每计数956次时就将I/O反接,就可得到中音DO(532Hz)。
计算举例:
设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
2.2.2节拍产生原理
根据节拍的特征,可以设定1拍为0.4S,1/4秒就是0.1S,只要设定延迟时间就可求得节拍的时间。
假设1/4拍为1DELAY,则1拍应为4DELAY,则以后的诸如3/4拍等均可以依此类推。
表2-1节拍时间设定表
1/4节拍
1/8节拍
曲调值
DELAY
曲调值
DELAY
调4/4
125毫秒
调4/4
62毫秒
调3/4
187毫秒
调3/4
94毫秒
调2/4
250毫秒
调2/4
125毫秒
2.2.3计数脉冲与音乐频率转换原理
计数脉冲与频率从换算公式:
N=Fi/2/Fr(其中N:
计数值;Fi:
内部计时一次为1uS,故其频率为1MHz;Fr:
要产生的频率)
2.2.4乐谱中C大调音符对照表
音名
音调
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.5音符频率对照表
音符频率(Hz)简谱码(T值)音符频率(Hz)简谱码(T值)
低1DO26263628#4FA#74064860
#1DO#27763731中5SO78464898
低2RE29463835#5SO#83164923
#2RE#31163928中6LA88064968
低3M33064103#693264994
低4FA349641037SI98865030
#4FA#37064260高1DO104665058
低5SO39264260#1DO#110965085
#5SO#41564331高2RE117565110
低6LA44064400#2RE#124565124
#646664463高3M131865157
低7SI49464524高4F139765178
中1DO52364580#4FA#148065198
2.2.6音乐代码库的建立方法
(1)先找出乐曲的最低音和最高音范围,然后确定音符表T的顺序。
(2)把T值表建立在TABLE1,构成发音符的计数值放在“TABLE”。
(3)简谱码(音符)为高位,节拍为(节拍数)为低4位,音符节拍码放在程序的“TABLE”处。
(4)音符节拍码00H为音乐结束标记。
2.2.7电路原理说明
当键盘有键按下时,判断键值,启动计数器T0,产生一定频率的脉冲,驱动蜂鸣器,放出乐曲。
同时启动定时器T1,显示乐曲播放的时间,并驱动LCD,显示歌曲号及播放时间。
(1)硬件电路中用P1.0~P1.7控制按键,其中P1.0~P1.3扫描行,P1.4~P1.7扫面列。
(2)用P0.0~P0.7控制LCD显示。
(3)用,P2.0~P2.2作为LCD的RS,R/W,E的控制信号。
用P0.0~P0.7作为LCD的D0~D7的控制信号。
(4)用P3.7口控制蜂鸣器。
(5)电路为12MHZ晶振频率工作,起振电路中C1,C2均为30pf。
2.2.5实验控制流程图
第三章仿真实验及仿真实验原理图
3.1原理图
3.2PCB及3D图
PCB顶层制版图
PCB底层制版图
3D图
第四章实验程序及操作使用说明
4.1实验程序
RSBITP2.0
RWBITP2.1
EBITP2.2
L50MSEQU60H
L1MSEQU61H
L250MSEQU62H
SECEQU65H
MINEQU64H
HOUEQU63H
ORG0000H
LJMPMAIN
ORG000BH
LJMPTT0
ORG001BH
LJMPT1INT
ORG1000H
MAIN:
MOVSP,#70H
MOVP0,#01H
LCALLENABLE
MOVP0,#38H
LCALLENABLE
MOVP0,#0FH
LCALLENABLE
MOVP0,#06H
LCALLENABLE
LCALLINITIL
KEY1:
LCALLKEY
LCALLMODD
LJMPKEY1
KEY:
NOP
NOP
LCALLKS
JNZK1
LCALLKAIJI
LCALLSOP
XN:
LJMPKEY
K1:
LCALLMODD
LCALLMODD
LCALLKS
JNZK2
LJMPKEY
K2:
MOVR2,#0FEH
MOVR4,#00H
K3:
MOVA,R2
MOVP1,A
MOVA,P1
JBACC.4,L1
MOVA,#00H
LJMPLK
L1:
JBACC.5,L2
MOVA,#04H
LJMPLK
L2:
JBACC.6,L3
MOVA,#08H
LJMPLK
L3:
JBACC.7,NEXT1
MOVA,#0CH
LK:
ADDA,R4
PUSHACC
K4:
LCALLDELAY1
LCALLKS
JNZK4
MOVR3,#07H
CLRA
MOVR0,#30H
MOVR1,#31H
MM1:
MOVA,@R1
MOV@R0,A
INCR0
INCR1
DJNZR3,MM1
POPACC
MOV@R0,A
RET
NEXT1:
INCR4
MOVA,R2
JNBACC.3,N2
LJMPN1
N2:
LJMPKEY
N1:
RLA
MOVR2,A
LJMPK3
KS:
MOVA,#0F0H
MOVP1,A
NOP
NOP
MOVA,P1
CPLA
ANLA,#0F0H
RET
DELAY1:
SETBRS0
DL:
MOVR5,#0AH
DL2:
MOVR6,#63
DL3:
NOP
NOP
DJNZR6,DL3
DJNZR5,DL2
CLRRS0
RET
INITIL:
MOVR3,#08H
MOVR0,#30H
M1:
MOV@R0,#00H
INCR0
DJNZR3,M1
RET
MODD:
MOVP0,#8EH
LCALLENABLE
MOVA,37H
MOVDPTR,#TABLE3
MOVCA,@A+DPTR
LCALLWRITE2
RET
KAIJI:
MOVA,37H
CJNEA,#0FH,DFF
MOVP0,#80H
LCALLENABLE
MOVDPTR,#TABLE1
LCALLWRITE1
DFF:
RET
SOP:
MOVA,37H
CJNEA,#01H,A11
LCALLMODD
MOV52H,#HIGHTABLE10
MOV53H,#LOWTABLE10
LCALLINITILE2
LCALLMAIN0
A11:
CJNEA,#02H,A22
LCALLMODD
MOV52H,#HIGHTABLE20
MOV53H,#LOWTABLE20
LCALLINITILE2
LCALLMAIN0
A22:
CJNEA,#03H,A33
LCALLMODD
MOV52H,#HIGHTABLE30
MOV53H,#LOWTABLE30
LCALLINITILE2
LCALLMAIN0
A33:
CJNEA,#04H,A44
LCALLMODD
MOV52H,#HIGHTABLE40
MOV53H,#LOWTABLE40
LCALLINITILE2
LCALLMAIN0
A44:
CJNEA,#05H,A55
LCALLMODD
MOV52H,#HIGHTABLE50
MOV53H,#LOWTABLE50
LCALLINITILE2
LCALLMAIN0
A55:
CJNEA,#06H,A66
LCALLMODD
MOV52H,#HIGHTABLE60
MOV53H,#LOWTABLE60
LCALLINITILE2
LCALLMAIN0
A66:
CJNEA,#07H,A77
LCALLMODD
MOV52H,#HIGHTABLE70
MOV53H,#LOWTABLE70
LCALLINITILE2
LCALLMAIN0
A77:
CJNEA,#08H,A88
LCALLMODD
MOV52H,#HIGHTABLE80
MOV53H,#LOWTABLE80
LCALLINITILE2
LCALLMAIN0
A88:
CJNEA,#09H,A99
LCALLMODD
MOV52H,#HIGHTABLE90
MOV53H,#LOWTABLE90
LCALLINITILE2
LCALLMAIN0
A99:
CJNEA,#0AH,AAA
LCALLMODD
MOV52H,#HIGHTABLE100
MOV53H,#LOWTABLE100
LCALLINITILE2
LCALLMAIN0
AAA:
RET
INITILE2:
MOVL50MS,#20
MOVL1MS,#00H
MOVL250MS,#00H
MOVSEC,#00H
MOVMIN,#00H
MOVHOU,#00H
MOVA,HOU
MOVB,#10
DIVAB
ADDA,#30H
MOVP0,#0C8H
LCALLENABLE
LCALLWRITE2
MOVA,B
ADDA,#30H
MOVP0,#0C9H
LCALLENABLE
LCALLWRITE2
MOVA,#3AH
MOVP0,#0DH
LCALLENABLE
LCALLWRITE2
MOVA,MIN
MOVB,#10
DIVAB
ADDA,#30H
MOVP0,#0CBH
LCALLENABLE
LCALLWRITE2
MOVA,B
ADDA,#30H
MOVP0,#0CCH
LCALLENABLE
LCALLWRITE2
MOVA,#3AH
MOVP0,#0CDH
LCALLENABLE
LCALLWRITE2
MOVA,SEC
MOVB,#10
DIVAB
ADDA,#30H
MOVP0,#0CEH
LCALLENABLE
LCALLWRITE2
MOVA,B
ADDA,#30H
MOVP0,#0CFH
LCALLENABLE
LCALLWRITE2
MOVP0,#0C0H
LCALLENABLE
MOVDPTR,#TABLE2
LCALLWRITE1
RET
ENABLE:
CLRRS
CLRRW
CLRE
LCALLDELAY
SETBE
RET
WRITE1:
MOVR1,#00H
A1:
MOVA,R1
MOVCA,@A+DPTR
LCALLWRITE2
INCR1
CJNEA,#0FEH,A1
RET
WRITE2:
MOVP0,A
SETBRS
CLRRW
CLRE
LCALLDELAY
SETBE
RET
DELAY:
MOVR4,#05
D1:
MOVR5,#0FFH
DJNZR5,$
DJNZR4,D1
RET
TAB:
DB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H
DB80H,90H,88H,83H,0C6H,0A1H,86H,8EH
TAB1:
DB89H,86H,0C7H,0C7H,0C0H
TAB2:
DB0C6H,88H,0C0H
TABLE1:
DB'Welcome',0FEH
TABLE2:
DB'Hello',0FEH
TABLE4:
DB'CAU',0FEH
TABLE3:
DB30H,31H,32H,33H
DB34H,35H,36H,37H
DB38H,39H,41H,42H
DB43H,44H,45H,46H
MAIN0:
MOVTMOD,#11H
MOVIE,#8AH
MOVTH1,#3CH
MOVTL1,#0B0H
LCALLKS
JNZTTM12
MOV40H,#00H
NEXT20:
MOVA,40H
MOVDPH,52H
MOVDPL,53H
MOVCA,@A+DPTR
MOVR2,A
JZSTOP
ANLA,#0FH
MOVR1,A
MOVA,R2
SWAPA
ANLA,#0FH
JNZSING
CLRTR0
JMPW1
SING:
DECA
MOV22H,A
RLA
MOVDPTR,#TABLE00
MOVCA,@A+DPTR
MOVTH0,A
MOV21H,A
MOVA,22H
RLA
INCA
MOVCA,@A+DPTR
MOVTL0,A
MOV20H,A
SETBTR0
SETBTR1
W1:
LCALLDELAY30
INC40H
LCALLKS
JNZSTOP
LJMPNEXT20
STOP:
CLRTR0
CLRTR1
LJMPMAIN0
TTM12: