SOPC乐曲演奏大作业.docx

上传人:b****5 文档编号:7962866 上传时间:2023-01-27 格式:DOCX 页数:42 大小:327.86KB
下载 相关 举报
SOPC乐曲演奏大作业.docx_第1页
第1页 / 共42页
SOPC乐曲演奏大作业.docx_第2页
第2页 / 共42页
SOPC乐曲演奏大作业.docx_第3页
第3页 / 共42页
SOPC乐曲演奏大作业.docx_第4页
第4页 / 共42页
SOPC乐曲演奏大作业.docx_第5页
第5页 / 共42页
点击查看更多>>
下载资源
资源描述

SOPC乐曲演奏大作业.docx

《SOPC乐曲演奏大作业.docx》由会员分享,可在线阅读,更多相关《SOPC乐曲演奏大作业.docx(42页珍藏版)》请在冰豆网上搜索。

SOPC乐曲演奏大作业.docx

SOPC乐曲演奏大作业

综合实验基于NiosII的乐曲演奏设计

单位:

班级:

组员:

指导老师:

首都师范大学

2012年5月

一.设计概述3

二.设计要求3

三.设计方案(总体设计原理、软件设计、硬件设计)3

3.1总体设计原理3

3.2软件设计流程图4

3.3硬件设计8

四.实验环境9

五.软件实验步骤9

六.头文件11

6.1music.h11

6.2LCD.h19

七.实验结果及分析23

八.总结及遇到问题24

九.思考题:

24

一.设计概述

本设计基于SOPCbuilder和NiosII8.0的乐曲演奏,使用蜂鸣器进行播放歌曲,本设计编写多首歌曲可以循环播放,并在液晶屏上显示歌曲名称和切换名称。

实验前准备:

1、该实验需要使用七个模块组中的第七个功能单元,所以三个拨码开关处于“处于“110”时,即MODEL_SEL2和MODEL_SEL3拨下处于“OFF”状态,MODEL_SEL1拨下处于“ON”时,选择该模块。

2、拨码开关MODEL_SEL5-8全置于“ON”状态,即MODEL_SEL5-8拨下处于“ON”状态时通过USBBLASTER接口下载。

当全部拨下处于“OFF”时可使用开发平台上LAB_JTAG_PS_AS接口下载或者核心开发板上JTAG接口下载。

这里用户可根据自己所用的下载线来选择适当的下载方式和相应的MODEL_SEL5-8的状态。

二.设计要求

通过使用PWM对交流蜂鸣器进行控制,实现多首乐曲(6首)的播放。

实现如下功能:

1.歌曲播放

2.暂停功能

3.多首歌曲的切换(6首)

其他扩展要求:

在液晶屏上显示歌曲的名称,以及上下切换字符(before,after)

三.设计方案(总体设计原理、软件设计、硬件设计)

3.1总体设计原理

实验箱的蜂鸣器是交流蜂鸣器,在BZSP输入一定频率的脉冲时,蜂鸣器蜂鸣,改变输入频率可以改变蜂鸣器的响声。

因此可以利用一个PWM来控制BZSP,通过改变PWM的频率来得到不同的声响,以此来播放音乐。

PWM设计说明

PWM输出一个占空比可调的方波。

当一个周期11个时钟,高电平输出7个时钟时的PWM输出波形如下图所示。

图1PWM输出波形图

表一内部寄存器:

寄存器名

地址偏移量

访问属性

描述

clock_divide

00

读/写

用来设定PWM输出周期的时钟数

duty_cycle

01

读/写

用来设定一个周期内PWM输出低电平的时钟个数

enable

10

读/写

使能和关闭PWM输出,为1时使能PWM输出

保留

11

3.2软件设计流程图

图2程序流程框图

首先,判断暂停键是否按下,如果没有,则播放歌曲,如果按下来了暂停键,就执行暂停功能。

暂停后判断播放键有没有按下,如果按下了播放键,则在断点的地方接着播放歌曲,

如果没有,则一直暂停到播放按键按下。

主程序代码:

6首歌曲播放,暂停,及切换上一首、切换下一首同时显示歌名和play、stop、next、before:

上下首歌切换:

图3程序

3.3硬件设计

图4硬件图

四.实验环境

硬件:

PC机

GX-SOC/SOPC-DEV-LABPLATFORM创新开发实验平台

GX-SOPC-EP2C35-M672核心板

软件:

QuartusII8.0

NiosII8.0

五.软件实验步骤

1、.把altera_avalon_pwm(IP核)拷贝到自己的工程文件夹目录下,

2.在主菜单打开Tools->SOPCBuiler

图5生成PWM核

3.重新命名为bzsp,点击鼠标右键,进行自动分配Addressess和IRQ,点击Generate

图5对PWM核重命名

4.生成成功以后回到QuartusII界面软件中必须替换更新:

在.bdf鼠标右键单击空白处,单击UpdateSymbolorBlock…,即可。

5.在NIOSIIIDE软件环境中点击New->NiosIIC/C++Application,建立一个工程

6.在SOPCBuilderSystemPTFFile选择NIOS2.ptf,C/C++的应用工程名Name重命名,点击Next

7.选中Createanewsystemlibrarynamed,点击Finish.

8.建立music.h文件和LCD.h头文件

9.编译工程

10.build成功后下载硬件

11.运行RUN

六.头文件

6.1music.h

#ifndef_MUSIC_H

#define_MUSIC_H

#include"system.h"

//rhythm:

quarternoteasameter//持续时间的长短

#defineRHYTHM36

#define_1RHYTHM*4//note

#define_1dRHYTHM*6//dottednote

#define_2RHYTHM*2//halfnote

#define_2dRHYTHM*3//dottedhalfnote

#define_4RHYTHM*1//quarternote

#define_4dRHYTHM*3/2//dottedquarternote

#define_8RHYTHM*1/2//eighthnote

#define_8dRHYTHM*3/4//dottedeighthnote

#define_16RHYTHM*1/4//sixteenthnote

#define_16dRHYTHM*3/8//dottedsixteenthnote

#define_32RHYTHM*1/8//thirty-secondnote

//低音

#define_1DO(ALT_CPU_FREQ/131)

#define_1DOr(ALT_CPU_FREQ/139)

#define_1RE(ALT_CPU_FREQ/147)

#define_1REr(ALT_CPU_FREQ/155)

#define_1MI(ALT_CPU_FREQ/165)

#define_1FA(ALT_CPU_FREQ/175)

#define_1FAr(ALT_CPU_FREQ/185)

#define_1SOL(ALT_CPU_FREQ/196)

#define_1SOLr(ALT_CPU_FREQ/207)

#define_1LA(ALT_CPU_FREQ/220)

#define_1LAr(ALT_CPU_FREQ/233)

#define_1SI(ALT_CPU_FREQ/247)

//中音

#define_DO(ALT_CPU_FREQ/262)

#define_DOr(ALT_CPU_FREQ/277)

#define_RE(ALT_CPU_FREQ/294)

#define_REr(ALT_CPU_FREQ/311)

#define_MI(ALT_CPU_FREQ/330)

#define_FA(ALT_CPU_FREQ/349)

#define_FAr(ALT_CPU_FREQ/370)

#define_SOL(ALT_CPU_FREQ/392)

#define_SOLr(ALT_CPU_FREQ/416)

#define_LA(ALT_CPU_FREQ/440)

#define_LAr(ALT_CPU_FREQ/466)

#define_SI(ALT_CPU_FREQ/492)

//高音

#define_DO1(ALT_CPU_FREQ/523)

#define_DO1r(ALT_CPU_FREQ/554)

#define_RE1(ALT_CPU_FREQ/579)

#define_RE1r(ALT_CPU_FREQ/740)

#define_MI1(ALT_CPU_FREQ/651)

#define_FA1(ALT_CPU_FREQ/695)

#define_FA1r(ALT_CPU_FREQ/740)

#define_SOL1(ALT_CPU_FREQ/784)

#define_SOL1r(ALT_CPU_FREQ/830)

#define_LA1(ALT_CPU_FREQ/880)

#define_LAR1r(ALT_CPU_FREQ/932)

#define_SI1(ALT_CPU_FREQ/983)

#defineSONG_SIZE1200

#defineSONG_SIZE2200

#defineSONG_SIZE3200

#defineSONG_SIZE4200

#defineSONG_SIZE5200

#defineSONG_SIZE6200

#defineMUTE(TONE)(TONE)>>2//低音为25%占空比

#defineLOUD(TONE)(TONE)>>1//高音为50%占空比

//1=G3/4

//乐曲为一个多行3列的2维数组

//第1列为音调,第2列为节拍,第3列音高(高音、低音)

intburro[SONG_SIZE1][3]={

{_DO,_2,MUTE(_DO)},//1

{_MI,_32,0},

{_DO,_2,MUTE(_DO)},//1

{_MI,_32,0},

{_DO,_2,MUTE(_DO)},//1

{_MI,_32,0},

{_MI,_2,MUTE(_MI)},//3

{_MI,_32,0},

{_SOL,_2,LOUD(_SOL)},//5

{_MI,_32,0},

{_SOL,_2,LOUD(_SOL)},//5

{_MI,_32,0},

{_SOL,_2,LOUD(_SOL)},//5

{_MI,_32,0},

{_SOL,_2,LOUD(_SOL)},//5

{_MI,_32,0},

{_LA,_2,MUTE(_LA)},//6

{_MI,_32,0},

{_LA,_2,MUTE(_LA)},//6

{_MI,_32,0},

{_LA,_2,MUTE(_LA)},//6

{_MI,_32,0},

{_DO1,_2,LOUD(_DO1)},//1

{_MI,_32,0},

{_SOL,_1,LOUD(_SOL)},//5

{_MI,_32,0},

{_FA,_2,MUTE(_FA)},//4

{_MI,_32,0},

{_FA,_2,MUTE(_FA)},//4

{_MI,_32,0},

{_LA,_2,MUTE(_LA)},//6

{_MI,_32,0},

{_LA,_2,MUTE(_LA)},//6

{_MI,_32,0},

{_MI,_2,MUTE(_MI)},//3

{_MI,_32,0},

{_MI,_2,MUTE(_MI)},//3

{_MI,_32,0},

{_MI,_2,MUTE(_MI)},//3

{_MI,_32,0},

{_MI,_2,MUTE(_MI)},//3

{_MI,_32,0},

{_RE,_2,MUTE(_RE)},//2

{_MI,_32,0},

{_RE,_2,MUTE(_RE)},//2

{_MI,_32,0},

{_RE,_2,MUTE(_RE)},//2

{_MI,_32,0},

{_RE,_2,MUTE(_RE)},//2

{_MI,_32,0},

{_SOL,_1,MUTE(_SOL)},//5

{_MI,_32,0},

{_SOL,_4,MUTE(_SOL)},//5

{_DO,_2,MUTE(_DO)},//1

{_MI,_32,0},

{_DO,_2,MUTE(_DO)},//1

{_MI,_32,0},

{_DO,_2,MUTE(_DO)},//1

{_MI,_32,0},

{_MI,_2,MUTE(_MI)},//3

{_MI,_32,0},

{_SOL,_2,MUTE(_SOL)},//5

{_MI,_32,0},

{_SOL,_2,MUTE(_SOL)},//5

{_MI,_32,0},

{_SOL,_2,MUTE(_SOL)},//5

{_MI,_32,0},

{_SOL,_2,MUTE(_SOL)},//5

{_MI,_32,0},

{_LA,_2,MUTE(_LA)},//6

{_MI,_32,0},

{_LA,_2,MUTE(_LA)},//6

{_MI,_32,0},

{_LA,_2,MUTE(_LA)},//6

{_MI,_32,0},

{_DO1,_2,MUTE(_DO1)},//1

{_MI,_32,0},

{_SOL,_1,LOUD(_SOL)},//5

{_FA,_2,LOUD(_FA)},//4

{_MI,_32,0},

{_FA,_2,LOUD(_FA)},//4

{_MI,_32,0},

{_FA,_2,LOUD(_FA)},//4

{_MI,_32,0},

{_LA,_2,MUTE(_LA)},//6

{_MI,_32,0},

{_MI,_2,MUTE(_MI)},//3

{_MI,_32,0},

{_MI,_4,MUTE(_MI)},//3

{_MI,_32,0},

{_MI,_4,MUTE(_MI)},//3

{_MI,_32,0},

{_MI,_2,MUTE(_MI)},//3

{_MI,_32,0},

{_MI,_2,MUTE(_MI)},//3

{_MI,_32,0},

{_RE,_2,LOUD(_RE)},//2

{_MI,_32,0},

{_RE,_2,LOUD(_RE)},//2

{_MI,_32,0},

{_RE,_2,LOUD(_RE)},//2

{_MI,_32,0},

{_MI,_2,MUTE(_MI)},//3

{_MI,_32,0},

{_DO,_1,MUTE(_DO)},//1

};

intdachangjin[SONG_SIZE2][3]={

{_LA,_2,LOUD(_LA)},//2

{_SI,_2,MUTE(_SI)},//3

{_SI,_2,MUTE(_SI)},//3

{_SI,_2d,LOUD(_SI)},//3.

{_LA,_4,MUTE(_LA)},//2_

{_SOL,_2,MUTE(_SOL)},//1

{_MI,_2,LOUD(_MI)},//.6

{_SOL,_2,MUTE(_SOL)},//1

{_SOL,_2d,MUTE(_SOL)},//1

{_LA,_16,MUTE(_LA)},//2__

{_SOL,_1d,MUTE(_SOL)},//1--

{_LA,_2,LOUD(_LA)},//2

{_SI,_2,MUTE(_SI)},//3

{_SI,_2,MUTE(_SI)},//3

{_SI,_2d,LOUD(_SI)},//3.

{_RE1,_4,MUTE(_RE1)},//5

{_SI,_2,MUTE(_SI)},//3

{_SI,_2,MUTE(_SI)},//3

{_LA,_2,MUTE(_LA)},//2

{_SI,_2,MUTE(_SI)},//3

{_SI,_4d,MUTE(_SI)},//3--

{_RE1,_2,LOUD(_RE1)},//5

{_MI1,_2,MUTE(_MI1)},//6

{_MI1,_2,MUTE(_MI1)},//6

{_MI1,_2d,LOUD(_MI1)},//6

{_RE1,_4,MUTE(_RE1)},//5

{_SI,_2,MUTE(_SI)},//3

{_SI,_2,LOUD(_SI)},//3

{_RE1,_2,MUTE(_RE1)},//5

{_MI1,_4,MUTE(_MI1)},//6

{_RE1,_16,MUTE(_RE1)},//5

{_MI1,_16,MUTE(_MI1)},//6

{_RE1,_1d,MUTE(_RE1)},//5

{_LA,_2,LOUD(_LA)},//2

{_SI,_2,MUTE(_SI)},//3

{_SI,_2,MUTE(_SI)},//3

{_LA,_2d,LOUD(_LA)},//3.

{_SI,_4,MUTE(_SI)},//2

{_SI,_2,MUTE(_SI)},//3

{_LA,_2,LOUD(_LA)},//2

{_SI,_2,MUTE(_SI)},//3

{_MI,_2,LOUD(_MI)},//.6

{_SOL,_8,MUTE(_SOL)},//1

{_MI,_1d,MUTE(_MI)},//.6

{_MI,_2,0},//stop

{_LA,_2,LOUD(_LA)},//2

{_SI,_2,MUTE(_SI)},//3

{_SI,_2,MUTE(_SI)},//3

{_SI,_2d,LOUD(_SI)},//3.

{_LA,_4,MUTE(_LA)},//2_

{_SOL,_2,MUTE(_SOL)},//1

{_MI,_2,LOUD(_MI)},//.6

{_SOL,_2,MUTE(_SOL)},//1

{_SOL,_8d,MUTE(_SOL)},//1

{_LA,_16,MUTE(_LA)},//2__

{_SOL,_1d,MUTE(_SOL)},//1--

{_LA,_2,LOUD(_LA)},//2

{_SI,_2,MUTE(_SI)},//3

{_SI,_2,MUTE(_SI)},//3

{_SI,_2d,LOUD(_SI)},//3.

{_RE1,_4,MUTE(_RE1)},//5

{_SI,_2,MUTE(_SI)},//3

{_SI,_2,MUTE(_SI)},//3

{_LA,_2,MUTE(_LA)},//2

{_SI,_2,MUTE(_SI)},//3

{_SI,_1d,MUTE(_SI)},//3--

{_RE1,_2,LOUD(_RE1)},//5

{_MI1,_2,MUTE(_MI1)},//6

{_MI1,_2,MUTE(_MI1)},//6

{_MI1,_2d,LOUD(_MI1)},//6

{_RE1,_4,MUTE(_RE1)},//5

{_SI,_2,MUTE(_SI)},//3

{_SI,_2,LOUD(_SI)},//3

{_RE1,_2,MUTE(_RE1)},//5

{_MI1,_2,MUTE(_MI1)},//6

{_RE1,_1d,MUTE(_RE1)},//5

{_LA,_2,LOUD(_LA)},//2

{_SI,_2,MUTE(_SI)},//3

{_SI,_2,MUTE(_SI)},//3

{_LA,_2d,LOUD(_LA)},//3.

{_SI,_4,MUTE(_SI)},//2

{_SI,_2,MUTE(_SI)},//3

{_LA,_2,LOUD(_LA)},//2

{_SI,_2,MUTE(_SI)},//3

{_MI,_2,LOUD(_MI)},//.6

{_SOL,_8,MUTE(_SOL)},//1

{_MI,_1d,MUTE(_MI)},//.6--

{_LA,_8,LOUD(_LA)},//2

{_LA,_8,LOUD(_LA)},//2

{_LA,_8d,LOUD(_LA)},//2

{_SOL,_4,MUTE(_SOL)},//1

{_MI,_2,MUTE(_MI)},//.6

{_LA,_8,LOUD(_LA)},//2

{_LA,_8,LOUD(_LA)},//2

{_LA,_8d,LOUD(_LA)},//2

{_SOL,_4,MUTE(_SOL)},//1

{_MI,_2,MUTE(_MI)},//.6

{_LA,_2,LOUD(_LA)},//2

{_SI,_2,MUTE(_SI)},//3

{_SOL,_2,MUTE(_SOL)},//1

{_LA,_2d,LOUD(_LA)},//2

{_SI,_4,MUTE(_SI)},//3

{_RE1,_2,MUTE(_RE1)},//5

{_MI1,_8,LOUD(_MI1)},//6

{_MI1,_8,LOUD(_MI1)},//6

{_MI1,_8d,LOUD(_MI1)},//6

{_RE1,_4,MUTE(_RE1)},//5

{_SI,_2,MUTE(_SI)},//3

{_LA,_8,LOUD(_LA)},//2

{_LA,_8,LOUD(_LA)},//2

{_LA,_8d,LOUD(_LA)},//2

{_SOL,_4,MUTE(_SOL)},//1

{_MI,_2,MUTE(_MI)},//.6

{_MI,_2,LOUD(_MI)},//.6

{_RE,_2,MUTE(_RE)},//.5

{_MI,_2,MUTE(_MI)},//.6

{_MI,_1d,MUTE(_MI)},//.6

{_MI,_2,0},//stop

{_MI,_2,0},//stop

};

/*{_1SOL,_4d,MUTE(_1SOL)},//.1

{_1LA,_4d,MUTE(_1LA)},//.2

{_1SI,_4d,MUTE(_1SI)},//.3

{_DO,_4d,MUTE(_DO)},//.4

{_RE,_4d,MUTE(_RE)},//.5

{_MI,_4d,MUTE(_MI)},//.6

{_FA,_4d,MUTE(_FA)},//.7

{_SOL,_4d,MUT

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 农林牧渔 > 林学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1