DIY编程器网

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 848|回复: 0
打印 上一主题 下一主题

[温控] 红外测温计的设计

[复制链接]
跳转到指定楼层
楼主
发表于 2012-1-16 16:21:06 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
1 引言??? 去年在我国局部地区流行的SARS 前期症状是高烧38oC 以上(少数长期病患者除外),红外测温仪可为防止SARS 的扩散和传播提供了快速、非接触测量手段,可广泛、有效地用于人群的体温排查。一时红外测温在我国迅速红火起来,这里介绍一种采用SPCE061A和TN系列传感器实现红外测温的方法。 ?2 芯片特性简介??? SPCE061A是台湾凌阳公司生产的性价比很高的一款十六位单片机,使用它可以非常方便的实现控制和语音播报的系统,该芯片拥有8路10位精度的AD,其中1路AD为音频转换通道,并且内置有自动增益电路。这为实现语音录入提供了方便的硬件条件。2路10位精度的DA,只需要外接2个功放(LM386)即可完成语音的播放。另外,凌阳十六位单片机具有易学易用的效率较高的一套指令系统和集成开发环境。在此环境中,支持标准C语言,可以实现C语言与凌阳汇编语言的互相调用,并且,提供了语音录放的库函数,只要了解库函数的使用,就会很容易完成语音播报,这些都为软件开发提供了方便的条件。? 3 系统总体方案介绍??? 系统结构图如下:

本系统包括按键部分、音频输出部分和TN红外测温传感器接入等三部分。 按键部分:按键开始测温,一直按下,听到声音表示测温完毕。 音频输出部分:主要是将SPCE061A两路音频输出端通过LM386放大,经喇叭播放。??? ??? TN红外测温传感器接入部分:通过SPCE061A IO口的控制,将将所测得的温度接受到SPCE061A中来处理。 系统实现的功能:按住按键,听到声音,此时播报测得的环境温度和目标温度。 ? 4 系统硬件设计??? 红外测温传感器如图 4.1 所示。

红外测温模块与SPCE061A的接口如下:?? V-->3.3v ??? D-->IOA15 ?? C-->IOB8?? G-->GND ?? A-->按键-->GND ?? 音频输出部分详细电路图如图4.2
                          
                       
                          
                               

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

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

一帧数据包括5Byte,每个Byte代表含义如下: ??? Item “L”(4CH): 代表此帧为目标温度 ?? “f”(66H): 代表此帧为环境温度?? MSB 8 bit Data Msb?? LSB 8 bit Data Lsb ?? Sum Item+MSB+LSB=SUM?? CR 0DH,结束码??? 读取数据流程图如图5.3:


                          
                       
                          
                                本软件系统设计简单。主要是因为凌阳的十六位单片机开发环境使用方便,并支持C语言与汇编语言的互相调用,且提供丰富的凌阳语音函数库,只要我们了解这些函数的使用方法,我们就可以很容易的实现语音的播放。本系统采用S480压缩格式,该压缩算法压缩比较大80:3, 存储容量大,音质介于A2000和S240之间,适用于语音播放。例如播放部分代码如下: ??? 其相关API函数如下所示: int SACM_S480_Initial(int Init_Index) //初始化 void SACM_ S480_ServiceLoop(void) //获取语音资料,填入译码队列void SACM_ S480_Play(int Speech_Index, int Channel, int Ramp_Set) //播放 void SACM_ S480_Stop(void) //停止播放 void SACM_S480_Pause (void) //暂停播放 void SACM_S480_Resume(void) //暂停后恢复 void SACM_S480_Volume(Volume_Index) //音量的控制 unsigned int SACM_S480_Status(void) //获取模块的状态Call F_FIQ_Service_ SACM_S480 //中断服务函数 各函数具体内容如下: ??? 1)【API格式】??? C:int SACM_S480_Initial(int Init_Index) ??? ASM:R1=[ Init_Index] ???? Call F_ SACM_ S480_Initial ??? 【功能说明】SACM_S480语音播放之前的初始化。 ??? 【参 数】Init_Index=0 表示手动方式;Init_Index=1 则表示自动方式。 ??? 【返 回 值】??? 0:代表语音模块初始化失败 ??? 1:代表初始化成功。 ??? 【备 注】该函数用于对定时器、中断和DAC等的初始化。??? 2) 【API格式】??? C:void SACM_S480_ServiceLoop(void) ??? ASM:Call F_ SACM_S480_ServiceLoop ??? 【功能说明】从资源中获取SACM_S480语音资料,并将其填入解码队列中。 ??? 【参 数】无。???? 【返 回 值】无。 ??? 【备 注】播放语音文件中数据,当出现FF FF FFH数据时便停止播放。??? 3) 【API格式】??? C:int SACM_S480_Play(int Speech_Index, int Channel, int Ramp_Set);??? ASM:R1=[ Speech _Index] ???? R2=[ Channel] ???? R3=[ Ramp_Set]???? Call SACM_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自动方式主程序流程见:

6 结语??? 凌阳公司的SPCE061A的结构特点及其相关的一些开发平台为我们控制和播放提供了极其方便的条件,当然SPCE061A还有很多的类似于其他方面的单片机所具有的功能,使用起来同样方便。随着市场竞争的激烈,开发者对产品开发的资金和时间的投入不断缩小,相信凌阳科技能实现开发者们的需求。
                          
                       
                          
                               
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|文字版|手机版|DIY编程器网 ( 桂ICP备14005565号-1 )

GMT+8, 2024-5-3 11:20 , 耗时 0.083779 秒, 18 个查询请求 , Gzip 开启.

各位嘉宾言论仅代表个人观点,非属DIY编程器网立场。

桂公网安备 45031202000115号

DIY编程器群(超员):41210778 DIY编程器

DIY编程器群1(满员):3044634 DIY编程器1

diy编程器群2:551025008 diy编程器群2

QQ:28000622;Email:libyoufer@sina.com

本站由桂林市临桂区技兴电子商务经营部独家赞助。旨在技术交流,请自觉遵守国家法律法规,一旦发现将做封号删号处理。

快速回复 返回顶部 返回列表