【毕业设计】28-基于单片机的音乐播放器简易音乐播放器设计(原理图+源代码+仿真工程+答辩PPT+答辩论文)
资料要求
资料包含:毕业设计全套资料(精品)
原理图工程文件
原理图截图
仿真模型工程文件
仿真截图
答辩论文低重复率文档,24084字
英文文献及翻译
答辩PPT
visio流程图工程
详情请私信!
任务书
设计说明书
摘要
本文介绍了一种以STC89C52单片机为控制核心的播放器。系统采用液晶模块LCD12864作为显示界面,蜂鸣器作为发声元件,并利用定时器进行中断控制,通过按键来控制音乐播放器的乐曲切换、暂停功能。在系统的设计过程中需要确定实现的功能分析,确定硬件设计方案;对系统对硬件电路设计;对系统的软件程序设计;最后对系统使用仿真软件Protues仿真测试系统,完成了音乐播放、乐曲切换、乐曲暂停的功能。本次设计在软件、硬件的设计上均采用模块化的功能设计,为了保证系统设计的可移植性、拓展性、迭代性。在硬件电路的设计上查看元器件手册对外围电路进行设计,软件程序设计上参考Keil软件给出的例程,保证系统在运行上有较好的实时性。系统设计上考虑到系统硬件电路的抗干扰能力、耐久性以及系统性价比,所以本设计具有较高的推广意义。
设计框架架构
设计说明书及设计文件
源码展示
#include <reg52.h>
#include "ziku.h"
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
#define Play_speed 20000//32000 //25000 // 播放速度,数值越大播放越慢
#define Pitch 6//调整音调
#define LCDLCDDisp_Off 0x3e
#define LCDLCDDisp_On 0x3f
#define Page_Add 0xb8//页地址
#define LCDCol_Add 0x40//列地址
#define Start_Line 0xC0//行地址
/*****液晶显示器的端口定义*****/
#define data_ora P0 /*液晶数据总线*/
sbit LCD_CS1=P3^3 ; /*片选1*/
sbit LCD_CS2=P3^7 ; /*片选2*/
sbit LCDDi=P3^5 ; /*数据/指令 选择*/
sbit LCDRW=P3^6 ; /*读/写 选择*/
sbit LCDEnable=P3^4 ; /*读/写 使能*/
//定义按键K1,K2的硬件接口
sbit K1=P1^6;
sbit K2=P1^7;
sbit BEEP=P3^2; //蜂鸣器端口
uchar th0_f; //在中断中装载的 T0 的值高 8 位
uchar tl0_f; //在中断中装载的 T0 的值低 8 位
uchar key_num=0; //按键数值
uchar song_num=0; //歌曲数
uchar play_song_step=0;//播放音乐的步骤
uchar stop=0; //停止标志
uchar key_flag=0; //按键标志
//老鼠爱大米
uchar code dami[]={
"321-|3.2_1-|3231|3_6.5-|"};
uchar code dami2[]=
{"3_5_665|65-3_2_|122_3_2|12--|"
};
//世上只有妈妈好
//世上只有妈妈好
uchar code mamahao[]={
"6.5_35|`16_5_6-|35_6_53_2_|1_,6_5_3_2-|"
};
uchar code mamahao2[]={
"2.3_55_6_|321-|5.3_2_1_,6_1_|,5--"};
//**《贝加尔湖畔》简谱**
uchar code Baikal000[]={
",6_,7_15|4-|,5_,6_,74|3-"
};
uchar code Baikal001[]={
"3_3_65|42-"
};
uchar code Baikal002[]={
",7_|,71_2_24|3--"
};
uchar code Baikal003[]={
",7_|,7,7_3_33|,6,6_,6_,66|6--"
};
uchar code Baikal004[]={
"6_`1_75_3.|3--"
};
uchar code Baikal005[]={
"1_|,7,7_3_33|,6,6_,6_,66|6---|7_`1_`2-|`273-|3_3_6.5_42--|"
};
uchar code Baikal006[]={
"567.7_|`3--`2_`1_|7---|,6_,7_15|4--"
};
uchar code Baikal007[]={
",5_,6_,74|4_3_3--|3_3_65|42-1_|,73_3_31|,6---|"
};
//T0 的值,及输出频率对照表
uchar code freq[36*2]={
0xA9,0xEF,//00220HZ ,1 //0
0x93,0xF0,//00233HZ ,1#
0x73,0xF1,//00247HZ ,2
0x49,0xF2,//00262HZ ,2#
0x07,0xF3,//00277HZ ,3
0xC8,0xF3,//00294HZ ,4
0x73,0xF4,//00311HZ ,4#
0x1E,0xF5,//00330HZ ,5
0xB6,0xF5,//00349HZ ,5#
0x4C,0xF6,//00370HZ ,6
0xD7,0xF6,//00392HZ ,6#
0x5A,0xF7,//00415HZ ,7
0xD8,0xF7,//00440HZ 1 //12
0x4D,0xF8,//00466HZ 1# //13
0xBD,0xF8,//00494HZ 2 //14
0x24,0xF9,//00523HZ 2# //15
0x87,0xF9,//00554HZ 3 //16
0xE4,0xF9,//00587HZ 4 //17
0x3D,0xFA,//00622HZ 4# //18
0x90,0xFA,//00659HZ 5 //19
0xDE,0xFA,//00698HZ 5# //20
0x29,0xFB,//00740HZ 6 //21
0x6F,0xFB,//00784HZ 6# //22
0xB1,0xFB,//00831HZ 7 //23
0xEF,0xFB,//00880HZ `1
0x2A,0xFC,//00932HZ `1#
0x62,0xFC,//00988HZ `2
0x95,0xFC,//01046HZ `2#
0xC7,0xFC,//01109HZ `3
0xF6,0xFC,//01175HZ `4
0x22,0xFD,//01244HZ `4#
0x4B,0xFD,//01318HZ `5
0x73,0xFD,//01397HZ `5#
0x98,0xFD,//01480HZ `6
0xBB,0xFD,//01568HZ `6#
0xDC,0xFD,//01661HZ `7 //35
};