基于SPCE061A的出气宝宝系统设计与实现毕业论文.doc_第1页
基于SPCE061A的出气宝宝系统设计与实现毕业论文.doc_第2页
基于SPCE061A的出气宝宝系统设计与实现毕业论文.doc_第3页
基于SPCE061A的出气宝宝系统设计与实现毕业论文.doc_第4页
基于SPCE061A的出气宝宝系统设计与实现毕业论文.doc_第5页
已阅读5页,还剩71页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

基于SPCE061A的出气宝宝系统设计与实现毕业论文目 录摘要IAbstractII第1章 绪论11.1 课题背景11.2 课题目的与意义21.3 课题研究现状21.4 本文主要内容及结构安排4第2章 硬件设计52.1 硬件器件的选择52.1.1 SPCE061A单片机52.1.2 MMA7260QT三轴加速度传感器82.2 系统电路的连接92.3单片机控制单元的硬件设计102.3.1 输入/输出控制单元设计112.3.2 模拟数字转换设计142.3.4 DAC方式音频输出设计192.4 传感器控制单元设计212.5 本章小结22第3章 软件设计233.1 软件系统的开发设计233.2 音频设计243.2.1 音频处理方案243.2.2 语音自动播放函数设计253.2.3 语音文件压缩设计273.3 I/O接口及A/D转换设计283.3.1 I/O接口设计283.3.2 A/D转换设计283.4 主程序设计303.5 本章小结33结论34参考文献36致谢37附录138附录242附录347附录452附录566第1章 绪论1.1 课题背景随着时代的进步,人们自我认知水平的不断提高,心理问题逐渐引起了人们的广泛关注。多年前,不健康的成长环境、先天的生理缺陷等情况就一直是心理问题的主要成因。而近年来,由于生活、工作、学习的节奏加快,人们往往承受着巨大的压力。心理问题也就被摆到一个更为普遍的层次,任何人都或多或少的承受着心理方面的负担。心理问题往往引起一些不正常的反应。人们会难以集中注意力、容易分神、记忆力减退、选择性思维失调、期待性焦虑、郁郁寡欢、冷漠偏执、自卑多疑、消沉空虚、无端烦恼、遇事暴躁尤其令人担忧的是,具有心理问题的人还会容易狂热和冲动,对外界产生敌对情绪,且常常带有攻击性。近年来社会上由于心理问题造成的悲剧,引起了人们的普遍重视。合理的调节心理、控制情绪,对实现人的全面发展、对改善人际交往关系、对我国构建和谐社会都有着积极的作用。生活中矛盾和事件所引起的心理反应,主要是情绪反应,所以心理调节和控制的最基本点,可以说是调节和控制情绪。其中,情绪的舒缓与疏导显得尤为重要。当人们承受着巨大的精神压力时,可以用合理的方式把这种压力表达释放出来。情绪的释放有多种方式,比如说找人谈话、培养乐观生活态度等。而通过玩具等辅助手段来释放情绪的方法也越来越引起人们的关注。这种方式不仅简单方便、易于操作,还具有很多趣味性。在当今的市场中,情绪调节类的玩具多种多样。但是,其中大多数的设计原理都比较简单。比如说,有的是基于一些常见的物理学现象,有的则纯粹以外观设计取胜。通观整个情绪调节类玩具的市场,其中依靠芯片控制的智能玩具的开发尚属少数。因此,设计情绪调节类的玩具,也便在智能化方向上出现了创新的空间,昭示了很广阔的市场前景。智能化情绪调节类玩具的优点是很突出的。通过微控制器控制的智能玩具可以进行内部数据处理,控制产生不同的效果。若再辅以各类外部传感器模块的特殊功能,智能玩具还可以与用户进行多种方式的互动1。这样一来,智能玩具在改善用户情绪方面,无疑会带来显著的作用。1.2 课题目的与意义本设计拟采用SPCE061A开发板控制加速度传感器实现一个“出气宝宝”系统,在人们发泄情绪打击出气宝宝的时候,根据打击力度发出对应的“哭声”。通过这样的方式,人们以娱乐的方式合理表达了攻击性,发泄了内心的种种压抑情绪,进而实现了心理调节。为了达到使用户发泄情绪的目的,本系统需要检测、读取外部的打击力,并根据该打击力的大小发出对应音量的“哭声”。外力信息的采集与转化需要通过设计加速度传感器模块来实现。我们把SPCE061A开发板作为本次设计的核心部分。SPCE061A开发板的输入输出接口、模数转换以及音频发声等功能都作为系统设计中的重点。通过SPCE061A开发板对传感器输出的电压数据进行读取、转化、分析,便可以控制播放压缩好的“哭声”。本设计最终的目的是一方面使用户合理表达了攻击性,释放了情绪;另一方面通过“哭声”的回应,得到慰藉或娱乐的效果。所谓的“哭声”,通常理解为事先准备好的哭声音频,可以是婴儿哭声、男声、女声。而广义的“哭声”又可以理解为一段音乐或者幽默的语句。这样的设计,无疑更增加了产品的趣味性与娱乐效果,从而更好的实现了调节情绪的目的。基于SPCE061A的“出气宝宝”系统设计,可以看作是一款智能玩具的开发。该系统具有调节心理、缓解情绪的作用,适应了当代心理问题比较突出的社会现实。这样的开发设计无疑拥有开阔的市场和广大的受用人群,会对调节人们的心理健康、改善人们的工作学习氛围、增进生活氛围的和睦、乃至促进社会和谐都有着重要的意义。1.3 课题研究现状基于SPCE061A的智能玩具设计,尤其是调节情绪类玩具的设计,目前在国内外市场上都比较罕见。鉴于本设计的思路比较新颖,同类产品的应用设计较少,我们对课题研究状况的介绍将主要围绕设计的关键部分,即凌阳SPCE061A单片机与加速度传感器的发展应用来展开。随着单片机功能集成化的发展,其应用领域也逐渐由传统的控制扩展为控制处理、数据处理以及数字信号处理(DSP,Digital Signal Processing)等领域。凌阳的16位单片机就是为适应这种发展而设计的。它的CPU内核采用最新推出的Microcontroller and Signal Processor16位微处理器(以下简称nSP)通用核结构。nSP的指令系统提供具有较高运算速度的16位16位乘法运算指令和内积运算指令,为其应用增添了DSP功能,使得nSP系列运用在复杂的数字信号处理方面很便利,内嵌32K字的闪存(FLASH),能够非常容易地、快速地处理复杂的数字信号。其汇编指令近似C语言,具有较高的C语言编程效率。而且它还有I/0口功能丰富、集成度高、体积小、可靠性好、功耗低且性能价格比高等特点。因此,以nSP为核心的SPCE061A微控制器是适用于录音、放音、数字语音识别应用领域产品的一种最经济的选择。目前已经投入国内外市场的产品,包括语音播报温度计、智能交通灯、嵌入式汽车运营图片信息采集系统、数码语音录音及播放系统、空调智能控制系统等。可以说基于SPCE061A的“出气宝宝”的设计与上述产品的技术手段、基本原理相类似。然而就应用角度来说,“出气宝宝”思路新颖,具有一定的创新性和时代特色,昭示了广阔的市场前景2。加速度传感器是一种能够测量加速力的电子设备。加速力就是当物体在加速过程中作用在物体上的力。加速力可以是个常量,比如g,也可以是变量。概括起来,加速度传感器可应用在控制,手柄振动和摇晃,仪器仪表,汽车制动启动检测,地震检测,报警系统,玩具,结构物、环境监视,工程测振、地质勘探、铁路、桥梁、大坝的振动测试与分析;鼠标,高层建筑结构动态特性和安全保卫振动侦察上。多数加速度传感器是根据压电效应的原理来工作的。所谓的压电效应就是:对于不存在对称中心的异极晶体加在晶体上的外力,除了使晶体发生形变以外,还将改变晶体的极化状态,在晶体内部建立电场,这种由于机械力作用使介质发生极化的现象称为正压电效应。当然,还有很多其它方法来制作加速度传感器,比如压阻技术,电容效应,热气泡效应,光效应,但是其最基本的原理都是由于加速度产生某个介质产生变形,通过测量其变形量并用相关电路转化成电压输出3。 本系统设计所采用的MMA7260QT三轴加速度传感器就是利用了压电效应的原理。由于加速度造成的晶体变形会产生电压,只要计算出产生电压和所施加的加速度之间的关系,就可以将加速度转化成电压输出。又由惯性定理可知:A(加速度)=F(惯性力)/M(质量)。这样,在质量M为已知常量的前提下,加速度与外力成正比例关系。输出电压对应着加速度的线性变化,也同样对应着外力的线性变化。机械力也就转化成可以控制单片机的电信号,达到了系统设计的要求4。1.4 本文主要内容及结构安排本文着重于对基于SPCE061A“出气宝宝”系统设计的阐明,详细介绍了设计的思路、方法与具体的流程。本文的主要内容也是以实际设计为骨架,辅以对必要知识的介绍,构成了一个重点突出、条理鲜明、内容丰实的整体。通观全篇,整个系统的设计可大致分为硬件设计与软件设计两部分。硬件设计包括外部电路的设计与连接、单片机的I/O口设计、AD转换设计、音频设计、传感器电路等。软件设计包括I/O输入的初始化、AD转换的初始化、传感器输入数据的处理、声音播放函数的编写、音频的压缩与调用等。本文的结构主要安排为三章,具体内容分布如下:第一章:绪论,阐述课题的开发背景,提出该课题的研究依据和意义;介绍了SPCE061A与单片机的发展现状;内容概述对整篇论文起提纲挈领。第二章:硬件设计,主要包括硬件元器件的选取、系统整体外围电路的连接、单片机中各控制单元的实现以及传感器的电路等。第三章:软件设计,主要分为软件系统的开发、音频的设计、I/O口与A/D转换的定义、主程序设计四方面的内容。燕山大学本科生毕业设计(论文)第2章 硬件设计2.1 硬件器件的选择本次设计的整个系统主要由SPCE061A开发板和加速度传感器模块两部分构成。因此,硬件器件我们选择了61板和MMA7260QT三轴加速度传感器。61板是SPCE061A EMU BOARD的简称,是以凌阳16位单片机SPCE061A为核心的精简开发仿真实验板,除了具备单片机最小系统电路外,还包括有电源电路、音频电路(含MIC输入部分和DAC音频输出部分)、复位电路等,采用电池供电。MMA7260QT三轴小量程加速传感器是检测物件运动和方向的传感器,它根据物件运动和方向改变输出信号的电压值。对于本设计来说,能够较为精确地出反映“出气宝宝”受击打力后的运动情况。下面,我们将对所选的这两部分硬件结构分别予以介绍。2.1.1 SPCE061A单片机SPCE061A是一款16位结构的微控制器,主要包括输入/输出端口、定时器/计数器、数/模转换、模/数转换、串行设备输入输出、通用异步串行接口、低电压监测和复位等部分,并且内置在线仿真电路ICE接口,较高的处理速度使其能够快速的处理复杂的数字信号5。图2-1 61板框图我们在设计中选择的硬件是以凌阳16位单片机SPCE061A为核心的精简开发仿真实验板,简称61板,其硬件框图如图2-1所示。它是“凌阳科技大学计划”专为大学生、电子爱好者等进行电子实习、课程设计、毕业设计、电子制作及电子竞赛所设计的,也可作为单片机项目初期研发使用。关于61板的硬件框图说明如表2-1所示。表2-1 61板框图简要说明POWER5v&3.3v供电电路PLL锁相环外部电路*PowerPower-电源指示灯*SleepSleep-睡眠指示灯K4复位按键RESET复位电路S5EZ_PEOBE和PROBE切换的3pin单排针PROBE在线调试器串行5pinEZ_PROBE下载线的5pin接口J32pin喇叭插针MIC麦克风输入电路DAC一路音频输出电路VRTA/D转换外部参考电压输入接口OSC32768晶振电路K1-K3扩展的按键:接IOA0-IOA2R/C其它外围电阻电容SPCE061A61板核心:16位微处理器PORTA/B32个I/O口61板的核心是凌阳16位单片机SPCE061A,封装形式为PLCC84,具有丰富的功能引脚。图2-2中显示了61板上的各个接口分布。其中输入/输出(I/O)接口、音频输入/输出接口等在实验设计中经常用到。下面我们将就本次设计中重点应用到的接口作简要的说明。输入/输出(I/O)接口。61板将SPCE061A的32个I/O口全部引出:IOA0IOA15,IOB0IOB15。在引脚分布图(可参考61板说明书,这里不重点说明)中,对应的SPCE061A引脚为:A口,4148、53、5460;B口,51、8176、6864。而且该I/O口是可编程的,即可以设置为输入或输出:设置为输入时,分为悬浮输入或非悬浮输入,非悬浮输入又可以设置为上拉输入或是下拉输入;在5V情况下,上拉电阻为150K,下拉电阻为110K;设置为输出时,可以选择同相输出或者反相输出。图2-2 SPCE061A的接口音频输入/输出接口。正如我们在前面介绍的61板具有强大的语音处理功能,如图2-2所示,X1是语音的MIC输入端,自带自动增益(AGC)控制,J3是语音输出接口,一个2pin的插针外接喇叭,由DAC输出引脚21或2经语音集成放大器SPY0030A放大,然后输出,SPY0030A是凌阳的一款芯片,功能相当于LM386, 但是比LM386音质好,它可以工作在2.46.0V范围内,最大输出功率可达700mW。线调试器PROBE和EZ_PROBE接口。在图2-2中J4为PROBE的接口,该接口有5pin,我们就是通过它将PROBE与PC机连接起来进行调试、仿真和下载程序的。这样,就不需要再用仿真器和编程器了。图2-2中的J11是EZ_PROBE的接口,我们提供一根下载线用作程序的下载,一端连接PC机的25pin并口,另外一端接61板的5pin EZ_PROBE接口。电源接口。图2-2中J10是电源接口,61板的内核SPCE061A电压要求为3.3V, 而I/O端口的电压可以选择3.3V也可以选择5V。所以,在板子上具有两种工作电压:5V和3.3V。对应的引脚中15、36和7必须为3.3V,对于I/O端口的电压51、52、75可以为3.3V也可以是5V,这两种电平的选择通过跳线J5来选择。61板的供电电源系统采用用户多种选择方式:即5V供电和3.3V供电两种供电方式。5V供电时,用户可以用3节电池来供电,5V直流电压直接通过SPY0029稳压到3.3V,为整个61板提供了5V和3.3V两种电平的电压。另外也可以直接外接5V的直流稳压源供电,5V电压再通过SPY0029稳压到3.3V。3.3V供电时用户可以提供直流3.3V电压为实验板进行供电,此时整个板子只有3.3V电压,I/O端口电压此时只有一种选择。需要注意的是由于SPY0029A最大输出电流为50mA,所以如果需要外接一些模组时要先考虑负载能力。外部复位。复位是对61板内部的硬件初始化,61板本身具有上电复位功能,即通电就自动复位,另外,还具有外部复位电路,即在引脚6上外加一个低电平就可令其复位。如图2-2中的RESET按键。2.1.2 MMA7260QT三轴加速度传感器MMA7260QT3轴小量程加速传感器是检测物件运动和方向的传感器,它根据物件运动和方向改变输出信号的电压值。各轴的信号在不运动或不被重力作用的状态下(0g),其输出为1.65V。如果沿着某一个方向活动,或者受到重力作用,输出电压就会根据其运动方向以及设定的传感器灵敏度而改变其输出电压。用单片机的A/D转换器读取此输出信号,就可以检测其运动和方向。本次设计中加速度传感器模块的各接口分布如图2-3所示。图2-3 MMA7260QT传感器的接线端可见,传感器模块引脚丰富。各个接口的定义如下:引脚Z表示z轴方向电压输出;引脚Y表示y轴方向电压输出;引脚X表示x轴方向电压输出;S1、S2表示传感器灵敏度选择信号;3.3V引脚表示输入电压,同时可以接到单片机AD参考电压端;5V引脚表示电源输入;GND引脚表示接地;SL引脚表示传感器休眠与否选择,如果不接,默认为工作状态6。MMA7260QT三轴加速度传感器可以在四种不同灵敏度之间进行选择。根据在引脚S1和引脚S2上的逻辑输入,装置的内部增益将会发生变化,使得该装置在1.5g,2g,4g或6g四种不同的灵敏度下进行工作。(如表2-2所示)。一些产品在应用过程中为了达到最佳工作性能,需要不同的灵敏度。加速度选择特性对于这些产品是相当理想的。在产品工作的过程中,可以在任意时候改变加速度的灵敏度。对于那些只需要1.5g灵敏度的应用来说,S1和S2两个引脚可以被空置,因为装置内部有一个下拉电路使其保持在1.5g的灵敏度(800mV/g)。表2-2 加速度选择引脚说明S1S2加速度选择范围灵敏度001.5g800 mV/g012g600 mV/g104g300 mV/g116g200 mV/g2.2 系统电路的连接图2-4 系统结构图选择好了设计中所用原器件,了解了其大致性能,下面我们将讨论整个系统外部电路的连接。整个系统基本上主要由传感器模块、61板两部分组成。必要的时候可添加外扩存储器模块。加速度传感器模块三路数据传入61板,控制扬声器发声。整个系统中数据传送的路径结构如图2-4所示。硬件设计时,首先应对单片机进行自检测试。确保输入输出端口以及AD转换等功能正常后,即可进行系统电路连接。61板的输入输出接口部分,是61板与外部电路进行信息交换的出入通道,我们应把插线的一段连接在输入输出口上。而对于加速度传感器模块来说,本设计基本功能的实现只需要X轴、Y轴、Z轴、电源、接地五个引脚。其他的引脚,如加速度选择、睡眠模式等可作为本系统的优化方向进行考虑,我们在现阶段的电路图连接与分析中不做显示。把插线的另一端与加速度传感器的上述五个引脚相连接。由于加速度传感器模块的电压输出满足61板的输入要求,这里不需要功率放大器。整个系统的外部电路连接如图2-5表示。图2-5 系统外部电路连接原理图2.3单片机控制单元的硬件设计SPCE061A单片机是本次设计的核心部件。对其硬件的了解与设置直接关系到系统性能的实现。以下将对本次设计中应用到的输入/输出接口、模拟数字转换器ADC、凌阳音频等部分做重点的知识介绍与设计说明。2.3.1 输入/输出控制单元设计输入/输出接口(也可简称为I/O端口)是单片机与外设交换信息的通道。输入端口负责从外界接收检测信号、键盘信号等各种开关量信号。本次设计中传感器的信号正是由输入端口传入内部电路。输出端口负责向外界传送由内部电路产生的处理结果、显示信息、控制命令、驱动信号等。SPCE061A的输入/输出接口包含了多种控制单元,其结构如图2-6所示。图2-6 I/O结构示意图SPCE061A有两个16位的通用并行I/O口:A口和B口。这两个端口的每一位都可通过编程单独定义成输入或输出口。其中,A口的IOA0IOA7作为输入端口时,具有唤醒功能,即当输入电平发生变化时,会触发CPU中断。本次设计中选用A口作为输入口7。SPCE061A提供了位控制结构的I/O端口,每个独立的位用于数据输入还是输出,可通过以下3种控制向量来作设定:数据向量Data、属性向量Attribution、方向控制向量Direction。每3个对应的控制向量组合在一起,形成一个控制字,用来定义相对应I/O端口位的输入输出状态和方式。与其它的单片机相比,SPCE061A除了每个I/O口可以单独定义其状态外,每个对应状态下的I/O端口性质电路都是内置的,在实际的电路中不需要再外接。这为系统的硬件设计带来了很大的方便。A口和B口的Data、Attribution和Direction的设定值均在不同的寄存器里,用户在进行I/O端口设置时要特别注意这一点。I/O端口的组合控制设置如表2-3所示:表2-3 I/O端口的控制向量组合DirectionAttributionData功能是否唤醒功能描述000下拉是带下拉电阻的输入引脚001上拉是带上拉电阻的输入引脚010悬浮是悬浮式输入引脚011悬浮否悬浮式输入引脚100高电平输出(带数据反相器)否带数据反相器的高电平输出101低电平输出(带数据反相器)否带数据反相器的低电平输出110低电平输出否带数据寄存器的低电平输出111高电平输出否带数据寄存器的高电平输出其中,当Direction、Attribution和Data的设定值为011时,悬浮输入作为ADC IOA06的输入。下面就各个控制单元的功能实现作简要说明。P_IOA_Data(读/写)(7000H)。A端口的数据单元,用于向A口写入或从A端口读出数据。当A口处于输入状态时,读出是读A口引脚电平状态;写入是将数据写入A端口的数据寄存器。当A口处于输出状态时,写入输出数据到A端口的数据寄存器。P_IOA_Buffer(读/写)(7001H)。A端口的数据向量单元,用于向数据向量寄存器写入或从该寄存器读出数据。当A口处于输入状态时,写入是将A端口的数据向量写入A端口的数据寄存器;读出则是从A端口数据寄存器内读其数值。当A口处于输出状态时,写入输出数据到A端口的数据寄存器。对输出而言,P_IOA_Data与P_IOA_Buffer是一样的。但对输入而言,P_IOA_Data读的是IO的值,P_IOA_Buffer读的是buffer内的值。假设IOA0作为输出,并去接LED阳极(LED阴极接地)。若P_IOA_Data的IOA0为1。 在某些需要较大驱动能力的LED而言,LED会亮,但IOA0会被拉到一个很低的值。此时从P_IOA_Data读回为0,但P_IOA_Buffer则为1。读回的意义是是方便做其它的IO运算。P_IOA_Dir(读/写)(7002H)。A端口的方向向量单元,用于用来设置A口是输入还是输出,该方向控制向量寄存器可以写入或从该寄存器内读出方向控制向量。Dir位决定了端口位的输入/输出方向:即0为输入,1为输出。P_IOA_Attrib(读/写)(7003H)。A端口的属性向量单元,用于A端口属性向量的设置。方向向量_Dir、属性向量_Attrib和数据向量_Data分别代表三个控制口。这三个端口中每个对应的字节合在一起,形成一个控制字,来定义相对应I/O端口位的输入/输出状态和方式。表3-1具体表示了如何通过对I/O口的_Dir、_Attrib以及_Data进行编程,来设定端口位的输入/输出状态和方式。由表3-1可以得出以下一些结论:_Dir位决定了端口位的输入/输出方向:即0为输入,1为输出。_Attrib位决定了在端口位的输入状态下是为悬浮式输入还是非悬浮式输入:即0为带上拉或下拉电阻式输入,而1则为悬浮式输入。在端口位的输出状态下则决定其输出是反相的还是同相的;0为反相输出,1则为同相输出。_Data位在端口位的输入状态下被写入时,与_Attrib字节合在一起形成输入方式的控制字00、01、10、11,以决定输入端口是带唤醒功能的上拉电阻式、下拉电阻式或悬浮式以及不带唤醒功能的悬浮式输入。_Data位在端口位的输出状态下被写入的是输出数据,不过,数据是经过反相器输出还是经过同相寄存器输出要由_Attrib位来决定。本次设计中,以A口中06的任意3个引脚作为输入引脚,以传入外部加速度传感器中X、Y、Z三个方向上的数据。传入的数据需要进行AD转换,因此输入引脚的功能应该定为“不带唤醒功能的悬浮式输入”。方向向量_Dir、属性向量_Attrib和数据向量_Data的设定值为011。2.3.2 模拟数字转换设计SPCE061A有8个10位ADC通道,其中一个通道(MIC_In)用于语音输入,模拟信号经过自动增益控制器和放大器放大后进行A/D转换。其余7个通道(Line_In)和IOA06引脚共享,可以将输入的模拟信号(如电压信号)转换为数字信号。SPCE061A的A/D转换范围是整个输入范围。无效的A/D模拟信号(超过VDD+0.3V或是低于VSS-0.3V)将影响转换电路的工作范围,从而降低ADC的性能。由于Line_In通道和IOA06共享引脚,建议用户选择其它的IO引脚(非IOA06),以避免由于无效的IO信号造成电压不稳(超过VDDIO+0.7V或低于VSSIO-0.7V)而降低ADC的性能。ADC的最大输入电压由P_ADC_Ctrl(写)(7015H)的第7和第8位的值决定。第7位VEXTREF决定了ADC的参考电压为AVdd或是外部参考电压。第8位V2VREFB决定了2V电压源是否起作用。如果起作用,用户可向VEXTREF引脚输入2V电压。此反馈回路把ADC的最高参考电压设置为2V。如果用户指定的参考电压源的值不超过AVdd,它还可以被当作ADC的最高参考电压。在ADC内,由DAC0和逐次逼近寄存器SAR组成逐次逼近式模拟数字转换器(SAR ADC)。向P_ADC_Ctrl(写)(7015H)单元第0位(ADE)写入1,可以启用ADC。系统的默认值为ADE=0(关闭ADC)。当ADE=1时,应对P_ADC_Ctrl和P_ADC_MUX_Ctrl的其它控制位进行合理的设置。通过设置P_ADC_MUX_Ctrl(写)(702BH)的第02位,可以为A/D转换选择输入通道。通道包括MIC_In和Line_In两种。工作时,如果MIC_In通道和Line_In通道都处于直接工作模式,程序会检查P_ADC_Ctrl的第15位。只有当目前的AD转换完成后,才能切换通道。当MIC_In通道处于定时器锁存状态时,它可以优先存取ADC。用户就可以从P_ADC_MUX_Ctrl的FailB位得知,Line_In ADC是否被MIC_In ADC打断。用户可通过读取P_ADC(读)(7014H)单元,取得从MIC_In通道输入的模拟信号转换结果。用户可通过读取P_ADC_LINEIN_Data(读)(702CH)单元,取得从指定的Line_In通道输入的模拟信号转换结果。选择MIC_In通道后,可通过设置P_DAC_Ctrl(写)(702AH)的第3和4位,选择A/D转换的触发事件。当P_ADC(读)(7014H)单元的数据被读取/TimerA/TimerB事件发生后,可执行A/D转换。然而,在选择Line_In通道后,只有在读取P_ADC_LINE IN_Data(读)(702CH)单元的内容后,才执行A/D转换,且不能使用定时器锁存数据。进入睡眠状态后,ADC被关闭(包括AGC和VMIC)。注意,供电复位后不论ADC是否被启用,VMIC信号都预设为ON。VMIC用于向外部的MIC提供电源,VMIC=AVDD。即,VMIC的状态和ADC的状态无关。所以,不使用VMIC时,用户须把P_ADC_Ctrl单元的第1位MIC_ENB设为1,以关闭VMIC。硬件ADC的最高速率限定为(Fosc/32/16)Hz,如果速率超过此值,当从P_ADC(读)(7014H)/P_ADC_LINEIN_Data(读)(702CH)单元读出数据时会发生错误。P_ADC_Ctrl(写)(7015H)单元的第5位DAC_OUT,可用来选择两通道音频DAC的最大输出。最大输出电流可为2mA或是默认的值3mA。DAC_OUT的设置可改变DAC输出的功率。在ADC自动方式被启用后,会产生出一个启动信号,即RDY=0。此时,DAC0的输出电压与外部输入电压进行比较,以尽快找出外部电压的数字值。逐次逼近式控制首先将SAR中数据的最高有效位设为1,而其它位全设为0,即1000000000B。这时DAC0输出电压VDAC0为1/2最大值,用来与输入电压Vin进行比较。如果VinVDAC0,则保持原先设置为1的位(最高有效位)仍为1;否则,该位会被清为0。接着,逐次逼近式控制又将下一位试设为1,其余低位依旧设为0,即1100000000B,VDAC0与Vin进行比较的结果若VinVDAC0,则仍保持原先设置位的值,否则该位便清为0。这个逐次逼近的过程一直会延续到10位中的所有位都被测试之后,A/D转换的结果便会保存在SAR内。当10位A/D转换完成时,RDY会被设1。此时,用户通过读取P_ADC (7014H)或P_ADC_MUX_Data(702CH)单元可以获得10位的A/D转换数据。而从该单元读取数据后,又会使RDY自动清为0来重新开始进行A/D转换。若未读取P_ADC(7014H)或P_ADC_MUX_Data(702CH)单元中的数据,RDY仍会保持为1,并且不会启动下一次的A/D转换。外部信号是由LIN_IN17即IOA06或通道MIC_IN输入。从LIN_IN17输入的模拟信号直接被送入缓冲器P_ADC_MUX_Data(702CH);从MIC_IN输入的模拟信号则要经过缓冲器和放大器。放大器的增益值可由外部线路来调整,因此AGC可以控制MIC_In输入信号的值在一定的范围内8。P_ADC(读/写)(7014H)。P_ADC单元(如表3-2所示)储存MIC输入的A/D转换数据。逐次逼近式的ADC由一个10位DAC(DAC0)、一个10位寄存器DAR0、一个逐次逼近寄存器SAR和一个比较器COMP组成。表2-4 P_ADC单元b15 - b6b5 b0DAR0(读/写)-P_ADC(读):读本单元实际为A/D转换输出的10位数。若P_DAC_Ctrl单元第3、4位被设为00,那么在转换过程里读出本单元(7014H)亦会触发A/D转换重新开始。P_ADC_Ctrl(读/写)(7015H)。P_ADC_Ctrl单元(如表2-5和表2-6所示)为ADC的控制口。其中,b15为RDY(读),b8为V2VREFB(写),b7为VEXTREF(写),b6为DAC_OUT(写),b2为AGCE(写),b1为MIC_ENB(写),b0为ADE(写)。表2-5为电压控制部分,2-6为数模转换部分表2-5 P_ADC_Ctrl单元(电压控制部分)b8b7b6b2控制功能描述0-打开2V电压输出,其可作外部AD参考电压输入1-关闭2V电压输出(预设)-0-不使用外部参考电压,AD参考电压为Vdd(预设)-1-启用外部参考电压引脚,从VEXTREF脚输入外部参考电压0-DAC电流=3mA VDD=3V(预设)1-DAC电流=2mA VDD=3V-0取消AGC自动增益控制(预设)-1启用AGC自动增益控制表2-6 P_ADC_Ctrl单元(数模转换部分)b15b1b0控制功能描述0-10 位模拟数字转换未完成1-10 位模拟数字转换完成,输出 10位数值0MIC模式被使能,Vmic = AVdd1MIC模式被关闭-0关闭模拟数字转换功能-1启用模拟数字转换功能P_ADC_MUX_Ctrl(读/写)(702BH)ADC多通道控制是通过控制单元(如表2-7所示)来实现的。表2-7 P_ADC_MUX_Ctrl单元b15b14b13-b3b2b1b0控制功能描述RDYFailB-Channel_sel0-10位模拟数字转换未完成1-10位模拟数字转换完成-0-10位模拟数字转换失败(预设)-1-10位模拟数字转换成功-000模拟电压信号经由MIC_IN输入-001模拟电压信号经由LINE_IN1输入-010模拟电压信号经由LINE_IN2输入-011模拟电压信号经由LINE_IN3输入-100模拟电压信号经由LINE_IN4输入-101模拟电压信号经由LINE_IN5输入-110模拟电压信号经由LINE_IN6输入-111模拟电压信号经由LINE_IN7输入ADC的多路LINE_IN输入是与IOA06共享,如表2-8所示:表2-8 LINE_IN与IOA共享的对应关系IOA6IOA5IOA4IOA3IOA2IOA1IOA0LIN_IN 7LIN_IN 6LIN_IN 5LIN_IN 4LIN_IN 3LIN_IN 2LIN_IN 1P_ADC_MUX_Data(读)(702CH)。P_ADC_MUX_Data单元用于读出LINE_IN1710位ADC转换的数字数据,如表2-9所示:表2-9 LINE_IN的10位ADC转换数据分布b15b14b13b12b11b10b9b8b7b6D9D8D7D6D5D4D3D2D1D0下面介绍LINE_IN模式的ADC操作。SPCE061A提供7个Line_In通道,它们与IOA06共享7个引脚。如果把这七个引脚当作Line_In通道,用户必须首先把相对应的IOA引脚设置为“输入”。注意,由于IO口带有内部上拉和下拉输入电阻,这会影响外部Line_In信号的电平。所以,IOA06最好被设置成悬浮的输入端口,用于Line_In通道输入。通过设置P_ADC_Ctrl(写)(7015H)单元的第7位VEXTREF,可以决定Line_In通道输入的最大电压值。VEXTREF0时,最大电压可达AVDD,即来自Line_In通道的模拟信号电压范围从0V到AVdd。VEXTREF1时,VEXTREF引脚被启用,这时,必须输入外部电压到该引脚,作为Line_In通道的最大电压。VEXTREF可取的值的范围从0V到AVdd。所以,Line_In通道的输入电压范围从0V到VEXTREF,VEXTREF的值越低,Line_In通道的电压范围越小。也就是说,输入的信号的信噪比SNR越低。SPCE提供了一个内置的2V电压源(通过设置P_ADC_Ctrl(写)(7015H)单元的第8位V2VREFB0来启用),它可以被连接到VEXTREF引脚,作为Line_In通道的最大参考电压。由于SPCE061A共拥有8个A/D转换通道,但只有一个ADC,所以用户必须在切换通道之前通过查看P_ADC_MUX_Ctrl(读)或P_ADC_Ctrl(读)单元的第15位RDY的值,以确认ADC为闲置状态。通道切换可通过设置P_ADC_MUX_Ctrl(读/写)(702BH)单元的第02位来完成。如果RDY不为1,即表示ADC正忙,这时对P_ADC_MUX_Ctrl(读/写)(702BH)单元的第02位进行任何操作都无效。MIC_In通道A/D转换拥有多种的触发方式,可通过设置P_DAC_Ctrl (写)(702AH)单元的第3和4位来切换。而Line_In通道的A/D转换只能通过读取P_ADC_LINEI _Data(读)(702CH)单元的数据来触发。当MIC_In通道处于定时器锁存状态时,MIC_In通道的优先级高于Line_In通道。当有同时来自MIC_In和Line_In通道的A/D转换时,Line_In通道的A/D转换会被MIC_In通道的A/D需求打断。为保证P_ADC_LINEIN_Data(读)单元读取到正确的数据,用户必须通过P_ADC_MUX_Ctrl(读/写)(702BH)单元的第14位FailB的值,确认A/D是否成功或是被打断9。当MIC_In通道处于定时器锁存状态,而且MIC_In通道完成第一次的A/D转换以后,查看P_ADC_MUX_Ctrl(读/写)(702BH)单元的值是非常必要的。采用Line_In通道A/D转换时,通过读P_ADC_LINEIN_Data(读)单元的值,便可开始进行A/D转换操作,同时,P_ADC_MUX_Ctrl单元的第15位RDY被清除为0。当RDY变为1时,表示ADC完成工作,如果Ctrl单元的第14位FailB的值为1,表示转换成功,可以从P_ADC_LINEIN_Data得到转换结果。注意,读取P_ADC_LINEIN_Data(读)(702CH)单元的值会再次触发A/D转换。如果FailB的值为0,表示Line_In通道的A/D转换被MIC_In通道的A/D操作打断,这时P_ADC_LINEIN_Data(读)(702CH)单元的内容是一个错误值。2.3.4 DAC方式音频输出设计SPCE061A为音频输出提供两个DAC通道:DAC1和DAC2,分别由经由DAC1和DAC2引脚输出。DAC的输出范围从0x0000到0xFFFF。如果DAC的输出数据被处理成PCM数据,必须让DAC输出数据的直流电位保持为0x8000,且仅有高10位的数据有作用。DAC1和DAC2的输出数据应写入P_DAC1(写)(7017)和P_DAC2(写)(7016)单元。上电复位后,两个DAC均被自动打开,此时会消耗少量的电流(几毫安)。所以如不需要用它们,尽量将P_DAC_Ctrl单元的第1位设为1,关闭DAC输出10。DAC的直流电压必须保证平稳地变化。否则会由于电压的突变引起扬声器产生杂音。采用ramp up/down技术,可以减缓电压变化的幅度,从而输出高品质的音频数据。它的应用场合包括:被唤醒/上电复位后首次使用DAC时,上电复位功能被关闭/进入睡眠状态之前。P_DAC2(读/写)(7016H)DAC2是个10位的D/A转换单元。在DAC方式下,该单元带有10位的缓冲寄存器DAR2。表2-10 DAC2单元b15 b6b5 b0DA2_Data(读/写)-P_DAC2(写):通过此单元直接写入10位数据到10位寄存器DAR2,来锁存DAC2的输入数值(无符号数)。P_DAC2(读):从DAR2内读出10位数据。P_DAC1(读/写)(7017H)。DAC1是10位的D/A转换单元。在DAC方式下,该单元带有10位的缓冲寄存器DAR1。P_DAC1(写):通过此单元直接写入10位数据到10位寄存器DAR1,来锁存DAC1的输入数值(无符号数)。P_DAC1 (读):从DAR1内读出10位数据。P_DAC_Ctrl(写)(702AH)表2-11 DAC1单元b15 b6b5 b0DA1_Data(读/写)-DAC音频输出方式的控制单元,其中第58位用于选择DAC的数据锁存方式;第3、4位用来控制A/D转换方式;第1位为0,用于双DAC音频输出。b9b15为保留位。DAC是被设计来用作音频输出设备。通常DAC的最大输出电流和AVdd成正比。DAC的最大输出电流范围是“正常电流值10%”。我们在得知DAC的最大输出电流以后,模拟电压输出范围可由DAC的负载来决定。由于DAC本身的物理特性,最大的输出电压将比AVdd低0.3V0.4V。以上便是61板各数据单元控制点的实现。在下面的一节中,我们将涉及到加速度传感器单元的硬件设计部分。2.4 传感器控制单元设计本小节介绍加速度传感器的硬件部分。图2-7为MMA7260QT三轴加速度传感器芯片的封装结构简图。图2-7 传感器模块简图本次设计中,我们需要用到XOUT、YOUT、ZOUT以及VDD、VSS五个引脚。其他的引脚也可以与凌阳单片机61板相连,用来拓展更多的功能。这些可以在系统将来的优化中加以考虑,这里不再加以考虑。图2-8 传感器外围电路图因为传感器芯片的面积较小,外部扩展的电路只能进行贴片焊接。图2-8为传感器的外围电路连接图。这种设计是参考了该加速度传感器的参数说明,因而考虑到了传感器芯片各种功能的实现,对各个引脚都进行了电路设计。但由于我们在本次系统的设计中,只需要用到五个引脚,实际操作中,可适当简化传感器模块的电路。传感器电路的设计,并不是本次系统设计的重点。这里只是基于引脚功能做简单了解,避免在外围电路连接时发生错误。至此,本系统硬件设计的说明基本完成。硬件系统的最终整体外观如图2-9所示。图2-9 硬件系统外观图在下一章,我们将结合本章的硬件设计知识,进行系统的软件设计。2.5 本章小结本章介绍了系统的硬件设计,主要包括硬件元器件的选取、系统整体外围电路的连接、单片机中各控制单元的实现以及传感器的电路等,重点是61板的硬件设计。我们根据性能特点选用了61板和加速度传感器,用插线对其进行连接。其中,传感器模块本身的实现需用贴片焊接技术。而I/O接口、A/D转换与音频也是本次设计的关键部分。这都为下一章的软件编程打下了基础。第3章 软件设计系统的软件设计,主要包括软件系统的开发、音频设计、输入输出接口及A/D转换设计、主函数设计四部分。下面将根据“出气宝宝”设计的实际需求对上述各部分做详细的介绍与说明。3.1 软件系统的开发设计61板配有凌阳自行研发设计的16位单片机开发环境IDE。此工具在Windows环境下操作,支持标准C语言和汇编语言,集编译、编程、链接、调试和仿真于一体,应用方便简单易学。同时还提供大量的编程函数库,大大加快了软件开发的进程。集成开发环境IDE具有友好的交互界面、下拉菜单、快捷键和快速访问命令列表等,使编程、调试工作方便且高效。此外,它的软件仿真功能可以在不连接仿真板的情况下模拟硬件的各项功能来调试程序。在集成开发环境IDE中,可以非常方便将编写好的程序,通过61板配套的下载线下载到61板上进行在线调试。图3-1 61板的开发方式简易开发如图3-1中的:61板下载线PC机。我们将61板上的数据缓冲电路和下载线统称为“EZ_PROBE”,这种开发方式开发成本低,适合学生和初学者使用。其缺点是对于比较大的程序代码下载和调试速度较慢。但是我们的设计不会考虑到这些影响。使用在线调试器(PROBE)如图3-1中的:61板在线调试器PC机。这种开发方式方便自己开发或产品研发过程使用,能够实时在线仿真、调试和下载程序。但对于初学者来说,其中加入的PROBE的成本相对较高。61板的开发是通过下载线(EZ_PROBE)或在线调试器(PROBE)实现的。用它可以替代在单片机应用项目的开发

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论