毕业论文-基于stc89c52单片机的智能音乐演奏器设计内容摘要:

息学院本科毕业设计(论文) 9 效果而且很灵活的解决方 法。 单片机管脚及功能说明 图 7 STC89C52 引脚图 单片机如 图 所示。 单片机引脚功能说明如下。 VCC: 5V供电电压。 GND:接地。 P0 口: 双向 IO 口,内部无上拉,可以做数据和地址总线。 数据总线时,需要上拉电阻。 P1 口: P1 口 与 P0 口的主要区别是 具有内部上拉电阻。 主控芯片引脚复用功能的简单介绍: T2(外部计数输入 端口,计数时使用 ), 主频率 时钟 分频 输出 T2EX( 功能控制器的 控制 端口,通过不同的配置达到不同的输入检测 ) 智能音乐演奏器设计 10 MOSI(在系统编程用) MISO(在系统编程用) SCK(在系统编程用) P2 口: 功能同 P1 口。 P3 口: P3 口 的驱动能力和其他口一样。 不同之处是 P3 口也能成为 89C52的特殊功能 ( 复用 第二功能) 来 使用,如下表所示。 P3 口含有单片机的特殊功能,如烧录及中断。 描述如表 1 所示: 表 1 P3口引脚功能表 RST:复位输入。 XTAL1: 振荡时钟 输入端。 XTAL2: 振荡时钟 输 入 端。 单片机最小系统设计 单片机最小的组成单位是由复位电路、电源电路、时钟电路所组成的。 而 时钟信号 是单片机运行的基础。 时钟相当于是整个系统运行的时间准则,只有当时间安排精准,程序才能有条不絮的运 行,才能各司其职。 复位操作使它内部所有程序全部重新开始。 当单片机的复位引脚 检测到 2 个机器周期 ( 1us 左右) 以上的高电平 以后 ,单片机就 会 执行复位操作。 STC89C52 的最小系统设计图如 错误 !未找到引用源。 所示: P3口引脚 P3口第二功能 RXD(串行口输入) TXD(串行口输出) INT0(外部中断 0 输入) INT1(外部中断 1 输入) T0(定时器 /计数器 0) T1(定时器 /计数器 1) WR(写信号输入) RD(读信号输出) 宁波大学信息学院本科毕业设计(论文) 11 图 8 STC89C52 的最小系统设计图 LCD 显示电路设计 相关数据的显示是智能音乐演奏器的一项重要功能,是整个系统的主要组成部分,所以对显示电路的设计,也必须着重考虑。 显示的设计功能是:将主控读取到的歌曲按键等相关数据 经过器处理后直观的显示出来。 LCD1602 操作时序及引脚定义 对 LCD1602 的读写有严格的时序要求。 读时序如图 9 所示,写时序如图 10所示。 图 9 LCD1602 读时序 (引自《 LCD1602 数据手册》) 智能音乐演奏器设计 12 图 10 LCD1602 写时序 (引自《 LCD1602 数据手册》) 引脚号 引脚名 称 引脚功能定义 1 VSS 地引脚( GND) 2 VDD +5V电源引脚( VCC) 3 VO 液晶背光电压( 0~5V),可接电位器调节 4 RS 数据状态控制端端, RS=0 时命令或状态; RS=1 时数据 5 R/W 读写控制,高为读,低为写 6 E 数据读写操作使能端 7~14 DB0DB7 数据线,可以用 8 位连接,也可以只用高四位连接,其目的是为了节约资源 15 A 背光控制正电源 16 K 背光控制地 表 2 LCD1602 引脚定义 LCD1602 的读操作,主要是读取 LCD 的状态,判断 LCD 是否在转换及合成显示状态。 LCD1602 的写操作,主要是对 LCD1602 进行控制操作,包括清除指令,控制指令及相关的数据接收。 LCD1602 的硬件设计 根据上面的分析,我设计出了如图 11 所示 LCD1602 显示电路。 其中 V0 通过 R1 变阻器分压得到电压,通过对该电压的修改可以达到不同对比度的显示效果。 数据口我们选用 P0 外接上拉电阻实现,控制口我们选用 P2 口实现。 宁波大学信息学院本科毕业设计(论文) 13 图 11 LCD1602 显示电路 语音转换模块设 计 语音模块概述 根据以上的方案对比,我们可以知道 NV的确是个有着非常强大的可编程语音芯片。 它的音频输出方式可选为 PWM 和 DAC。 多样的输出方式选择,使它的运用场合也越来越大。 NV芯片内通过串口控制字的输入,用户可以选择高分辨率的 DA 音频输出方式,而且 NV芯片内部滤波功率的放大,致使模块后可以自动驱动 的喇叭响动。 该芯片内部还集成 PSG 可编程语音合成技术,这种效果使得音乐的音质极好,发出的噪声极低。 此芯片设计时就考虑了众多的外围搭配电路,配合其有的极强的可编程能力, NV解码模块不仅能实 现标准的控制方式,亦可根据不同的控制需求,做出各种不同功能的音乐解码器件。 功能特点 用户灵活且多变的 操作模式 供选择 ( 串口数据命令 操作 、并口数据命令操作、按键操作); 20 秒语音长度(在 6KHz 采样率) ; 有 忙状态输出指示供主控查询,并且主控可以通过软件调节音量大小 ; 音质好,性能高,物美价廉; 多样的封装可供选择, 使用 更 方便, 开发 应用 更 灵活; 智能音乐演奏器设计 14 极简的外围电路,配合芯片内部丰富的资源,能够轻松实现用户提出的各种功能要求; 静态 工作 电流: 2uA; 有音频输出时的 Ia 在 20mA~120mA 之间; 语音模块芯片引脚定义与功能 封装引脚 引脚标号 简述 功能描述 1 P01 K1/A0/CS 控制方式 1 选择端 2 GND GND 地 3 EQI OPI 芯片内部的功率放大电路的反馈输入端 4 EQO OPO 内部功放反馈输出 5 VCC VCC 芯片模拟电源 ~ 6 SPKP SPKP DAC 及 PWM 输出 7 SPKN SPKN DAC 及 PWM 输出 8 P06 BUSY 语音播放忙信号 9 P05 K3/A2/DI/RXD 控制方式 2 选择端 10 P04 K2/A1/SCK 控制方式 3 选择端 11 VPP VPP 芯片编程电源 12 VDD VDD 芯片数字电源 ~ 13 P10 A3 按键口 14 P11 D5 按键口 15 RESETB RESETB 芯片复位端 ,低有效 表 3 语音模块引脚及相关功能描述 语音模块触发时序 语音模块可分为:一线制和三线制。 一线串口控制方式,很特殊,它只有一条数据通信线,芯片确定不同的数据位是根据分辨电平占空比。 这一点很特别,数据解调的方法同脉宽调制方法,即通过判断脉冲高低电平的时间不同,来确定是高电平还是低电平。 低电平在后,高电平在前,这种规定是脉冲时间所具有 的。 三条 通信控制线组成了三线串口控制,线程分别是 SS, DI, SCK。 控制的时序仿照标准 SPI 通信格式。 通信的准则是:复位信号线在发码之前先将数据线拉低 1ms~ 5ms 左右,然后再拉高并等待 5ms 以上。 时序图如图 12 所示。 宁波大学信息学院本科毕业设计(论文) 15 通过该三线串口即可以实现对 NV020 芯片的命令控制、语音播放。 D0 位为语音测试口。 根据智能音乐演奏器的设计要求,我们选用三线制对语音模块进行控制。 r a m p u p 3 5 0 u s r a m p d o w n 3 0 u S 2 m SSSS CKS D IB U S YV O IC ER S T1 ~ 5 m S 5m S 图 12 三线串口控制时序图 (引自《语音模块数据手册》) 4 智能音乐演奏器的软 件设计 开发软件简介 系统的软件部分主要是利用 C 语言编程来完成程序的设计,进一步设计带来了便利。 汇编语言和 C 语言组成了单片机开发语言,由于汇编语言的冗长及复杂,所以智能音乐演奏器选用 C 语言为开发语言。 对单片机进行编程, Keil软件当仁不让的是最好的工具,它有利于程序更好的设计实现。 Keil 的 C51 系列软件是该公司独自设计的,面向 51 单片机系列并且可以兼容国产单片机的软件开发系统。 C 和其他编程语言相比较,它的优点还是有很多的,而且该单片机的平台提供大量的、可操作性强的调试工具,有利于集成开发。 应用程序设计 那些设计类软件,如果大脑中没有很清楚的思路和很好的方案,那么设计东西是非常困难的。 程序设计真的很繁琐,很乏味但是它的重要性不言而喻。 为了枯燥乏味的设计工作条理化,就必须要有相应的步骤和方法。 通过系统的分析,智能音乐演奏器设计 16 其设计流程可以简单的分为以下若干种: ( 1)整体分析系统控制要求:什么要被控制,什么要被显示,什么要被读取。 然后在根据处理值得不同,确定算法。 ( 2)然后根据它的算法来画流程:第一步是什么,第二步是什么,再者又是什么。 画框图的优点可以把算法和程序设计的流程方法更加具体化( 3)最后再编写程序:可以通过框图的算法和步骤,选取合适的指令实现功能,然后把它们组成一个有机的整体,就构成了整体程序。 下面给出各个模块的软件设计,最终来达到设计的要求,实现其功能。 主程序的设计 智能音乐演奏器的软件设计构成主要有如下几种:由按键检测及控制发出的主程序、系统 LCD 及解码模块的初始化程序、 1602 的数据显示程序、控制解码程序等。 主程序设计流程 错误 !未找到引用源。 3 所示。 图 13 主程序设计流程图 是 否 是 是 开始 初始化 LCD1602 初始化 NV020 模块 是否有 TF 卡插 入。 初始化文件系统 查找音乐文件 数据送至 NV020 目录循环播放音乐 是否有键按下。 执行相应功能 结束 否 是 宁波大学信息学院本科毕业设计(论文) 17 LCD 显示程序设计 显示程序设计流程图,如 是其他需要调用的程序之一,所以它的设计重要性不言而喻。 是 否 智能音乐演奏器设计 18 图 4 所示。 显示的目的是直观的向用户提供用户想要的信息,并且在设计时,应该充分考虑设计显示的内容,和显示的时间。 因为LCD1602 显示子程序 是其他需要调用的程序之一,所以它的设计重要性不言而喻。 是 否 入口 对 1602 初始化写入显示设置命令 延时一段时间 检查忙标志 BF=7? 设置字符显示位置 延时一段时间 向 1602 中写入数据 LCD 显示内容 返回主程序 宁波大学信息学院本科毕业设计(论文) 19 图 14 显示子程序流程图 显示程序如下所示: static void delayms(unsigned int n) { unsigned int x,y。 for(x=n。 x0。 x) for(y=110。 y0。 y)。 } void lcd_w(unsigned char ) //lcd1602 写命令函数 { rs=0。 //选择指令寄存器 rw=0。 //选择写 P0=。 //把命令字送入 P2 delayms(5)。 en=1。 e。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。