毕业设计(论文)-热敏电阻测温系统的温度采集模块的设计(2).doc_第1页
毕业设计(论文)-热敏电阻测温系统的温度采集模块的设计(2).doc_第2页
毕业设计(论文)-热敏电阻测温系统的温度采集模块的设计(2).doc_第3页
毕业设计(论文)-热敏电阻测温系统的温度采集模块的设计(2).doc_第4页
毕业设计(论文)-热敏电阻测温系统的温度采集模块的设计(2).doc_第5页
已阅读5页,还剩42页未读 继续免费阅读

下载本文档

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

文档简介

中北大学2010届毕业设计说明书1 引言1.1 课题研究意义 温度是工业生产中主要的参数之一,特别是在冶金、化工、建材、食品、机械、石油等工业中,具有举足重轻的作用。单片机在工业生产中的应用尤其广泛,温度采集系统则是单片机在工业生产中的一个典型的应用。采用单片机对温度进行采集不仅具有控制方便、简单和灵活性大等优点,而且可以大幅度提高被控温度的技术指标,从而能够大大的提高产品的质量和数量。随着嵌入式系统开发技术的快速发展及其在各个领域的广泛应用,单片机已经以其体积小、功能强、价格低、使用灵活等特点显示出了明显的优势和广泛的应用前景。作为一名测控技术与仪器专业的学生,理应对单片机有更深的了解,本着开拓创新的思想,需要设计了带语音播报功能的温度测量仪。普通大众所常见的温度计是玻璃管温度计,它是靠管内水银升降来判断温度值的高低。当光线较暗时,就看不清水银位置,这给观察者带来不便。而使用负温度系数热敏电阻结合凌阳16位单片机系统开发出来的热敏电阻温度计则克服了普通温度计的许多缺点,使用更方便,而且更加准确。1.2 课题研究的背景温度数据采集系统作为数据采集系统大家族的普通一员也是其一方面的具体应用,数据采集系统的发展就是她的发展。数据采集系统始于20世纪50年代,1965年美国首先研究了用在军事上的测试系统,目标是测试中不依靠相关的测试文件,由非熟练人员操作,并且测试任务由测试设备高速自动控制完成。由于该种数据采集系统具有高速属性和一定的灵活性,可以满足众多传统方法不能完成的数据采集和测试任务,因而得到了初步的认可。20世纪70年代中后期,随着微型机的发展,诞生了采集器、仪表同计算机融为一体的数据采集系统。由于这种数据采集系统的性能优良,超过了传统的自动检测仪表和专用数据采集系统,因而获得了惊人的发展。从70年代起,数据采集系统发展过程中逐渐分为两类,一类是实验室数据采集系统,另一类是工业现场数据采集系统。20世纪80年代随着计算机的普及应用,数据采集系统得到了极大的发展,开始出现了,通用的数据采集与自动化测试系统。该阶段的数据采集系统主要有两类,一类以仪器仪表和采集器、通用接口总线和计算机等构成。例如:国际标准ice625(gpib)接口总线系统就是一个典型的代表。这类系统主要用于实验室,在工业生产现场也有一定的应用。第二类以数据采集卡、标准总线和计算机够成。例如:std总线系统。1.3 课题研究的现状时至今日,由于集成电路制造技术的不断提高,出现了高性能、高可靠性的数据采集系统。现代的数据采集系统,在系统初始化、编程、修改、扩充等方面,变得比过去更加容易。a/d变换器的技术发展,允许以更高的分辨率,更快的采集速度和更低的成本,实现更精密的测量。目前,数据采集系统的一种较为肯定的发展趋势是:把个人计算机同数据采集系统结合起来,实现测量和控制任务的自动化。随着科学技术的发展和数据采集技术的广泛应用,对数据采集系统的各项指标,如采样率、分辨率、存储深度、数字信号处理的、抗干扰能力等方面提出了越来越高的要求,这时超高速数据采集系统应运而生。特别是在高速电路中的毛刺捕获、火箭喷气流量的动态测试以及遥感测试等场合需要高速或超高速数据采集系统技术。超高速数据采集技术已广泛应用在雷达、导弹、通信、声纳、遥感、地质勘测、振动工程、无损检测、智能仪器、语音处理、激光多普勒测速、光时间域反射测量、物质光谱学与光谱测量、生物医学工程等领域,进而不断推动这些领域的发展。2 设计需求分析2.1 总体需求结合当前我的设计及实际情况,具有以下任务需求:利用凌阳spce061a单片机和负温度系数热敏电阻的组合编程实现温度的实时测量和语音播报。温度的测量范围为-20至80,当按下报温键时,系统通过监测热敏电阻两端电压,经过计算得到实时温度值,再播报出来。2.2 硬件需求 基于本设计的需要并从经济角度考虑,我选择了凌阳spce061a单片机作为硬件支持,它除了具有单片机最小系统外,还包扩有电源电路、音频电路、复位电路等,采用电池供电,方便携带。温度传感器选择了负温度系数热敏电阻mfd-502-34,热敏电阻是一种新型半导体感温元件,具有灵敏度高、体积小、寿命长的优点。2.3 软件工具需求选定了硬件后就需要编写软件了,本设计选用的编程软件为c语言和凌阳汇编。同硬件的设计一样,软件也是分块进行的。主要包括以下部分的程序:系统初始化程序、键盘扫描程序、a/d转换程序、温度计算程序、语音播报程序。各部分程序由主程序(main.c)调用,组成一个整体。3 凌阳单片机简介作为整个设计的核心部件,凌阳spce061a单片机起着至关重要的作用,影响着整个设计的各个步骤,本章将对凌阳spce061a单片机进行具体详细的介绍。3.1 spce061a概述随着单片机功能集成化的发展,其应用领域也逐渐地由传统的控制,扩展为控制处理、数据处理以及数字信号处理(dsp,digital signal processing)等领域。凌阳的16位单片机就是为适应这种发展而设计的。它的cpu内核采用凌阳最新推出的nsp(microcontroller and signal processor)16位微处理器芯片(以下简称nsp)。围绕nsp所形成的16位nsp系列单片机(以下简称nsp家族)采用的是模块式集成结构,它以nsp内核为中心集成不同规模的rom、ram和功能丰富的各种外设接口部件,如图3.1所示。 图3.1 nsp家族的模块式结构nsp内核是一个通用的核结构。除此之外的其它功能模块均为可选结构,亦即这种结构可大可小或可有可无。借助这种通用结构附加可选结构的积木式的构成,便可形成各种不同系列派生产品,以适合不同的应用场合。这样做无疑会使每一种派生产品具有更强的功能和更低的成本。nsp家族有以下特点: 体积小、集成度高、可靠性好且易于扩展nsp家族把各功能部件模块化地集成在一个芯片里,内部采用总线结构,因而减少了各功能部件之间的连线,提高了其可靠性和抗干扰能力。另外,模块化的结构易于系统扩展,以适应不同用户的需求。 具有较强的中断处理能力nsp家族的中断系统支持10个中断向量及10余个中断源,适合实时应用领域。 高性能价格比nsp家族片内带有高寻址能力的rom、静态ram和多功能的i/o口。另外,nsp的指令系统提供具有较高运算速度的16位16位的乘法运算指令和内积运算指令,为其应用增添了dsp功能,使得nsp家族运用在复杂的数字信号处理方面既很便利,又比专用的dsp芯片廉价。 功能强、效率高的指令系统nsp指令系统的指令格式紧凑,执行迅速,并且其指令结构提供了对高级语言的支持,这可以大大缩短产品的开发时间。 低功耗、低电压nsp家族采用cmos制造工艺,同时增加了软件激发的弱振方式、空闲方式和掉电方式,极大地降低了其功耗。另外,nsp家族的工作电压范围大,能在低电压供电时正常工作,且能用电池供电。这对于其在野外作业等领域中的应用具有特殊的意义。 spce061a 是继nsp系列产品spce500a等之后凌阳科技推出的又一款16位结构的微控制器。与spce500a不同的是,在存储器资源方面考虑到用户的较少资源的需求以及便于程序调试等功能,spce061a里只内嵌32k字的闪存(flash)。较高的处理速度使nsp能够非常容易地、快速地处理复杂的数字信号。因此,与spce500a相比,以nsp为核心的spce061a微控制器是适用于数字语音识别应用领域产品的一种最经济的选择。其主要性能有: 内核采用16位nsp微处理器; 工作电压(cpu)vdd为2.43.6v ,i/o端口高电平vddh为2.45.5v; cpu时钟:0.32mhz49.152mhz ; 内置2k字sram和32k flash; 可编程音频处理; 晶体振荡器; 系统处于备用状态下(时钟处于停止状态),耗电仅为2a3.6v; 两个16位可编程定时器/计数器(可自动预置初始计数值); 两个10位dac(数-模转换)输出通道; 32位通用可编程输入/输出端口; 14个中断源可来自定时器a / b,时基,两个外部时钟源输入,键唤醒 具备触键唤醒的功能; 使用凌阳音频编码sacm_s240方式(2.4kb/s),能容纳210s的语音数据; 32768hz实时时钟,由锁相环pll振荡器提供系统时钟信号; 7通道10位电压模/数转换器(adc)和单通道声音模-数转换器; 声音模-数转换器输入通道内置麦克风放大器和自动增益控制(agc)功能; 具备串行设备接口; 具有低电压复位(lvr)功能和低电压监测(lvd)功能; 内置在线仿真电路ice(in- circuit emulator)接口; 具有保密能力; 具有watch dog功能。spce061a的结构如图3.2所示。其主要功能模块有并行i/o端口、模/数转换adc、存储ram&flash、定时器/计数器t/c(脉宽调制输出pwm)、watchdog、异步串行通信口uart、指令寄存器ir、设备串行口sio、低电压检测lvd(低电压复位)等。图3.2 spce061a的结构spce061a有两种封装片,一种为84个引脚,plcc84封装形式;另一种为80个引脚,lqfp80封装。而我选用的是84个引脚的,它的排列如图3.3所示。图3.3 spce061a plcc84封装引脚排列图在plcc84封装中,有15个空余脚,在使用时这15个空余脚悬浮。在lqfp80封装中有9个空余脚,在使用时这9个空余脚接地。 下面为lqfp84封装管脚功能介绍。表3.1 lqfp84封装管脚功能 管脚名称管脚功能ioa0ioa15(4148,5360)i/oa口,16个iob0iob15(51,8176,6864)i/ob口,16个osci 13振荡器输入,采用石英晶振时,接晶振osco 12振荡器输出,采用石英晶振时,接晶振res_b 6复位信号输入端,低电平有效ice_en 16ice使能端,接在线调试器probe的使能脚ice_enice_clk 17ice时钟脚,接在线调试器probe的时钟脚ice_clkice_sda 18ice数据脚,接在线调试器probe的数据脚ice_sdapvin 20程序保密设定电源输入脚pfuse 29程序保密设定输入脚dac1 21音频输入通道1dac2 22音频输入通道2vref2 23 2 v参考电压输入脚agc 25语音输入自动增益控制引脚opi 26microphone第二级运放输入脚micout 27microphone第一级运放输入脚micn 28microphone正向输入脚micp 33microphone负向输入脚vrt 35a/d转换参考电压输入脚vcm 34adc参考电压输入脚vmic 37microphone电源sleep 63睡眠状态指示,当cpu进入睡眠状态时,输出高电平vcp 8锁相环压控振荡器阻容输入端xpomt pvpp xtest(61.69.14)出厂测试管脚,使用时悬空即可vddh 51.52.75i/o电平参考电压输入端,当输入参考电压为5v/3.3v时,i/o输入、输出高电平为5v/3.3vvdd 7锁相环pll电源vss 9锁相环pll地vss 19.24模拟信号地vss 38.49.50.62数字信号地vdd 15.36数字信号电源 spce061a单片机的集成度很高,因此它的最小应用系统构成非常方便,只需在osco、osci端接石英晶体振荡器及谐振电容,在复位端接复位电路,在锁相环压控振荡器的阻容输入vcp端接上相应的电容、电阻后即可工作,其它不用的电源端和接地端可接上104小电容或100f的去偶电容,以提高抗干扰能力,如图3.4所示。图3.4 spce061a最小系统在基本了解了spce061a单片机之后,需要对它的硬件结构做一定了解,下面将就spce061a单片机的硬件结构做一定介绍。3.2 spce061a硬件结构spce061a芯片内部集成了ice (在线实时仿真/除错器)、flash (闪存)、sram (静态内存)、通用i/o端口、定时器/计数器、中断控制、cpu时钟锁相环(pll)、adc (模拟数字转换器)、dac (数字模拟转换器)输出、uart (通用异步串行输入输出接口)、sio (串行输入输出接口)、低电压监测/低电压复位等模块。1 .nsp的内核结构nsp的核心由总线、alu算术逻辑运算单元、寄存器组、中断系统及堆栈等部分组成。其结构如图3.5所示。图3.5 nsp的核心结构2 .spce061a片内存储器结构spce061a的内存地址映像如图3.6所示。芯片内的内存有2k字的sram(包括堆栈区)和32k字闪存(flash)。 图3.6 spce061a内存映像表sram的地址范围从0x0000到0x07ff。前64个字,即0x00000x003f地址范围内,可采用6位地址直接地址寻址方法,存取速度为2个cpu时钟周期;其余范围内(0x00400x07ff)内存的存取速度则为3个cpu时钟周期。 32k字的内嵌闪存被划分为128个页,每个页存储容量为256个字。它们在cpu正常运行状态下均可通过程序擦除或写入。全部32k字闪存均可在ice工作方式下被写入或被擦除。为了安全起见,不对用户开放整体擦除功能。3.spce061a的输入/输出接口输入/输出接口(也可简称为i/o端口)是单片机与外设交换信息的通道。输入端口负责从外界接收检测信号、键盘信号等各种开关量信号。输出端口负责向外界传送由内部电路产生的处理结果、显示信息、控制命令、驱动信号等。nsp内有并行和串行两种方式的i/o口。并行口线路成本较高,但是传输速率也较高;与并行口相比,串行端口的传输速率较低但可以节省大量的线路成本。spce061a有两个16位的通用并行i/o口:a口和b口。这两个端口的每一位都可通过编程单独定义成输入或输出口。 4. 时钟电路nsp的时钟电路是采用晶体振荡器电路。图3.7为spce061a时钟电路的接线图。外接晶振采用32768hz。推荐使用外接32768hz晶振,因rc阻容振荡的电路时钟不如外接晶振准确。 图3.7 spce061a与振荡器的连接32768hz实时时钟通常用于钟表、实时时钟延时以及其它与时间相关类产品。spce061a通过对32768hz实时时钟来源分频,而提供了多种实时时钟中断。例如,用作唤醒的中断来源irq5_2hz,表示系统每隔0.5秒被唤醒一次,由此可作为精确的计时基准。除此之外,spce061a 还支持rtc振荡器强振模式/自动模式的转换。 5. 系统时钟32768hz的实时时钟经过pll倍频电路以后,产生系统时钟频率fosc,fosc再经过分频得到cpu时钟频率(cpuclk),可通过设定p_systemclock(写)(7013h)单元来控制。预设的fosc、cpuclk分别为24.576mhz和fosc/8。用户可以通过对p_systemclock单元编程完成对系统时钟和cpu时钟频率的定义。 此外,32768hz rtc振荡器有两种工作方式:强振模式和自动弱振模式。处于强振模式时,rtc振荡器始终运行在高耗能的状态下。处于自动弱振模式时,系统在上电复位(power on reset) 后的前7.5秒内处于强振模式,然后自动切换到弱振模式以降低功耗。cpu被唤醒后预设的时钟频率为fosc/8,用户可以根据需要调整该值。 在spce061a内,p_systemclock(写)(7013h)单元控制着系统时钟和cpu时钟。第02位用来改变cpuclk,若将第02位设为“111”可以使cpu时钟停止工作,系统切换至低功耗的睡眠状态;通过设置该单元的第57位可以改变系统时钟的频率。此外,在睡眠状态下,通过设置该单元的第4位可以开打或关闭32768hz实时时钟。6. 模拟数字转换器adcspce061a有八个10位adc通道,其中一个通道(mic_in)用于语音输入,模拟信号经过自动增益控制器和放大器放大后进行a/d转换。其余七个通道(line_in)和ioa06引脚共享,可以将输入的模拟信号(如电压信号) 转换为数字信号。spce061a的a/d转换范围是整个输入范围,即0vavdd。无效的a/d模拟信号(超过vdd+0.3v或是低于vss0.3v)将影响转换电路的工作范围,从而降低adc的性能。 adc的最大输入电压由p_adc_ctrl(写)(7015h)的第七和第八位的值决定。第7位vextref决定了adc的参考电压为avdd或是外部参考电压。第8 位v2vrefb决定了2v电压源是否起作用。如果起作用,可向vextref引脚输入2v电压。此反馈回路把adc的最高参考电压设置为2v。如果指定的参考电压源的值不超过avdd,它还可以被当作adc的最高参考电压。 在adc内,由dac0和逐次逼近寄存器sar(successive approximation register)组成逐次逼近式模拟数字转换器。向p_adc_ctrl(写)(7015h)单元第0位写入“1”,可以启用adc。系统的默认值为ade=0(关闭adc)。当ade=1时,应对p_adc_ctrl(写)(7015h)和p_adc_mux_ctrl(写)(702bh)的其它控制位进行合理的设置。 通过设置p_adc_mux_ctrl(写)(702bh)的第02位,可以为a/d 转换选择输入通道。通道包括mic_in和line_in两种。工作时,如果mic_in通道和line_in通道都处于直接工作模式(direct mode),程序会检查p_adc_ctrl(w)(7015h)的第15位。只有当目前的ad转换完成后,才能切换通道。当mic_in通道处于定时器锁存状态时,它可以优先存取adc。然后,可以从p_adc_mux_ctrl (读) (702bh)的failb位得知,line_inadc 是否被mic_in adc打断。 使用者可通过读取p_adc(读)(7014h)单元,取得从mic_in 通道输入的模拟信号转换结果。使用者可通过读取p_adc_linein_data(读)(702ch)单元,取得从指定的line_in 通道输入的模拟信号转换结果。 选择mic_in通道后,可通过设置p_dac_ctrl(写)(702ah)的第三和四 位,选择a/d转换的触发事件。当p_adc(读)(7014h)单元的数据被读取/timera/timerb事件发生后,可执行a/d转换。然而,在选择line_in通道后,只有在读p_adc_linein_data(读)(702ch)单元的内容后,才执行a/d 转换,且不能使用定时器锁存数据。 进入睡眠状态后,adc被关闭(包括agc和vmic)。注意,供电复位后不论adc是否被启用,vmic信号都预设为on。vmic用于向外部的mic提供电源,vmic =avdd。即,vmic的状态和adc的状态无关。所以,不使用vmic时,使用者必须把p_adc_ctrl(写)( 7015h)单元的第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,即10 0000 0000b。这时dac0输出电压vdac0为1/2 最大值,用来与输入电压vin进行比较。如果vinvdac0,则保持原先设置为1的位(最高有效位)仍为1;否则,该位会被清为0。接着,逐次逼近式控制又将下一位试设为1,其余低位依旧设为0,即110000 0000b,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 输入信号的值在一定的范围内。7 .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(写)(702ah)单元的第1位设为1,关闭dac输出。dac的直流电压必须保证平稳地变化。否则会由于电压的突变引起扬声器产生杂音。采用ramp up/down技术,可以减缓电压变化的幅度,从而输出高品质的音频数据。它的应用场合包括:被唤醒/上电复位后首次使用dac时,上电复位功能被关闭/进入睡眠状态之前。图3.8为音频输出的结构图 图3.8 音频输出的结构图8. 看门狗计数器watchdogwatchdog是用来监视系统的正常运作。当系统正常运行时,每隔一定的周期就必须清除watchdog计数器。如果在限定的时间内,watchdog计数器没有被清除,cpu就会认为系统已经无法正常工作,将会进行系统复位(reset)。 spce061a的watchdog的清除时间周期为0.75秒。因为watchdog的溢出复位信号watchdog_reset是由4hz时基信号经4分频之后产生的,即每4个4hz时基信号(1秒)将会产生一个watchdog_reset信号,如图3.9所示。 图3.9 watchdog的结构和信号时序 以上是对spce061a单片机硬件结构的简单介绍,接下来是对中断系统的介绍。3.3 中断系统中断是为处理器对外界异步事件具有处理能力而设置的,中断技术的引入把计算机的发展和应用大大地推进一步。因此中断功能的强弱已成为衡量一台计算机性能的重要指标。spce061a系列单片机中断系统,是凌阳16位单片机中中断功能较强的一种,它可以提供14个中断源,具有两个中断优先级,可实现两级中断嵌套功能。用户可以用关中断指令(或复位)屏蔽所有的中断请求,也可以用开中断指令使cpu接受中断申请。每一个中断源可以用软件独立控制为开或关中断状态;但中断级别不可用软件设置。spce061a的结构给出了三种类型的中断:软件中断、异常中断和事件中断。1) 软件中断软件中断是由软件指令break产生的中断。软件中断的向量地址为fff5h2)异常中断异常中断表示为非常重要的事件,一旦发生,cpu必须立即进行处理。目前spce061a定义的异常中断只有复位一种。通常,spce061a系统复位可以由以下三种情况引起:上电、看门狗计数器溢出以及系统电源低于电压低限。不论什么情况引起复位,都会使复位引脚的电位变低,进而使程序指针pc指向由一个复位向量(fff7h)所指的系统复位程序入口地址。3)事件中断事件中断(可简称“中断”,以下提到的“中断”均为事件中断)一般产生于片内设部件或由外设中断输入引脚引入的某个事件。这种中断的开通/禁止,由相应独立使能和相应的irq或fiq总使能控制。spce061a的事件中断可采用两种方式:快速中断请求即fiq中断和中断请求即irq中断。这两种中断都有相应的总使能。中断向量和中断源:共有9个中断向量即fiq、irq0irq6及uart irq。这9个中断向量共可安置14个中断源供用户使用,其中有3个中断源可安置在fiq或irq0irq2中,另有10个中断源则可安置在irq3irq6中。还有一个专门用于通用异步串行口uart的中断源,须安置在uart irq向量中。spce061a单片机的中断系统有14个中断源分为两个定时器溢出中断、两个外部中断、一个串行口中断、一个触键唤醒中断、7个时基信号中断、pwm音频输出中断。每个中断入口地址对应多个中断源,因此在中断服务程序中需通过查询中断请求位来判断是那个中断源请求的中断。spce061a单片机的中断服务流程图3.10所示图3.10 中断服务流程图3.4 音频压缩算法我们所说的音频是指频率在20 hz20 khz的声音信号,分为:波形声音、语音和音乐三种,其中波形声音就是自然界中所有的声音,是声音数字化的基础。语音也可以表示为波形声音,但波形声音表示不出语言、语音学的内涵。语音是对讲话声音的一次抽象。是语言的载体,是人类社会特有的一种信息系统,是社会交际工具的符号。音乐与语音相比更规范一些,是符号化了的声音。但音乐不能对所有的声音进行符号化。乐谱是符号化声音的符号组,表示比单个符号更复杂的声音信息内容。将模拟的(连续的)声音波形数字元化(离散化),以便利数字计算机进行处理的过程,主要包括采样和量化两个方面。数字音频的质量取决于:采样频率和量化位数这两个重要参数。此外,声道的数目、相应的音频设备也是影响音频质量的原因。凌阳常用的音频形式和压缩算法有以下几种:1) 波形编码:sub-band即sacm-a2000特点:高质量、高码率,适于高保真语音音乐。2) 参数编码:声码器(vocoder)模型表达,抽取参数与激励信号进行编码。如:sacm-s240。特点:压缩比大,计算量大,音质不高,廉价!3) 混合编码:celp即sacm-s480特点:综合参数和波形编码之优点。除此之外,还具有fm音乐合成方式即sacm-ms01。而压缩分无损压缩和有损压缩。无损压缩一般指:磁盘文件,压缩比低:2:14:1。而有损压缩则是指:音视频文件,压缩比可高达100:1。凌阳音频压缩算法根据不同的压缩比分为以下几种:sacm-a2000:压缩比为8:,8:1.25,8:1.5。该压缩算法压缩比较小,所以具有高质量、高码率的特点适用于高保真音乐和语音。sacm-s480: 压缩比为80:3,80:4.5,该压缩算法压缩比较大, 存储容量大,音质介于a2000和s240之间,适用于语音播放。sacm-s240: 压缩比为80:1.5,该压缩算法的压缩比较大,价格低,适用于对保真度要求不高的场合, 如玩具类产品的批量生产,编码率仅为2.4 kbps。sacm_ms01:该算法较繁琐,但只要具备音乐理论、配器法和声学知识了解spce编曲格式者均可尝试。4.硬件电路设计4.1 设计思路在选定了本设计所需的硬件之后就需要进行电路的设计工作了,只有正确合理的电路设计才能够将单一的电器元件组合成一个能够实现各种功能的作品。因此电路设计是整个制作过程中最重要的,而要完成电路设计就得对凌阳spce061a单片机非常熟悉。 spce061a内置8通道10位模-数转换器,其中7个通道用于将模拟量信号 (例如电压信号) 转换为数字量信号, 可以直接通过引线(ioa06)输入。另外一个通道只用于语音输入,即通过内置自动增益控制放大器的麦克风通道(mic_in)输入。实际上可以把模数转换器(adc,analog to digital converter)看作是一个实现模/数信号转换的编码器。在adc内,由数模转换器dac0和逐次逼近寄存器sar组成逐次逼近式模-数转换器。温度采集电路spce061aad 转换语音播报温度计算图4.1 设计思路4.2 具体设计本设计选用了凌阳spce061a单片机和一个5k负温度系数热敏电阻相结合,通过凌阳spce061a单片机的中断系统实时监测热敏电阻两端的电压,经过微处理器计算得到温度值,再由音频压缩算法处理后播报出实时温度。4.2.1 电阻测温原理热敏电阻是近年来发展起来的一种新型半导体感温元件。由于它具有灵敏度高、体积小、重量轻、热惯性小、寿命长以及价格便宜等优点,因此应用非常广泛。负系数热敏电阻热敏电阻与普通热电阻不同,它具有负的电阻温度特性,当温度升高时,电阻值减小;当温度降低时,电阻值增大,其特性曲线如下:图4.2 热敏电阻温度特性曲线热敏电阻的阻值-温度特性曲线是一条指数曲线,非线性度较大,因此在使用时要进行线性化处理,线性化处理虽然能改善热敏电阻的特性曲线,但比较复杂。为此常在要求不高的一般应用中,作出在一定的温度范围内温度与阻值成线性关系的假定,以简化计算。热敏电阻的应用是为了感知温度为此给热敏电阻以恒定的电流,测量电阻两端就得到一个电压,然后就可以通过下列公式求得温度:t = t0 kvt其中:t-被测温度t0-与热敏电阻特性有关的温度参数k-与热敏电阻特性有关的系数vt-热敏电阻两端的电压根据这一公式,如能测得热敏电阻两端的电压vt,再知道参数t0和系数k,则可计算出热敏电阻的环境温度,也就是被测的温度。固定电阻r阻值的选取:mfd-502-34型热敏电阻线性化较好的一段是在-20到80,为了在最高温度和最低温度时使被测信号基本接近满量程值,采取线性区域内中间某一点温度的阻值作为固定电阻的值。它们分压后,ad的输入电压是ad的输入电压范围一半。在25时热敏电阻的阻值为5k,所以选取固定电阻r的值为5k。在-20时热敏电阻的阻值为37.399k,热敏电阻两端电压vrt=2.9v,接近a/d输入电压的上限3.3v;在80时热敏电阻的阻值为0.796k,热敏电阻两端电压vrt=0.45v,接近a/d输入电压的下限0v。在温度线性化较好的区域内spce061a的a/d值都没有达到极限值。按照0接法时,t0=76,k=0.1022,根据以上公式和参数,测出热敏电阻两端的电压就可以求出被测温度。4.2.2 温度计算语音播报温度计设计工作的主要内容,就是把热敏电阻两端电压值经a/d转换变成数字量,然后通过软件方法计算得到温度值,再经过凌阳spce061a单片机的音频压缩算法得到温度值的音频,经喇叭播报出来。在设计中,系统在凌阳spce061a单片机的基础上扩展了一个按键,接于spce061a的ioa15,当按键按下时,就进行a/d转换初始化,并进行四次a/d转换, spce061a的a/d转换结果在高10位,每次将其移入低10位再计算四次平均值作为ad有效结果返回;为了提高准确度,变量tempad、temper都采用浮点数,计算完成用语音将温度值报出来。由于在放音时播放函数会改变一些参数,为了稳定起见,在每次a/d转换前都做一次初始化。由于每个热敏电阻的特性并非一样、与热敏电阻串联的固定电阻的不准确等原因,每支温度计在整个测量范围内至少找5点进行校正,并适当的修改参数以达到最佳状态。4.2.3 工作电源电路凌阳单片机的工作电压为3.3v,获得工作电压有两种方式: (1)通过两个二极管连续降压使5v的电压降至3.6v,供芯片使用。这种方法比较简单,但电压值不是很精确。(2)通过spy0029可获得准确的3.3v电压,如图4.3图 4.3是电源部分的电路,4.5v直流电压经过spy0029后产生3.3v给整个系统供电。 spy0029是凌阳公司设计的电压调整ic,采用cmos工艺。spy0029具有静态电流低、驱动能力强、线性调整出色等特点。 图 4.3中的vddh3为spce061a的i/o电平参考,接spce061a的51脚,这种接法使得i/o输出高电平为3.3v;vddp为pll锁相环电源,接spce061a的7脚;vdd和vdda分别为数字电源与模拟电源,分别接spce061a的15脚和36脚;avss1是模拟地,接spce061a的24脚;vss是数字地,接spce061a的38脚; avss2接音频输出电路的avss2。图4.3 电源电路4.2.4 放音模块电路放音利用的是spce061a内部的dac,电路如图 4.4所示。图中的spy0030是凌阳公司的产品。和lm386相比,spy0030还是比较有优势的,比如lm386工作电压需在4v以上,而spy0030仅需2.4v (两颗电池)即可工作;lm386输出功率100mw以下,spy0030约700mw。图4.4 放音电路4.2.5 总电路原理图和实物图图4.5 数据采集原理图图4.6 spce061a图4.7 实物图连接如图4.7所示,该实物图温度采集部分由于mfd50234热敏电阻没买上,用5k的电阻代替与固定电阻r串联,5k电阻由一个4.7k和300串联组成,如果结果播出25c,那么说系统设计成功。在选择热敏电阻的时候,曾考虑了利用铂电阻pt100,其在0100c度范围内的电阻100138.51,电阻变化相对比较小,需要电桥电压转换,运算放大器的放大。5 软件设计在单片机应用系统的开发中,软件的设计是最复杂和困难的,大部分情况下工作量都较大,特别是对那些控制系统比较复杂的情况。如果是机电一体化的设计人员,往往需要同时考虑单片机的软硬件资源分配。下面将详细介绍语音播报温度计的软件设计过程。5.1 总体设计本设计为语音播报温度计,设计采用凌阳spce061a单片机作为处理器。该单片机是一款16位结构的微控制器,有较高的处理速度。温度传感器选用的是负温度系数热敏电阻,该热敏电阻温度特性曲线线性化较好的一段是在2080,因此设计出的温度计测量范围就是2080。系统在凌阳spce061a单片机的基础上扩展了一个按钮,接于凌阳spce061a单片机的ioa15,当按下按钮时,系统采集温度,计算并换算出温度值播报出来。要实现该设计,还得有软件的支持,对本设计的程序编写选用的是c语言和凌阳汇编。c的编译器把c语言代码编译为汇编代码,汇编编译器对汇编代码进行编译成为目标文件。链接器将目标文件、资源文件连接成整体,形成一个可在芯片上运行的可执行文件。图5.1 代码流动结构示意nsp的汇编指令只有单字和双字两种,其结构紧凑,且最大限度地考虑了对高级语言中c语言的支持。另外,在需要寻址的各类指令中的每一个指令都可通过与6种寻址方式的组合而形成一个指令子集,目的是为增强指令应用的灵活性和实用性。而算逻运算类指令中的16位16位的乘法运算指令(mul)和内积运算指令(muls),又提供了对数字信号处理应用的支持。此外,复合式的移位算逻操作指令允许操作数在经过alu的算逻操作前可先由移位器进行各种移位处理,然后再经alu的算逻运算操作。本设计的程序大体框架如图6.2所示语音播报温度计键盘扫描a/d转换温度计算语音处理温度播报系统初始化图5.2 语音播报温度计程序模块各个模块之间通过主程序调用连接在一起,图5.3为程序结构。系统主程序系统资源模块系统初始化a/d转换键 盘扫 描系统时 钟中 断初始化a/d四次a/d转化 图5.3 程序结构图5.2 详细设计在确定了写程序所用的语言后,正式进入程序的编写,下面是关于详细设计的具体介绍。5.2.1 流程图总体程序流程图开 始系统初始化四次a/d转换温度a/d采样a/d转化初始化播报实时温度温度计算播报温度超出键盘扫描有按键吗温度超出 y n n y图5.4 总体程序流程图各个模块流程图如下:1键盘扫描流程图图5.5 键盘扫描程序2a/d转换流程图图5.6 a/d转换流程图3温度计算流程图 数据采集数据上传开 始温度计算结 束图5.7 温度计算流程图4温度播报流程图采集温度值开 始寻找语音文件温度播报结 束图5.8 温度播报流程图5.2.2 编程实现一个优秀的单片机程序设计人员,设计的软件程序结构是合理、紧凑和高效的。同一种任务,有时用主程序完成是合理的,但有时需子程序执行效率最高,占用cpu资源最少。一些要求不高的中断任务或单片机的速度足够高,可以使用程序扫描查询也可以用中断申请执行,这也要具体的问题具体分析。对于多中断系统,但它们存在矛盾时,需区分轻重缓急,主要和次要的区别对待。并适当地授权予不同的中断优先级别。在单片机的软件设计中,任务可能也很多,程序量很大,这种情况下一般都需把程序分成若干个功能独立的模块,这也是软件设计中常用的方法,这也即俗称的“化整为零”的方法。理论和实践都证明,这种方法是行之有效的。这样可以分阶段地对单个模块进行设计和调试,一般情况下单个模块利用仿真工具即可将它们调试好,最后再将它们有机的联系起来,构成一个完整的控制程序,并对它们进行联合调试即可。对于复杂的多任务实时控制系统,要处理的数据就非常庞大,同时又要求对多个控制对象进行实时控制,要求对各控制对象的实时数据进行快速的处理和响应,这对系统的实时性、“并行性”提出了更高的要求。这种情况下一般要求采用实在时地任务操作系统,并要求这个系统具备优良的实时控制能力。基于以上几点,我编写了以下几部分语音播报温度计的程序:1.主程序main.c :#include a2000.h#define rsp_current_temp 00 /现在温度是#defin

温馨提示

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

评论

0/150

提交评论