红外测温计
2012-08-12

摘要:SPCE061A是台湾凌阳公司生产的十六位单片机,该单片机内置有2路DA转换,8路AD转换及在线仿真等丰富的功能,这些都为我们实现具备语音播报功能的红外测温计提供良好的方便条件,红外测温打破了传统的测温模式,并且具备回应速度快、测量精度高、测量范围广和可同时测量环境温度和目标温度的特点,测量距离达30米。

关键词:红外测温SPCE061A

1 引言

去年在我国局部地区流行的SARS前期症状是高烧38oC以上(少数长期病患者除外),红外测温仪可为防止SARS的扩散和传播提供了快速、非接触测量手段,可广泛、有效地用于人群的体温排查。一时红外测温在我国迅速红火起来,这里介绍一种采用SPCE061A和TN系列传感器实现红外测温的方法。

2 芯片特性简介

SPCE061A是台湾凌阳公司生产的性价比很高的一款十六位单片机,使用它可以非常方便的实现控制和语音播报的系统,该芯片拥有8路10位精度的AD,其中1路AD为音频转换通道,并且内置有自动增益电路。这为实现语音录入提供了方便的硬件条件。2路10位精度的DA,只需要外接2个功放(LM386)即可完成语音的播放。另外,凌阳十六位单片机具有易学易用的效率较高的一套指令系统和集成开发环境。在此环境中,支持标准C语言,可以实现C语言与凌阳汇编语言的互相调用,并且,提供了语音录放的库函数,只要了解库函数的使用,就会很容易完成语音播报,这些都为软件开发提供了方便的条件。

3 系统总体方案介绍

系统结构图如下:

图1.1总体结构图

本系统包括按键部分、音频输出部分和TN红外测温传感器接入等三部分。

按键部分:按键开始测温,一直按下,听到声音表示测温完毕。

音频输出部分,主要是将SPCE061A两路音频输出端通过LM386放大,经喇叭播放。

TN红外测温传感器接入部分:通过SPCE061AIO口的控制,将将所测得的温度接受到SPCE061A中来处理。

系统实现的功能:按住按键,听到声音,此时播报测得的环境温度和目标温度。

4 系统硬件设计

红外测温传感器如图4.1所示。

图4.1红外测温传感器尺寸图

红外测温模块与SPCE061A的接口如下:

V-->3.3v

D-->IOA15

C-->IOB8

G-->GND

A-->按键-->GND

音频输出部分详细电路图如图4.2

图4.2音频输出部分电路原理图

5 系统软件设计

本系统软件设计流程如下:

图5.1总体流程图

其中,SPCE061A读取红外传感器的测量结果,是采用SPI接口进行读取,其中数据格式如下:

SPI时序图:

图5.2SPI接口与SPCE061A的时序图

一帧数据包括5Byte,每个Byte代表含义如下:

Item“L”(4CH):代表此帧为目标温度

“f”(66H):代表此帧为环境温度

MSB8bitDataMsb

LSB8bitDataLsb

SumItem+MSB+LSB=SUM

CR0DH,结束码

读取数据流程图如图5.3:

图5.3读取数据流程图

本软件系统设计简单。主要是因为凌阳的十六位单片机开发环境使用方便,并支持C语言与汇编语言的互相调用,且提供丰富的凌阳语音函数库,只要我们了解这些函数的使用方法,我们就可以很容易的实现语音的播放。本系统采用S480压缩格式,该压缩算法压缩比较大80:3,存储容量大,音质介于A2000和S240之间,适用于语音播放。例如播放部分代码如下:

其相关API函数如下所示:

intSACM_S480_Initial(intInit_Index)//初始化

voidSACM_S480_ServiceLoop(void)//获取语音资料,填入译码队列

voidSACM_S480_Play(intSpeech_Index,intChannel,intRamp_Set)//播放

voidSACM_S480_Stop(void)//停止播放

voidSACM_S480_Pause(void)//暂停播放

voidSACM_S480_Resume(void)//暂停后恢复

voidSACM_S480_Volume(Volume_Index)//音量的控制

unsignedintSACM_S480_Status(void)//获取模块的状态

CallF_FIQ_Service_SACM_S480//中断服务函数

各函数具体内容如下:

1)【API格式】

C:intSACM_S480_Initial(intInit_Index)

ASM:R1=[Init_Index]

CallF_SACM_S480_Initial

【功能说明】SACM_S480语音播放之前的初始化。

【参数】Init_Index=0表示手动方式;Init_Index=1则表示自动方式。

【返回值】

0:代表语音模块初始化失败

1:代表初始化成功。

【备注】该函数用于对定时器、中断和DAC等的初始化。

2)【API格式】

C:voidSACM_S480_ServiceLoop(void)

ASM:CallF_SACM_S480_ServiceLoop

【功能说明】从资源中获取SACM_S480语音资料,并将其填入解码队列中。

【参数】无。

【返回值】无。

【备注】播放语音文件中数据,当出现FFFFFFH数据时便停止播放。

3)【API格式】

C:intSACM_S480_Play(intSpeech_Index,intChannel,intRamp_Set);

ASM:R1=[Speech_Index]

R2=[Channel]

R3=[Ramp_Set]

CallSACM_S480_Play

【功能说明】播放资源中SACM_S480语音。

【参数】Speech_Index表示语音索引号。

Channel:1.通过DAC1通道播放;2.通过DAC2通道播放;3.通过DAC1和DAC2双通道播放。

Ramp_Set:0.禁止音量增/减调节;1.仅允许音量增调节;2.仅允许音量减调节;3.允许音量增/减调节。

【返回值】无。

【备注】

①SACM_S480的数据率有4.8Kbps\7.2Kbps三种,可在同一模块的几种算法

中自动选择一种。

②Speech_Index是定义在resource.inc文件中资源表(T_SACM_S480_SpeechTable)的偏移地址。

③中断服务子程序中F_FIQ_Service_SACM_S480必须放在TMA_FIQ中断向量上(参见SPCE的中断系统)。

④函数允许TimerA以所选的的数据采样率(计数溢出)中断。

SACM_S480自动方式主程序流程见:

图5.4S480自动播放流程图

6 结语

凌阳公司的SPCE061A的结构特点及其相关的一些开发平台为我们控制和播放提供了极其方便的条件,当然SPCE061A还有很多的类似于其他方面的单片机所具有的功能,使用起来同样方便。随着市场竞争的激烈,开发者对产品开发的资金和时间的投入不断缩小,相信凌阳科技能实现开发者们的需求。


可能会用到的工具/仪表
相关文章
推荐文章
热门文章
章节目录
本站简介 | 意见建议 | 免责声明 | 版权声明 | 联系我们
CopyRight@2024-2039 嵌入式资源网
蜀ICP备2021025729号