河南城建学院单片机音乐播放器课程设计.docx
《河南城建学院单片机音乐播放器课程设计.docx》由会员分享,可在线阅读,更多相关《河南城建学院单片机音乐播放器课程设计.docx(24页珍藏版)》请在冰豆网上搜索。
河南城建学院单片机音乐播放器课程设计
单片机课程设计
题目:
音乐播放器
专业:
自动化
姓名:
王波涛
学号:
092411135
指导教师:
董燕飞葛广军陈国振任琦梅
电气与信息工程学院
2013年12月30日
成绩评定·
指导教师评语:
成绩等级:
指导教师签字:
年月日
目录
一、设计目的…………………………………………………………………………1
二、设计要求…………………………………………………………………………1
三、AT89S51简介……………………………………………………………………1
AT89S51单片机的内部结构……………………………………………………1
AT89S51芯片的引脚及特点……………………………………………………2
四、音乐产生原理……………………………………………………………………4
五、硬件电路…………………………………………………………………………6
复位电路设计……………………………………………………………………6
显示电路设计……………………………………………………………………6
振荡电路设计……………………………………………………………………7
控制电路设计……………………………………………………………………7
总体电路设计……………………………………………………………………8
6、设计体会…………………………………………………………………………8
7、参考文献…………………………………………………………………………8
附录1源代码……………………………………………………………………9
一、设计目的
本课题希望通过对常见电子产品的设计与制作来培养学生综合运用所学知识分析和解决实际问题的能力,掌握相关绘图制作软件,会运用电子仪器进行电路检测和调试,强化电子技术实际应用技能训练,为今后开展产品技术开发、设计和制作打下初步的基础。
二、设计要求
设计一个音乐播放器,有四个按键:
播放、暂停、下一曲、上一曲;1位LED灯显示器,用来显示所选曲目。
三、AT89S51简介
AT89S51单片机的内部结构
单片机的内部结构图1可知,AT89S51单片机主要由以下几部分组成:
中央处理器(CPU)、振荡电路、内部总线、程序存储器和数据存储器、定时器/计数器、I/O口、串行口、中断系统。
图1单片机内部结构
AT89S51芯片的引脚及特点:
1.40个引脚
2.4KBFlash片内程序存储器
3.128B随机存取数据
4.32个外部双向输入/输出(I/O口
5.5个中断源
6.2个16位可编程定时/计数器
7.2个全双工串行通信口
看门狗(WDT)电路
9.片内振荡电路
管脚说明
1.VCC:
供电电压。
2.GND:
接地
3.P0口:
P0口为一个8位漏级开路
双向I/O口,也即地址/数据总线复用口。
作为输出口用时,能驱动8个TTL逻辑门电路。
对端口写“1”时,被定义为高阻输入,在访问外部数据存储器或程序存储器时,这组口线分时转换地址(低8位)和数据总线复用,在访问期间激活内部上拉电阻。
4.P1口:
P1口是一个带内部上拉电阻的8位双向I/O口,P1口的输出缓冲级可驱动4个TTL逻辑门电路。
对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口。
作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(I
)。
5.P2口:
P2口是一个带有内部上拉电阻的8位双向I/O口,P2口的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。
对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口。
作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(I
)。
6.P3口:
P3口是一个带有内部上拉电阻的双向8位I/O口,P3口的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。
对P3口写“1”时,它们被内部的上拉电阻拉高并可作为输入端口。
作输入口使用时,被外部信号拉低的P3口将用上拉电阻输出电流(I
)。
7.RST:
复位输入。
当振荡器工作时,RST引脚出现两个机器周期以上的高电平时间将使单片机复位。
WDT溢出将使该引脚输出高电平,设置SFRAUXR的DISRTO位(地址8EH)可打开或关闭该功能。
DISRTO位缺省为RESET输出高电平打开状态。
8.ALE/
:
当访问外部存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低8位字节。
即使不访问外部寄存器,ALE仍以时钟振荡频率的1/6输出固定的正脉冲信号,因此它可对外输出时钟或用于定时目的。
值得注意的是:
每当访问外部数据存储器时将跳过一个ALE脉冲。
9.
:
程序存储允许(
)输出是外部程序存储器的读选通信号,当AT89S51由外部程序存储器取指令(或数据)时,每个机器周期两次
有效,即输出两个脉冲。
当访问外部数据存储器时,没有两次有效的
信号。
EA/VPP:
外部访问允许。
欲使CPU仅访问外部程序存储器(地址为0000H-FFFFH),EA端必须保持低电平(接地)。
如EA端保持高电平(接VCC端),CPU则执行内部程序存储器中的指令。
10.XTAL1:
反向振荡放大器的输入及内部时钟工作电路的输入端。
11.XTAL2:
反向振荡放大器器的输出端。
四、音乐产生原理:
若要产生音频脉冲,只要算出某一音频的周期,再将此周期除以2,即为半周期的时间。
利用定时器计时半周期时间,每当计时终止后就将P1.0反相,然后重复计时再反相。
就可在P1.0引脚上得到此频率的脉冲。
利用单片机的内部定时器使其工作计数器模式(MODEL1)下,改变其计数值TH0及TL0以产生不同频率的方法产生不同音阶。
例如,频率为523HZ,其周期T=1/523=1912us,因此只要令计时器计时956us/1us=956,每计数956次时将I/O反相,就可得到中音DO(523HZ)。
计数脉冲值与频率的关系式是:
N=F1/2/F2,N是计数值;F1是机器频率(晶体振荡器为12MHZ时,其频率为1MHZ);F2为想要产生的声音频率。
其计数初值T的求法如下:
T=65536–N=65536-F1/2/F2
一首音乐是许多不同的音阶组成的,而每个音阶对应着不同的频率,这样我们就可以利用不同的频率的组合,即可构成我们所想要的音乐了,当然对于单片机来产生不同的频率非常方便,我们可以利用单片机的定时/计数器T0来产生这样方波频率信号,因此,我们只要把一首歌曲的音阶对应频率关系弄正确即可。
现在以单片机12MHZ晶振为例,例出高中低音符与单片机计数T0相关的计数值如下表1所示:
表1 高中低音符与单片机计数T0相关的计数值
音符
频率(HZ)
简谱码(T值)
音符
频率(HZ)
简谱码(T值)
低1 DO
262
63628
#4FA#
740
64860
#1 DO#
277
63731
中5SO
784
64898
低2 RE
294
63835
#5SO#
831
64934
#2RE#
311
63928
中6LA
880
64968
低3M
330
64021
#6
932
64994
低4FA
349
64103
中7SI
988
65030
#4FA#
370
64185
高1DO
1046
65058
低5SO
392
64260
#1DO#
1109
65085
#5SO#
415
64331
高2RE
1175
65110
低6LA
440
64400
#2RE#
1245
65134
#6
466
64463
高3M
1318
65157
低7SI
494
64524
高4FA
1397
65178
中1DO
523
64580
#4FA#
1480
65198
#1DO#
554
64633
高5SO
1568
65217
中2RE
587
64684
#5SO#
1661
65235
#2RE#
622
64732
高6LA
1760
65252
中3M
659
64777
#6
1865
65268
中4FA
698
64820
高7SI
1967
65283
如表2所示:
音乐的音拍,一个节拍为单位(C调)
表2 音乐的音拍
曲调值
DELAY
曲调值
DELAY
调4/4
125ms
调4/4
62ms
调3/4
187ms
调3/4
94ms
调2/4
250ms
调2/4
125ms
流程图如下图2:
图2流程图
五、硬件电路
单片机的复位电路设计
单片机AT89S51作为主控芯片,控制整个电路的运行。
单片机外围需要一个复位电路,复位电路的功能是:
系统上电时提供复位信号,直至系统电源稳定后,撤消复位信号。
为可靠起见,电源稳定后还要经一定的延时才撤销复位信号,以防电源开关或电源插头分-合过程中引起的抖动而影响复位。
该设计采用含有二极管的复位电路,复位电路可以有效的解决电源毛刺和电源缓慢下降(电池电压不足)等引起的问题,在电源电压瞬间下降时可以使电容迅速放电,一定宽度的电源毛刺也可令系统可靠复位。
复位电路的设计图如图3示:
图3单片机复位电路图
显示电路设计
7段LED数码管,是在一定形状的绝缘材料上,利用单只LED组合排列成“8”字型的数码管,分别引出它们的相应电极,点亮相应的点划来显示出0-9的数字。
图4LED显示器
图4是共阴和共阳极数码管的内部电路,它们的发光原理是一样的,只是它们的电源极性不同而已。
将多只LED的阴极连在一起即为共阴式,而将多只LED的阳极连在一起即为共阳式。
以共阴式为例,如把阴极接地,在相应段的阳极接上正电源,该段即会发光。
当然,LED的电流通常较小,一般均需在回路中接上限流电阻。
单片机的振荡电路设计
单片机必须在时钟的驱动下才能进行工作[2]。
单片机内部有一个高增益反相放大器,用于构成振荡器。
反相放大器的输入端为XTAL1,输出端为XTAL2,分别是单片机的18脚和19脚。
在XTAL1和XTAL2两端跨接石英晶体及两个电容就可以构成稳定的自激振荡器,见图7电容C1和C2通常取30pF左右,对振荡频率有微调作用。
振荡频率范围是1.2MHz—12MHz。
图5振荡电路
控制电路设计
图6设置电路图
设置电路有4个按键组成如图8所示,单片机可以直接与按键进行连接,这样一来我们可以充分的应用单片机的软件资源,在编写程序的时候,利用一些特殊的命令实现单片机与按键的接口,这样就可以通过按键来满足用户所要实现的数据设置。
总体电路图
六、设计体会
通过对基于单片机音乐演奏控制设计的研究和设计,分析了设计的实现的意义和可行性。
单片机AT889S51是一种非常小巧但功能非常多,应用非常广的一种芯片,功率也非常的小,采用AT89S51作为系统核心制作音乐演奏控制设计电路简单了很多,由于可以反复烧写,为学习降低成本。
本设计外部采用单片机的复位电路设计、单片机的震荡电路设计、LED数码管显示正在播放的音乐序号,四个按键控制等。
通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,从而提高自己的实际动手能力和独立思考的能力。
七、参考文献:
1.阎石.数字电子技术基础,北京:
高等教育出版社,1998
2.张毅刚.单片机原理及应用,高等教育出版社,2003
3.谭浩强.C程序设计(第二版),清华大学出版社,1999
4.张坤毅.单片微型计算机原理及应用,西安电子科技大学出版社,1997年
5.胡汉才.单片机原理及接口技术,清华大学出版社,2007
附录1源代码
#include
#include
#defineFREQ12000000
sbitP1_1=P1^1;//停止工作
sbitP1_0=P1^0;//开始工作
sbitP1_2=P1^2;//上一曲
sbitP1_3=P1^3;//下一曲
unsignedcharw,i;
//音乐_编码2--存储器定义//
unsignedcharcodemusic_tab1[]={//音符码格式:
|D7|D6D5D4|D3|D2D1D0|
//梁祝|变调 |节拍 | 升降 |音符|
0xcb,//示例:
0xcb=11001011B,即升调,4/16拍,3Mi低音
0x35,0x16,0xb9,0x12,0x96,0x99,0xa5,
0xbd,0x99,0x96,0x15,0x13,0x15,0x62,
0x32,0x13,0xa7,0x26,0x25,0x16,0xa9,0x22,
0xa3,0xa9,0x96,0x15,0x16,0x99,0xe5,
0xbb,0x15,0xa7,0xaa,0x96,0x99,0xd5,
0x13,0x15,0x23,0x15,0x16,0x17,0x9a,0xd6,0x15,0x16,
0xb9,0x12,0x25,0x23,0x23,0x22,0x13,0x12,0x21,0x96,0x15,
0x43,0xc9,0x96,0x99,0x96,0x15,0x13,0x15,0x16,0x99,
0xd5,//功能码格式:
|D7D6D5D4|D3D2D1D0|
//|高4位=0时是功能码|根据低4位散转|
0x00,//最后字节为功能码必须==0x00退出
};
unsignedcharcodemusic_tab2[]={//康定情歌
0x23,0x25,0x26,0x16,0x15,0x36,0x13,0x42,
0x23,0x25,0x26,0x16,0x15,0x26,0x53,
0x23,0x25,0x26,0x16,0x15,0x26,0x23,0x42,
0x25,0x23,0x12,0x13,0x12,0x11,0x22,0xd6,
0x26,0xda,0x25,0x53,0x12,0x11,0xd6,
0xad,0x23,0x12,0x13,0x12,0x11,0x22,0xd6,
0x00,
};
unsignedcharcodemusic_tab3[]={//美酒加咖啡
0x55,0x23,0x25,0x26,0xa9,0x22,0x73,
0x45,0x25,0x26,0x23,0x22,0x21,0x23,0x72,
0x52,0x23,0x45,0x43,0x22,0x21,0xa6,0x25,0x66,
0xc9,0xa6,0x25,0x23,0x25,0x26,0xa9,0xf5,
0x45,0x23,0x25,0x46,0xc9,0x22,0x13,0x12,0x21,0x22,0x63,
0x22,0x23,0x25,0x26,0x25,0x23,0x22,0x21,0x72,
0x52,0x23,0x45,0x43,0x22,0x21,0xa6,0x25,0x66,
0xb9,0x12,0x23,0x25,0x22,0xa5,0xab,0x22,0x71,
0x00,
};
unsignedcharcodemusic_tab4[]={//北国之春
0x15,0x16,0x75,0x15,0x16,0x55,0x13,0x15,0x16,0x15,0x16,0x99,0x12,0x13,
0x65,0x45,0x13,0x12,0x11,0x12,0x73,
0x62,0x42,0x12,0x11,0x96,0x15,0x76,
0x55,0x23,0x45,0xa9,0x22,0x53,0x12,0x13,0x65,
0x52,0x22,0x42,0x21,0xa6,0xe9,0x91,0x12,0x13,0x12,0x13,0x15,0x99,0x12,
//以上为过门
0x20,0x23,0x23,0x23,0x63,0x22,0x23,0x23,0x22,0x41,0xa6,0x25,
0x53,0x22,0x21,0xa9,0x21,0xa6,0x75,
0x26,0xa9,0x21,0xa6,0xc9,0x12,0x11,0x96,0x15,
0x23,0x25,0x25,0x26,0x45,0x21,0x22,
0x13,0x35,0x25,0xa9,0xa6,0x25,0x23,0x22,0x71,
0x52,0x25,0x45,0x13,0x15,0x13,0x12,0x21,0x41,0x22,0x43,0x45,
0x23,0x25,0x26,0xa9,0x42,0x12,0x33,0x72,
0x51,0x22,0x43,0x22,0x21,0xc6,0xc9,0x29,0xc6,0x45,0x23,0x23,
0x53,0x25,0x26,0x25,0x13,0x12,0x21,0x62,0x42,0x23,0x25,
0x55,0x26,0x25,0x23,0x45,0x26,0xa9,0x21,0x22,0x63,
0x52,0x22,0x22,0x13,0x12,0x21,0xa6,0xf9,
0x00,
};
unsignedcharcodemusic_l_tab[8]={0,1,2,3,4,6,8,16};//节拍延时单位
unsignedcharcodemusic_freq_tab[64]={//音符定时器值表
0xff,0xea,//0休止符
255-FREQ/24/131/256,//256-FREQ/24/x/256//1do高字节
256-FREQ/24/131%256,//256-FREQ/24/x%256//1do低字节
255-FREQ/24/147/256,256-FREQ/24/147%256,//2re
255-FREQ/24/165/256,256-FREQ/24/165%256,//3mi
255-FREQ/24/175/256,256-FREQ/24/175%256,//4fa
255-FREQ/24/196/256,256-FREQ/24/196%256,//5suo
255-FREQ/24/221/256,256-FREQ/24/221%256,//6la
255-FREQ/24/248/256,256-FREQ/24/248%256,//7xi
0xff,0xea,//0休止符
255-FREQ/24/262/256,256-FREQ/24/262%256,//1do
255-FREQ/24/294/256,256-FREQ/24/294%256,//2re
255-FREQ/24/330/256,256-FREQ/24/330%256,//3mi
255-FREQ/24/350/256,256-FREQ/24/350%256,//4fa
255-FREQ/24/393/256,256-FREQ/24/393%256,//5suo
255-FREQ/24/441/256,256-FREQ/24/441%256,//6la
255-FREQ/24/495/256,256-FREQ/24/495%256,//7xi
0xff,0xea,//0休止符
255-FREQ/24/525/256,256-FREQ/24/525%256,//1do
255-FREQ/24/589/256,256-FREQ/24/589%256,//2re
255-FREQ/24/661/256,256-FREQ/24/661%256,//3mi
255-FREQ/24/700/256,256-FREQ/24/700%256,//4fa
255-FREQ/24/786/256,256-FREQ/24/786%256,//5suo
255-FREQ/24/882/256,256-FREQ/24/882%256,//6la
255-FREQ/24/990/256,256-FREQ/24/990%256,//7xi
0xff,0xea,//0休止符
255-FREQ/24/1049/256,256-FREQ/24/1049%256,//1do
255-FREQ/24/1178/256,256-FREQ/24/1178%256,//2re
255-FREQ/24/1322/256,256-FREQ/24/1322%256,//3mi
255-FREQ/24/1400/256,256-FREQ/24/1400%256,//4fa
255-FREQ/24/1572/256,256-FREQ/24/1572%256,//5suo
255-FREQ/24/1665/256,256-FREQ/24/1665%256,//6la
255-FREQ/24/1869/256,256-FREQ/24/1869%256,//7xi
};
unsignedcharcodemusic_frequp_tab[64]={//升半音
0xff,0xea,//0休止符
255-FREQ/24/139/256,//1do高字节//255-FREQ/24/x/256
256-FREQ/24/139%256,//1do低字节//256-FREQ/24/x%256
255-FREQ/24/156/256,256-FREQ/24/156%256,//2re
255-FREQ/24/175/256,256-FREQ/24/175%256,//3mi
255-FREQ/24/185/256,256-FREQ/24/185%256,//4fa
255-FREQ/24/208/256,256-FREQ/24/208%256,//5suo
255-FREQ/24/234/256,256-FREQ/24/234%256,//6la
255-FREQ/24/262/256,256-FREQ/24/262%256,//7xi
0xff,0xea,//0休止符
255-FREQ/24/278/256,256-FREQ/24/278%256,//1do
255-FREQ/24/3