综合实验 基于NiosII的乐曲演奏设计
单 位: 班 级:
组 员: 指导老师:
首 都 师 范 大 学2012年5月
1
目录
一.设计概述................................................................................................ 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
2
一.设计概述
本设计基于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首)的播放。
实现如下功能: 1. 歌曲播放 2. 暂停功能
3. 多首歌曲的切换(6首) 其他扩展要求:在液晶屏上显示歌曲的名称,以及上下切换字符(before,after)
三.设计方案(总体设计原理、软件设计、硬件设计)
3.1总体设计原理
实验箱的蜂鸣器是交流蜂鸣器,在BZSP输入一定频率的脉冲时,蜂鸣器蜂鸣,改变输入频率可以改变蜂鸣器的响声。因此可以利用一个PWM来控制BZSP,通过改变PWM的频率来得到不同的声响,以此来播放音乐。
PWM设计说明
3
PWM输出一个占空比可调的方波。当一个周期11个时钟,高电平输出7个时钟时的PWM输出波形如下图所示。
图1 PWM输出波形图
表一 内部寄存器: 寄存器名 地址偏移量 访问属性 clock_divide duty_cycle enable 保留 00 01 10 11 读/写 读/写 读/写 - 描 述 用来设定PWM输出周期的时钟数 用来设定一个周期内PWM输出低电平的时钟个数 使能和关闭PWM输出,为1时使能PWM输出 3.2 软件设计流程图
Stop=1 是 否 暂停 否 Play=1 是 播放歌曲 图2 程序流程框图
首先,判断暂停键是否按下,如果没有,则播放歌曲,如果按下来了暂停键,就执行暂停功能。暂停后判断播放键有没有按下,如果按下了播放键,则在断点的地方接着播放歌曲,
如果没有,则一直暂停到播放按键按下。
4
主程序代码:
6首歌曲播放,暂停,及切换上一首、切换下一首同时显示歌名和play、stop、next、before:
延时程序,延时1ms
5