单片机课程设计 音乐播放系统设计

合集下载

音乐播放器-单片机课程设计

音乐播放器-单片机课程设计

设计内容与设计要求设计内容:本课题要求以单片机为核心设计一个音乐播放器,完成多曲选择播放控制、停止控制、省电模式控制等功能。

音乐播放器利用单片机的定时器产生乐谱的各种频率方波,信号经过放大后由喇叭发出声音,选取某段音乐使单片机连续播放。

设计3个按键:播放/停止、下一曲、上一曲;4位LED 显示器,用来显示所选曲目,该显示器在播放期间为了节省电源,设计为关闭状态,当一歌曲演奏结束,或选曲时显示器才显示曲目信息。

要求焊接好开发板,在开发板上进行调试。

设计要求:1)确定系统设计方案;2)进行系统的硬件设计;3)完成必要元器件选择;4)开发板焊接及测试5)系统软件设计及调试;6)系统联调及操作说明7)写说明书主要设计条件1、MCS-51单片机实验操作台1台;2、PC机及单片机调试软件,仿真软件proteus;3、开发板1块;4、制作工具1套;5、系统设计所需的元器件。

说明书格式目录第1章、概述第2章、系统总体方案设计第3章硬件设计第4章软件设计及调试第5章系统联调及操作说明第6章总结参考文献附录A系统硬件原理图附录B程序清单进度安排设计时间分为二周第一周星期一、上午:布置课题任务,课题介绍及讲课。

下午:借阅有关资料,总体方案讨论。

星期二、分班级焊接开发板星期三、确定总体方案,学习与设计相关内容。

星期四、各部分方案设计,各部分设计。

星期五、设计及上机调试。

星期六、设计并调试第二周星期一:设计及上机调试。

星期二:调试,中期检查。

星期三:调试、写说明书。

星期四--星期五上午:写说明书、完成电子版并打印成稿。

星期五下午:答辩。

参考文献参考文献1、王迎旭编.《单片机原理与应用》[M].机械工业出版社.2、楼然苗编.《51系列单片机设计实例》[M].北京航空航天大学出版社.3、黄勤编.《计算机硬件技术基础实验教程》[M].重庆大学出版社4、刘乐善编.《微型计算机接口技术及应用》[M].华中科技大学出版社.5、陈光东编.《单片微型计算机原理及接口技术》[M].华中科技大学出版社.第1章概述... ... ... ... ... ... ... ... .. .. . 61.1单片机简介... ... ... ... .. ... ... ... (6)1.2 任务简介. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7第2章系统总体方案设计 (8)2.1 音乐的产生... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .82.2 系统方案. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 10第3章硬件设计 (11)3.1 89C51单片机 (12)3.2 I/O并行口直接驱动LED显示 (14)3.3 蜂鸣电路. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .153.4控键电路.. . . . . . . . . . . . . . . . . . .163.5时钟电路 . . . . . . . . . . . . . . . . .. .173.6电源电路 . . . . . . . . . . . . . . . . . . 17 第4章软件设计 (18)4.1.软件设计 (18)4.2 设计方案. . . . . . . . . . . . .. . . . . . . . . . . . . .. . . . . . .. . . . .19第5章系统调试与仿真 (20)5.1软件仿真阶段 (20)5.2系统的仿真调试阶段 (20)5.3调试问题处理 (21)第6章心得体会 (22)参考文献 (23)附录A:音乐播放器电路设计图 (24)附录B:程序清单 (25)第1章概述1.1单片机简介单片机又称单片微控制器,它不是完成某一逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。

单片机课程设计报告(利用蜂鸣器播放音乐)

单片机课程设计报告(利用蜂鸣器播放音乐)

课程设计:嵌入式系统应用题目名称:利用蜂鸣器实现音乐播放功能姓名:学号:班级:完成时间:1设计的任务设计内容:动手焊接一个51单片机设计目标:利用单片机上的蜂鸣器实现音乐播放功能2 设计的过程2.1 基本结构1.STC89C52RC在本次的试验中采用了STC89C52RC单片机,STC89C52RC单片机是宏晶科技推出的新一代高速/低功耗/超强抗干扰的单片机,指令代码完全兼容传统8051单片机,12时钟/机器周期,工作电压:5.5V~3.3V(5V单片机)/3.8V~2.0V(3V单片机),工作频率范围:0~40MHz,相当于普通8051的0~80MHz,实际工作频率可达48MHz,用户应用程序空间为8K字节。

(STC89C52RC引脚图)STC89C52RC单片机的工作模式:(1)典型功耗<0.1μA,可由外部中断唤醒,中断返回后,继续执行原程序(2)空闲模式:典型功耗2mA(3)正常工作模式:典型功耗4Ma~7mA(4)唤醒,适用于水表、气表等电池供电系统及便携设备2.蜂鸣器及其工作原理:蜂鸣器按其结构分主要分为压电式蜂鸣器和电磁式蜂鸣器两种类型。

电磁式蜂鸣器由振荡器、电磁线圈、磁铁、振动膜片及外壳等组成。

接通电源后,振荡器产生的音频信号电流通过电磁线圈,使电磁线圈产生磁场,振动膜片在电磁线圈和磁铁的相互作用下,周期性地振动发声。

本实验采用的是电磁式蜂鸣器。

蜂鸣器按其是否带有信号源又分为有源和无源两种类型。

有源蜂鸣器只需要在其供电端加上额定直流电压,其内部的震荡器就可以产生固定频率的信号,驱动蜂鸣器发出声音。

无源蜂鸣器可以理解成与喇叭一样,需要在其供电端上加上高低不断变化的电信号才可以驱动发出声音。

本实验采用的是有源蜂鸣器。

(蜂鸣器与单片机连接电路图)2.2 软件设计过程1.蜂鸣器发声原理本实验由于采用有源蜂鸣器,只需将引脚端口P3^4清零,蜂鸣器即可发声;P3^4置位,蜂鸣器停止发声。

单片机音乐播放器课程设计

单片机音乐播放器课程设计

单片机音乐播放器课程设计一、课程目标知识目标:1. 理解单片机的基础知识,掌握其内部结构与工作原理;2. 学会使用C语言编写单片机程序,实现音乐播放器的功能;3. 了解音乐播放器的基本组成部分,如音符产生、音调控制等;4. 掌握音乐理论知识,能将简单的乐谱转换为单片机程序。

技能目标:1. 能够运用所学知识,设计并实现一个具有基础音乐播放功能的单片机系统;2. 熟练使用编程软件进行单片机程序编写、调试与优化;3. 学会使用相关工具和仪器,进行电路搭建、测试与故障排查。

情感态度价值观目标:1. 培养学生对单片机及电子制作的兴趣,激发创新精神;2. 培养学生的团队协作能力,学会与他人共同解决问题;3. 增强学生的自信心,敢于面对挑战,勇于克服困难;4. 培养学生的责任心,关注环境保护,养成良好的操作习惯。

课程性质:本课程为实践性较强的课程,以项目为导向,结合单片机原理与应用,培养学生的动手能力和创新能力。

学生特点:本课程针对高中年级学生,学生具备一定的物理、数学基础,对电子制作有一定兴趣,但编程能力参差不齐。

教学要求:教师需结合学生特点,采用循序渐进的教学方法,注重理论与实践相结合,关注个体差异,提高学生的实践操作能力。

在教学过程中,注重引导学生思考,激发学生的学习兴趣,培养其创新精神。

通过课程学习,使学生能够独立完成一个简单的单片机音乐播放器设计。

二、教学内容1. 单片机基础知识:介绍单片机的内部结构、工作原理、性能特点,引导学生了解并掌握单片机的基本概念。

教材章节:第一章 单片机概述2. C语言编程基础:讲解C语言的基本语法、数据类型、运算符、控制结构等,为学生编写单片机程序奠定基础。

教材章节:第二章 C语言基础3. 单片机程序设计与调试:学习如何使用编程软件进行程序编写、调试与优化,掌握单片机程序的开发流程。

教材章节:第三章 单片机程序设计与调试4. 音频信号处理:介绍音频信号的基本知识,如音符、音调、节拍等,学习如何将乐谱转换为单片机程序。

音乐播放系统设计--单片机课程设计报告

音乐播放系统设计--单片机课程设计报告

单片机课程设计报告单片机课程设计报告音乐播放系统设计音乐播放系统设计姓 名:名: 陈 志 祥,祥, 陈 琪,琪,温 雪 云 班 级:级: 04电信(3)班)班学 号:号:2004358307 2004358308 2004358324 指导老师:指导老师:日期:日期:2007.7.2~2007.7.13华南农业大学工程学院华南农业大学工程学院摘 要要作为单片机的重要硬件资源之一,利用定时器可以产生各种固定频率的方波信号,也可以产生包括“Do“、“Re“、“Me““Me“----等音阶在内的各种频率声音。

在此设计中我们采用12MHz 的晶振,产生的频率信号即音乐信号由P3.7口输出,信号经过放大后由喇叭发出声音。

声音。

乐曲中,每一音符对应着确定的频率,我们可以参照给出的各音符频率及其相应的时间常数来编写程序,根据表中所提供的常数,将其16进制代码送入芯片里,可以奏出音符。

音符的节拍我们可以用定时器T0来控制,送入不同的初值,就可以产生不同的定时时间。

便如某歌曲的节奏为每分钟94拍,即一拍为0.64秒。

其它节拍与时间的对应关系也可以从两者关系表中得到。

也可以从两者关系表中得到。

定时器T0工作在定时方式1,改变TH0及TL0TL0,产生不同的音频频率。

要编写的乐,产生不同的音频频率。

要编写的乐谱按要求以音符字节数据表的形式存放在程序中,改变乐曲就是通过改变该数据表的内容来实现的。

主程序的任务是按顺序读取数据表中的字节,根据情况调用音级子程序和音长子程序,启动定时器T0进行工作。

进行工作。

目 录录1 方案比较与选择(须详细阐述创新点或新见解)方案比较与选择(须详细阐述创新点或新见解)············································· 1 2 电路仿真与分析电路仿真与分析······································································································· 2.1 电路仿真电路仿真········································································································ 2.2 电路分析电路分析········································································································ 3电路板制作、焊接、调试电路板制作、焊接、调试························································································ 3.1 电路板制作电路板制作····································································································· 3.2 电路板焊接电路板焊接····································································································· 3.3 电路板调试电路板调试···································································································· 4讨论及进一步研究建议讨论及进一步研究建议···························································································· 5课程设计心得课程设计心得············································································································ Abstract ·Abstract ··························································································································参考文献参考文献 ·······················································································································1.方案比较与选择方案一:利用AT89C2051和三级管9012构成的音乐播放器一、功能特色一、功能特色本播放器可实现循环播放、上一曲、下一曲、复位等功能。

单片机MSP430G2课程设计音乐播放器

单片机MSP430G2课程设计音乐播放器

单片机期末检测报告学生姓名:***学生学号:********专业班级:自动化12-2班基于MSP430G2的音乐切换器一、内容通过MSP430G2播放自己所设置的歌曲,并通过按键S2切换另一首歌曲二、思路与方法(1)思路:通过老师上课所讲的F6638音乐器播放实例,想利用MSP430G2来进行音乐播放,阅读网上单片机播放音乐例程并加以改编,并试想利用按键S2来进行歌曲的实时切换(2)音乐:通过MSP430蜂鸣器音高音长对照表,将自己喜欢的音乐通过音乐简谱改成相应代码,利用播放函数play_song()进行歌曲播放。

演奏乐曲对于一个音符应该包括两个部分,声调用简单的延时-电平翻转来实现,改变了延时的时间就改变了声调,而时间通过计数比较来实现,当计数值相等时就跳出循环演奏下一个音符。

(3)按键S2:通过中断服务、事件检测、事件处理函数,通过按键S2切换歌曲(4)硬件:无源蜂鸣器、MSP430G2单片机有流程图:三、程序调试(1)遇到的问题与解决方法按键S2切换歌曲开始不能进行实时切换,首先是我将实验是检测按键的程序进行整改加入主程序中while(1),这样只有长按S2键才能播放下一曲。

后来查阅书籍关于MSP430G2中断服务的程序后,调用这些函数,并设置变量i放在两个音乐播放函数中,通过判断i=1或0进行选歌。

开始编曲时候并未按照音高、音长对照表进行编曲,所以导致歌曲无调子,后在搜集到资料后进行整改进行改曲。

开始蜂鸣器声音略小,后发现是正负导线接反所致。

(2)程序段/*********************************************时钟频率务必为8MHz,定时器为8分频*********************************************/#include<msp430g2553.h>typedef unsigned char uchar;#include"music.h"//乐曲1#include"te.h"//乐曲2#define Buzzer BIT3#define Buzzer_Port P2OUT#define Buzzer_DIR P2DIRuchar counter;void Play_Song(void);void Delay_Nms(uchar n);void ss(void);void P1_IODect();void P13_Onclick();static int i=0;/***************主函数****************/void main(void){WDTCTL = WDTPW + WDTHOLD;//关闭看门狗P1DIR |= BIT0;P1OUT |= BIT0;P1REN |= BIT3;P1OUT |=BIT3;P1DIR &=~BIT3;P1IES |= BIT3;P1IE |= BIT3;BCSCTL1=CALBC1_8MHZ; //晶振选择DCO中的8MHzDCOCTL=CALDCO_8MHZ; //选择系统主时钟为8MHz//CCTL0 = CCIE;CCR0 = 7200; //设定拍速TACTL |= TASSEL_2 + ID_3; //TimerA定时器分频要选8分频 Buzzer_DIR |= Buzzer; //设置控制蜂鸣器的IO方向为输出 _EINT(); //打开全局中断//循环演奏歌曲while(1){if (i==0)//按键没按下{Play_Song();}else {ss();}}}/*******************************************函数名称:TimerA_ISR功能:定时器A的中断服务函数********************************************/#pragma vector = TIMER0_A0_VECTOR__interrupt void TimerA_ISR(void){counter++;}/*******************************************函数名称:PORT1_ISR功能:响应p1口的外部中断服务********************************************/#pragma vector =PORT1_VECTOR__interrupt void PORT1_ISR(void){P1_IODect();P1IFG=0;}/*******************************************函数名称:P1_IODect()功能:判断具体引发中断的I/O,并调用相应I/O的中断事件处理函数********************************************/void P1_IODect(){unsigned int Push_Key=0;Push_Key=P1IFG&(~P1DIR);__delay_cycles(10000);if((P1IN&Push_Key)==0){switch(Push_Key){case BIT3:P13_Onclick(); break;default: break;}}}/*******************************************函数名称:P13_Onclick()功能:事件处理函数********************************************/void P13_Onclick(){if(i==0){i=1;}elsei=0;P1OUT ^=BIT0;}/*******************************************函数名称:Delay_Nms功能:延时N个ms的函数参数:n--延时长度返回值:无********************************************/void Delay_Nms(uchar n){uchar i,j;for( i = 0;i < n; i++ ){for( j = 0;j < 3;j++ )_NOP();}}/*******************************************函数名称:Play_Songss********************************************/void Play_Song(void){uchar Temp1,Temp2;//Temp1放音调决定了音调的高低,Temp2放音长决定了某个音的演奏时间uchar addr = 0; //SONG数组中每两个为一组第一字节为音调,第二字节为音长counter = 0; //中断计数器清0while(i==0){Temp1 = songsong[addr++];if ( Temp1 == 0xFF ) //休止符{TACTL &=~MC_1; //停止计数Delay_Nms(100);}else if ( Temp1 == 0x00 ) //歌曲结束符{return;}else{Temp2 = songsong[addr++];TACTL |=MC_1; //开始计数while(1){Buzzer_Port ^= Buzzer;Delay_Nms(Temp1);if ( Temp2 == counter ){counter = 0;break;}}}}}void ss(void){uchar Temp1,Temp2;//Temp1放音调决定了音调的高低,Temp2放音长决定了某个音的演奏时间uchar addr = 0; //SONG数组中每两个为一组第一字节为音调,第二字节为音长counter = 0; //中断计数器清0while(i==1){Temp1 = gg[addr++];if ( Temp1 == 0xFF ) //休止符{TACTL &=~MC_1; //停止计数Delay_Nms(100);}else if ( Temp1 == 0x00 ) //歌曲结束符{return;}else{Temp2 = gg[addr++];TACTL |=MC_1; //开始计数while(1){Buzzer_Port ^= Buzzer;Delay_Nms(Temp1);if ( Temp2 == counter ){counter = 0;break;}}}}}const unsigned char songsong[]= //歌曲1 CCR0=7200,格式为: 频率常数, 节拍常数, 频率常数, 节拍常数,{0x26,0x20,0x20,0x20,0x20,0x20,0x26,0x10,0x20,0x10,0x20,0x80,0x26,0x20,0x30,0x20,0x30,0x20,0x39,0x10,0x30,0x10,0x30,0x80,0x26,0x20,0x20,0x20,0x20,0x20,0x1c,0x20,0x20,0x80,0x2b,0x20,0x26,0x20,0x20,0x20,0x2b,0x10,0x26,0x10,0x2b,0x80,0x26,0x20,0x30,0x20,0x30,0x20,0x39,0x10,0x26,0x10,0x26,0x60,0x40,0x10,0x39,0x10,0x26,0x20,0x30,0x20,0x30,0x20,0x39,0x10,0x26,0x10,0x26,0x80,0x26,0x20,0x2b,0x10,0x2b,0x10,0x2b,0x20,0x30,0x10,0x39,0x10,0x26,0x10,0x2b,0x10,0x2b,0x20,0x2b,0x40,0x40,0x20,0x20,0x10,0x20,0x10,0x2b,0x10,0x26,0x30,0x30,0x80,0x18,0x20,0x18,0x20,0x26,0x20,0x20,0x20,0x20,0x40,0x26,0x20,0x2b,0x20,0x30,0x20,0x30,0x20,0x1c,0x20,0x20,0x20,0x20,0x80,0x1c,0x20,0x1c,0x20,0x1c,0x20,0x30,0x20,0x30,0x60,0x39,0x10,0x30,0x10,0x20,0x20,0x2b,0x10,0x26,0x10,0x2b,0x10,0x26,0x10,0x26,0x10,0x2b,0x10,0x2b,0x80,0x18,0x20,0x18,0x20,0x26,0x20,0x20,0x20,0x20,0x60,0x26,0x10,0x2b,0x20,0x30,0x20,0x30,0x20,0x1c,0x20,0x20,0x20,0x20,0x80,0x26,0x20,0x30,0x10,0x30,0x10,0x30,0x20,0x39,0x20,0x26,0x10,0x2b,0x10,0x2b,0x20,0x2b,0x40,0x40,0x10,0x40,0x10,0x20,0x10,0x20,0x10,0x2b,0x10,0x26,0x30,0x30,0x80,0x00,}; const unsigned char gg[]= //歌曲2 CCR0=7200{ 0x18, 0x30, 0x1C , 0x10, 0x20, 0x40, 0x1C , 0x10,0x18, 0x10, 0x20 , 0x10,0x1C, 0x10, 0x18 , 0x40,0x1C, 0x20, 0x20 , 0x20,0x1C, 0x20, 0x18 , 0x20,0x20, 0x80, 0xFF , 0x20,0x30, 0x1C, 0x10 , 0x18,0x20, 0x15, 0x20 ,0x1C,0x20, 0x20, 0x20 , 0x26,0x40, 0x20, 0x20 , 0x2B,0x20, 0x26, 0x20 , 0x20,0x20, 0x30, 0x80 , 0xFF,0x20, 0x20, 0x1C , 0x10,0x18, 0x10, 0x20 , 0x20,0x26, 0x20, 0x2B , 0x20,0x30, 0x20, 0x2B , 0x40,0x20, 0x20, 0x1C , 0x10,0x18, 0x10, 0x20 , 0x20,0x26, 0x20, 0x2B , 0x20,0x30, 0x20, 0x2B , 0x40,0x20, 0x30, 0x1C , 0x10,0x18, 0x20, 0x15 , 0x20,0x1C, 0x20, 0x20 , 0x20,0x26, 0x40, 0x20 , 0x20,0x2B, 0x20, 0x26 , 0x20,0x20, 0x20, 0x30 , 0x80,0x20, 0x30, 0x1C, 0x10,0x20, 0x10, 0x1C , 0x10,0x20, 0x20, 0x26 , 0x20,0x2B, 0x20, 0x30 , 0x20,0x2B, 0x40, 0x20 , 0x15,0x1F, 0x05, 0x20 , 0x10,0x1C, 0x10, 0x20 , 0x20,0x26, 0x20, 0x2B , 0x20,0x30, 0x20, 0x2B , 0x40,0x20, 0x30, 0x1C , 0x10,0x18, 0x20, 0x15 , 0x20,0x1C, 0x20, 0x20 , 0x20,0x26, 0x40, 0x20 , 0x20,0x2B, 0x20, 0x26 , 0x20,0x20, 0x20, 0x30 , 0x30,0x20, 0x30, 0x1C , 0x10,0x18, 0x40, 0x1C , 0x20,0x20, 0x20, 0x26 , 0x40,0x13, 0x60, 0x18, 0x20,0x15, 0x40, 0x13 , 0x40,0x18, 0x80, 0x00 };四、调试结果红灯亮第一首歌:红灯灭第二首歌:结果说明:调试结果,达到了预期通过S2切换歌曲的功能五、总结与体会通过这次的课程设计,我学会了MSP430单片机定时器、中断服务模块、I/O 输入输出系统等。

音乐播放器单片机课程设计-基于单片机的音乐播放器

音乐播放器单片机课程设计-基于单片机的音乐播放器

⾳乐播放器单⽚机课程设计-基于单⽚机的⾳乐播放器⼀.概述 (2)⼆.系统总体⽅案设计 (3)三.硬件设计 (6)3.1 89C51单⽚机 (6)图3-1和3-2 (7)3.2 I/O并⾏⼝直接驱动LED显⽰ (7)四.软件设计 (10)4.1.软件设计 (10)五.系统调试与仿真 (12)5.1软件仿真阶段 (12)5.2系统的仿真调试阶段 (12)5.3硬件安装调试 (12)六.总结 (14)参考⽂献 (15)附录A:⾳乐播放器电路设计图 (16)附录B:程序清单 (17)⼀.概述本课题要求以单⽚机为核⼼设计⼀个⾳乐播放器,完成多曲选择播放控制、停⽌控制、省电模式控制等功能。

⾳乐播放器利⽤单⽚机的定时器产⽣乐谱的各种频率⽅波,信号经过放⼤后由喇叭发出声⾳,选取某段⾳乐使单⽚机连续播放。

设计3个按键:播放/停⽌、下⼀曲、上⼀曲;4位LED显⽰器,⽤来显⽰所选曲⽬,该显⽰器在播放期间为了节省电源,设计为关闭状态,当⼀歌曲演奏结束,或选曲时显⽰器才显⽰曲⽬信息。

总体的设计思路是这样的。

⼆.系统总体⽅案设计本课题要求以单⽚机为核⼼设计⼀个简易⾳乐播放器,具有⾃动播放乐曲的功能。

⼀⾸⾳乐是许多不同的⾳阶组成的,⽽每个⾳阶对应着不同的频率,这样我们就可以利⽤不同的频率的组合,即可构成我们所想要的⾳乐了,⾳阶对应频率关系图1-1:图2-1本设计⽤89C51单⽚机为核⼼,利⽤8段数码管显⽰器.采⽤动态显⽰输出,声⾳输出⽤蜂鸣器来实现。

采⽤8段数码管显⽰器进⾏动态显⽰需要占⽤4根I/O线,蜂鸣器占⽤1根I/O线,89C51单⽚机有⾜够的线,不⽤扩展I/O⼝。

⽤⼀⽚单⽚机即可满⾜本设计的输⼊输出。

系统框图如图1-2所⽰:图2-2通过对⾳乐播放器主体部分的电路进⾏模仿设计,达到播放器固有的基本功能,设定按钮K1、 K2和K3。

按钮K1打开并⾃动播放乐曲1;按钮K2打开并⾃动播放乐曲2;按钮K3为⼿动控制⾳乐停⽌的按键。

单片机音乐播放课程设计

单片机音乐播放课程设计

单片机音乐播放课程设计一、课程目标知识目标:1. 学生能理解单片机的原理和基本结构,掌握音乐播放器的设计流程。

2. 学生能掌握音乐播放器编程的基本语法和逻辑,如音符的时长、音调控制等。

3. 学生能了解并运用数字信号处理基本概念,如采样、量化等,解释音乐播放过程。

技能目标:1. 学生能运用单片机开发环境进行音乐播放器的程序编写、调试与下载。

2. 学生能通过实验和项目实践,掌握音乐播放器硬件与软件的协同设计方法。

3. 学生能够独立或合作完成音乐播放器的制作,展示作品并进行简单的故障排查。

情感态度价值观目标:1. 学生培养对电子技术和编程的兴趣,激发创新意识和探索精神。

2. 学生通过实践,培养问题解决能力和团队协作能力,增强自信心。

3. 学生通过创作音乐播放器,体会技术对生活的影响,培养社会责任感。

课程性质分析:本课程为实践性强的单片机应用课程,结合了电子技术、编程和音乐知识,旨在培养学生的动手能力、创新思维和综合应用能力。

学生特点分析:假设学生为高中生,具有一定的物理电子知识基础,对编程有一定了解,对音乐有基本的感知能力。

教学要求:课程需注重理论与实践相结合,鼓励学生主动探索和动手实践,强调过程评价和成果评价相结合,确保学生达到预定的学习目标。

二、教学内容1. 单片机基础知识:介绍单片机的组成、工作原理,重点讲解AT89C51单片机的内部结构、引脚功能及其编程特性。

相关教材章节:第一章单片机概述。

2. 音乐播放器原理:讲解音乐播放器的基本原理,包括音符的生成、音调控制、节拍控制等。

相关教材章节:第三章数字信号处理基础。

3. 编程语言与开发环境:学习单片机编程语言(如C语言),熟悉Keil、Proteus等开发工具的使用。

相关教材章节:第二章单片机编程语言与开发环境。

4. 硬件电路设计:学习音乐播放器硬件电路的设计,包括单片机、音频放大器、扬声器等元件的选型和连接。

相关教材章节:第四章单片机外围电路设计。

单片机音乐播放器课程设计

单片机音乐播放器课程设计

摘要本文将介绍一种以89C51型单片机为基础元件设计的自动音乐播放器。

在当今这个科技高速发展的时代,生活节奏的加快,人们长期处于工作、学习压力过大的状态,对于调节心理压力而言音乐对于每一个人都十分重要,由此音乐播放器在国内已经开始普及。

校园里的上下课的铃声,宿舍内早晨的起床号声音,都由以前枯燥刺耳的铃音转变成了好听的音乐,公路、广场中的计时装置也逐渐开始采用音乐来充当铃声。

此装置不仅为人们日常生活的计时提供了方便,同时也为目前快节奏的生活带来了乐趣。

本文是应用MCS-51单片机原理和控制理论设计音乐演奏控制器的硬件电路,并利用C 语言进行程序设计。

通过控制单片机内部的定时器来产生不同频率的方波,驱动蜂鸣器发出不同音调的音乐,再利用延迟来控制发音时间的长短。

把乐谱转化成相应的定时常数就可以从发音设备中演奏出悦耳动听的音乐。

这种控制电路结构简单,可读性高,应用性强;软件程序适应范围广,对于不同的音乐只需要改变相应的定时常数即可。

关键词:单片机;音乐播放器;C语言。

目录绪论 (1)第1章音乐盒的设计总体方案 (2)第2章硬件电路设计 (3)2.1 总体设计框图 (3)2.2 时钟电路 (3)2.3 复位电路 (3)2.4 选曲按键电路 (3)2.5 音频发生及放大电路 (4)第3章软件程序设计 (5)3.1单片机发声概述 (5)3.2 程序流程图 (6)3.3 音乐的产生 (7)第4章 KEIL仿真软件的应用 (8)第5章调试与故障分析 (9)5.1 软件程序调试 (9)5.2 硬件电路调试 (9)总结 (10)致谢 (11)参考文献 (12)附录1:原理图 (13)附录2:源程序 (14)绪论单片机,更确切地说应称为作微控制器,是20世纪70年代中期发展起来的一种面向控制的大规模集成电路模块,其特点是功能强、体积小、可靠性高、价格低廉。

它一面世便在工业控制、数据采集、智能仪表化、机电一体化、家用电器等领域得到了广泛应用,极大地提高了这些领域的技术水平和自动化程度。

基于单片机多功能音乐播放器的设计

基于单片机多功能音乐播放器的设计

多功能音乐播放器的设计一、 设计任务与设计原理 1、设计任务(1) 可播放多首音乐,且通过按键来选择播放的音乐 (2) 选择音乐时,音乐名称在LCD 上显示(3) 音乐播放种类跨度要大一些,播放声音要清晰 电路原理图⑴、单片机最小系统电路,主要由:时钟振荡电路、复位电路、电源电路等组 成。

图2-1-2 单片机最小系统电路(2)、矩阵键盘输入电路⑶、LCD12864显示电路B O -------C O —图2-1-3 矩阵键盘输入电路图2-1-4 LCD12864显示电路(4) 、蜂鸣器播放电路POO/ADO P01/AD1 PO.2/AD2 PO3/AD3 PO.4/AD4 P0S/AD5 PO6/AD6 PO7/AD7 P2 <MA0 P2 1/A9 P2 2/A10 P2.J/A11 P2A/A12 P2 WA13 P2 7/A15 P3 CVRX Dpa.irrxoP3.2/IN1O P3.3/INT1 P3 4/TO P3 5fT1 P3.6AVRLCD1C, ! I -m m o -.J1J RV1 iDR?3531-■L - J J B JJZETJD0- JL'JIxTALIRSTPQ QTADO PO HW L DI P0 2/AD2 P0 3/AM P0 4/ACMP0 5/AD5 ro&AD6TO 决MP2 (¥A6 P2 P2 2MT0 1 PSEF4P2MT1 ALEP2.^AT2 EAP2 0M330图2-1-5 蜂鸣器播放电路2整体电路原理图LC01图2-1-6 系统仿真效果图二、软件设计 1、 流程图设计2、完整程序代码整个KEIL工程文件有4个.C文件和1个头文件组成,具体代码如下: (1 ) PlayMusic . c#include <REG52.H> #include "SoundPlay.h" #include<math.h>#define uchar unsigned char #define uint unsigned intsbit WAI_INT0=P3A2; // 复位//水平与垂直偏移uchar H_Offset=0; // uchar V_page_Offset=0; extern uchar Key_Num; extern uchar code Name_Of_Song[]; extern uchar KeyScan(); // 矩阵键盘扫描子程序extern voidLCD12864_Initialization();extern void Display_Word(uchar P2,uchar L2,uchar *M) reentrant; extern void Display_char(ucharP1,uchar L1,uchar *M) reentrant; void delay(uint K); //延时子程序void key_process();// 矩阵键盘按键处理子程序void Delay1ms(uint count){unsigned int i,j;for(i=0;i<count;i++) for(j=0;j<120;j++);}//*****************************Music******************************************************//挥着翅膀的女孩unsigned char code Music_Girl[]={ 0x17,0x02, 0x17,0x03, 0x18,0x03, 0x19,0x02, 0x15,0x03,0x16,0x03, 0x17,0x03, 0x17,0x03, 0x17,0x03, 0x18,0x03,0x19,0x02, 0x16,0x03, 0x17,0x03, 0x18,0x02, 0x18,0x03,0x17,0x03, 0x15,0x02, 0x18,0x03, 0x17,0x03, 0x18,0x02,0x10,0x03, 0x15,0x03, 0x16,0x02, 0x15,0x03, 0x16,0x03,0x17,0x02, 0x17,0x03, 0x18,0x03, 0x19,0x02, 0x1A,0x03,0x1B,0x03, 0x1F,0x03, 0x1F,0x03, 0x17,0x03, 0x18,0x03,0x19,0x02, 0x16,0x03, 0x17,0x03, 0x18,0x03, 0x17,0x03,0x18,0x03, 0x1F,0x03, 0x1F,0x02, 0x16,0x03, 0x17,0x03,0x18,0x03, 0x17,0x03, 0x18,0x03, 0x20,0x03, 0x20,0x02,0x1F,0x03, 0x1B,0x03, 0x1F,0x66, 0x20,0x03, 0x21,0x03,0x20,0x03, 0x1F,0x03, 0x1B,0x03, 0x1F,0x66, 0x1F,0x03,0x1B,0x03, 0x19,0x03, 0x19,0x03, 0x15,0x03, 0x1A,0x66,0x1A,0x03, 0x19,0x03, 0x15,0x03, 0x15,0x03, 0x17,0x03,0x16,0x66, 0x17,0x04, 0x18,0x04, 0x18,0x03, 0x19,0x03,0x1F,0x03, 0x1B,0x03, 0x1F,0x66, 0x20,0x03, 0x21,0x03, 0x20,0x03, 0x1F,0x03, 0x1B,0x03,0x1F,0x66, 0x1F,0x03, 0x1B,0x03, 0x19,0x03, 0x19,0x03, 0x15,0x03, 0x1A,0x66, 0x1A,0x03,0x19,0x03, 0x19,0x03, 0x1F,0x03, 0x1B,0x03, 0x1F,0x00, 0x1A,0x03, 0x1A,0x03, 0x1A,0x03,0x1B,0x03, 0x1B,0x03, 0x1A,0x03, 0x19,0x03, 0x19,0x02, 0x17,0x03, 0x15,0x17, 0x15,0x03,0x16,0x03, 0x17,0x03, 0x18,0x03, 0x17,0x04, 0x18,0x0E, 0x18,0x03, 0x17,0x04, 0x18,0x0E,0x18,0x66, 0x17,0x03, 0x18,0x03, 0x17,0x03, 0x18,0x03, 0x20,0x03, 0x20,0x02, 0x1F,0x03,0x1B,0x03, 0x1F,0x66, 0x20,0x03, 0x21,0x03, 0x20,0x03, 0x1F,0x03, 0x1B,0x03, 0x1F,0x66,0x1F,0x04, 0x1B,0x0E, 0x1B,0x03, 0x19,0x03, 0x19,0x03, 0x15,0x03, 0x1A,0x66, 0x1A,0x03,0x19,0x03, 0x15,0x03, 0x15,0x03, 0x17,0x03, 0x16,0x66, 0x17,0x04, 0x18,0x04, 0x18,0x03,0x19,0x03, 0x1F,0x03, 0x1B,0x03, 0x1F,0x66, 0x20,0x03, 0x21,0x03, 0x20,0x03, 0x1F,0x03,0x1B,0x03, 0x1F,0x66, 0x1F,0x03, 0x1B,0x03, 0x19,0x03, 0x19,0x03, 0x15,0x03, 0x1A,0x66,0x1A,0x03, 0x19,0x03, 0x19,0x03, 0x1F,0x03, 0x1B,0x03, 0x1F,0x00, 0x18,0x02, 0x18,0x03,0x1A,0x03, 0x19,0x0D, 0x15,0x03, 0x15,0x02, 0x18,0x66, 0x16,0x02, 0x17,0x02, 0x15,0x00,0x00,0x00}; //同一首歌unsigned char code Music_Same[]={ 0x0F,0x01, 0x15,0x02, 0x16,0x02, 0x17,0x66, 0x18,0x03, 0x17,0x02, 0x15,0x02, 0x16,0x01, 0x15,0x02, 0x10,0x02, 0x15,0x00,0x0F,0x01, 0x15,0x02, 0x16,0x02, 0x17,0x02, 0x17,0x03, 0x18,0x03, 0x19,0x02, 0x15,0x02,0x18,0x66, 0x17,0x03, 0x19,0x02, 0x16,0x03, 0x17,0x03, 0x16,0x00, 0x17,0x01, 0x19,0x02,0x1B,0x02, 0x1B,0x70, 0x1A,0x03, 0x1A,0x01, 0x19,0x02, 0x19,0x03, 0x1A,0x03, 0x1B,0x02, 0x1A,0x0D, 0x19,0x03, 0x17,0x00, 0x18,0x66, 0x18,0x03, 0x19,0x02, 0x1A,0x02, 0x19,0x0C,0x18,0x0D, 0x17,0x03, 0x16,0x01, 0x11,0x02, 0x11,0x03, 0x10,0x03, 0x0F,0x0C, 0x10,0x02,0x15,0x00, 0x1F,0x01, 0x1A,0x01, 0x18,0x66, 0x19,0x03, 0x1A,0x01, 0x1B,0x02, 0x1B,0x03,0x1B,0x03, 0x1B,0x0C, 0x1A,0x0D, 0x19,0x03, 0x17,0x00, 0x1F,0x01, 0x1A,0x01, 0x18,0x66, 0x19,0x03, 0x1A,0x01, 0x10,0x02, 0x10,0x03, 0x10,0x03, 0x1A,0x0C, 0x18,0x0D, 0x17,0x03,0x16,0x00, 0x0F,0x01, 0x15,0x02, 0x16,0x02, 0x17,0x70, 0x18,0x03, 0x17,0x02, 0x15,0x03,0x15,0x03, 0x16,0x66, 0x16,0x03, 0x16,0x02, 0x16,0x03, 0x15,0x03, 0x10,0x02, 0x10,0x01,0x11,0x01, 0x11,0x66, 0x10,0x03, 0x0F,0x0C, 0x1A,0x02, 0x19,0x02, 0x16,0x03, 0x16,0x03,0x18,0x66, 0x18,0x03, 0x18,0x02, 0x17,0x03, 0x16,0x03, 0x19,0x00,0x00,0x00 };//两只蝴蝶unsigned char code Music_Two[] ={ 0x17,0x03, 0x16,0x03, 0x17,0x01, 0x16,0x03, 0x17,0x03,0x16,0x03, 0x15,0x01, 0x10,0x03, 0x15,0x03, 0x16,0x02, 0x16,0x0D, 0x17,0x03, 0x16,0x03,0x15,0x03, 0x10,0x03, 0x10,0x0E, 0x15,0x04, 0x0F,0x01, 0x17,0x03, 0x16,0x03, 0x17,0x01,0x16,0x03, 0x17,0x03, 0x16,0x03, 0x15,0x01, 0x10,0x03, 0x15,0x03, 0x16,0x02, 0x16,0x0D,0x17,0x03, 0x16,0x03, 0x15,0x03, 0x10,0x03, 0x15,0x03, 0x16,0x01, 0x17,0x03, 0x16,0x03,0x17,0x01, 0x16,0x03, 0x17,0x03, 0x16,0x03, 0x15,0x01, 0x10,0x03, 0x15,0x03, 0x16,0x02,0x16,0x0D, 0x17,0x03, 0x16,0x03, 0x15,0x03, 0x10,0x03, 0x10,0x0E, 0x15,0x04, 0x0F,0x01,0x17,0x03, 0x19,0x03, 0x19,0x01, 0x19,0x03, 0x1A,0x03, 0x19,0x03, 0x17,0x01, 0x16,0x03,0x16,0x03, 0x16,0x02, 0x16,0x0D, 0x17,0x03, 0x16,0x03, 0x15,0x03, 0x10,0x03, 0x10,0x0D,0x15,0x00, 0x19,0x03, 0x19,0x03, 0x1A,0x03, 0x1F,0x03, 0x1B,0x03, 0x1B,0x03, 0x1A,0x03,0x17,0x0D, 0x16,0x03, 0x16,0x03, 0x16,0x0D, 0x17,0x01, 0x17,0x03, 0x17,0x03, 0x19,0x03,0x1A,0x02, 0x1A,0x02, 0x10,0x03, 0x17,0x0D, 0x16,0x03, 0x16,0x01, 0x17,0x03, 0x19,0x03,0x19,0x03, 0x17,0x03, 0x19,0x02, 0x1F,0x02, 0x1B,0x03, 0x1A,0x03, 0x1A,0x0E, 0x1B,0x04,0x17,0x02, 0x1A,0x03, 0x1A,0x03, 0x1A,0x0E, 0x1B,0x04, 0x1A,0x03, 0x19,0x03, 0x17,0x03, 0x16,0x03, 0x17,0x0D, 0x16,0x03, 0x17,0x03, 0x19,0x01, 0x19,0x03, 0x19,0x03, 0x1A,0x03,0x1F,0x03, 0x1B,0x03, 0x1B,0x03, 0x1A,0x03, 0x17,0x0D, 0x16,0x03, 0x16,0x03, 0x16,0x03,0x17,0x01, 0x17,0x03, 0x17,0x03, 0x19,0x03, 0x1A,0x02, 0x1A,0x02, 0x10,0x03, 0x17,0x0D,0x16,0x03, 0x16,0x01, 0x17,0x03, 0x19,0x03, 0x19,0x03, 0x17,0x03, 0x19,0x03, 0x1F,0x02,0x1B,0x03, 0x1A,0x03, 0x1A,0x0E, 0x1B,0x04, 0x17,0x02, 0x1A,0x03, 0x1A,0x03, 0x1A,0x0E, 0x1B,0x04, 0x17,0x16, 0x1A,0x03, 0x1A,0x03, 0x1A,0x0E, 0x1B,0x04, 0x1A,0x03, 0x19,0x03, 0x17,0x03, 0x16,0x03, 0x0F,0x02, 0x10,0x03, 0x15,0x00, 0x00,0x00 };//死了都要爱unsigned char code Music_Three[]={ 0x17,0x03, 0x1F,0x02, 0x1F,0x03, 0x1F,0x03, 0x1F,0x02,0x20,0x03, 0x1B,0x03, 0x1A,0x03, 0x19,0x03, 0x16,0x03,0x16,0x03, 0x17,0x04, 0x17,0x04, 0x17,0x15, 0x18,0x03,0x18,0x04, 0x19,0x0E, 0x19,0x03, 0x1A,0x03, 0x16,0x02,0x16,0x04, 0x17,0x0E, 0x17,0x03, 0x18,0x16, 0x1A,0x04,0x1A,0x04,0x1B,0x03, 0x1A,0x04, 0x1B,0x0E, 0x1B,0x01,0x17,0x18, 0x17,0x03, 0x1F,0x02, 0x1F,0x03, 0x1F,0x03,0x1F,0x02, 0x20,0x03, 0x1B,0x03, 0x1A,0x03, 0x19,0x03,0x16,0x03, 0x16,0x02, 0x17,0x04, 0x17,0x0E, 0x17,0x15,0x18,0x02, 0x18,0x04, 0x19,0x0E, 0x19,0x03, 0x1A,0x03,0x1F,0x02, 0x1B,0x02, 0x1A,0x15, 0x15,0x02, 0x0D,0x02,0x0E,0x02, 0x0D,0x03, 0x0D,0x03, 0x11,0x03, 0x11,0x03,0x0D,0x03, 0x11,0x03, 0x15,0x04, 0x15,0x0E, 0x1F,0x02,0x10,0x02, 0x10,0x03, 0x0F,0x03, 0x0E,0x66, 0x0E,0x03,0x0C,0x03, 0x0E,0x03, 0x16,0x03, 0x15,0x03, 0x15,0x67,0x11,0x04, 0x11,0x0E, 0x1B,0x02, 0x15,0x02, 0x0D,0x02,0x0E,0x66, 0x0D,0x03, 0x0D,0x03, 0x11,0x03, 0x11,0x03,0x0D,0x03, 0x11,0x03, 0x15,0x04, 0x15,0x0E, 0x15,0x04,0x17,0x03, 0x17,0x04, 0x17,0x03, 0x18,0x03, 0x10,0x02,0x10,0x67, 0x0F,0x03, 0x10,0x00, 0x18,0x0B, 0x18,0x03,0x19,0x03, 0x18,0x03, 0x16,0x03, 0x18,0x03, 0x17,0x03,0x17,0x15, 0x16,0x03, 0x16,0x04, 0x16,0x0E, 0x16,0x04,0x16,0x04, 0x17,0x03, 0x18,0x04, 0x17,0x67, 0x16,0x04,0x15,0x67, 0x15,0x03, 0x15,0x04, 0x15,0x0E, 0x15,0x04,0x15,0x04, 0x17,0x68, 0x17,0x0E, 0x17,0x03, 0x10,0x03,0x15,0x03, 0x17,0x03, 0x18,0x66, 0x18,0x04, 0x19,0x04,0x1A,0x03, 0x19,0x03, 0x18,0x03, 0x18,0x03, 0x18,0x03,0x17,0x04, 0x17,0x0E, 0x17,0x02, 0x16,0x04, 0x15,0x0E,0x15,0x16, 0x18,0x03, 0x18,0x04, 0x19,0x0E, 0x19,0x03,0x1A,0x03, 0x16,0x03, 0x16,0x04, 0x17,0x0E, 0x17,0x03,0x18,0x17, 0x1A,0x03, 0x1B,0x03, 0x1A,0x03, 0x1B,0x16,0x17,0x03, 0x1F,0x02, 0x1F,0x03, 0x1F,0x03, 0x1F,0x66,0x20,0x03, 0x1B,0x03, 0x1A,0x03, 0x19,0x03, 0x16,0x03,0x16,0x03, 0x17,0x04, 0x17,0x0E, 0x17,0x7B, 0x18,0x03,0x18,0x04, 0x19,0x0E, 0x19,0x03, 0x1A,0x03, 0x16,0x03,0x16,0x04, 0x17,0x0E, 0x17,0x04, 0x18,0x17, 0x1A,0x04,0x1A,0x04, 0x1B,0x03, 0x1A,0x04, 0x1B,0x72, 0x17,0x04,0x1F,0x02, 0x1F,0x03, 0x1F,0x03, 0x1F,0x66, 0x20,0x03,0x1B,0x03, 0x1A,0x03, 0x19,0x03, 0x16,0x03, 0x16,0x03,0x17,0x04, 0x17,0x0E, 0x17,0x67, 0x18,0x03, 0x18,0x04,0x19,0x0E, 0x19,0x03, 0x1A,0x03, 0x1F,0x02, 0x1B,0x02,0x1A,0x14, 0x00,0x00 };unsigned char code Music_End[]={0x00,0x00,0x00,0x00};//***********************************************************************************void main(){P1=0x0f;InitialSound();EX0=1;IT0=1;LCD12864_Initialization();// 液晶初始化函数// 以下显示“环境工程学院张小波”Display_Word(V_page_Offset+4,H_Offset,Name_Of_Song+15*32);Display_Word(V_page_Offset+4,16+H_Offset,Name_Of_Song+16*32);Display_Word(V_page_Offset+4,32+H_Offset,Name_Of_Song+19*32);Display_Word(V_page_Offset+4,48+H_Offset,Name_Of_Song+20*32);Display_Word(V_page_Offset+4,80+H_Offset,Name_Of_Song+21*32);Display_Word(V_page_Offset+4,96+H_Offset,Name_Of_Song+22*32);Display_Word(V_page_Offset+4,112+H_Offset,Name_Of_Song+23*32);while(1){ key_process();}}/* ------- 延时子程序------ */void delay(uint K){uint i,j;for(i=K;i>0;i--) for(j=120;j>0;j--);}/* -------------- 按键处理子程序-------------- */void key_process(){EA=1;KeyScan(); switch(Key_Num){case 13: delay(200);if (Key_Num==13) {//以下显示歌曲名:挥着翅膀的女孩Display_Word(V_page_Offset+2,H_Offset,Name_Of_Song+0*32);Display_Word(V_page_Offset+2,16+H_Offset,Name_Of_Song+1*32);Display_Word(V_page_Offset+2,32+H_Offset,Name_Of_Song+2*32);Display_Word(V_page_Offset+2,48+H_Offset,Name_Of_Song+3*32);Display_Word(V_page_Offset+2,64+H_Offset,Name_Of_Song+4*32);Display_Word(V_page_Offset+2,80+H_Offset,Name_Of_Song+5*32);Display_Word(V_page_Offset+2,96+H_Offset,Name_Of_Song+6*32);Play(Music_Girl,0,2,360);}break;case 2: delay(200);if (Key_Num==2)//以下显示歌曲名:同一首歌Display_Word(V_page_Offset+2,H_Offset,Name_Of_Song+24*32);Display_Word(V_page_Offset+2,16+H_Offset,Name_Of_Song+7*32);Display_Word(V_page_Offset+2,32+H_Offset,Name_Of_Song+8*32);Display_Word(V_page_Offset+2,48+H_Offset,Name_Of_Song+9*32);Display_Word(V_page_Offset+2,64+H_Offset,Name_Of_Song+10*32);Display_Word(V_page_Offset+2,80+H_Offset,Name_Of_Song+24*32);Display_Word(V_page_Offset+2,96+H_Offset,Name_Of_Song+24*32);Play(Music_Same,2,2,500);}//break; case 1: delay(200);if (Key_Num==1) {//以下显示歌曲名:两只蝴蝶Display_Word(V_page_Offset+2,H_Offset,Name_Of_Song+24*32);Display_Word(V_page_Offset+2,16+H_Offset,Name_Of_Song+11*32);Display_Word(V_page_Offset+2,32+H_Offset,Name_Of_Song+12*32);Display_Word(V_page_Offset+2,48+H_Offset,Name_Of_Song+13*32);Display_Word(V_page_Offset+2,64+H_Offset,Name_Of_Song+14*32);Display_Word(V_page_Offset+2,80+H_Offset,Name_Of_Song+24*32);Display_Word(V_page_Offset+2,96+H_Offset,Name_Of_Song+24*32);Play(Music_Two,0,2,360);} //break; case 5: delay(200);if (Key_Num==5) {//以下显示歌曲名:死了都要爱Display_Word(V_page_Offset+2,H_Offset,Name_Of_Song+24*32);Display_Word(V_page_Offset+2,16+H_Offset,Name_Of_Song+25*32);Display_Word(V_page_Offset+2,32+H_Offset,Name_Of_Song+26*32);Display_Word(V_page_Offset+2,48+H_Offset,Name_Of_Song+27*32);Display_Word(V_page_Offset+2,64+H_Offset,Name_Of_Song+28*32);Display_Word(V_page_Offset+2,80+H_Offset,Name_Of_Song+29*32);Display_Word(V_page_Offset+2,96+H_Offset,Name_Of_Song+24*32);Play(Music_Three,10,1,300);}break;/* case 5: delay(200);if (Key_Num==5)Play(Music_Three,0,2,360);} break; */}}void waibuzhongduan_INT0()interrupt 0{uchar i;EA=0;for(i=0;i<8;i++){ Display_Word(V_page_Offset+2,i*16+H_Offset,Name_Of_Song+24*32);}}(2) Keypad.c#include <reg52.H>#define uchar unsigned char#define uint unsigned int//扫描键盘时发送到0-3 列上的扫描码uchar KeyboardScanCode[4]={0xef,0xdf,0xbf,0x7f};uchar Key_Num=16;//---------------------------------------------------//扫描键盘并返回按键在键盘上的位置系列号//------------------------------------------------uchar KeyScan(){uchar Row=0,Col=0,Temp;for(Col=0;Col<4;Col++){P1=KeyboardScanCode[Col];Temp=P1&0x0f;if(Temp!=0x0f){switch(Temp){case 0x0e: Row=0;break;case 0x0d:Row=1;break;case 0x0b:Row=2;break;case 0x07:Row=3;break;}break;}P1=0x0f;return Key_Num=Row*4+Col; // 返回按键位置序号0-15}(3) 12864 显示驱动程序.C//------------------------- LCD_12864.c ------------------------// 名称:12864LCD 显示驱动程序(不带字库)//----------------------------------------------------------------#include <reg52.h>#include <intrins.h>#define uchar unsigned char#define uint unsigned int#define LCD_DB_PORT P0 // 液晶数据线端口DB0-DB7#define LCD_START_ROW 0xc0 // 起始行命令#define LCD_PAGE 0xB8 // 页指令#define LCD_COL 0x40 // 列指令bit Reverse_Display=0;// 是否反相显示(白底黑字/黑底白字) //液晶引脚定义sbit DI=P2A0;sbit RW=P2A1;sbit E=P2A2;sbit CS1=P2A3;sbit CS2=P2A4;sbit RST=P2A5;//------------------------------------------------------------- // 检查LCD 是否忙//------------------------------------------------------------- bit LCD_IS_BUSY(){LCD_DB_PORT=0xFF;RW=1;_nop_();DI=0;E=1;_nop_();E=0;return (bit)(P0&0x80);}//------------------------------------------------------------- // 向LCD 写入一个字节(一般用于发送命令)//------------------------------------------------------------- void Write_Byte_To_LCD(uchar comand){while(LCD_IS_BUSY());LCD_DB_PORT=0xFF;RW=0;_nop_();DI=0;LCD_DB_PORT=comand;E=1;_nop_();E=0;}//-------------------------------------------------------------// 向LCD 写入数据//-------------------------------------------------------------void Write_Data_To_LCD(uchar dat){while(LCD_IS_BUSY());LCD_DB_PORT=0xFF;RW=0;_nop_();DI=1;if(!Reverse_Display) //根据Reverse_Display 决定是否反相显示LCD_DB_PORT=dat;elseLCD_DB_PORT=~dat;E=1;_nop_();E=0;}//-------------------------------------------------------------// 初始化LCD//-------------------------------------------------------------void LCD12864_Initialization(){CS1=1;CS2=1;Write_Byte_To_LCD(0x38);Write_Byte_To_LCD(0x3F);Write_Byte_To_LCD(0x01);Write_Byte_To_LCD(0x06); Write_Byte_To_LCD(LCD_START_ROW);}//-------------------------------------------------------------r 所指的数组中//通用显示函数从第P页第L列显示W个字节数据,具体显示的数据在//-------------------------------------------------------------void LCD_Show(uchar P,uchar L,uchar W,uchar *r) reentrant uchar i;if(L<64){CS1=1;CS2=0;Write_Byte_To_LCD(LCD_PAGE+P);Write_Byte_To_LCD(LCD_COL+L); if(L+W<64){for(i=0;i<W;i++)Write_Data_To_LCD(r[i]);}else{for(i=0;i<64-L;i++)Write_Data_To_LCD(r[i]);CS1=0;CS2=1;Write_Byte_To_LCD(LCD_PAGE+P);Write_Byte_To_LCD(LCD_COL); for(i=64-L;i<W;i++)Write_Data_To_LCD(r[i]);}}else{CS1=0;CS2=1;Write_Byte_To_LCD(LCD_PAGE+P);Write_Byte_To_LCD(LCD_COL+L-64); for(i=0;i<W;i++)Write_Data_To_LCD(r[i]);}}//-------------------------------------------------------------//显示一个8X 16点阵字符//-------------------------------------------------------------void Display_char(uchar P1,uchar L1,uchar *M) reentrant{LCD_Show(P1,L1,8,M);LCD_Show(P1+1,L1,8,M+8);}//-------------------------------------------------------------------//显示一个16 X 16点阵字符(汉字上半部分与下半部分分别处在相邻两页中) // --------------------------------------------------------------------void Display_Word(uchar P2,uchar L2,uchar *M) reentrant{LCD_Show(P2,L2,16,M);LCD_Show(P2+1,L2,16,M+16);}(4) DotMatrix.c// -----------------------------------------------// 与本程序有关的数字和汉字的点阵编码DotMatrix.c// ----------------------------------------------#include <reg51.h>#include <string.h>#include <intrins.h>#define uchar unsigned char#define uint unsigned int//年、月、日、星期、时、分、秒等汉字点阵(16X16)uchar code Name_Of_Song[]={/*-- 文字0: 挥--*/0x08,0x08,0x08,0xFF,0x88,0x48,0x16,0xD2,0x3A,0x16,0xD2,0x12,0x12,0x16,0x02,0x00,0x02,0x42,0x81,0x7F,0x00,0x08,0x09,0x09,0x09,0x09,0xFF,0x09,0x09,0x09,0x08,0x00, /*--文字1: 着--*/0x00,0x44,0x54,0x54,0x55,0x56,0xD4,0x7C,0x54,0x54,0x56,0x55,0x54,0x44,0x44,0x00,0x08,0x08,0x04,0x04,0x02,0xFF,0x55,0x55,0x55,0x55,0x55,0x55,0xFF,0x00,0x00,0x00,/*-- 文字2: 翅--*/0x04,0xE4,0x24,0x3F,0x24,0xE4,0x0A,0x32,0x82,0xFE,0x08,0x32,0x82,0xFE,0x00,0x00,0x40,0x21,0x16,0x08,0x16,0x21,0x22,0x49,0x50,0x4F,0x42,0x49,0x50,0x4F,0x40,0x00, /*--文字3: 膀--*/0x00,0xFE,0x12,0x12,0xFE,0x00,0x64,0x24,0x2C,0x75,0xA6,0x34,0x2C,0x64,0x24,0x00,0xC0,0x3F,0x41,0x81,0x7F,0x00,0x81,0x61,0x1F,0x05,0x45,0x85,0x7D,0x01,0x00,0x00, /*--文字4: 的--*/0x00,0xF8,0x8C,0x8B,0x88,0xF8,0x40,0x30,0x8F,0x08,0x08,0x08,0x08,0xF8,0x00,0x00,0x00,0x7F,0x10,0x10,0x10,0x3F,0x00,0x00,0x00,0x03,0x26,0x40,0x20,0x1F,0x00,0x00, /*--文字5: 女--*/0x20,0x20,0x20,0x20,0xE0,0x38,0x27,0x20,0x20,0x20,0xE0,0x20,0x20,0x20,0x20,0x00,0x80,0x80,0x40,0x41,0x22,0x22,0x14,0x0C,0x0C,0x0B,0x10,0x30,0xE0,0x40,0x00,0x00, /*--文字6: 孩--*/0x02,0x02,0x02,0xF2,0x8A,0x06,0x44,0x64,0x54,0x4D,0x46,0xC4,0x64,0x04,0x04,0x00,0x01,0x23,0x41,0x3F,0x00,0x48,0x48,0x24,0x24,0x12,0x09,0x0C,0x12,0x61,0x00,0x00, /*--文字7: 同--*/0x00,0xFE,0x02,0x12,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x12,0x02,0xFE,0x00,0x00,0x00,0xFF,0x00,0x00,0x1F,0x08,0x08,0x08,0x08,0x08,0x1F,0x40,0x80,0x7F,0x00,0x00, /*--文字8: 一--*/0x00,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0xC0,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /*-- 文字9: 首--*/0x04,0x04,0x04,0xE4,0x25,0x26,0x34,0x2C,0x24,0x24,0x26,0xE5,0x04,0x04,0x04,0x00,0x00,0x00,0x00,0x7F,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x7F,0x00,0x00,0x00,0x00,/*-- 文字10: 歌--*/ 0x80,0xBA,0xAA,0xAA,0xBA,0x82,0xFE,0xA2,0x90,0x0C,0xEB,0x08,0x28,0x18,0x08,0x00, 0x00,0x1E,0x12,0x12,0x5E,0x80,0x7F,0x40,0x20,0x18,0x07,0x08,0x30,0xE0,0x40,0x00,/*-- 文字11: 两--*/ 0x02,0xF2,0x12,0x12,0x12,0xFE,0x92,0x12,0x12,0xFE,0x12,0x12,0x12,0xFB,0x12,0x00,0x00,0x7F,0x08,0x04,0x03,0x00,0x10,0x09,0x06,0x01,0x01,0x26,0x40,0x3F,0x00,0x00,/*-- 文字12: 只--*/ 0x00,0x00,0x00,0xFE,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0xFE,0x00,0x00,0x00,0x00,0x40,0x20,0x31,0x18,0x0E,0x04,0x00,0x00,0x00,0x02,0x04,0x19,0x70,0x20,0x00,/*-- 文字13: 蝴--*/ 0xF0,0x10,0xFF,0x10,0xF0,0x08,0x88,0xFF,0x88,0x08,0x00,0xFE,0x12,0x12,0xFE,0x00,0x43,0x42,0x3F,0x2A,0x73,0x20,0x0F,0x88,0x4F,0x20,0x18,0x07,0x41,0x81,0x7F,0x00,/*-- 文字14: 蝶--*/ 0x00,0xF8,0x08,0xFF,0x08,0xF8,0x04,0xFE,0x84,0xBF,0xA4,0xA4,0xBF,0x84,0x04,0x00,0x10,0x11,0x11,0x0F,0x09,0x9D,0x4A,0x22,0x1A,0x06,0xFF,0x06,0x0A,0x72,0x22,0x00,/*-- 文字15: 环--*/ 0x00,0x22,0x22,0xFE,0x22,0x22,0x00,0x02,0xC2,0x32,0xFE,0x42,0x82,0x02,0x02,0x00,0x00,0x04,0x04,0x03,0x12,0x0A,0x04,0x03,0x00,0x00,0xFF,0x00,0x00,0x03,0x0E,0x00,/*-- 文字16: 境--*/ 0x20,0x20,0xFE,0x20,0x20,0x00,0x24,0xAC,0xB4,0xA5,0xA6,0xB4,0xAC,0x24,0x00,0x00,0x10,0x30,0x1F,0x08,0x08,0x00,0x80,0x4F,0x3A,0x0A,0x0A,0x7A,0x8F,0x80,0xE0,0x00,/*-- 文字17: 工--*/ 0x00,0x00,0x02,0x02,0x02,0x02,0x02,0xFE,0x02,0x02,0x02,0x02,0x02,0x02,0x00,0x00,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3F,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x00,/*-- 文字18: 程--*/0x10,0x12,0xD2,0xFE,0x91,0x11,0x80,0xBF,0xA1,0xA1,0xA1,0xA1,0xBF,0x80,0x00,0x00,0x04,0x03,0x00,0xFF,0x00,0x41,0x44,0x44,0x44,0x7F,0x44,0x44,0x44,0x44,0x40,0x00,/*-- 文字19: 学--*/ 0x40,0x30,0x10,0x12,0x5C,0x54,0x50,0x51,0x5E,0xD4,0x50,0x18,0x57,0x32,0x10,0x00,0x00,0x02,0x02,0x02,0x02,0x02,0x42,0x82,0x7F,0x02,0x02,0x02,0x02,0x02,0x02,0x00,/*-- 文字20: 院--*/ 0xFE,0x02,0x32,0x4A,0x86,0x0C,0x24,0x24,0x25,0x26,0x24,0x24,0x24,0x0C,0x04,0x00,0xFF,0x00,0x02,0x04,0x83,0x41,0x31,0x0F,0x01,0x01,0x7F,0x81,0x81,0x81,0xF1,0x00,/*-- 文字24: --*/0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*-- 文字25: 死--*/0x00,0x02,0xC2,0xB2,0x1E,0x12,0x92,0x72,0x02,0xFE,0x82,0x42,0x42,0x22,0x22,0x00,0x42,0x41,0x20,0x20,0x13,0x0C,0x03,0x00,0x00,0x3F,0x40,0x40,0x40,0x40,0x78,0x00,/*-- 文字26: 了--*/0x00,0x02,0x02,0x02,0x02,0x02,0x02,0xF2,0x12,0x0A,0x0A,0x06,0x06,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x80,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /*-- 文字27: 都--*/0x20,0x24,0x24,0xA4,0x7F,0x24,0x34,0x28,0x24,0x00,0xFE,0x22,0x52,0x8A,0x06,0x00,0x04,0x02,0x7F,0x25,0x25,0x25,0x25,0x7F,0x00,0x00,0xFF,0x08,0x08,0x10,0x0F,0x00, /*-- 文字28: 要--*/0x02,0x02,0xFA,0x4A,0x4A,0xFE,0x4A,0x4A,0x4A,0x7E,0x4A,0x4A,0xFA,0x02,0x02,0x00,0x02,0x82,0x82,0x42,0x4E,0x2B,0x2A,0x12,0x12,0x12,0x2A,0x26,0xC2,0x42,0x02,0x00, /*-- 文字29: 爱--*/0x00,0x40,0xB2,0x96,0x9A,0x92,0xF6,0x9A,0x93,0x91,0x99,0x97,0x91,0x90,0x30,0x00,0x40,0x20,0xA0,0x90,0x4C,0x47,0x2A,0x2A,0x12,0x1A,0x26,0x22,0x40,0xC0,0x40,0x00,};〃0-9等数字点阵(8X 16)uchar code Digits[]={0x00,0x00,0xF0,0xF8,0x08,0x68,0xF8,0xF0,0x00,0x00,0x07,0x0F,0x0B,0x08,0x0F,0x07, //00x00,0x20,0x20,0x30,0xF8,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x0F,0x00,0x00, //10x00,0x30,0x38,0x08,0x88,0xF8,0x70,0x00,0x00,0x0C,0x0E,0x0B,0x09,0x08,0x08,0x00, // 2 0x00,0x30,0x38,0x88,0x88,0xF8,0x70,0x00,0x00,0x06,0x0E,0x08,0x08,0x0F,0x07,0x00, //30x00,0x00,0xF8,0xF8,0x00,0xE0,0xE0,0x00,0x00,0x03,0x03,0x02,0x02,0x0F,0x0F,0x02,//40x00,0xF8,0xF8,0x88,0x88,0x88,0x08,0x00,0x00,0x08,0x08,0x08,0x0C,0x07,0x03,0x00,//50x00,0xC0,0xE0,0x78,0x58,0xC8,0x80,0x00,0x00,0x07,0x0F,0x08,0x08,0x0F,0x07,0x00,//60x00,0x08,0x08,0x88,0xE8,0x78,0x18,0x00,0x00,0x00,0x0E,0x0F,0x01,0x00,0x00,0x00,//70x00,0x70,0xF8,0xC8,0x88,0xF8,0x70,0x00,0x00,0x07,0x0F,0x08,0x09,0x0F,0x07,0x00,//80x00,0xF0,0xF8,0x08,0x08,0xF8,0xF0,0x00,0x00,0x00,0x09,0x0D,0x0F,0x03,0x01,0x00,//9};(5) SOUNDPLAY .H/说明**************************************************************************曲谱存贮格式unsigned char code MusicName{ 音高,音长,音高,音长..... , 0,0}; 末尾:0,0 表示结束(Important)音高由三位数字组成:个位是表示1~7 这七个音符十位是表示音符所在的音区:1-低音,2-中音,3-高音;百位表示这个音符是否要升半音: 0-不升, 1 -升半音。

基于stm32单片机的mp3播放器设计毕业论文[管理资料]

基于stm32单片机的mp3播放器设计毕业论文[管理资料]

惠州学院HUIZHOU UNIVERSITY毕业论文(设计)中文题目:基于STM32单片机的MP3播放器设计英文题目:Design of MP3 player based on STM32 micro-controller姓名__ 陈腾奎 ___学号_ 110701203 ___专业班级_ 11电气2班 ___指导教师__ 陈治明 ___提交日期 2015年5月25日__教务处制惠州学院本科毕业论文(设计)开题报告年月日惠州学院毕业论文(设计)任务书备注:1、本任务书一式三份,系、指导教师、学生各执一份。

2、学生须将此任务书作为毕业论文(设计)说明书的附件,装订在说明书中。

惠州学院毕业论文(设计)文献综述摘要随着数字编解码技术及压缩技术的发展,语音文件也向着高压缩比、高保真的方向发展,从MP1、MP2到目前的MP3格式。

因此高压缩比、高保真MP3播放器设计及研究有很好的发展前景。

本论文介绍了基于STM32微处理器的MP3播放器的设计方法,实现了从SD卡中读取音乐文件数据,再将读取的数据流进行软件解码,最后通过音频信号输出驱动耳机实现音乐播放功能。

并在液晶屏上显示音乐的实时播放状态,通过TFT触摸屏上的人机交换界面,实现了音乐的播放,停止,声音增大,减小等功能模式。

基本上实现了一个带有触摸功能的MP3播放器。

关键词MP3播放器 STM32F103ZET SD卡触摸屏 FATFS文件系统ABSTRACTWith the development of digital codec technology and compression technology ,Voice files are also in the direction of high compression ratio, high-fidelity development, from MP1, MP2 to MP3 format now. Therefore, high compression ratio, high-fidelity MP3 player design and research have good prospects for development.This paper describes the design of microprocessor-based STM32 MP3 player, Realize from reading music files from SD card and then read the data stream decoding software,Finally, the audio signal output to drive headphones realize music playback ,and displays real-time playback status of the song on the LCD screen, through a graphical user interaction diagram circles TFT touch screen, to achieve the songs play, stop, sound increase, decrease function mode. Basically realize MP3 player with a touch-enabled.Key Words MP3 player STM32F103ZET SD Card Touch screenFATFS file system目录1 绪论 (1)本课题的提出及意义 (1)研究现状 (1)2 硬件设计 (2) (2) (2) (3) (3)SD卡模块 (4)LCD显示模块 (5) (6)3 软件设计 (8)软件开发架构 (8)软程序设计流程图 (9)软件代码结构 (10)驱动程序 (14)液晶屏驱动程序 (14)文件系统驱动程序 (15)触摸屏卡驱动程序 (16)MP3驱动程序 (17)4 系统调试 (20)开发环境 (20)软件开发环境 (20)硬件开发环境 (21)设计调试 (22)UI界面设计 (22)SD卡模块测试 (22)触摸屏校验 (23)显示屏测试 (23)成品展示 (25)致谢 (26)参考文献 (27)附录 (28)1 绪论本课题的提出及意义MP3音频播放器的最合理工作速度为30Mips,而一个典型的视频媒体播放器的理想速度则为175Mips,所以提高MP3的工作速度,以及改善MP3的音质是最关键的,也是亟待解决的问题。

「基于单片机的MP3播放器设计_毕业设计」

「基于单片机的MP3播放器设计_毕业设计」

「基于单片机的MP3播放器设计_毕业设计」随着科技的发展,MP3播放器成为了大众日常生活中不可或缺的一部分。

本文将介绍一个基于单片机的MP3播放器的设计,并探讨其在毕业设计中的应用。

首先,我们需要明确设计目标。

该MP3播放器的主要功能是播放音频文件,包括MP3和其他常见格式的音频文件。

除此之外,它还应具备控制播放、暂停、快进、快退等功能。

另外,该MP3播放器还需要具备文件管理功能,能够浏览音频文件,并通过界面进行选择和播放。

接下来,我们将进行硬件设计。

MP3播放器的核心部分是单片机,我们可以选择一款功能强大的单片机,如ARM Cortex-M系列的单片机。

该单片机需要支持音频解码功能,因此可以选择一款集成了音频解码芯片的单片机,这样可以减小外围电路的复杂度。

此外,我们还需要添加音频输入和输出电路,以及LCD显示屏、按键和电源管理电路。

在软件设计方面,我们需要进行音频解码的程序开发。

我们可以选择使用现成的开源解码软件库,如mad(MPEG Audio Decoder)或LAME (LAME Ain't an MP3 Encoder)。

这些库可以实现对MP3格式的音频文件进行解码,并输出数字音频信号。

我们还需要开发一个用户界面程序,实现文件浏览和选择,并与解码软件库进行交互。

最后,我们将介绍该MP3播放器的应用于毕业设计中的可能性。

毕业设计可以从以下几个方面展开:1.性能优化:可以通过对音频解码算法的优化,提高音频文件的解码速度和音质;或者对MP3播放器的界面进行优化,提高用户体验。

2.功能扩展:可以通过添加额外的功能模块,如蓝牙模块、存储卡接口等,实现更多的功能,如无线传输、外部存储扩展等。

3.系统集成:可以将MP3播放器与其他系统进行集成,如车载音频系统、家庭音响系统等,以实现更广泛的应用。

综上所述,基于单片机的MP3播放器设计具有许多潜在的应用领域。

在毕业设计中,我们可以通过对性能优化、功能扩展和系统集成等方面的研究,使MP3播放器的设计更加完善和创新。

基于51单片机音乐播放器设计

基于51单片机音乐播放器设计

基于51单片机音乐播放器设计音乐播放器是一种可以播放音频文件的设备,广泛应用于日常生活中。

本文将基于51单片机设计一个简单的音乐播放器。

一、设计目标本音乐播放器设计的主要目标是实现以下功能:1.支持播放多种格式的音频文件,如MP3、WAV等;2.支持音量调节和音频文件选择功能;3.具备简单的界面和易于理解的操作方式;4.能够适应不同的音频文件大小和音乐时长。

二、硬件设计2. 存储器:选择外接Flash存储器作为音频文件的存放介质,具备较大的存储容量和较高的读写速度,能够满足音频文件的多样性需求。

3.音频解码芯片:选择支持MP3和WAV格式音频解码的芯片,能够将音频文件翻译成能够被音频输出部分播放的信号。

4.音频输出部分:选择合适的音频输出部分,如耳机接口或喇叭接口,将解码后的音频信号输出为声音。

三、软件设计1.系统初始化:在开机时进行系统初始化,包括对主控芯片、存储器和音频解码芯片的初始化。

2.文件系统管理:设计一个简单的文件系统,能够以目录结构的形式管理存储器中的音频文件。

3.音频解码:根据选择的音频文件格式,进行相应的解码操作,将解码后的音频数据传输给音频输出部分。

4.播放控制:实现音量调节和音频文件选择功能,能够暂停、播放、停止等操作。

5.用户界面:设计一个简单直观的用户界面,通过按键或显示屏等方式进行操作反馈和信息显示。

四、系统流程1.开机初始化:对主控芯片、存储器和音频解码芯片进行初始化。

2.文件系统管理:读取存储器中的文件目录,生成文件列表供用户选择。

3.用户操作:用户通过按键或其他方式进行音量调节和音频文件选择操作。

4.音频解码:根据用户选择的音频文件,进行相应的解码操作。

5.播放控制:根据用户的操作,进行音频的暂停、播放、停止等操作。

6.操作反馈:在用户界面上显示操作反馈和信息。

五、总结本文基于51单片机设计了一个简单的音乐播放器,实现了支持多种格式音频文件的播放、音量调节和文件选择功能,并提供了简单的用户界面。

单片机音乐盒的课程设计

单片机音乐盒的课程设计

单片机音乐盒的课程设计一、课程目标知识目标:1. 让学生掌握单片机的基本原理,理解音乐盒制作的硬件组成和工作原理。

2. 使学生了解并掌握音乐盒编程的基础知识,包括音符、节拍和旋律的表示方法。

3. 让学生掌握音乐盒电路的搭建方法,了解相关电子元器件的功能和连接方式。

技能目标:1. 培养学生动手操作能力,能独立完成音乐盒硬件电路的搭建。

2. 培养学生编程能力,使其能编写简单的音乐程序,实现对音乐盒的控制。

3. 培养学生解决问题的能力,能针对音乐盒制作过程中遇到的问题进行分析和调试。

情感态度价值观目标:1. 培养学生对单片机及电子制作的兴趣,激发学生探究科学的热情。

2. 培养学生团队合作精神,使学生学会与他人合作共同完成任务。

3. 培养学生创新思维,鼓励学生发挥想象,设计独特的音乐作品。

分析课程性质、学生特点和教学要求,本课程目标旨在让学生在掌握单片机基础知识的基础上,通过动手实践,培养其编程和电子制作能力。

课程目标具体、可衡量,以便学生和教师能够清晰地了解课程的预期成果,并为后续的教学设计和评估提供依据。

二、教学内容1. 理论知识:- 单片机原理:介绍单片机的基本概念、结构及其工作原理。

- 音乐知识:讲解音符、节拍、旋律等基本音乐概念及其在编程中的表示方法。

- 电子元器件:介绍常用的电子元器件(如电阻、电容、二极管等)及其在音乐盒电路中的应用。

2. 实践操作:- 音乐盒硬件搭建:指导学生按照电路图搭建音乐盒硬件,包括单片机、扬声器、电子元器件的连接。

- 编程控制:教授学生使用编程软件,编写音乐程序,实现对音乐盒的控制。

- 调试与优化:教授学生如何对音乐盒进行调试,包括查找故障、优化程序等。

3. 教学大纲:- 第一阶段:单片机原理及音乐知识学习,占总课时1/4。

- 第二阶段:电子元器件认知及音乐盒硬件搭建,占总课时1/4。

- 第三阶段:编程控制与调试优化,占总课时1/2。

4. 教材章节:- 单片机原理与编程:《单片机原理与应用》第1章、第2章。

(完整word版)单片机控制音乐播放-开题报告

(完整word版)单片机控制音乐播放-开题报告

南昌大学共青学院本科生毕业论文(设计)开题报告
图1
四、研究方法
方案一方案设计
采用51系列作为系统控制器,单片机算术运算功能强,软件编程灵活、自由度大,可用软件编程实现各种算法和逻辑控制。

由于其功耗低、体积较小、技术成熟和成本低等优点,在各个领域应用广泛。

而且抗干扰性能好。

采用LED数码管控制用单片机,显示用LED数码管这种方案。

虽然显示的内容有限,但是也可以显示数字和几个英文字母,在这个设计中已经足够了,并且价格比液晶字符式要低的多,为了控制设计制作的成本,在此设计中我们选用LED数码管显示。

[3] 王港元.电工电子实践指导.江西电子科学技术出版社.2007
[4] 阎石.数字电子技术基础第五版.高等教育出版社,2006.
[5] 谭浩强.C程序设计第四版.清华大学出版社.2010.
[6] 张鑫.单片机原理及应用[M].北京:电子工业出版社.2005
[7] 李玉梅.基于MCS-51系列单片机原理的设计应用[M].北京:国防工业出版社.2006
[8] 吴金戌.8051单片机实践与应用[M].清华大学出版社.2003.
[9] 戴梅芳.微型计算机技术及应用[M].清华大学出版社.1996.
[10] 徐爱卿.单片微型计算机应用和开发系统[M].北京航空航天大学出版社. 1998
填写说明
1.指导教师意见填写对本课题的深度、广度及工作量的意见和对论文结果的预测;
2.所在教研室审查意见包括对指导教师意见的认定和是否同意开题等;
3.本开题报告打印存档,但签名部分必须由指导教师或学生亲笔签名。

51单片机毕业课程设计音乐播放器

51单片机毕业课程设计音乐播放器

51单片机毕业课程设计音乐播放器本文档旨在提供关于51单片机毕业课程设计的音乐播放器的详细内容。

音乐播放器是一种通过使用51单片机来实现的设备,它可以播放音乐文件并提供一些基本的控制功能。

设计概述功能要求音乐播放器的主要功能要求包括:1. 播放音乐文件:能够读取存储器中的音乐文件,并将其播放出来。

2. 控制功能:提供基本的控制功能,如播放、暂停、下一曲和音量调节等。

3. 显示功能:在显示屏上显示当前播放的音乐信息,如歌曲名、艺术家和播放进度等。

硬件组成音乐播放器的硬件组成包括:1. 51单片机:作为主控芯片,负责控制整个系统。

2. 存储器:用于存放音乐文件。

3. 音频模块:用于将数字音频信号转换为模拟音频信号输出。

4. 控制模块:包括按钮、旋钮等,用于用户控制音乐播放器的操作。

5. 显示屏:用于显示当前播放的音乐信息。

软件实现音乐播放器的软件实现包括以下几个方面:1. 文件系统:实现对存储器中音乐文件的读取和管理。

2. 音频解码:将读取的音乐文件进行解码,并将解码后的音频数据传递给音频模块输出。

3. 用户界面:通过用户界面与用户进行交互,接受用户的控制指令。

4. 显示管理:管理显示屏的内容,实时显示当前播放的音乐信息。

设计步骤1. 硬件搭建:按照硬件组成部分的描述,搭建音乐播放器的硬件平台。

2. 软件编写:实现音乐播放器的软件功能,包括文件系统、音频解码、用户界面和显示管理等。

3. 调试测试:进行软硬件的调试和测试,确保音乐播放器的各项功能正常运行。

4. 完善优化:在实际测试中发现问题,进一步完善和优化音乐播放器的功能和性能。

5. 文档撰写:完成毕业课程设计文档的撰写,详细描述音乐播放器的设计思路、实现过程和测试结果。

总结通过本文档,你可以了解到51单片机毕业课程设计音乐播放器的完整设计内容,包括设计概述、硬件组成、软件实现和设计步骤等方面的内容。

这将帮助你更好地理解音乐播放器的原理和实现方法,为你的毕业课程设计提供一定的参考和指导。

单片机课程设计之音乐播放器

单片机课程设计之音乐播放器

单片机课程设计之音乐播放器学生姓名学号所在学院专业名称班级指导教师成绩目录一、设计功能 ................................................................................................................. 错误!未定义书签。

(一)大体功能 ..................................................................................................... 错误!未定义书签。

(二)扩展功能 ..................................................................................................... 错误!未定义书签。

二、设计原理 ................................................................................................................. 错误!未定义书签。

(一)单片机产生不同频率脉冲信号的原理:...................................................... 错误!未定义书签。

三、方案与论证 ............................................................................................................. 错误!未定义书签。

四、设计内容 ................................................................................................................. 错误!未定义书签。

单片机音乐编码课程设计

单片机音乐编码课程设计

单片机音乐编码课程设计一、课程目标知识目标:1. 让学生理解单片机的基本原理,掌握音乐编码的基础知识。

2. 使学生掌握单片机编程的基本技巧,能够运用音乐编码编写简单的旋律。

3. 帮助学生了解音乐与编程之间的联系,提高他们对音乐编程的兴趣。

技能目标:1. 培养学生运用单片机进行音乐编码的能力,能够独立编写并调试简单的音乐程序。

2. 提高学生的问题解决能力,使他们能够在遇到编程难题时,通过查阅资料、自主思考等方法予以解决。

3. 培养学生的团队协作能力,使他们能够在小组合作中共同完成音乐编程任务。

情感态度价值观目标:1. 培养学生对单片机音乐编程的兴趣,激发他们的学习热情。

2. 培养学生的创新意识,鼓励他们勇于尝试,发挥自己的想象力和创造力。

3. 培养学生的耐心和毅力,使他们能够面对编程过程中的困难和挑战,持之以恒地解决问题。

课程性质:本课程为实践性较强的课程,旨在通过实际操作,让学生掌握单片机音乐编码的知识和技能。

学生特点:本课程针对的是具有一定单片机基础知识的初中生,他们对新鲜事物充满好奇,但可能缺乏耐心和毅力。

教学要求:结合学生特点,注重理论与实践相结合,采用任务驱动法,引导学生主动探索,提高他们的动手能力和实际操作技能。

在教学过程中,关注学生的学习情况,及时调整教学策略,确保学生能够达到课程目标。

将课程目标分解为具体的学习成果,便于后续的教学设计和评估。

二、教学内容1. 单片机基础原理复习:回顾单片机的结构、工作原理及编程基础,为音乐编码打下基础。

- 教材章节:第一章 单片机概述,第二章 单片机硬件结构,第三章 单片机编程基础。

2. 音乐基础知识介绍:讲解音阶、音符、节拍等基本音乐概念,使学生了解音乐与编程之间的联系。

- 教材章节:第四章 音乐基础知识。

3. 音乐编码方法:学习如何使用单片机进行音乐编码,包括音符的表示、节拍的设置等。

- 教材章节:第五章 音乐编码方法。

4. 实践操作:分组进行音乐编程实践,让学生动手编写简单的旋律,培养实际操作能力。

基于单片机音乐播放器课程设计

基于单片机音乐播放器课程设计

目 录第一章第一章 绪论绪论........................................................................ 1 第二章第二章 音乐播放器主要器件相关知识介绍音乐播放器主要器件相关知识介绍 .................................2 2.1 AT89C51 ..................................................................2 2.2 LCD 显示器显示器 ...............................................................4 2.3 喇叭喇叭 (5)2.4 键盘键盘 (5)第三章第三章 音乐播放器设计原理音乐播放器设计原理………………………………………… 6 3.1 单片机发声的基本原理单片机发声的基本原理………………………………………… 6 3.2 设计的相关音乐说明设计的相关音乐说明 …………………………………………7 3.3 音乐播放器设计功能说明音乐播放器设计功能说明音乐播放器设计功能说明 ……………………………………………………………………………………7 3.4 设计结构框图设计结构框图……………………………………………………9 3.5 主程序控制的工作流程图……………………………………………10 3.6 播放音乐的主程序播放音乐的主程序 …………………………………………… 11 设计心得设计心得 …………………………………………………………………15 参考文献参考文献 (15)第一章 绪论二十世纪九十年代以来,计算机、信息、电子、控制、通信等技术得到迅速发展,促使了社会生产力的提高,也使人们的生产方式和生活方式产生了日新月异的变化。

随着人们生活水平的提高及对音乐的喜爱,对音乐播放器的品质,功能,品种等提出了越来越多的要求,表现在对控制系统性能、可靠性等要求越来越高。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

《单片机原理及应用》课程设计报告书课题名称音乐播放器姓名学号专业指导教师机电与控制工程学院年月日任务书本次课题是:设计一个以单片机为核心的音乐播放器,该音乐播放器具有音乐的循环播放及播放时的音乐显示等功能。

具体要求如下:设计三个键分别实现:播放/停止、下一曲、上一曲;同时用LED显示器显示播放曲目,为了节省电源,LED显示器在播放期间设计为关闭状态,只有当一首歌演奏结束或选曲时显示器才显示曲目信息。

当播放键打开时音乐开始播放,同时LED显示器显示,假如是第一首歌则LED显示器显示数字1,当打开下一曲按键时播放器开始播放第二首歌,同时LED显示器显示数字2。

声音经过三级管放大后由蜂鸣器输出。

音乐可以给我们的生活带来乐趣,音乐可以放松我们的心情,音乐可以让我们得到释怀。

而且通过这次设计我们可以学到关于单片机在实际生活中的设计应用,同时也使我们加深了对单片机的认识,提高了我们的编程能力,为我们能够更好的学习单片机有很大的帮助。

目录1.绪论 (1)2.方案论证 (2)3.方案说明 (2)4.硬件方案设计 (3)5.软件方案设计 (13)6.调试 (14)7.小结 (17)8.参考文献 (11)9.附录 (14)1.绪论二十世纪九十年代以来,计算机、信息、电子、控制、通信等技术得到迅速发展,现代家庭更加注重生活品质,健康、安全、舒适、便捷成为人们的迫切需要。

智能家电控制系统为智能家居的一个重要组成部分,为人们提供方便、安全、智能化、舒适的数字化生活提供解决方案。

随着电子技术的迅速发展,特别是随大规模集成电路出现,给人类生活带来了根本性的改变。

由其是单片机技术的应用产品已经走进了千家万户。

首先描述系统硬件工作原理,并附以系统结构框图加以说明,着重介绍了本系统所应用的各硬件接口技术和各个接口模块的功能及工作过程,其次,详细阐述了程序的各个模块和实现过程。

本设计以数字集成电路技术为基础,单片机技术为核心。

本文编写的主导思想是软硬件相结合,以硬件为基础,来进行各功能模块的编写。

系统以单片机的汇编语言进行软件设计,增加了程序的可读性和可移植性,为了便于扩展和更改,软件的设计采用模块化结构,使程序设计的逻辑关系更加简洁明了。

系统通过扬声器为载体发出声音,所以具有人性化的操作和悦耳的歌声。

要产生音频信号,只要算出某一音频的周期(频率的倒数),将此周期除以2即为半周期的时间,利用定时器计时此半周期时间,计时到后取反输出,重复此过程即得到此频率的声音信号。

此信号从P1.7脚输出。

定时器T0工作在定时方式1,改变TH0及TL0,产生不同的音频频率。

必须考虑到中断响应时间的影响,尤其在高音部分,若忽略中断响应时间,会使音频频率比标准值低几十Hz,相当于1/4音程,很容易听出来,对低音部分影响不大。

一般中断响应时间为3~6个机器周期,经过反复试验取5个机器周期作为校正最为恰当,表1中所给的定时初值就是考虑中断响应后的定时常数。

另外,为避免T1中断可能引起杂音,应将定时器T0中断设为高优先级。

这样编写出来的程序播放的音与标准音叉进行差频校音,非常准确和谐。

2.方案论证首先设定三个键分别将三个开关键接到单片机的三个端口P1.0—P1.2,P3.5作为输出接口。

8255的A口接LED显示器的字形控制端口,PC0接位控制端口,并将片选信号接口接好。

将输出信号通过三极管放大后由蜂鸣器输出,三极管的一端接高电平,一段接低电平,另一端接地。

3.方案说明当打开播放键时系统经过判别选出第一首歌曲,首先将歌曲地址送到寄存器中,然后调用音乐频率数码表,经过P3.5口输出,再经三极管放大,最后由蜂鸣器发出音乐。

同时在音乐播放期间,显示电路通过并行方式与单片机扩展的8255的PA口相连,用74LS244译码后接到显示上。

假如是第一首歌则显示器显示1,第二首则显示相应的数字2。

同时也可以通过相应的开关选择相应的歌曲。

4.硬件方案设计4.1单片机的选择单片机采用应用最为普遍的MCS-51系列单片机。

MCS-51单片机是由8位CPU、只读存储器EPROM/ROM、读写存储器RAM、并行I/O口、串行I/O口、定时器/计数器、中断系统、振荡器和时钟电路等部分组成,各部分之间通过内部总线相连。

MCS-51系列单片机的主要性能有:1)8位字长CPU和指令系统;2)1个片内时钟振荡器和时钟电路;3)64K外部数据存储器的地址空间;4)64K外部程序存储器的地址空间;5)32条双向且分别可位寻址的I/O口线;6)128B的片内RAM;7)2个16位定时器/计数器;8)具有2个优先级的5个中断源结构;9)1个全双工串行口;10)1个布尔处理器。

MCS-51单片机的核心部分是中央处理器CPU,它由运算器和控制器两大部分组成。

运算器用来完成算术运算、逻辑运算和进位操作,由算术逻辑单元(ALU)、位处理器、累加器ACC、寄存器B、暂存器TMP1和TMP2等组成,与一般运算器的作用类似。

控制器是用来统一指挥和控制计算机进行工作的部件,它由定时和控制逻辑、内部振荡电路OSC、指令寄存器及其译码器、程序计数器PC 及其增量器、程序地址寄存器、程序状态寄存器PSW、RAM地址寄存器、数据指针DPTR、堆栈指针SP等部分组成。

单片机工作的时间基准是由时钟电路提供的。

在单片机的XTAL1和XTAL2两个管脚,接一只晶振及两只电容就构成了单片机的时钟电路。

电路中,电容器C1和C2对振荡频率有微调作用,通常的取值范围为(30+10)pF。

石英晶体选择6MHz或12MHz都可以,其结果只是机器周期时间不同,影响计数器的计数初值。

如图所示:单片机的RST管脚为主机提供一个外部复位信号输入端口。

复位信号是高电平有效,高电平有效的持续时间应为2个机器周期以上。

单片机的复位方式有上电自动复位和手工复位两种。

4.4 8255A芯片的简介Intel 8086/8088 系列的可编程外设接口电路(Programmable Peripheral Interface)简称PPI,型号为8255(改进型为8255A及8255A-5),具有24条输入/输出引脚、可编程的通用并行输入/输出接口电路。

它是一片使用单一+5V电源的40脚双列直插式大规模集成电路。

8255A的通用性强,使用灵活,通过它CPU可直接与外设相连接。

4.4.1 8255SA的内部结构可编程并行接口Intel8255A, 其内部结构如图3.4.1所示,由以下4个部分组成:图4.4.1 8255A内部结构1.输入/输出端口A、B、C 。

这三个端口均可看作是I/O端口,但它们的结构和功能也稍有不同。

A口和B口是一个独立的8位I/O口。

C口:可以看作是一个独立的8位I/O口;也可以看作是两个独立的4位I/O口。

2.A组和B组控制电路。

这是两组根据CPU命令控制8255A工作方式的电路,这些控制电路内部设有控制寄存器,可以根据CPU送来的编程命令来控制8255A的工作方式,也可以根据编程命令来对C口的指定位进行置/复位的操作。

A组控制电路用来控制A口及C口的高4位;B 组控制电路用来控制B口及C口的低4位3.读/写控制逻辑。

(同上:它负责管理8255A的数据传输过程。

它接收CS*及RD*、WR*、RESET,还有来自系统地址总线的口地址选择信号A0和A1。

将这些信号组合后,得到对A组控制部件和B组控制部件的控制命令,并将命令发给这两个部件,以完成对数据、状态信息和控制信息的传输。

)4.数据总缓冲器。

(同上:它是8位的双向的三态缓冲器。

作为8255A 与系统总线连接的界面,输入/输出的数据,CPU的编程命令以及外设通过8255A传送的工作状态等信息,都是通过它来传输的。

4.4.2 8255A的引脚信号如图3.4.2所示是8255A的芯片引脚信号。

除了电源和地以外,其他信号可以分为两组。

1.和外设一边相连的:PA7-PA0:A组数据信号PB7-PB0:B组数据信号PC7-PC0:C组数据信号2.和CPU一边相连的:RESET:复位信号,低电平有效。

当RESET信号来到时,所有内部寄存器就被清除,同时,3个数据端口被自动设为输入端口。

D7-D0:它们是8255A的数据线,和系统数据总线相连。

CS\:芯片选择信号,低电平有效。

在一个系统中,一般根据全部接口芯片来分配若干较低位地址(比如A5、A4、A3)来组成各种芯片选择码,当这几位地址组成某一个代码时,译码器便往8255A的CS*端输出一个低电平,于是8255A被选中。

只有当CS\有效时,读信号RD\和写信号WR\才对8255A有效。

RD*:芯片读出信号低电平有效。

WR*:芯片写入信号低电平有效。

A1、A0:端口选择信号。

8255A内部有3个数据端口和一个控制端口,共四个端口。

规定当A1、A0为00时,选中A端口;为01时,选中B端口;为10时,选中C端口;为11时,选中控制口。

8255A的几个控制信号和传输动作之间的关系如下表8255A的控制信号与传输动作的对应关系4.4.3 8255A的控制1.工作方式控制字8255有三种工作方式:方式0、方式1、方式2。

两组端口可分别指定不同的工作方式。

每组端口在某种工作方式下,并不要求各信号同为输入或同为输出,而是可以分别指定。

方式选择控制字的格式如图3.4.3所示。

图3.4.3 方式选择控制字的格式2.PC口控制字PC口的各信号线常作为控制线来使用,因此,经常需要单独对每根信号线置1或置0。

这种操作用向PC口控制字寄存器送出PC口控制字来实现。

PC口控制字格式如图3.4.4所示。

应用注意:PC口控制字虽然是对端口C操作,但应写入到控制口地址,而不是写入到PC数据口。

编程举例:设PA数据口地址00E0H,PB数据口地址00E2H,PC 数据口地址00E4H,控制口00E6H例子一:当要求端口A工作在方式0,输出;端口B工作在方式1,输入;端口C的高4位为输入,低4位为输出;则方式控制字为10001110B 或8EH,如图3.4.5所示汇编指令如下:MOV DX,00E4HMOV AL,8EHOUT DX,AL例子二:当要求端口A工作在方式1,输入;端口B工作在方式0,输入;端口C的高4位为输出,低4位为输出;则方式控制字为10110010B 或0B2H,如图3.4.6所示汇编指令如下:MOV DX,00E4HMOV AL,0B2HOUT DX,AL4.5 LED显示电路设计单片机应用系统中,通常都需要进行人机对话。

这包括人对应用系统的状态干预与数据输入,以及应用系统向人们显示运行状态与运行结果等。

显示器、键盘电路就是用来完成人机对话活动的人机通道。

常用的LED数码显示器由7个发光二极管组成7段LED显示器,其排列形状如图所示。

相关文档
最新文档