C语言sopc蜂鸣器按键弹奏中音,SOPC乐曲演奏大作业.doc

PAGE 1

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

单 位:

班 级:

组 员:

指导老师:

首 都 师 范 大 学

2012年5月

目录

TOC \o "1-3" \h \u 一.设计概述 3

二.设计要求 3

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

3.1总体设计原理 3

3.2 软件设计流程图 4

3.3硬件设计 8

四.实验环境 9

五.软件实验步骤 9

六. 头文件 11

6.1 music.h 11

6.2 LCD.h 19

七.实验结果及分析 23

八.总结及遇到问题 24

九.思考题: 24

一.设计概述

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

实验前准备:

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

2、拨码开关MODEL_SEL5-8全置于“ON ”状态,即MODEL_SEL5-8拨下处于“ON ”状态时通过USB BLASTER接口下载。当全部拨下处于“OFF”时可使用开发平台上LAB_JTAG_PS_AS 接口下载或者核心开发板上JTAG接口下载。

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

二.设计要求

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

实现如下功能:

歌曲播放

暂停功能

多首歌曲的切换(6首)

其他扩展要求:在液晶屏上显示歌曲的名称,以及上下切换字符(before,after)

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

3.1总体设计原理

实验箱的蜂鸣器是交流蜂鸣器,在BZSP输入一定频率的脉冲时,蜂鸣器蜂鸣,改变输入频率可以改变蜂鸣器的响声。因此可以利用一个PWM来控制BZSP,通过改变PWM的频率来得到不同的声响,以此来播放音乐。

PWM设计说明

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

图1 PWM输出波形图

表一 内部寄存器:

寄存器名

地址偏移量

访问属性

描 述

clock_divide

00

读/写

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

duty_cycle

01

读/写

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

enable

10

读/写

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

保留

11

播放歌曲Stop=1暂停Play=1

播放歌曲

Stop=1

暂停

Play=1

图2 程序流程框图

首先,判断暂停键是否按下,如果没有,则播放歌曲,如果按下来了暂停键,就执行暂停功能。暂停后判断播放键有没有按下,如果按下了播放键,则在断点的地方接着播放歌曲,

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

主程序代码:

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

延时程序,延时1ms

延时程序,延时1ms

如果暂停键没有按下,则播放六首歌

如果暂停键没有按下,则播放六首歌

如果暂停键按下了,显示“

如果暂停键按下了,显示“stop”。如果播放按键没按下,把0写进蜂鸣器,即暂停,如果播放按键按下了,在断点处继续播放歌曲

上下首歌切换:

第三个按键切换上一首第二个按键执行暂停功能第一个按键执行播放功能判断按键函数

第三个按键切换上一首

第二个按键执行暂停功能

第一个按键执行播放功能

判断按键函数

第四个切换下一首

第四个切换下一首

如果选择第一首歌,则LCD清屏,显示第一首歌歌名,同时显示“

如果选择第一首歌,则LCD清屏,显示第一首歌歌名,同时显示“play”。余下5首同理

图3 程序

3.3硬件设计

乐曲演奏需添加的IP核

乐曲演奏需添加的IP核

图4 硬件图

四.实验环境

硬件: PC机

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

GX-SOPC-EP2C35-M672核心板

软件: Quartus II 8.0

Nios II 8.0

五.软件实验步骤

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

2. 在主菜单打开Tools->SOPC Buile

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值