摘 要:针对水银温度计不便读数、响应速度慢、在普通家庭中使用面狭窄的特点, 提出了数码语音温度计的设计方案。选择不锈钢封装的DS18B20作温度传感器、ISD1720进行语音录放、STC89C52单片机进行温度信号采集、数据处理和语音回放控制, 构建了实际的电路系统。实验表明, 该数码语音温度计测量范围为0~ 99. 9 ℃, 显示分辨率为0. 1℃ , 误差不大于 0. 5℃ , 测温速度快, 读数方便, 语音清晰, 语音播报间隔时间可调, 可广泛应用于家庭或需要温度语音提示的场合。
0 引 言
温度测量在人们的日常生活中扮演着重要的角色,当人们感到身体不适时, 通常需要测量体温; 家中的婴儿或病人吃的流质食物, 给婴儿准备的洗澡水等, 都需要事先感测温度, 温度过高或过低都会对病人或婴儿造成危害。目前便宜的体温计在家中广泛使用, 但其通常只用于测量体温, 量程小、最大42℃ ;读数不方便, 特别是老年人视力不好, 不容易读准确; 在测量体温以外的情况下不便使用, 并且破损后水银泄漏对身体会造成危害等, 一些国家已开始禁止销售水银温度计; 非接触式的红外测温仪虽然方便使用, 但价格昂贵。文献[ 3] 介绍了一种用于工业应用的数字温度计设计方法,文献[ 4-5] 分别介绍了采用具有语音处理功能的单片机和语音芯片设计温度计的方法, 但是在仪器的小型化、使用方便性以及成本等因数影响下, 在一般家庭不容易推广, 并且其核心技术也没有公开。因此, 研制一种使用方便、既能数码显示又能语音提示, 价格便宜, 应用场合广泛, 特别适合家庭使用的温度测量仪器, 具有重要的实用价值。
1 系统方案设计
1. 1 系统的工作原理
单片机对温度传感器的信号进行采集,采集的数据通过处理后一方面输出给数码管进行显示,另一方面输出给语音模块, 进行语音温度提示, 语音提示的间隔时间通过拨挡开关进行设定, 也可以关断语音功能。系统框图如图1 所示。
图1 系统的方案框图
1. 2 系统硬件设计
1. 2. 1 温度传感器
采用数字温度传感器DS18B20, 该产品采用美国DALLAS公司生产的可组网数字温度传感器芯片, 体积小, 使用方便, 封装形式多样, 适用于各种狭小空间数字测温和控制领域; 由于项目要求能测量液体温度、方便人体接触等, 因此采用外加不锈钢保护管的封装形式, 具有耐磨耐碰、防水等功能。DS18B20 在与微处理器连接时仅需要一条口线即可实现双向通信, 可测温范围: - 55~ + 125℃ , 可编程为9~ 12 位A/ D 转换精度, 测温分辨率可达0. 062 5℃ 。被测温度用符号扩展的16 位数字量方式串行输出; 其工作电源既可在远端引入, 也可采用寄生电源方式产生; 多个DS18B20 可以并联到3 根或2 根线上, CPU 只需一根端口线就能与诸多DS18B20 通信, 占用微处理器的端口较少, 可节省大量的引线和逻辑电路; 连接电路如图2 所示:
图2 传感器的连接图
图2 中传感器的2 脚与单片机的输入/ 输出( I/ O)脚连接, 进行双方通信, 采用4. 7 k 的电阻上拉。由于DS18B20 单线通信功能是分时完成的, 系统对它的各项操作必须严格按协议进行。操作协议为: 初始化DS18B20( 发复位脉冲) →发ROM 功能命令→发存储器操作命令→处理数据, 各项操作都有严格的时序要求。
1. 2. 2 单片机
采用与MCS51兼容的STC89C52, 具有8K 字节的在系统可编程Flash存储器, 其MOSI、MISO、REST、SCK 等引脚通过锁存后与计算机的并口连接, 就可实现对内部的Flash 存储器编程, 内含512 B 的RAM, 32 个可编程I/ O口线, 3 个16 位的定时/ 计数器等特点, 可以为众多嵌入式控制应用系统提供高灵活、超有效的解决方案, 非常适合本项目的应用。
1. 2. 3 语音模块
采用美国华帮公司生产的高集成度、高性能的ISD1720 语音录放芯片, 采样率在4~ 12 kHz 之间调节, 根据采样频率的不同, 可以录存12~ 36 s 的语音信息, 语音信息在该芯片内部的固态多级存储阵列里按行存放, 可以通过指令中的11 位地址精确寻址; 该芯片集语音处理和存储于一体, 具有重复自开发, 掉电信息保存, 可工作于独立按键模式和SPI 控制模式, 录放结束自动进人低功耗状态, 可直接*输人或模拟通道输入,也可喇叭直接输出, 芯片工作电压2. 4~ 5. 5 V之间, 可以多段录音, 其基本存储单元入口地址范围是0X010~0X09F。应用电路如图3 所示。根据需要, 将录制的语音分成13 个段, 即“零~ 十、点、度”, 如37. 5 度, 播报为“ 三、十、七、点、五、度”, 每段语音的录制时间约为1. 35 s,由于录制时间不易精确掌握, 用手动控制的方式对13 段语音进行录制, 然后手动检查每段语音录制效果, 如图3 所示, 闭合S4 进行语音信息录制、松开即录制结束,语音信息通过MIC 录入, 触发S5 键进行播放, 检查当前录制信息段的效果, 在录制或者播放的过程中, 可以通过LED 的闪烁来了解操作的进程; 如果某段语音录制效果不理想, 必须及时删除, 因为在手动控制方式下, 删除操作只对开始一段和最末一段信息有效; 录制完成后, 还必须检查每段信息在器件的存储体系中是否是按环形结构存储的, 这可以通过闭合S5 并保持来实现, 此时, 器件将按顺序不停的播放当前信息段与其前一信息段之间的所有信息段, 通过反复录制, 直到满意为止; 当然, 也可以采用商业的录制设备来实现。
由该芯片内部的语音存放地址范围可知, 每段语音存放约11 行, 为了准确知道每段语音的入口地址和结束地址, 可以利用单片机检查。ISD1720 提供了4 线( SCLK, MOSI, MISO, SS) SPI 接口与单片机连接, 由于二者的SPI 时序不易协调, 系统采用了单片机的P1. 1, P1. 2, P1. 3, P1. 4 口模拟SPI 时序对ISD1720 进行控制。具体操作时, 器件初始化完成后, 发送PLAY指令, 器件从当前信息段的开始地址进行语音回放, 当遇到该段语音的结束标志EOM 时, 回放结束, 读取记录指针和回放指针的位置( 即查阅状态寄存器SR0 和SR1) , 这样可以精确的知道每段语音的开始地址和结束地址。由于系统正常工作时, 采用SPI 模式, 根据测量得到的温度值, 寻找到相应的语音段入口, 将语音信息读出; 在SPI 模式下, 该芯片的操作命令SET PLAY、S ET REC、SET??REASE 有一个先入先出的缓存器, 在相同类型的SET 命令下, 使得从一个存储块到另一个存储块之间可以实现无缝连接, 使人听起来感觉到输出的温度语音信号是连续的。图3 中S1 是复位按钮, S2 是快进按钮, S3 是檫除按钮, S6 是直通模式选择按钮, S7 进行音量调节; 以上开关按钮都是低电平有效; R4 是语音采样频率的选择电阻, 当其为80 k 时,语音录制的采样频率为8 kHz; 当不使用语音播报功能时, 可以将SW 开关断开, 同时语音播报的时间间隔通过单片机电路中的1 个三位的拨码开关选择, 可以设置8 个档位, 每个档位的时间参数由程序控制。
1. 2. 4 显示和电源模块
采用3 位LED 数码显示, 保留一位小数, 输出方式采用动态扫描形式, 选择单片机的两个端口经过驱动器后作为LED 的字段线和字位线, 减少输出的总电流; 为了便携式应用, 电源采用九伏电池供电, 通过LM7805降压为5 V 供系统各模块使用。布线和制作PCB 板时, 特别要注意地线的处理, 要求数字地、模拟地、以及扬声器的地都要单独走线, 最后与电源地连接。
1. 3 系统软件设计
系统的软件流程如图4 所示。
系统初始化后, 复位温度传感器, 启动温度转换, 读取温度数据, 进行处理, 当温度处于快速变化过程中时,系统不停的进行温度信号的采集和显示, 判断语音播报的间隔时间是否来到, 当满足要求时, 根据测得的当前温度值, 取出其十位、个位和小数位的值, 然后查表得其相应的语音信号入口地址, 复位语音芯片, 发上电指令并延时约25 ms, 判断是否已正常上电, 正常上电后, 要清除中断标志, 判断器件是否已准备好接收下一条指令, 当准备好后, 发送第一段信息的放音指令, 然后检查状态寄存器, 判断器件是否正常执行刚发送的指令, 正常执行后, 又判断器件是否已准备好接收下一条指令,只有等到器件已准备好后, 才能向器件发送下一条指令, 否则, 就可能造成指令的丢失。程序考虑了器件内部的FIFO 缓冲器, 使N 段语音信号就像一段语音一样进行播放, 每段语音之间几乎没有死区时间间隔。当语音播报完成后, 语音芯片失电, 完成一次语音播报, 程序回到系统的开始处, 准备下一个温度采集、处理、显示和语音输出过程, 如此不断循环往复。
2 结 语
采用语音提示和数码显示的方式设计的数码语音温度计, 精确度高、测温速度快; 应用场合广泛, 既可测量体温, 也可测量食物、水等物质的温度, 量程大; 操作使用方便, 不仅适合普通家庭也适合某些需要语音提示的工业现场生产应用。