ImageVerifierCode 换一换
格式:DOCX , 页数:28 ,大小:1.52MB ,
资源ID:10136739      下载积分:12 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/10136739.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(电子语音温度计的设计与实现.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

电子语音温度计的设计与实现.docx

1、电子语音温度计的设计与实现 电子语音温度计的设计与实现摘要本系统是一个基于单片机SPCE061A的语音温度计的设计,用来测量环境温度,整个设计系统分为4部分:单片机控制、温度传感器、液晶显示以及语音播报。整个设计是以SPCE061A为核心,选用凌阳Sensor Module V1.0测量温度,SPLC501液晶模组显示温度,且设定了手动实时播报温度功能。语音录放选用的集成块是SPY0030 芯片,其保真度高,录音效果好,而且经济实惠。关键词:SPCE061A;SPLC501;SPY0030Abstract This system is a microcontroller-based desig

2、n SPCE061A voice thermometer to measure the ambient temperature, the whole design of the system is divided into four parts: MCU control, temperature sensor, LCD and voice broadcast. The whole design is SPCE061A as the core, the choice of Sunplus Sensor Module V1.0 measure temperature, SPLC501 LCD mo

3、dule displays the temperature, and the temperature is set manually in real-time broadcast function. Manifold optional voice recording is SPY0030 chip, high fidelity audio is good, and affordable.Keyword: SPCE061A, SPLC501, SPY0030目 录1 绪论 52 系统硬件设计 52.1 整体硬件设计 52.2 SPCE061A主控MCU框图 52.3 LCD液晶显示 72.4 语

4、音播放电路原理图 82.5 电源模块 82.6 传感器模块 92.7主控板模块分析 92.8主控板电路原理图 102.9 硬件资源分配表 103软件设计 113.1 系统主程序设计 113.2 LCD液晶显示子程序流程框图 123.3 语音播放实现函数 123.4 测量温度子程序设计 134 设计实物图 144.1 实物模型 145 附件 155.1 电子语音温度计的主函数 155.2 温度测量子函数 165.3 中断子函数 19参考文献 23致谢 231 绪论21世纪是人类全面进入信息电子化的时代,现代信息技术的三大基础是信息采集(即传感器技术)、信息传输(通信技术)和信息处理(计算机技术)

5、。随着人类探知领域和空间的拓展,使得人们需要获得的电子信息种类日益增加,需要信息传递的速度加快,信息处理能力增强,因此要求与此相对应的信息采集技术传感技术必须跟上信息化发展的需要。传感器技术是人类探知自然界信息的触觉,为人们认识和控制相应的对象提供条件和依据。它属于信息技术的前沿尖端产品,尤其温度传感器被广泛用于工农业生产、科学研究和生活等领域,数量居各种传感器之首。近百年来,温度传感器的发展大致经历了以下三个阶段:(1)传统的分立式温度传感器 (含敏感元件);(2)模拟集成温度传感器控制器;(3)智能温度传感器。目前,国际上新型温度传感器正从模拟式向数字式、由集成化向智能化、网络化的方向发展

6、。作为现代信息技术的三大核心技术之一的传感技术,将是二十一世纪世界各国在高新技术发展方面争夺的一个重要领域。2 系统硬件设计2.1 整体硬件设计分析本题,根据设计要求我们确定了本系统的整体设计原理框图如下图所示。 图2.1 原理框图2.2 SPCE061A主控MCU框图SPCE061A 是继unSP(TM)3系列产品 SPCE500A等之后凌阳科技推出的又一款 16位结构的微控制器。与 SPCE500A 不同的是,在存储器资源方面考虑到用户的较少资源的需求以及便于程序调试等功能,SPCE061A 里只内嵌 32K 字的闪存(FLASH)。较高的处理速度使unSP(TM)能够非常容易地、快速地处

7、理复杂的数字信号。因此,与SPCE500A相比,以unSP(TM)为核心的SPCE061A微控制器是适用于数字语音识别应用领域产品的一种最经济的选择。SPCE061A芯片结构图如图2-2所示。图 2.2.1 SPCE061A芯片结构图SPCE061A 芯片特性如下: 16 位unSP(TM)微处理器; 工作电压(CPU)VDD为2.43.6V(I/O)VDDH为2.45.5V; CPU 时钟:0.32MHz49.152MHz; 内置2K字SRAM; 内置32KFLASH; 可编程音频处理; 晶体振荡器; 系统处于备用状态下(时钟处于停止状态),耗电仅为2A3.6V; 2个16位可编程定时器/计

8、数器(可自动预置初始计数值); 2个10位DAC(数-模转换)输出通道; 32位通用可编程输入/输出端口; 14个中断源可来自定时器A/B,时基,2个外部时钟源输入,键唤醒; 具备触键唤醒的功能; 使用凌阳音频编码SACM_S240方式(2.4K 位/秒),能容纳210秒的语音数据; 锁相环PLL振荡器提供系统时钟信号; 32768Hz实时时钟; 7通道10位电压模-数转换器(ADC)和单通道声音模-数转换器; 声音模-数转换器输入通道内置麦克风放大器和自动增益控制(AGC)功能; 具备串行设备接口; 具有低电压复位(LVR)功能和低电压监测(LVD)功能; 内置在线仿真电路ICE(In- C

9、ircuit Emulator)接口; 具有保密能力; 具有WatchDog功能。 2.3 LCD液晶显示本项目中LCD液晶显示器采用凌阳SPLC501液晶模组,该模组广泛用于小规模液晶显示器件,采用SPLC501A芯片作为其控制驱动器,集行、列驱动器和控制器于一体。其内置8580位显示RAM;晶振本身内置,也可以外接;为128*64点阵显示。单片机对SPLC501可以有2 种访问方式: 直接访问与间接访问。为简化程序,这里采用直接访问方式,微处理器可将显示数据通过8位数据总线或者串行接口写到SPLC501的显存中。下图是SPLC501模组的接线电路。图2.3.1 SPLC501液晶显示器接口

10、电路2.4 语音播放电路原理图十六位单片机SPCE061A一个很重要的特色,就是其语音。该语音播放电路的核心是通过音频放大芯片SPY0030进行语音放大。当按键按下时,语音信号通过此电路放大,提示当前温度。 图2.4.1 语音播放电路2.5 电源模块鉴于系统使用的单片机SPCE061A和各芯片工作电压在5V左右。我们选择了5V稳压电源给单片机和各芯片供电。电路由简单实用的三端稳压器构成,输入电压5V,满足大部分电路的要求,电源电路图如下图2.5.1所示,由于使用了全桥,电压输入既可以使用交流输入,又可以使用正负直流输入,能够防止由于极性接反造成的事故。滤波电容使用电解电容与小电容并联的方式,能

11、够有效消除高频自激现象。发光二极管接到电源与地之间,如果电源输出不正常,发光二极管都会出现工作异常,提示电源部分故障。图 2.5.1 电源电路图2.6 传感器模块 凌阳的Sensor module V1.0传感器模组是为方便学生进行单片机接口方面的学习专门设计的一个模块,它可以方便的和61板连接,涵盖了热、光、电等几大领域,可作为温度检测、温度控制,光线检测、遥控器解码及模拟遥控器实验等应用器件,其中温度/光线检测模块电路如图 2.6.1所示,电源电压经稳压管TL431稳压到2.5V,提供给由R8和热敏电阻R9组成的分压电路以及R10和光敏电阻R11组成的分压电路,热敏电阻R9分得的电压通过T

12、O输出,光敏电阻R11分得的电压通过LO输出。可以直接把SPCE061A单片机ADC的任一通道与TO或LO连接,利用单片机进行A/D转换,并计算出对应的温度。 图 2.6.1 温度测量电路图2.7主控板模块分析SPCE061A单片机是凌阳科技公司推出的一款十六位结构的微处理器,它只内嵌32K字的FLASH,具有较高的处理速度,能够非常容易地、快速地处理复杂的数字信号。SPCE061A最突出的特色就是它的语音处理功能。图2.8.1 SPCE061A实物图2.8主控板电路原理图图2.9.1 主控板电路原理图2.9 硬件资源分配表本设计主控板采用凌阳科技公司的SPCE061A,其硬件资源分配见下表:

13、CPU型号SPCE061A封装PLCC振荡器crystal频率32768HzRCR值外部输入频率WATCHDOG有 无启用 未启用复位时间:0.75sIO口使用情况使用情况IOA0IOA3(指示LED输出) ,IOB0IOB7(发送端、接收端):无线传输模块控制端IOA8IOA15 ,IOB4IOB6(接收端):液晶显示器剩余及处理方式未使用ADC使用情况MIC-IN通道、LINE-IN通道未使用中断使用情况用了1个中断TimerA :用于放音3软件设计3.1 系统主程序设计主程序是在程序运行的过程中必须先经过初始化,包括键盘程序,测量程序,以及各个控制端口的初始化工作。系统在初始化完成后就进

14、入读取温度测量程序,实时的测量当前的温度,得到温度后判断温度是否超过温度设置的上下限。再在LCD上显示。系统软件设计的总体流程图3.1.1所示。 3.1.1 主程序流程图3.2 LCD液晶显示子程序流程框图LCD液晶显示子程序为交互界面。主要是实时显示当前温度信息。当温度发生变化时,液晶上的显示会更新。LCD液晶显示子程序流程图如图3.2.1所示。 图3.2.1 LCD液晶显示子程序流程图3.3 语音播放实现函数由于语音资源存储在外廓的存储器SPR4096上面,要实现语音播放必须采用手动方式。需要获得语音资源,关键解决语音资源的起始地址,然后通过读取函数获得语音资源。函数流程图如图 3.3.1

15、所示:图3.3.1 语音播放函数子流程图 3.4 测量温度子程序设计由于在整个语音温度计的设计中是以正确采集温度为前提的,因为如果温度采集不正确,那么即使后续电路如显示和报温电路均正确,最后的结果仍然不能达到我们所要的目标,也就是不能正确的对环境温度进行显示和报温,所以关于温度采集是非常重要的。其测温子程序流程图如3.4.1所示。 图3.4.1 测温度子程序流程图4 设计实物图4.1 实物模型在整个模拟设计过程中,实物模型如下图所示,本设计包括四大模块,分别为主控制器模块、液晶显示模块、语音播报模块以及温度测试模块。 4.1.1整体实物模型 4.1.2 液晶显示图5 附件5.1 电子语音温度计

16、的主函数#include SPCE061A.h#includeSPLC501User.hextern void Key_Init(void); /键盘初始化函数,在Key.c中定义extern unsigned int KeyScan(void); /键盘扫描函数,在Key.c中定义extern unsigned int Temp_Measure(void); /温度测量函数,在Tem_Meature.c中定义extern void PlaySnd(unsigned int SndIndex); /申明语音播放指定段语音的函数extern void PlayData(unsigned int

17、iData); /申明语音播放某一个3位数字的函数 int main(void) unsigned int Key,Temp,Counter; /保存键值 int Flag = 1; Key_Init(); /键盘初始化 LCD501_Init(0); LCD501_ClrScreen(0); while(1) Temp = Temp_Measure(); /测量温度 LCD501_ClrScreen(0); LCD501_PutString(8,32,(unsigned int *)Temp Measure); LCD501_PutChar(8,48,48+Temp/100%10); LCD

18、501_PutChar(8,48,48+Temp/10%10); LCD501_PutChar(16,48,48+Temp%10); LCD501_PutString(32,48,(unsigned int *)Centigrade); LCD501_PutString(8,64,(unsigned int *)Thermograph); Key = KeyScan(); /键盘扫描,取键值 if(Key = 0x0004) /如果是KEY3键按下 Temp = Temp_Measure(); /测量并播放温度 if(Temp=0)|(Temp32) PlaySnd(13); /播放温度 Pl

19、aySnd(14); /播放太高 PlaySnd(16); /播放请 PlaySnd(18); /播放调小 PlaySnd(13); /播放温度 if(Temp20) PlaySnd(13); /播放温度 PlaySnd(15); /播放太低 PlaySnd(16); /播放请 PlaySnd(17); /播放调大 PlaySnd(13); /播放温度 *P_IOA_Data &= 0xfffb; /IOA2口回低电平 *P_Watchdog_Clear = 0x0001; /清看门狗 5.2 温度测量子函数 /文 件 名: Tem_Meature.c/功能描述: 温度测量驱动程序#inclu

20、de SPCE061A.hextern unsigned int ADGet(void); /申明热敏电阻上分到电压的A/D转换函数unsigned int ADData,Counter;float V125=1.576304,1.558983,1.541521,1.523924,1.506198,1.488351,1.470389,1.452319,1.434150,1.415889, 1.397544,1.379122,1.360632,1.342083,1.323481,1.304837,1.286158,1.267453,1.248731,1.230000, 1.230000,1.21

21、1269,1.192547,1.173842,1.155163,1.136519,1.117917,1.099368,1.080878,1.062456, 1.044111,1.025850,1.007681,0.989611,0.971650,0.953802,0.936076,0.918479,0.901017,0.883696, 0.866524,0.849505,0.832646,0.815952,0.799428,0.783080,0.766911,0.750927,0.735131,0.719528, 0.704121,0.688913,0.673907,0.659107,0.64

22、4514,0.630131,0.615961,0.602004,0.588263,0.574738, 0.561431,0.548342,0.535473,0.522823,0.510392,0.498181,0.486190,0.474417,0.462862,0.451525, 0.440405,0.429499,0.418808,0.408329,0.398061,0.388003,0.378152,0.368507,0.359066,0.349826, 0.340785,0.331941,0.323291,0.314834,0.306566,0.298485,0.290588,0.28

23、2873,0.275336,0.267976, 0.260789,0.253772,0.246923,0.240239,0.233717,0.227353,0.221146,0.215092,0.209187,0.203431, 0.197819,0.192348,0.187016,0.181821,0.176758,0.171826,0.167021,0.162341,0.157783,0.153345, 0.149023,0.144815,0.140719,0.136734,0.132852,0.129076,0.125401,0.121825,0.118346,0.114962, 0.1

24、11669,0.10847,0.105353,0.1023233,0.099378; /用来存放0125摄氏度对应热敏电阻分到的标定电压值/=/语法格式: void Temp_Init(void) /功能描述: 温度测量初始化/入口参数: 无/出口参数: 无/维护记录: 2006年6月27 by hongyan.Feng/=void Temp_Init(void) *P_IOA_Dir &= 0xfffe; /初始化IOA0(LINE1)为悬浮输入口 *P_IOA_Attrib |= 0x0001; *P_IOA_Data &= 0xfffe;/=/语法格式: unsigned int Tem

25、p_Measure(void) /功能描述: 温度测量,测量得到的数据存放在iTemp中,并语音播放这个数据/入口参数: 无/出口参数: 温度值/维护记录: 2006年6月27 by hongyan.Feng/=unsigned int Temp_Measure(void) unsigned int x,iTemp,Flag; /ADData用来存放A/D转换的数据,x用来循环,iTemp用来存放温度值 float iADData; /iADData用来存放转换后的电压数据 iADData = 0.0000; /初始化为0 Flag = 1; Temp_Init(); /端口初始化 *P_IN

26、T_Ctrl = 0x0010; _asm(int irq); while(Flag) if(Counter=10) _asm(int off); ADData = ADData/10; /取10次测量数据的平均值 iADData = iADData+ADData*3.3/0x03ff;/把A/D转换后数据计算成电压并进行累加 for(x=0;x125;x+) /查表,根据测量到的电压计算温度值 if(iADDataVx+1) iTemp = x; /保存温度值 *P_Watchdog_Clear = 0x0001; Counter = 0; ADData = 0; Flag = 0; *P_

27、Watchdog_Clear = 0x0001; /清看门狗 iTemp+=10; return iTemp; /返回温度值void Delay(unsigned int i) int m,n; for(m=0;mi;m+) for(n=0;n0x03ff;n+) *P_Watchdog_Clear = 0x0001;5.3 中断子函数 /文件名:isr.asm/功能描述:中断服务函数文件.INCLUDE SPCE061A.inc.INCLUDE s480.inc.EXTERNAL _ADGet /申明A/D转换函数,该函数在AD.asm文件中定义 .EXTERNAL _ADData /外部变量用来存储A转换D数据.EXTERNAL _Counter /外部变量用来存储电平的持续时间.TEXT/=/汇编语言格式:_BREAK/功能描述:BREAK的中断服务函数/ 如果需要,请在reti前面写用户的中断服务函数/入口参数:无/出口参数:无/=

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1