(整理)数字语音温度计设计方案

合集下载

具有语音播报功能的数字温度计设计

具有语音播报功能的数字温度计设计

具有语音播报功能的数字温度计设计摘要:本课题针对普通温度计无法播报、灵敏度低、读数不易识别等特点,提出了具有语音播报功能的数字式温度计的设计方案。

选用AT89C51为主控芯片进行温度信号采集、数据处理和语音播放等控制,选用DS18B20对环境温度进行采集,ISD1760进行语音存储与播放,通过ZLG7290实现按键控制,使用128*64液晶来显示温度,时钟芯片PCF8563实现定时功能,以上构建了硬件电路。

该语音温度计测量范围为-25~60℃,误差为±0.5℃,该语音温度计测温速度快,读数方便,语音清晰,语音可定时播报,可广泛用于家庭生活,工厂,实验室等场合。

关键词:AT89C51;语音播报;数字式温度计The design of digital thermometer with speech functionAbstract:The topic for the ordinary thermometer can’t broadcast, low sensitivity, reading is not easy to identify the characteristics, puts forward a design scheme of the digital thermometer with voice broadcast function. Using AT89C51 as the main control chip for temperature signal collecting, data processing and voice playback control, use DS18B20 to collect the environmental temperature, ISD1760 for voice storage and display, through the ZLG7290 to realization control of buttons, the use of 128*64 LCD to display the temperature, the clock chip PCF8563 to realize the timing function, all those set up the construction of the circuit system. The voice thermometer measuring range is -25 ~ 60 ℃, error is ±0.5 ℃. This kind of voice thermometer measurement temperature is fast, else broadcast is convenient, clear voice, and the broadcast can be timing, so this kind of thermometer can be widely used in families, factories, laboratories and other occasions.Key words: AT89C51; voice broadcast; digital thermometer目录第1章绪论 (1)1.1选题目的和意义: (1)1.2本课题在国内外的研究状况及发展趋势: (1)1.3 本课题主要讨论问题 (1)第2章方案选择与论证 (3)2.1系统的总体设计思路 (3)2.2核心控制CPU模块 (3)2.3温度采集模块 (4)2.4显示模块和键盘控制 (4)2.5语音播报模块 (5)2.6时钟芯片模块 (6)第3章系统硬件电路设计 (8)3.1核心控制CPU的介绍 (8)3.1.1 AT89C51的功能描述 (8)3.1.2 AT89C51管脚功能 (8)3.1.3 AT89C51系统资源的分配 (10)3.2温度传感器模块 (10)3.2.1 DS18B20的功能描述 (10)3.2.2 DS18B20的特点 (10)3.2.3 DS18B20的测温原理 (11)3.2.4 DS18B20与A T89C51的接口电路设计 (13)3.3语音播报模块 (13)3.3.1 ISD1760语音模块功能描述 (13)3.3.2 ISD1760各引脚功能描述 (14)3.3.3 ISD1760语音芯片录放音电路设计 (16)3.4显示电路 (18)3.4.1 LCD12864液晶模块的功能描述 (18)3.4.2 LCD12864液晶显示模块与A T89C51接口电路设计 (18)3.5键盘以及定时电路 (19)3.5.1 ZLG7290的功能描述 (19)3.5.2 ZLG7290的原理及硬件接口电路设计 (20)第4章系统的软件设计 (21)4.1系统的主程序设计 (21)4.2测量温度子程序 (22)4.3 ISD1760语音播报子程序 (23)结束语 (24)致谢 (25)参考文献 (26)附录1 总电路图 (27)附录2 系统主程序 (28)附录3 测量温度子程序 (29)附录4 ISD1760语音播报子程序 (30)附录5 英文文献原文及翻译 (31)第1章绪论1.1选题目的和意义:温度是一种最基本的环境参数,人民的生活与环境的温度息息相关,在工业生产过程中需要实时测量温度,在农业生产中也离不开温度的测量,因此研究合适的测温方法和测温装置具有重要的意义。

简易设计基于单片机的语音温度计

简易设计基于单片机的语音温度计

简易设计基于单片机的语音温度计一、引言随着科技的发展,单片机技术得到了广泛的应用,其在各个领域都有着重要的作用。

而语音识别技术也逐渐成为了人们生活中的一部分。

本设计将结合单片机技术和语音识别技术,设计一款语音温度计,旨在方便人们快速获取当前的环境温度。

二、设计思路本设计采用基于单片机的语音温度计,其主要思路如下:1. 温度传感器测量环境温度,并将数据传输给单片机;2. 单片机通过语音识别技术将温度数据转化为语音;3. 用户通过语音输入指令,可以实现温度的查询、设置等功能;4. 设计一个简洁的外观,操作简单、方便。

三、硬件设计1. 单片机选择本设计选用STM32单片机,其性能稳定、功能丰富,并且有着较强的扩展性,可以满足语音识别和温度测量的需求。

2. 温度传感器采用DS18B20数字温度传感器,其具有精度高、抗干扰能力强等特点。

3. 麦克风选择高灵敏度的麦克风模块,用于接收用户的语音指令。

4. 语音播放模块使用语音合成芯片,将单片机转化的文本数据转化为语音输出。

四、软件设计1. 温度测量通过单片机读取DS18B20传感器测得的温度数据,进行转换和处理。

2. 语音识别采用语音识别算法,将温度数据转化为语音输出。

用户可以通过语音指令查询当前温度。

3. 用户交互设计简单的用户界面,通过语音指令实现温度查询、设置等功能。

4. 状态显示通过LED等指示灯显示当前的工作状态,方便用户了解系统当前的状态。

五、功能设计1. 温度查询用户可以通过语音询问当前的温度情况。

2. 温度设置允许用户设置温度报警值,当温度超过设定值时,系统会通过语音提醒用户。

3. 语音反馈系统通过语音输出当前的温度数据,方便用户获取信息。

六、工作流程1. 系统初始化2. 温度传感器读取环境温度数据3. 单片机进行数据处理4. 语音识别模块将数据转化为语音5. 用户通过语音指令进行交互6. 系统通过语音反馈温度数据7. 用户根据语音提示进行操作七、结论本设计基于单片机和语音识别技术,设计了一款语音温度计。

简易设计基于单片机的语音温度计

简易设计基于单片机的语音温度计

简易设计基于单片机的语音温度计随着科技的不断发展,我们的生活变得越来越便利。

而在日常生活中,我们经常会需要测量温度,尤其是在烹饪、医疗、室内温度控制等方面。

为了更加方便快捷地测量温度,我们可以利用单片机和语音识别技术来制作一个简易的语音温度计。

一、设计思路在设计这个语音温度计的过程中,我们需要使用单片机来采集温度数据,并利用语音识别模块来实现语音交互功能。

我们需要选用一款适合的单片机模块,例如Arduino或者Raspberry Pi,这些单片机模块具有强大的功能和良好的扩展性,非常适合用来制作语音温度计。

我们需要选择一款合适的温度传感器,常用的有DS18B20数字温度传感器或者DHT11数字温湿度传感器,这些传感器可以通过数字信号输出当前的温度值。

我们还需要选用一款语音识别模块,例如语音识别模块V3,它可以实现语音的采集和识别功能。

设计思路可以简单总结为:单片机采集温度数据,语音识别模块实现语音交互功能,用户可以通过语音指令查询当前温度值。

二、硬件连接在实际操作中,我们首先需要将温度传感器连接到单片机模块上,然后再将语音识别模块连接到单片机模块上。

接下来,我们需要编写相应的硬件连接代码,使得单片机能够读取到温度数据,并实现与语音识别模块的通讯功能。

接下来是单片机的部分代码设计:```#include <OneWire.h>#include <DallasTemperature.h>#define ONE_WIRE_BUS 2OneWire oneWire(ONE_WIRE_BUS);DallasTemperature sensors(&oneWire);void setup(void){Serial.begin(9600);sensors.begin();}void loop(void){sensors.requestTemperatures();float temperatureC = sensors.getTempCByIndex(0);Serial.print("Temperature: ");Serial.print(temperatureC);Serial.println(" °C");delay(1000);}```这部分代码实现了单片机模块与温度传感器的连接,并可以实时读取温度数据并通过串口输出。

简易设计基于单片机的语音温度计

简易设计基于单片机的语音温度计

简易设计基于单片机的语音温度计
单片机语音温度计是一种利用单片机和语音模块设计的温度测量仪器。

它可以实时测量环境温度,并通过语音播报将温度数据告知用户。

该设计所需要的材料和器件有:一个单片机模块、一个温度传感器、一个语音模块、一个音频放大器以及一些电阻和连接线。

将温度传感器连接到单片机模块的ADC引脚上。

ADC引脚用于将模拟信号转换为数字信号,以便单片机能够读取温度传感器的数据。

接下来,将语音模块连接到单片机模块的IO口上。

通过IO口,单片机可以控制语音模块的播放和停止等功能。

然后,编写单片机的程序。

程序的主要功能是实时读取温度传感器的数据,并将数据转换为语音播放的格式。

可以根据需求,设计不同的语音播报内容,如“当前温度为XX摄氏度”。

在程序编写完成后,将程序下载到单片机模块上,并将整个电路连接好。

当电路连接完成后,该语音温度计就可以工作了。

用户只需要监测温度传感器所处的环境温度,温度数据会通过语音播报的方式告知用户。

单片机语音温度计是一种简单实用的温度测量仪器,具有方便、快捷的优点。

它可以广泛应用于家庭、办公室、工厂等场所,帮助用户及时获取环境温度信息。

简易设计基于单片机的语音温度计

简易设计基于单片机的语音温度计

简易设计基于单片机的语音温度计在我们现代生活中,温度计是一个非常常见的生活工具。

我们经常使用温度计来测量室内外的温度,以便我们可以根据温度变化来调节室内的温度、选择合适的衣物或者提前预防疾病。

而随着科技的发展,一些新的温度计开始出现,比如语音温度计。

本文将介绍如何基于单片机制作一个简易的语音温度计。

一、设计方案语音温度计的设计方案基于单片机,通过单片机来测量温度,并且通过语音合成模块将温度信息转化为语音输出。

具体来说,设计方案如下:1.温度传感器:使用一款数字温度传感器来测量环境的温度。

传感器有许多种选择,比如DS18B20、DHT11等都可以。

2.单片机:选择一款带有模拟输入输出端口和串口的单片机,比如Arduino、STM32等。

3.语音合成模块:语音合成芯片可以将数字信息转化为语音输出。

这里我们选择一个简易的语音合成模块,比如ISD1820。

4.输出设备:为了让用户可以听到语音输出,我们需要连接一个扬声器。

通过以上四个部分的组合,我们可以实现一个简易的语音温度计。

下面我们将详细介绍每个部分的具体实现和连接方法。

二、硬件设计1.连接温度传感器:将温度传感器的数据线连接到单片机的模拟输入端口,同时连接到单片机的VCC和GND端口。

在Arduino上连接DS18B20传感器需要使用OneWire库和DallasTemperature库,并通过编程获取温度值。

2.连接语音合成模块:将语音合成模块的数据线连接到单片机的串口,同时连接到单片机的VCC和GND端口。

在Arduino上控制ISD1820语音合成模块,我们需要使用对应的库来实现串口通信。

3.连接输出设备:将扬声器连接到语音合成模块的输出端口。

通过以上硬件设计,我们完成了整个语音温度计的硬件部分的搭建。

接下来我们需要着手进行软件的编程设计。

1.获取温度值:通过编程读取温度传感器的数值,并将其转化为摄氏度的数值。

2.语音合成输出:将得到的温度数值转化为对应的语音输出,并通过单片机控制语音合成模块进行语音播放。

简易设计基于单片机的语音温度计

简易设计基于单片机的语音温度计

简易设计基于单片机的语音温度计全文共四篇示例,供读者参考第一篇示例:在日常生活中,温度计是一种常用的测量温度的工具。

而随着科技的发展,基于单片机的温度计设计也成为了一种新的趋势。

今天,我们就来介绍一种简易设计基于单片机的语音温度计。

一、设计思路我们的语音温度计设计思路是利用单片机来读取温度传感器所采集到的温度值,并通过语音模块来将温度值转换成语音输出。

用户可以直接通过语音来获取当前温度,从而实现便捷的测温功能。

二、硬件设计在硬件设计方面,我们使用温度传感器来采集环境温度,并将采集到的数据传输给单片机进行处理。

我们还需要加入语音模块,将处理后的温度数据转换成语音输出。

整个设计中,单片机起着核心的作用,负责数据的处理和控制。

三、软件设计在软件设计方面,我们需要编写单片机的程序来实现温度数据的读取和处理,以及语音输出的控制。

具体来说,我们需要编写温度传感器的驱动程序和数据处理程序,以及语音模块的控制程序。

还需要考虑用户的交互设计,使得用户可以通过简单的语音指令来获取所需的温度信息。

四、功能实现通过以上的硬件和软件设计,我们实现了一款简易的基于单片机的语音温度计。

用户只需要触发语音模块,就可以通过语音输出得知当前的温度。

这种设计不仅减轻了用户的操作负担,还提升了测温的便捷性。

五、应用价值这种基于单片机的语音温度计具有广泛的应用价值。

在家庭生活中,用户可以轻松地获取室内外的温度信息,为生活提供便利。

在工业领域,可以用于监控生产环境的温度变化,保障生产的质量和安全。

这种设计还可以用于医疗领域,帮助医生和护士及时监测病人的体温。

基于单片机的语音温度计在实现简单的功能的也带来了便捷和实用的用户体验。

未来,随着科技的不断发展,更多基于单片机的智能温度计设计将不断涌现,为人们的生活和工作带来更多的便利和安全。

第二篇示例:简易设计基于单片机的语音温度计随着科技的不断发展,智能设备在人们生活中扮演着越来越重要的角色。

智能家居设备、智能手机等产品在人们的日常生活中起到了极大的便利作用。

智能语音报警数字温度计设计毕业设计论文

智能语音报警数字温度计设计毕业设计论文

南京工程学院毕业设计说明书(论文)作者:学号:208070534系部:通信工程学院专业:电子信息工程题目:智能语音报警数字温度计指导者:讲师(姓名) (专业技术职务)评阅者:(姓名) (专业技术职务)年 6 月南京摘要为在无人值守情况下实现对温度实时监测,并在温度超过设定范围时及时通知相关人员,设计了基于STC89C52单片机的智能语音报警数字温度计系统。

本设计课题是采用STC89C52单片机作为控制核心,对数字温度传感器DS18B20控制,读取温度信号并进行计算处理,分析并作出是否进行报警的判断,当测量温度超过设定的温度上下限时,控制语音芯片ISD1820自动报警。

整个设计系统分为5部分:单片机控制、温度传感器、液晶显示、语音报警以及键盘控制电路。

在此基础上将来可以大量投入实际应用中,当某路温度超限时,报警系统引入电话线路控制,拨打相关人员的电话,同时进行电话信号音检测,判断接听后将语音信号送入电话线路完成报警!该系统设计灵活,使用方便,报警迅速有效且成本较低,具有广泛的适用范围。

关键词:温度检测;液晶显示;语音播报;声光报警AbstractTo achieve real-time monitoring on unattended conditions in the temperature, and when the temperature exceeds the setting range promptly notify the relevant personnel, designed based on STC89C52 of Intelligent voice alarm digital thermometer system. STC89C52 is used in this graduation project as the core controller of digital ,controlling the digital temperature sensor DS18B20, read and calculate the temperature signal, then deals with it,, analysis and determine whether to alarm, when the measured temperature exceeds the set upper and lower limit temperature ,controls the chip ISD1820 to alarm. The designed system is divided into 5 parts: MCU control part, temperature sensor part, LCD display part, voice alarm and keyboard control circuit part.On this basis, this system could be used into many practical application in the future, when a channel temperature exceeds the setting range, the alarm system could be with the telephone line control, a telephone call related personnel, and determine to make the voice signal into the phone and answer the line to complete the alarm! the system is flexible, easy to use, fast and effective to alarm and low cost,with a broad scope of application.Key words:Temperature measurement; liquid crystal display; voice broadcast; sound and light alarm目录第一章绪论 (1)1.1引言 (1)1.2选题背景与意义 (1)1.3研究现状 (2)1.4论文主要研究内容 (3)1.5主要章节安排 (3)第二章主要芯片的原理及使用 (5)2.1STC89C52简介 (5)2.2DS18B20简介 (9)2.3ISD1820简介 (12)第三章语音模块的设计 ........................... 错误!未定义书签。

语音播报温度计设计说明

语音播报温度计设计说明
顺德职业技术学院毕业设计题目语音播报温度计院别电子与信息工程学院年级专业12级电子信息工程技术家电学生姓名尤荣彬指导教师冷碧晶答辩日期2015年6月7日顺德职业技术学院毕业设计论文任务书一毕业设计课题语音播报温度计二毕业设计内容和目标利用语音芯片和ds18b20温度传感器设计一款能自动测量温度并用语音播报出来同时用lcd显示实时温度的语音播报温度计用扬声器播放声音
指导教师:冷碧晶 教研室主任:昂勤树
目录(黑体四号加粗)
摘要
本设计是以STC89C52为核心,以数字温度传感器DS18B20来采集温度。同时,为了达到视觉与听觉的效果,分别采用LCD1602液晶显示器和ISD1420语音芯片,实现温度的显示和播报的功能。
因此,本设计主要有以下三模块,DS18B20作为温度数据收集模块,将实时温度这一模拟量直接转换成数字信号,送入单片机STC89C52进行分析处理,液晶显示器接收到单片机信号实现温度显示,而语音芯片则将数据转化为声音信号,通过扬声器进行播报温度。
硬件制作、焊接、测试。
9~12周
软件的调试
完成系统功能,调试系统运行的状况。
13~16周
软硬件的完善
对不完善的地方进行适当答辩。
六、备注:
1、本任务书一式三份,系、指导教师和学生各执一份;
2、学生须将此任务书按装订要求进行装订。
电子与信息工程学院 电子信息工程技术专业 12智能家电2班 同学:尤荣彬
STC89C52芯片为控制核心,STC89C52部具有8KB ROM 存储空间和512字节的数据存储空间,带有2K字节的EEPROM存储空间,与MCS-51系列单片机完全兼容,并且STC89C52可以通过串行口进行数据下载。
以数字温度传感器DS18B20来采集温度,测量温度围为:-20~110℃,它的供电方式简单,可用数据线供电,组成电路需要的外围器件较少,甚至不需要外围器件。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

2008级物理科学与技术学院电子信息工程学院课程设计作品设计方案课题:数字语音式温度计重庆西南大学电子信息工程学院指导老师:贺付亮组长:黄瑞瑞小组成员:徐红李刚2011年4月5日数字语音式温度计设计方案一、摘要本系统是以AT89S52为主控芯片,数字温度传感器采用DS18B20,语音芯片采用ISD4004,与单片机组成一个测温系统,当系统上电时,温度传感器DS18B20就会读出当前环境的温度,在四位LED显示管上显示出当前的温度的同时还利用语音芯片读出当前温度值,该系统测温范围为-55 ℃—125 ℃,测量精度为±0.1°C。

由键盘输入其上下限温度,当超过此温度时,即以语音报警提示。

具有结构简单,功能强大,可操作性强,且方便使用的优点。

关键词:AT89S52、DS18B20、ISD4004、LED、报警提示、方便使用二、方案选择方案1:采用热电偶温差电路测量温度,将一直温度端设为参考点,并测量该点电压,根据热电偶中间温度定理,就可以求出监测点温度。

数据采集部分则使用带有A/D 转换的单片机,在将随被测温度变化的电压或电流采集过来,进行A/D 转换后,就可以用单片机进行数据的处理,将结果送入显示模块。

热电偶电路图如下:方案2:采用数字温度计AD590和单片机AT89S51芯片,由AD590温度传感器测量当前的温度,经过A/D转换电路将结果输入到AT89S51,AT89S51单片机芯片对送来的测量温度读数进行计算和转换,将结果送入显示模块。

方案3:采用数字温度芯片DS18B20和单片机AT89S52芯片,该系统利用AT89S52芯片控制温度传感器DS18B20进行实时温度检测,将结果送入显示模块。

最终方案选择及理由:综上述三种方案经查询资料比较:第一种方案热电偶的工作温度范围非常宽,且体积小,但是线性误差较大,并且需要用到A/D 转换电路,设计过程较麻烦。

第二种方案测温范围较宽,但是也需要用到A/D 转换电路,设计过程较麻烦。

第三种方案使用的AT89S52为主控芯片,它较S51来说存储量更大,多出的定时器具有捕获功能,较AT89C系列具有更加强大的功能且价格相差不大。

数字温度芯片DS18B20 测量温度,输出信号全数字化,省去传统的测温方法的很多外围电路,而且该芯片的物理化学性很稳定,线形较好。

由数字温度计DS18B20和微控制器AT89S52构成的温度测量装置, 能够实现快速测量环境温度,并可以根据需要设定上下限报警温度,它能够直接输出温度的数字信号,可直接与计算机连接。

故本次设计采用了方案三。

三、系统硬件流程图本系统采用AT89S52单片机作为微控制器,分为5个模块(如下图所示):按键电路,测温电路, 驱动电路,LED显示电路,报警电路,语音电路。

选用DS18B20、ISD4004以及LM386芯片作为辅助芯片,完成数字语音式温度计的制作。

1、按键控制电路:此电路由5个中断按键组成,通过按键可分别输入被测温度的上下限值,其中按键的中断控制由芯片74LS08完成,74LS08的内部由四个与门组成以此来选通按键,以对温度上下限的警报值进行设定。

2、主控电路:本系统采用AT89S52芯片作为微控制器,用此芯片与数字传感器件DS18B20连接直接输出温度的数字信号,可直接与计算机连接。

这样,测温系统的结构就比较简单,体积也不大。

采用AT89S52 单片机控制,软件编程的自由度大,可通过编程实现各种各样的算术算法和逻辑控制,而且体积小,硬件实现简单,安装方便。

此外,AT89S52设计和配置了振荡频率可为0Hz 并可通过软件设置省电模式。

空闲模式下,CPU 暂停工作,而RAM 定时计数器,串行口,外中断系统可继续工作,掉电模式冻结振荡器而保存RAM的数据,停止芯片其它功能直至外中断激活或硬件复位。

AT89C52芯片引脚图3、测温电路:此系统的温度传感器采用DS18B20单线数字温度传感器,即“一线器件”,其具有独特的优点:(1)采用单总线的接口方式与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯。

单总线具有经济性好,抗干扰能力强,适合于恶劣环境的现场温度测量。

其与AT89S52连接图如下:(2)测量温度范围宽,测量精度高。

其测量范围为-55℃ ~+ 125℃;在-10~+ 85°C范围内,精度为±0.1°C。

(3)在使用中不需要任何外围元件。

(4)持多点组网功能多个DS18B20可以并联在惟一的单线上,实现多点测温。

(5)负压特性:电源极性接反时,温度计不会因发热而烧毁,但不能正常工作。

(6)掉电保护功能DS18B20内部含有EEPROM ,在系统掉电以后,它仍可保存分辨率及报警温度的设定值。

其内部结构如下:4、LED显示电路:为了使系统工作更加精确,故本系统采用四位数码显示管显示测量温度,第一位表示温度的正负值,第二、三位表示被测温度的整数部分,第四位表示小数部分。

如图所示为LED显示模块,通过单片机的连接控制来达到位选和断选的功能,其中4个三极管主要是起到开关作用,由单片机的P2.4—P2.7口控制其通断,已达到为选作用,而在基极接电阻主要是限制单片机的P2.4—P2.7口流出电流的大小,以减小单片机的功耗。

5、报警电路及语音输出电路:为了使此系统使用更加人性化,故在发挥部分加入了语音报数模块,当测量温度超过了事先设定的上下限温度值时,有语音模块进行报警操作,提示温度已超过上、下限温度。

同时语音模块还完成将当前所测量温度读出的功能,上述功能由ISD4004完成。

四、系统软件流程图1、主程序模块主程序需要调用5 个子程序,各模块程序功能如下:●数码管显示程序:向数码的显示送数,控制系统的显示部分。

●温度测试及处理程序:对温度芯片送过来的数据进行处理,进行判断和显示。

●报警子程序:进行温度上下限判断及报警输出,输出由语音芯片完成。

●中断设定程序:实现设定上下限报警功能。

●语音输出子程序:将测得的温度通过语音的方式读出来。

主程序流程见图如下:2、分别读DS18B20时序和写DS18B20时序流程图如下:五、 系统原理图:本系统采用AT89S52单片机作为微控制器,分为5个模块电路(如下图所示):按键电路,测温电路, 驱动电路,LED 显示电路,语音电路。

选用DS18B20、ISD4004以及LM4860芯片作为辅助芯片,完成数字语音式温度计的制作。

具体原理框图如下:六、系统源程序:1、温度传感与显示#include<reg51.h>#include<intrins.h>#include"config.h"sbit DQ=P3^3;sbit LAMP=P3^0;unsigned char time;unsigned char TN=0; //储存温度的整数部分unsigned char TD=0; //储存温度的小数部分unsigned char string[22]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x0,0x10,0xbf,0xff}; //数码管参数表unsigned int str[16]={0x0000,0x0010,0x0020,0x0030,0x0040,0x0050,0x0060,0x0070,0x0080,0x0090,0x0100, 0x0110,0x0120,0x0130,0x0140,0x0150}; //4004语音地址表unsigned char changeflag=0,selectflag=0,speakerflag=0,flag=1;signed char low=0,hight=50;void display(unsigned int x) //数码管显示程序{unsigned char i,j,temp0,temp1,temp2;switch(selectflag){case(0):{ if(flag==1)temp0=0xff;elsetemp0=0xbf;temp1=TN,temp2=TD;}break;case(1):{temp0=0x89;if(hight>=0){temp1=hight;temp2=21;}else{temp1=~hight+1;temp2=20;}}break;case(2):{temp0=0xc7;if(low>=0){temp1=low;temp2=21;}else{temp1=~low+1,temp2=20;}}break;}for(j=0;j<x;j++)for(i=0;i<5;i++){P2=0xfe; //1111 1110表示高电平输出P0=temp0;delay1ms();P0=0xff;P2=0xfd;P0=string[temp1/10];delay1ms();P0=0xff;P2=0xfb;if(selectflag==1||selectflag==2)P0=string[temp1%10];else P0=string[temp1%10+10];delay1ms();P0=0xff;P2=0xf7;P0=string[temp2];delay1ms();P0=0xff;P2=0xff;}}#include"isd.h"void Init_DS18B20(void) //18b20初始化{DQ = 1;for(time=0;time<2;time++);DQ = 0;for(time=0;time<200;time++);DQ = 1;for(time=0;time<10;time++);for(time=0;time<200;time++);}unsigned char ReadOneChar(void) //读18b20 {unsigned char i=0;unsigned char dat;for (i=0;i<8;i++){DQ =1;_nop_();DQ = 0;_nop_();DQ = 1;for(time=0;time<2;time++);dat>>=1;if(DQ==1)dat|=0x80;elsedat|=0x00;for(time=0;time<8;time++);}return(dat);}void WriteOneChar(unsigned char dat) //写18b20 {unsigned char i=0;for (i=0; i<8; i++){DQ =1;_nop_();DQ=0;DQ=dat&0x01;for(time=0;time<10;time++);DQ=1;for(time=0;time<1;time++);dat>>=1;}for(time=0;time<4;time++);}void ReadyReadTemp(void){Init_DS18B20();WriteOneChar(0xCC);WriteOneChar(0x44);display(35);Init_DS18B20();WriteOneChar(0xCC);WriteOneChar(0xBE);}void say(void) //语音报读温度{u8 x,y;x=TN/10;y=TN%10;play(0x0140,10);delay(20);play(str[x],5);delay(20);play(str[10],5);delay(20);if(y!=0)play(str[y],5);delay(20);play(0x0110,4);delay(30);play(str[TD],4);delay(30);play(0x0150,10);delay(50);}void main(void){unsigned char TL;unsigned char TH;unsigned char tltemp;s8 tem;EX0=1;IT0=1;EA=1;display(1);while(1){ReadyReadTemp();TL=ReadOneChar();TH=ReadOneChar();if((TH&0xf8)!=0x00){flag=0;TL=~TL;TH=~TH;tltemp=TL+1;TL=tltemp;if(tltemp>255) TH++;TN=TH*16+TL/16;TD=(TL%16)*10/16;}else{flag=1;TN=TH*16+TL/16;TD=(TL%16)*10/16;}display(10);if((tem-(s8)TN)>=2||((s8)TN-tem)>=2){if(speakerflag==0xff)say();tem=(s8)TN;}if(TN<low) //过温报警{if(LAMP==1){play(0x0130,10);}LAMP=0;}else if(TN>hight){if(LAMP==1){play(0x0120,10);}LAMP=0;}elseLAMP=1;}}void Init0(void) interrupt 0 //中断按键{unsigned char key=0xe0;signed char highttemp,lowtemp;display(1);key=key|P1;switch(key){case(0xfe):{if(selectflag==1){if(changeflag==0xff)hight=hight+5;elsehight++;}if(selectflag==2){if(changeflag==0xff)lowtemp=low+5;elselowtemp=low+1;if(lowtemp<hight)low=lowtemp;}}break;case(0xfd):{changeflag=~changeflag;}break;case(0xfb):{if(selectflag==1){if(changeflag==0xff)highttemp=hight-5;elsehighttemp=hight-1;if(low<highttemp)hight=highttemp;}if((selectflag==2)){if(changeflag==0xff)low=low-5;elselow--;}}break;case(0xf7):{selectflag++;if(selectflag==3)selectflag=0;}break;case(0xef):{speakerflag=~speakerflag;if(speakerflag==0xff)say();}break;}}2、ISD4004语音报警及报数头文件#ifndef __ISD4004_H__#define __ISD4004_H__#define uchar unsigned char#define uint unsigned int////////定义放音命令,定义常量//////#define ISDPOWERUP 0X20 //ISD4004上电#define ISDSTOP 0X10 //ISD4004下电#define OPERSTOP 0X30 //ISD4004停止当前操作#define PLAYSET 0XE0 //ISD4004从指定地址开始放音#define PLAYCUR 0XF0 //ISD4004从当前地址开始放音#define RECSET 0XA0 //ISD4004从指定地址开始录音#define RECCUR 0XB0 //ISD4004从当前地址开始录音sbit SCLK=P0^5;sbit SS=P0^6; //LOW IS ACTIVEL Ysbit MOSI=P0^7;void delayms(uchar ms);void delay1s(uchar j){uchar i,k;for(i=0;i<j;i++)for(k=0;k<5;k++)delayms(200);}////////////////放音部分子程序,放音地址由ADDR决定////void rec(uint addr,uchar time){ uint y;SS=0;MOSI=0;//发送开始SCLK=0;for(y=0;y<8;y++){SCLK=0;if((0x20>>y)&0x01)MOSI=1;else MOSI=0;_nop_();_nop_();_nop_();SCLK=1;_nop_();_nop_();_nop_();}//发送结束SS=1;//上电结束delayms(50);SS=0;MOSI=0;//发送开始SCLK=0;for(y=0;y<8;y++){SCLK=0;if((0x20>>y)&0x01)MOSI=1;else MOSI=0;_nop_();_nop_();_nop_();SCLK=1;_nop_();_nop_();_nop_();}//发送结束SS=1;//上电结束delayms(50);delayms(50);SS=0;MOSI=0;//发送地址SCLK=0;for(y=0;y<16;y++){SCLK=0;if((addr>>y)&0x01)MOSI=1;else MOSI=0;_nop_();_nop_();_nop_();SCLK=1;_nop_();_nop_();_nop_();}//发送地址结束MOSI=0;SCLK=0;for(y=0;y<8;y++){SCLK=0;if((0xa0>>y)&0x01)MOSI=1;else MOSI=0;_nop_();_nop_();_nop_();SCLK=1;_nop_();_nop_();_nop_();}SS=1;SS=0;MOSI=0;SCLK=0;for(y=0;y<8;y++){SCLK=0;if((0xb0>>y)&0x01)MOSI=1;else MOSI=0;_nop_();_nop_();_nop_();SCLK=1;_nop_();_nop_();_nop_();}SS=1;delay1s(time);SS=1;SS=0;MOSI=0;//放音SCLK=0;for(y=0;y<8;y++){SCLK=0;if((0x30>>y)&0x01)MOSI=1;else MOSI=0;_nop_();_nop_();_nop_();SCLK=1;_nop_();_nop_();_nop_();}SS=1;}void play(uint addr,uchar time) { uint y;SS=0;MOSI=0;//发送开始SCLK=0;for(y=0;y<8;y++){SCLK=0;if((0x20>>y)&0x01)MOSI=1;else MOSI=0;_nop_();_nop_();_nop_();SCLK=1;_nop_();_nop_();_nop_();}//发送结束SS=1;//上电结束SS=0;MOSI=0;//发送地址SCLK=0;for(y=0;y<16;y++){SCLK=0;if((addr>>y)&0x01)MOSI=1;else MOSI=0;_nop_();_nop_();_nop_();SCLK=1;_nop_();_nop_();_nop_();}//发送地址结束MOSI=0;//放音SCLK=0;for(y=0;y<8;y++){SCLK=0;if((0xe0>>y)&0x01)MOSI=1;else MOSI=0;_nop_();_nop_();_nop_();SCLK=1;_nop_();_nop_();_nop_();}SS=1;SS=0;MOSI=0;//放音SCLK=0;for(y=0;y<8;y++){if((0xf0>>y)&0x01)MOSI=1;else MOSI=0;_nop_();_nop_();_nop_();SCLK=1;_nop_();_nop_();_nop_();}SS=1;delay1s(time);SS=1;SS=0;MOSI=0;//放音SCLK=0;for(y=0;y<8;y++){SCLK=0;if((0x30>>y)&0x01)MOSI=1;else MOSI=0;_nop_();_nop_();_nop_();SCLK=1;_nop_();_nop_();_nop_();}SS=1;}//////////////////////////lu音部分子程序,地址由ADDR决定/////////////////////////////////////////////////////////////void press_key()void delayms(uchar ms){uchar j;while(ms--){for(j = 0; j < 120; j++);}}#end if////////////////////////////////七、八、设计体会经过一个多月的辛苦努力,我们小组终于完成了作品“数字语音式温度计”的设计。

相关文档
最新文档