《音乐播放器》PPT课件
《Music》PPT精品教学课件

The impacts of music on Sarah
para 2
para 1
para 5
para 3
para 4
focus on one topic
Reading for structure
Introduction
Sarah’s advice and hope
Three years ago
Then one day
From then on
What
How
had a serious disease
listen to music before a medical treatment
music helped her recover
happy
so much better
repetition
metaphor 暗喻
attracts the audience
simile 明喻
personification
Tip 2: Proper rhetorical devices make the speech vivid and impressive
Of course, I hope none of you have to go through the same kind of suffering that l did. At the same time, we all go through various periods when we feel sad or alone. During those times, music can help you in the same way that it helped me. I hope all of you will somehow begin to treasure music and make it a part of your life.Thank you!
《Music》PPT课件

Who What When
gets up
at
seven o'clock
has dinner
half past seven
Mog
starts to work
eight o'clock
goes to bed
six o'clock
Listen and write
My friend I have a good friend.
历史课件:/kejian/lish i/
dinner
start to work
go to bed
Matching Game
get up
have dinner
start to work
go to bed
Fill in blanks Hello,everyone. I'm _M__i_n. I get up at ___se_v_e_n__o_'c_l_o_ck in the evening.
His name is Mog.
He is black.
He __g_e_t_s_u_pat seven
o'clock in the evening.
He _h__a_s_d_i_n_n_e_rat half
past seven.
He catches a lot of
___m__icaet eight o' clock.
My day
第三课时
Guessing Game
1
dog
3
fish
2
cat
4
mouse
Do you like cats? Why?
音乐播放器PPT

• •
• •
8254工作方式
• (5)方式4:软件出发选通方式 • 进入工作方式4,OUTi输出高电平。 装入计数值n后, 如果 GATE为高电平,则立即开始减“1”计数,直到计数值减到“0”为止, OUTi输出宽度为一个CLKi周期的负脉冲。由软件装入的计数值只有一 次有效,如果要继续操作, 必须重新置入计数初值n。如果在操作的 过程中,GATE变为无效,则停止减“1”计数, 到GATE再次有效时, 重新从初值开始减“1”计数。 • (6)方式5:硬件触发方式计数 • 进入工作方式5, OUTi输出高电平, 硬件触发信号由GATE端 引入。 因此,开始时GATE应输入为0, 装入计数初值n后,减“1” 计数并不工作,一定要等到硬件触发信号由GATE端引入一个正阶跃信 号,减“1”计数才会开始,待计数值计到“0”, OUTi将输出负脉 冲,其宽度固定为一个CLKi周期,表示定时时间到或计数次数到。
相关知识
(1)每片上有3 个独立的16 位的减计数器通道。 (2)对于每个计数器,都可以单独作为定时器 戒计数器使用,并且都可以按照二迚制戒十迚制 来计数。 (3)每个通道都有6 种工作方式,都可以通过 程序设置戒改发。 (4)每个计数器的速率可高达10MHz。 主要部分有:数据总线缓冲器、读/写控制逻 辑、控制字寄存器、计数通道0#、1#、2#: 内部结构如下图:
• FREG1 DW 2 dup(262),294,262,349,262,262,294,262,392,249,262,262,523,440 ,349 ;曲1的频率 • DW 330,294,466,266,440,349,392,349,-1 • TIME1 DW 1,1,2,2,2,4,1,1,2,2,2,4,1,1,2,2,2,2,4,1,1,2,2,2,4 ;曲1的时间 • FREG2 DW 330,294,262,294,3 DUP(330) ;曲2的频率 • DW 3 DUP(294),330,392,392 • DW 330,294,262,294,4 DUP(330) • DW 294,294,330,294,262, -1 • TIME2 DW 6 DUP(1),2 ;曲2的时间 • DW 2 DUP(1,1,2) • DW 12 DUP(1),4 • FREG3 DW 330,392,330,294,330,392,330,294,330,330,392,330,294,262,294, 330,392,294 ;曲3的频率 • DW 262,262,220,196,220,262,294,332,262, -1
四年级上册科学课件-3.5《声音的传播》 |教科版 (共17张PPT)

声音的传播
ห้องสมุดไป่ตู้
实验目的: 1. 加强学生实际动手操作能 力,培养学生观察总结能力。
2.观察分析总结声音在不同 物质里的不同传播效果。
实验器材:
酒精灯、石棉网、烧瓶、胶 塞、玻璃管、乳胶管、皮管 夹、三脚架、小铃、水槽、 音乐播放器、牙签、纸杯、 细线、塑料袋、沙、水、筷 子、玻璃瓶、大豆
14、意志坚强的人能把世界放在手中 像泥块 一样任 意揉捏 。2021 年8月5 日星期 四2021/ 8/5202 1/8/520 21/8/5
15、最具挑战性的挑战莫过于提升自 我。。2 021年8 月2021 /8/520 21/8/52 021/8/ 58/5/20 21
16、业余生活要有意义,不要越轨。2 021/8/ 52021/ 8/5Aug ust 5, 2021
17、一个人即使已登上顶峰,也仍要 自强不 息。202 1/8/52 021/8/5 2021/8 /52021 /8/5
谢谢观赏
You made my day!
我们,还在路上……
9、有时候读书是一种巧妙地避开思考 的方法 。2021 /8/520 21/8/5T hursda y, August 05, 2021
10、阅读一切好书如同和过去最杰出 的人谈 话。202 1/8/52 021/8/5 2021/8 /58/5/2 021 3:44:06 PM
11、越是没有本领的就越加自命不凡 。2021/ 8/5202 1/8/520 21/8/5 Aug-21 5-Aug-2 1
实验步骤---1: 1.耳朵贴近桌面,轻敲桌腿。 2.响着音乐的手机放入水中。 3.远处播放音乐。
现象:
我们都能听到声音。
第4章应用VHDL设计数字系统-电子琴和音乐播放器的设计

CLK
IF EN = '1' THEN
--检测是否允许计数(同步使能)
IF CNTI < 9 THEN --检测是否小于9
RST
CNTI := CNTI + 1; --小于9,允许加1计数
EN
ELSE
CNTI := (OTHERS =>‘0’); --大于等于9,计数值清零 END IF;
inst
END IF;
END IF;
IF CNTI = 9 THEN COUT <= ‘1’; --计数等于9,输出进位信号
ELSE COUT <= '0';
END IF;
CNT <= CNTI; --将计数值向端口输出
END PROCESS;
END behav;
CNT[3..0] COUT
项目1:电子琴的设计
仿真结果:10进制计数器设计
结论: 计数器就可以完成分频器的任务!
项目1:电子琴的设计
设计关键:N进制计数器设计——可变分频器
LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL;
CNT_N CLK
RST
ENTITY CNT_N IS PORT (
CNT[11..0] COUT
项目1:电子琴的设计
设计关键:N进制计数器设计——可变分频器
ARCHITECTURE behav OF CNT_N IS
BEGIN
PROCESS(CLK, RST, EN)
VARIABLE CNTI : STD_LOGIC_VECTOR(11 DOWNTO 0);
音乐播放器课程设计

音乐播放器课程设计一、课程目标知识目标:1. 学生理解音乐播放器的基本组成结构与功能;2. 学生掌握音乐播放器界面设计的基本原则;3. 学生了解音乐播放器中音乐格式及播放原理。
技能目标:1. 学生能够运用所学的界面设计原则,设计出美观、实用的音乐播放器界面;2. 学生能够利用相关软件或编程语言,实现音乐播放器的基本功能,如播放、暂停、切换歌曲等;3. 学生能够通过小组合作,共同完成音乐播放器的制作,提高团队协作能力。
情感态度价值观目标:1. 学生培养对音乐艺术的热爱和欣赏能力;2. 学生养成积极探索、勇于创新的学习态度,增强解决问题的信心;3. 学生通过课程学习,认识到科技与艺术的结合,提高审美观念和人文素养。
课程性质:本课程以实践操作为主,结合理论讲解,培养学生的动手能力和创新思维。
学生特点:六年级学生对音乐有一定的兴趣和认知,具备一定的计算机操作能力,喜欢探索新事物。
教学要求:教师需关注学生的个体差异,提供个性化的指导,鼓励学生积极参与课堂讨论和实践活动,以达到课程目标。
在教学过程中,注重将目标分解为具体的学习成果,便于教学设计和评估。
二、教学内容1. 音乐播放器的基本原理- 介绍音乐播放器的发展历程;- 讲解音乐播放器的硬件与软件组成;- 分析音乐播放器的工作原理。
2. 音乐播放器界面设计原则- 探讨界面设计的基本原则,如简洁、易用、美观等;- 分析优秀音乐播放器界面的设计特点;- 学习界面设计的基本工具和方法。
3. 音乐格式及播放器功能实现- 介绍常见的音乐格式,如mp3、wav等;- 讲解音乐播放器中解码、播放、音效处理等功能的实现方法;- 学习使用编程语言或软件实现音乐播放器的功能。
4. 实践操作:音乐播放器制作- 分组讨论,确定音乐播放器的主题和功能;- 设计并制作音乐播放器界面;- 编程实现音乐播放器的基本功能;- 测试、优化音乐播放器。
教学内容依据课程目标,结合教材,确保科学性和系统性。
音乐播放器课程设计报告

课程设计报告课程设计名称:音乐播放器院系:信息工程学院学生姓名:班级:学号:成绩:指点教师:开课时光:2016-2017学年 2 学期音乐播放器一.实践的内容和请求进修WAV格局音频播放道理.数字音频接口及的相干常识.懂得模仿音频旌旗灯号和数字音频旌旗灯号的概念.控制编写音频播重要内容放器的办法.实现音频播放,小键盘输入操纵.本体系要做一个音乐播放器,运用通用准时器准时,用比较输出功效,输出曲谱频率的方波产生声音,对 3 首歌曲编码, 其支撑 WAV 格局音频播放(上键:暂停;左键:上一首;右键:下一首).运用硬件ARM 嵌入式开辟平台. 用于 ARM7TDMI 的JTAG 仿真器.PC 机 Pentium100开辟实实际现音频播放.重要实现:上一首按键:当点击上一首按键时,当前播放歌曲的上一首歌首被播放.下一首按键:当点击下一首按键时,当前播放歌曲的下一首歌曲即被播放.当点击停滞键时,当前歌曲即会被停滞.播放界面设计:在歌曲进行播放时, 界面应包含所有的按键, 并且要歌曲的曲目单.二、实践道理WAV播放器体系请求可以或许对mp3.wav格局的音频文件进行解码,处理起来速度是有请求的,尤其是对320Kbps的MP3格局数据流的处理,必须平常快,才干实现MP3的流利播放,可供选择的八位机有AVR.PIC,可供选择的32位处理器有SAMSUNG.STM32.ATMEL等.选择MCU优先斟酌于失去丰硕的RAM,八位机RAM重要靠扩大,内部RAM一般在4Kbyte以内,32位机里面,SAMSUNG一般不内带RAM,也要外扩.本试验运用了ARM7处理器,MP3解码可以有两种办法,一是经由过程ARM处理器软解码,经由过程对MP3数据格局的解析实现MP3播放,二是经由过程外部解码芯片直接解码.第一种办法在解码高码率的MP3时,ARM7处理才能吃紧,并且STM32还须要外部DAC来做音频输出,所以采取第二种办法进行解码.MP3罕有的解码芯片有VS100X系列和STA01系列,STA01须要外接DAC做音频输出,而VS1003自带DAC,且解码的文件格局包含mp3和wav,别的它还可以实现灌音功效,便利以落后行功效的拓展运用.三.实践步调开机后,先初始化各外设,然后检测字库文件夹是否消失,假如有问题,则提醒Error,假如检测无问题,则开端轮回播放 SD卡内MUSIC 文件夹里面的歌曲,在 TFTLCD 上显示歌曲名字.播放时光.歌曲总时光.歌曲数量.当前歌曲的编号等信息.KEY0选择下一首,KEY2 选择上一首,KEY_UP 控制暂停/持续播放.3.2试验步调1)初始化 WM8978,这个进程包含软复位.DAC 设置.输出设置和音量设置等.2)初始化 I2S,此进程重要设置 SPI_I2SCFGR 存放器,设置 I2S 模式.I2S 尺度.时钟余暇电温和数据帧长等,最后开启 I2S TX DMA,使能 I2S 外设. 在库函数中初始化 I2S 挪用的函数为:void I2S_Init(SPI_TypeDef* SPIx, I2S_InitTypeDef* I2S_InitStruct); 构造体 I2S_InitTypeDef 的界说为:typedef struct{ uint16_t I2S_Mode;uint16_t I2S_Standard;uint16_t I2S_DataFormat;uint16_t I2S_MCLKOutput;uint32_t I2S_AudioFreq;uint16_t I2S_CPOL; }I2S_InitTypeDef;第一个参数用来设置 I2S 的模式,也就是设置 SPI_I2SCFGR 存放器的 I2SCFG 相干位.可以设置装备摆设为主模式发送 I2S_Mode_MasterTx,主模式接收 I2S_Mode_MasterRx,从模式发送 I2S_Mode_SlaveTx 以及从模式接收 I2S_Mode_SlaveRx 四种模式.第二个参数I2S_Standard 用来设置 I2S 尺度,这个前面已经讲授过.可以设置为:飞利浦尺度I2S_Standard_Phillips,MSB 对齐尺度 I2S_Standard_MSB,LSB 对齐尺度I2S_Standard_LSB 以及 PCM 尺度 I2S_Standard_PCMShort. 第三个参数 I2S_DataFormat 用来设置 I2S 的数据通讯格局.这里实际包含设置 SPI_I2SCFGR 存放器的 HCLEN 位(通道长度)以及 DATLEN 位(传输的数据长度).当我们设置为 16 位尺度格局I2S_DataFormat_16b 的时刻,实际上传输的数据长度为 16 位,通道长度为 16 位.当我们设置为其他值的时刻,通道长度都为 32 位.第四个参数 I2S_MCLKOutput用来设置是否使能主时钟输出.我们试验会使能主时钟输出.第五个参数 I2S_AudioFreq 用来设置 I2S频率.实际依据输入的频率值,会来盘算 SPI 预分频存放器 SPI_I2SPR 的预分频奇数因子以及 I2S 线性预分频器的值.这里支撑 10 中频率:#define I2S_AudioFreq_192k ((uint32_t)192000)#define I2S_AudioFreq_96k ((uint32_t)96000)#define I2S_AudioFreq_48k ((uint32_t)48000)#define I2S_AudioFreq_44k ((uint32_t)44100)#define I2S_AudioFreq_32k ((uint32_t)32000)#define I2S_AudioFreq_22k ((uint32_t)22050)#define I2S_AudioFreq_16k ((uint32_t)16000)#define I2S_AudioFreq_11k ((uint32_t)11025)#define I2S_AudioFreq_8k ((uint32_t)8000)#define I2S_AudioFreq_Default ((uint32_t)2)第六个参数 I2S_CPOL 用来设置余暇状况时钟电平,取值为高电平 I2S_CPOL_High 以及低电平 I2S_CPOL_Low.3)解析 WAV 文件,获取音频旌旗灯号采样率和位数并设置 I2S 时钟分频器这里,要先解析 WAV 文件,取得音频旌旗灯号的采样率(fs)和位数(16 位或 32 位),依据这两个参数,来设置 I2S 的时钟分频,这里我们用前面介绍的查表法来设置即可.这是我们单独写了一个设置频率的函数为 I2S2_SampleRate_Set.4)设置 DMA I2S 播放音频的时刻,一般都是经由过程 DMA 来传输数据的,所以必须设置装备摆设 DMA,本章我们用 I2S2,其 TX是运用的 DMA1 数据流 4 的通道 0 来传输的.并且STM32F4 的 DMA 具有双缓冲机制,如许可以进步效力,大大便利了我们的数据传输,本章将 DMA1 数据流 4 设置为:双缓冲轮回模式,外设和存储器都是 16 位宽,并开启 DMA 传输完成中止(便利填充数据).5)编写 DMA 传输完成中止办事函数为了便利填充音频数据,我们运用 DMA 传输完成中止,每当一个缓冲数据发送完后,硬件主动切换为下一个缓冲,同时进入中止办事函数,填充数据到发送完的这个缓冲.6)开启 DMA 传输,填充数据最后,我们就只须要开启 DMA 传输,然后实时填充 WAV 数据到 DMA 的两个缓存区即可.此时,就可以在 WM8978 的耳机和喇叭通道听到所播放音乐了.操纵办法为: DMA_Cmd(DMA1_Stream4,ENABLE);//开启 DMA TX 传输,开端播放.3.4症结代码I2s.c代码:#include "i2s.h"#include "usart.h"void I2S2_Init(u16 I2S_Standard,u16 I2S_Mode,u16 I2S_Clock_Polarity,u16 I2S_DataFormat){I2S_InitTypeDef I2S_InitStructure;RCC_APB1PeriphClockCmd(RCC_APB1Periph_SPI2, ENABLE);//使能SPI2时钟RCC_APB1PeriphResetCmd(RCC_APB1Periph_SPI2,ENABLE); //复位SPI2RCC_APB1PeriphResetCmd(RCC_APB1Periph_SPI2,DISABLE);//停滞复位I2S_InitStructure.I2S_Mode=I2S_Mode;//IIS模式I2S_InitStructure.I2S_Standard=I2S_Standard;//IIS尺度I2S_InitStructure.I2S_DataFormat=I2S_DataFormat;//IIS数据长度I2S_InitStructure.I2S_MCLKOutput=I2S_MCLKOutput_Disable;//主时钟输出制止I2S_InitStructure.I2S_AudioFreq=I2S_AudioFreq_Default;//IIS频率设置I2S_InitStructure.I2S_CPOL=I2S_Clock_Polarity;//余暇状况时钟电平I2S_Init(SPI2,&I2S_InitStructure);//初始化IISSPI_I2S_DMACmd(SPI2,SPI_I2S_DMAReq_Tx,ENABLE);//SPI2 TX DMA请求使能.I2S_Cmd(SPI2,ENABLE);//SPI2 I2S EN使能.}//采样率盘算公式:Fs=I2SxCLK/[256*(2*I2SDIV+ODD)]//I2SxCLK=(HSE/pllm)*PLLI2SN/PLLI2SR//一般HSE=8Mhz//pllm:在Sys_Clock_Set设置的时刻肯定,一般是8//PLLI2SN:一般是192~432//PLLI2SR:2~7//I2SDIV:2~255//ODD:0/1//I2S分频系数表@pllm=8,HSE=8Mhz,即vco输入频率为1Mhz //表格局:采样率/10,PLLI2SN,PLLI2SR,I2SDIV,ODDconst u16 I2S_PSC_TBL[][5]={{800 ,256,5,12,1},//8Khz采样率{1102,429,4,19,0},//11.025Khz采样率{1600,213,2,13,0},//16Khz采样率{3200,213,2, 6,1},//32Khz采样率{4800,258,3, 3,1},//48Khz采样率{9600,344,2, 3,1}, //96Khz采样率{17640,361,2,2,0}, //176.4Khz采样率{19200,393,2,2,0}, //192Khz采样率};//设置IIS的采样率(@MCKEN)//samplerate:采样率,单位:Hz//返回值:0,设置成功;1,无法设置.u8 I2S2_SampleRate_Set(u32 samplerate){u8 i=0;u32 tempreg=0;samplerate/=10;//缩小10倍for(i=0;i<(sizeof(I2S_PSC_TBL)/10);i++)//看看改采样率是否可以支撑{if(samplerate==I2S_PSC_TBL[i][0])break;}RCC_PLLI2SCmd(DISABLE);//先封闭PLLI2Sif(i==(sizeof(I2S_PSC_TBL)/10))return 1;//搜遍了也找不到RCC_PLLI2SConfig((u32)I2S_PSC_TBL[i][1],(u32)I2S_PSC_TBL[i][2]);//设置I2SxCLK的频率(x=2) 设置PLLI2SN PLLI2SRRCC->CR|=1<<26;//开启I2S时钟while((RCC->CR&1<<27)==0);//等待I2S时钟开启成功.tempreg=I2S_PSC_TBL[i][3]<<0;//设置I2SDIVtempreg|=I2S_PSC_TBL[i][4]<<8;//设置ODD位tempreg|=1<<9;//使能MCKOE位,输出MCKSPI2->I2SPR=tempreg;//设置I2SPR存放器return 0;}//I2S2 TX DMA设置装备摆设//设置为双缓冲模式,并开启DMA传输完成中止//buf0:M0AR地址.//buf1:M1AR地址.//num:每次传输数据量void I2S2_TX_DMA_Init(u8* buf0,u8 *buf1,u16 num){NVIC_InitTypeDef NVIC_InitStructure;DMA_InitTypeDef DMA_InitStructure;RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_DMA1,ENABLE);//DMA1时钟使能DMA_DeInit(DMA1_Stream4);while (DMA_GetCmdStatus(DMA1_Stream4) != DISABLE){}//等待DMA1_Stream1可设置装备摆设/* 设置装备摆设 DMA Stream */DMA_InitStructure.DMA_Channel = DMA_Channel_0; //通道0 SPI2_TX通道DMA_InitStructure.DMA_PeripheralBaseAddr = (u32)&SPI2->DR;//外设地址为:(u32)&SPI2->DRDMA_InitStructure.DMA_Memory0BaseAddr = (u32)buf0;//DMA 存储器0地址DMA_InitStructure.DMA_DIR = DMA_DIR_MemoryToPeripheral;//存储器到外设模式DMA_InitStructure.DMA_BufferSize = num;//数据传输量DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable;//外设非增量模式DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable;//存储器增量模式DMA_InitStructure.DMA_PeripheralDataSize =DMA_PeripheralDataSize_HalfWord;//外设数据长度:16位DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_HalfWord;//存储器数据长度:16位DMA_InitStructure.DMA_Mode = DMA_Mode_Circular;// 运用轮回模式DMA_InitStructure.DMA_Priority = DMA_Priority_High;//高优先级DMA_InitStructure.DMA_FIFOMode = DMA_FIFOMode_Disable; //不运用FIFO模式DMA_InitStructure.DMA_FIFOThreshold = DMA_FIFOThreshold_1QuarterFull;DMA_InitStructure.DMA_MemoryBurst = DMA_MemoryBurst_Single;//外设突发单次传输DMA_InitStructure.DMA_PeripheralBurst = DMA_PeripheralBurst_Single;//存储器突发单次传输DMA_Init(DMA1_Stream4, &DMA_InitStructure);//初始化DMA StreamDMA_DoubleBufferModeConfig(DMA1_Stream4,(u32)buf1,DMA_Memory_0);//双缓冲模式设置装备摆设DMA_DoubleBufferModeCmd(DMA1_Stream4,ENABLE);//双缓冲模式开启DMA_ITConfig(DMA1_Stream4,DMA_IT_TC,ENABLE);//开启传输完成中止NVIC_InitStructure.NVIC_IRQChannel = DMA1_Stream4_IRQn;NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x00;//抢占优先级0NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x00;//子优先级0NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;//使能外部中止通道NVIC_Init(&NVIC_InitStructure);//设置装备摆设}//I2S DMA回调函数指针void (*i2s_tx_callback)(void);//TX回调函数//DMA1_Stream4中止办事函数void DMA1_Stream4_IRQHandler(void){if(DMA_GetITStatus(DMA1_Stream4,DMA_IT_TCIF4)==SET)////DMA1_Stream4,传输完成标记{DMA_ClearITPendingBit(DMA1_Stream4,DMA_IT_TCIF4);i2s_tx_callback();//履行回调函数,读取数据等操纵在这里面处理}}//I2S开端播放void I2S_Play_Start(void){DMA_Cmd(DMA1_Stream4,ENABLE);//开启DMA TX传输,开端播放}//封闭I2S播放void I2S_Play_Stop(void){DMA_Cmd(DMA1_Stream4,DISABLE);//封闭DMA,停滞播放}wm8978代码:#include "wm8978.h"#include "myiic.h"#include "delay.h"static u16 WM8978_REGVAL_TBL[58]={0X0000,0X0000,0X0000,0X0000,0X0050,0X0000,0X0140,0X0000, 0X0000,0X0000,0X0000,0X00FF,0X00FF,0X0000,0X0100,0X00FF, 0X00FF,0X0000,0X012C,0X002C,0X002C,0X002C,0X002C,0X0000, 0X0032,0X0000,0X0000,0X0000,0X0000,0X0000,0X0000,0X0000, 0X0038,0X000B,0X0032,0X0000,0X0008,0X000C,0X0093,0X00E9, 0X0000,0X0000,0X0000,0X0000,0X0003,0X0010,0X0010,0X0100, 0X0100,0X0002,0X0001,0X0001,0X0039,0X0039,0X0039,0X0039, 0X0001,0X0001};//WM8978初始化//返回值:0,初始化正常// 其他,错误代码u8 WM8978_Init(void){u8 res;GPIO_InitTypeDef GPIO_InitStructure;RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB|RCC_AHB1Periph_GPIOC, ENABLE);//使能外设GPIOB,GPIOC时//PB12/13 复用功效输出GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12 | GPIO_Pin_13;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;//复用功效GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;//推挽GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;//100MHzGPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;//上拉GPIO_Init(GPIOB, &GPIO_InitStructure);//初始化//PC2/PC3/PC6复用功效输出GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2 | GPIO_Pin_3|GPIO_Pin_6;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;//复用功效GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;//推挽GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;//100MHzGPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;//上拉GPIO_Init(GPIOC, &GPIO_InitStructure);//初始化GPIO_PinAFConfig(GPIOB,GPIO_PinSource12,GPIO_AF_SPI2); //PB12,AF5 I2S_LRCKGPIO_PinAFConfig(GPIOB,GPIO_PinSource13,GPIO_AF_SPI2);//PB13,AF5 I2S_SCLKGPIO_PinAFConfig(GPIOC,GPIO_PinSource3,GPIO_AF_SPI2);//PC3 ,AF5I2S_DACDATAGPIO_PinAFConfig(GPIOC,GPIO_PinSource6,GPIO_AF_SPI2);//PC6 ,AF5 I2S_MCKGPIO_PinAFConfig(GPIOC,GPIO_PinSource2,GPIO_AF6_SPI2);//PC2 ,AF6I2S_ADCDATA I2S2ext_SD是AF6!!!IIC_Init();//初始化IIC接口res=WM8978_Write_Reg(0,0);//软复位WM8978if(res)return 1;//发送指令掉败,WM8978平常//以下为通用设置WM8978_Write_Reg(1,0X1B);//R1,MICEN设置为1(MIC使能),BIASEN设置为1(模仿器工作),VMIDSEL[1:0]设置为:11(5K)WM8978_Write_Reg(2,0X1B0);//R2,ROUT1,LOUT1输出使能(耳机可以工作),BOOSTENR,BOOSTENL使能WM8978_Write_Reg(3,0X6C);//R3,LOUT2,ROUT2输出使能(喇叭工作),RMIX,LMIX使能WM8978_Write_Reg(6,0);//R6,MCLK由外部供给WM8978_Write_Reg(43,1<<4);//R43,INVROUT2反向,驱动喇叭WM8978_Write_Reg(47,1<<8);//R47设置,PGABOOSTL,左通道MIC获得20倍增益WM8978_Write_Reg(48,1<<8);//R48设置,PGABOOSTR,右通道MIC获得20倍增益WM8978_Write_Reg(49,1<<1);//R49,TSDEN,开启过热呵护WM8978_Write_Reg(10,1<<3);//R10,SOFTMUTE封闭,128x采样,最佳SNRWM8978_Write_Reg(14,1<<3);//R14,ADC 128x采样率return 0;}//WM8978写存放器//reg:存放器地址//val:要写入存放器的值//返回值:0,成功;// 其他,错误代码u8 WM8978_Write_Reg(u8 reg,u16 val){IIC_Start();IIC_Send_Byte((WM8978_ADDR<<1)|0);//发送器件地址+写敕令if(IIC_Wait_Ack())return 1;//等待应答(成功?/掉败?)IIC_Send_Byte((reg<<1)|((val>>8)&0X01));//写存放器地址+数据的最高位if(IIC_Wait_Ack())return 2;//等待应答(成功?/掉败?)IIC_Send_Byte(val&0XFF);//发送数据if(IIC_Wait_Ack())return 3;//等待应答(成功?/掉败?)IIC_Stop();WM8978_REGVAL_TBL[reg]=val;//保管存放器值到当地return 0;}//WM8978读存放器//就是读取当地存放器值缓冲区内的对应值//reg:存放器地址//返回值:存放器值u16 WM8978_Read_Reg(u8 reg){return WM8978_REGVAL_TBL[reg];}//WM8978 DAC/ADC设置装备摆设//adcen:adc使能(1)/封闭(0)//dacen:dac使能(1)/封闭(0)void WM8978_ADDA_Cfg(u8 dacen,u8 adcen){u16 regval;regval=WM8978_Read_Reg(3);//读取R3if(dacen)regval|=3<<0;//R3最低2个位设置为1,开启DACR&DACLelse regval&=~(3<<0);//R3最低2个位清零,封闭DACR&DACL.WM8978_Write_Reg(3,regval);//设置R3regval=WM8978_Read_Reg(2);//读取R2if(adcen)regval|=3<<0;//R2最低2个位设置为1,开启ADCR&ADCLelse regval&=~(3<<0);//R2最低2个位清零,封闭ADCR&ADCL.WM8978_Write_Reg(2,regval);//设置R2}//WM8978 输入通道设置装备摆设//micen:MIC开启(1)/封闭(0)//lineinen:Line In开启(1)/封闭(0)//auxen:aux开启(1)/封闭(0)void WM8978_Input_Cfg(u8 micen,u8 lineinen,u8 auxen){u16 regval;regval=WM8978_Read_Reg(2);//读取R2if(micen)regval|=3<<2;//开启INPPGAENR,INPPGAENL(MIC的PGA放大)else regval&=~(3<<2);//封闭INPPGAENR,INPPGAENL.WM8978_Write_Reg(2,regval);//设置R2regval=WM8978_Read_Reg(44);//读取R44if(micen)regval|=3<<4|3<<0;//开启LIN2INPPGA,LIP2INPGA,RIN2INPPGA,RIP2INPGA. else regval&=~(3<<4|3<<0);//封闭LIN2INPPGA,LIP2INPGA,RIN2INPPGA,RIP2INPGA. WM8978_Write_Reg(44,regval);//设置R44if(lineinen)WM8978_LINEIN_Gain(5);//LINE IN 0dB增益else WM8978_LINEIN_Gain(0);//封闭LINE INif(auxen)WM8978_AUX_Gain(7);//AUX 6dB增益else WM8978_AUX_Gain(0);//封闭AUX输入}//WM8978 输出设置装备摆设//dacen:DAC输出(放音)开启(1)/封闭(0)//bpsen:Bypass输出(灌音,包含MIC,LINE IN,AUX等)开启(1)/封闭(0) void WM8978_Output_Cfg(u8 dacen,u8 bpsen){u16 regval=0;if(dacen)regval|=1<<0;//DAC输出使能if(bpsen){regval|=1<<1;//BYPASS使能regval|=5<<2;//0dB增益}WM8978_Write_Reg(50,regval);//R50设置WM8978_Write_Reg(51,regval);//R51设置}//WM8978 MIC增益设置(不包含BOOST的20dB,MIC-->ADC输入部分的增益)void WM8978_MIC_Gain(u8 gain){gain&=0X3F;WM8978_Write_Reg(45,gain);//R45,左通道PGA设置WM8978_Write_Reg(46,gain|1<<8);//R46,右通道PGA设置}//WM8978 L2/R2(也就是Line In)增益设置(L2/R2-->ADC输入部分的增益)//gain:0~7,0暗示通道制止,1~7,对应-12dB~6dB,3dB/Stepvoid WM8978_LINEIN_Gain(u8 gain){u16 regval;gain&=0X07;regval=WM8978_Read_Reg(47);//读取R47regval&=~(7<<4);//消除本来的设置WM8978_Write_Reg(47,regval|gain<<4);//设置R47regval=WM8978_Read_Reg(48);//读取R48regval&=~(7<<4);//消除本来的设置WM8978_Write_Reg(48,regval|gain<<4);//设置R48}//WM8978 AUXR,AUXL(PWM音频部分)增益设置(AUXR/L-->ADC输入部分的增益) //gain:0~7,0暗示通道制止,1~7,对应-12dB~6dB,3dB/Stepvoid WM8978_AUX_Gain(u8 gain){u16 regval;gain&=0X07;regval=WM8978_Read_Reg(47);//读取R47regval&=~(7<<0);//消除本来的设置WM8978_Write_Reg(47,regval|gain<<0);//设置R47regval=WM8978_Read_Reg(48);//读取R48regval&=~(7<<0);//消除本来的设置WM8978_Write_Reg(48,regval|gain<<0);//设置R48}//设置I2S工作模式//fmt:0,LSB(右对齐);1,MSB(左对齐);2,飞利浦尺度I2S;3,PCM/DSP;//len:0,16位;1,20位;2,24位;3,32位;void WM8978_I2S_Cfg(u8 fmt,u8 len){fmt&=0X03;len&=0X03;//限制规模WM8978_Write_Reg(4,(fmt<<3)|(len<<5));//R4,WM8978工作模式设置}//设置耳机阁下声道音量//voll:左声道音量(0~63)//volr:右声道音量(0~63)void WM8978_HPvol_Set(u8 voll,u8 volr){voll&=0X3F;volr&=0X3F;//限制规模if(voll==0)voll|=1<<6;//音量为0时,直接muteif(volr==0)volr|=1<<6;//音量为0时,直接muteWM8978_Write_Reg(52,voll);//R52,耳机左声道音量设置WM8978_Write_Reg(53,volr|(1<<8));//R53,耳机右声道音量设置,同步更新(HPVU=1) }//设置喇叭音量//voll:左声道音量(0~63)void WM8978_SPKvol_Set(u8 volx){volx&=0X3F;//限制规模if(volx==0)volx|=1<<6;//音量为0时,直接muteWM8978_Write_Reg(54,volx);//R54,喇叭左声道音量设置WM8978_Write_Reg(55,volx|(1<<8));//R55,喇叭右声道音量设置,同步更新(SPKVU=1) }//设置3D围绕声//depth:0~15(3D强度,0最弱,15最强)void WM8978_3D_Set(u8 depth){depth&=0XF;//限制规模WM8978_Write_Reg(41,depth);//R41,3D围绕设置}//设置EQ/3D感化偏向//dir:0,在ADC起感化// 1,在DAC起感化(默认)void WM8978_EQ_3D_Dir(u8 dir){u16 regval;regval=WM8978_Read_Reg(0X12);if(dir)regval|=1<<8;else regval&=~(1<<8);WM8978_Write_Reg(18,regval);//R18,EQ1的第9位控制EQ/3D偏向}//设置EQ1//cfreq:截止频率,0~3,分离对应:80/105/135/175Hz//gain:增益,0~24,对应-12~+12dBvoid WM8978_EQ1_Set(u8 cfreq,u8 gain){u16 regval;cfreq&=0X3;//限制规模if(gain>24)gain=24;gain=24-gain;regval=WM8978_Read_Reg(18);regval&=0X100;regval|=cfreq<<5;//设置截止频率regval|=gain;//设置增益WM8978_Write_Reg(18,regval);//R18,EQ1设置}//设置EQ2//cfreq:中间频率,0~3,分离对应:230/300/385/500Hz //gain:增益,0~24,对应-12~+12dBvoid WM8978_EQ2_Set(u8 cfreq,u8 gain){u16 regval=0;cfreq&=0X3;//限制规模if(gain>24)gain=24;gain=24-gain;regval|=cfreq<<5;//设置截止频率regval|=gain;//设置增益WM8978_Write_Reg(19,regval);//R19,EQ2设置}//设置EQ3//cfreq:中间频率,0~3,分离对应:650/850/1100/1400Hz //gain:增益,0~24,对应-12~+12dBvoid WM8978_EQ3_Set(u8 cfreq,u8 gain){u16 regval=0;cfreq&=0X3;//限制规模if(gain>24)gain=24;gain=24-gain;regval|=cfreq<<5;//设置截止频率regval|=gain;//设置增益WM8978_Write_Reg(20,regval);//R20,EQ3设置}//设置EQ4//cfreq:中间频率,0~3,分离对应:1800/2400/3200/4100Hz //gain:增益,0~24,对应-12~+12dBvoid WM8978_EQ4_Set(u8 cfreq,u8 gain){u16 regval=0;cfreq&=0X3;//限制规模if(gain>24)gain=24;gain=24-gain;regval|=cfreq<<5;//设置截止频率regval|=gain;//设置增益WM8978_Write_Reg(21,regval);//R21,EQ4设置}//设置EQ5//cfreq:中间频率,0~3,分离对应:5300/6900/9000/11700Hz //gain:增益,0~24,对应-12~+12dBvoid WM8978_EQ5_Set(u8 cfreq,u8 gain){u16 regval=0;cfreq&=0X3;//限制规模if(gain>24)gain=24;gain=24-gain;regval|=cfreq<<5;//设置截止频率regval|=gain;//设置增益WM8978_Write_Reg(22,regval);//R22,EQ5设置}#include "sys.h"#include "delay.h"#include "usart.h"#include "led.h"#include "lcd.h"#include "key.h"#include "usmart.h"#include "malloc.h"#include "w25qxx.h"#include "sdio_sdcard.h"#include "ff.h"#include "exfuns.h"#include "fontupd.h"#include "text.h"#include "wm8978.h"#include "audioplay.h"//ALIENTEK 摸索者STM32F407开辟板试验43//音乐播放器试验 -库函数版本//广州市星翼电子科技有限公司//作者:正点原子 @ALIENTEKint main(void){delay_init(168);NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置体系中止优先级分组2 //初始化延时函数uart_init(115200);//初始化串口波特率为115200LED_Init();//初始化LEDusmart_dev.init(84);//初始化USMARTLCD_Init();//LCD初始化KEY_Init();//按键初始化W25QXX_Init();//初始化W25Q128WM8978_Init();//初始化WM8978WM8978_HPvol_Set(40,40);//耳机音量设置WM8978_SPKvol_Set(60);//喇叭音量设置my_mem_init(SRAMIN);//初始化内部内存池my_mem_init(SRAMCCM);//初始化CCM内存池exfuns_init();//为fatfs相干变量申请内存f_mount(fs[0],"0:",1); //挂载SD卡POINT_COLOR=BLACK;while(font_init()) //检讨字库{LCD_ShowString(30,50,200,16,16,"Font Error!");delay_ms(200);LCD_Fill(30,50,240,66,WHITE);//消除显示delay_ms(200);}POINT_COLOR=BLACK;Show_Str(60,50,200,16,"Explorer STM32F4开辟板",16,0);。
基于android音乐播放器的毕业设计ppt

布局方式 引用的资源等 Android系统将插件ADT集成到了Eclipse工具上,因此,一个
•
super(context, DATABASE_NAME, null, VERSION);
•
}
•
•
public void onCreate(SQLiteDatabase db) {
•
try {
•
•
} catch (Exception e) {
•
•
}
}
•
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
库类为DataBase extends SQLiteOpenHelper(继承关系
)。
3.2.1 创建数据库
•
public class DataBase extends SQLiteOpenHelper {
•
/* 构造方法,创建数据库和表 */
•
public DataBase(Context context) {
2.1 功能需求(用例图分析)
• 2.1 功能需求(用例图分析) • 根据项目的目标,我们可获得项目系统的基本需求,以
下从不同角度来描述系统的需求,并且使用用例图来描述 ,系统的功能需求,我们分成四部分来概括,即 • 播放器的基本控制需要,播放列表管理需求,播放器友好 性需求和播放器扩展卡需求。以下分别描述: