单片机实验温度采集系统

合集下载

温度采集电子系统设计报告

温度采集电子系统设计报告

温度采集电子系统设计报告1. 简介本报告介绍了一个温度采集电子系统的设计。

该系统可以实时采集环境温度,并将数据传输到计算机进行处理和显示。

本报告将详细介绍系统的硬件设计和软件实现。

2. 硬件设计2.1 传感器选择为了实时采集温度数据,我们选择了一款精度高、响应快的温度传感器。

该传感器具有数字输出和I2C接口,能够方便地与单片机进行通信。

2.2 单片机选择我们选用了一款功能强大的单片机作为系统的主控芯片。

该单片机具有丰富的外设接口和强大的计算能力,能够满足系统的需求。

同时,该单片机还有丰富的开发资源和社区支持,使得开发过程更加便捷。

2.3 电路设计系统的电路设计主要包括传感器和单片机之间的连接电路和稳压电路。

传感器与单片机的连接采用了I2C接口,通过外部电阻进行电平转换和保护。

稳压电路采用了线性稳压芯片,确保供电电压的稳定性。

3. 软件实现3.1 硬件驱动为了与传感器进行通信,我们编写了相应的硬件驱动程序。

该驱动程序通过配置单片机的I2C接口,实现了与传感器的数据交换和控制。

3.2 数据采集与处理在软件实现中,我们使用了单片机的定时器和ADC模块来定期采集温度数据。

通过ADC转换,我们可以将模拟温度信号转换成数字信号。

随后,我们对这些数据进行滤波和校准,以获取准确的温度值。

3.3 数据传输与显示为了将采集到的温度数据传输到计算机,我们使用了串口通信。

通过配置单片机的UART模块和计算机的串口接口,我们可以实现数据的传输。

在计算机端,我们编写了相应的数据接收和显示程序,实现了温度数据的实时显示。

4. 实验结果与分析经过实验测试,系统能够准确、稳定地采集温度数据,并进行实时显示。

通过与其他温度计的比较,我们发现系统的测量误差在可接受范围内。

系统的响应速度也非常快,能够在短时间内实时更新温度数据。

5. 总结通过设计和实现温度采集电子系统,我们成功地实现了温度数据的实时采集和显示。

该系统具有稳定性高、响应速度快的特点,可以满足实际应用的需求。

温度监测系统实验报告

温度监测系统实验报告

一、实验目的1. 熟悉温度监测系统的基本组成和原理。

2. 掌握温度传感器的应用和数据处理方法。

3. 学会搭建简单的温度监测系统,并验证其功能。

二、实验原理温度监测系统主要由温度传感器、数据采集器、控制器、显示屏和报警装置等组成。

温度传感器将温度信号转换为电信号,数据采集器对电信号进行采集和处理,控制器根据设定的温度范围进行控制,显示屏显示温度信息,报警装置在温度超出设定范围时发出警报。

本实验采用DS18B20数字温度传感器,该传感器具有体积小、精度高、抗干扰能力强等特点。

数据采集器采用单片机(如STC89C52)作为核心控制器,通过并行接口读取温度传感器输出的数字信号,并进行相应的处理。

三、实验器材1. DS18B20数字温度传感器2. STC89C52单片机3. LCD显示屏4. 电阻、电容等电子元件5. 电源模块6. 连接线四、实验步骤1. 搭建温度监测系统电路,包括温度传感器、单片机、显示屏、报警装置等。

2. 编写程序,实现以下功能:(1)初始化单片机系统;(2)读取温度传感器数据;(3)将温度数据转换为摄氏度;(4)显示温度数据;(5)判断温度是否超出设定范围,若超出则触发报警。

3. 连接电源,启动系统,观察温度数据变化和报警情况。

五、实验结果与分析1. 系统搭建成功,能够稳定运行,实时显示温度数据。

2. 温度数据转换准确,显示清晰。

3. 当温度超出设定范围时,系统能够及时触发报警。

六、实验总结1. 本实验成功地搭建了一个简单的温度监测系统,实现了温度数据的采集、处理和显示。

2. 通过实验,加深了对温度传感器、单片机、显示屏等电子元件的理解和应用。

3. 实验过程中,学会了如何编写程序,实现温度数据的处理和显示。

七、实验建议1. 在实验过程中,注意电路连接的准确性,避免因连接错误导致实验失败。

2. 在编写程序时,注意代码的简洁性和可读性,便于后续修改和维护。

3. 可以尝试将温度监测系统与其他功能结合,如数据存储、远程传输等,提高系统的实用性和功能。

单片机 数据采集系统 实验报告

单片机 数据采集系统 实验报告

单片机数据采集系统实验报告1、被测量温度范围:0-120℃,温度分辨率为0.5℃。

2、被测温度点:2个,每5秒测量一次。

3、显示器要求:通道号2位,温度4位(精度到小数点后一位)。

显示方式为定点显示和轮流显示。

4、键盘要求:(1)定点显示设定;(2)轮流显示设定;(3)其他功能键。

设计内容:1、单片机及电源模块设计:单片机可选用AT89S51及其兼容系列,电源模块可以选用7805等稳压组件,本机输入电压范围9-12v。

2、存储器设计:扩展串行I2C存储器AT24C02。

要求:AT24C02的SCK接P3.2AT24C02的SDA接P3.42、传感器及信号转换电路:温度传感器可以选用PTC热敏电阻,信号转换电路将PTC输出阻值转换为0-5V。

3、A/D转换器设计:A/D选用ADC0832。

要求:ADC0832的CS端接P3.5ADC0832的DI端接P3.6ADC0832的DO端接P3.7ADC0832的CLK端接P2.14、显示器设计:6位共阳极LED显示器,段选(a-h)由P0口控制,位选由P2.2-P2.7控制。

数码管由2N5401驱动。

5、键盘电路设计:6个按键,P2.2-P2.7接6个按键,P3.4接公共端,采用动态扫描方式检测键盘。

6、系统软件设计:系统初始化模块,键盘扫描模块,数据采集模块,标度变换模块、显示模块等。

设计报告要求:设计报告应按以下格式书写:(1)封面;(2)设计任务书;(3)目录;(4)正文;(5)参考文献。

其中正文应包含以下内容:(1)系统总体功能及技术指标描述;(2)各模块电路原理描述;(3)系统各部分电路图及总体电路图(用PROTEL绘制);(4)软件流程图及软件清单;(5)设计总结及体会。

基于单片机的多点无线温度监控系统

基于单片机的多点无线温度监控系统

基于单片机的多点无线温度监控系统1. 引言1.1 背景介绍单片机是一种可以完成特定功能的微型计算机芯片,广泛应用于各种智能设备中。

随着物联网技术的不断发展,人们对于无线监控系统的需求也越来越大。

在很多场合中,需要对环境温度进行监控,以确保设备的正常运行和人员的安全。

传统的有线温度监控系统存在布线复杂、安装维护困难等问题,因此基于单片机的无线温度监控系统应运而生。

基于单片机的多点无线温度监控系统可以实现对多个监测点的温度数据实时监控和远程传输,极大地方便了用户对于温度的监测和管理。

通过该系统,用户可以随时随地通过手机或电脑等终端设备查看各监测点的温度情况,及时发现异常情况并进行处理。

这对于工业生产、医疗保健、农业种植等领域都具有重要的意义。

本研究旨在设计并实现一种基于单片机的多点无线温度监控系统,为用户提供便捷、高效的温度监测解决方案。

通过对系统架构设计、硬件设计、软件设计、无线通信协议等方面的研究,探讨系统在温度监控领域的应用前景和发展趋势。

【字数:239】1.2 研究意义温度监控在各种领域中都具有重要意义,例如工业生产、医疗保健、环境监测等。

随着科技的不断发展,人们对温度监控系统的要求也越来越高,希望能够实现实时、精准的温度监测。

基于单片机的多点无线温度监控系统的研究具有重要的实用价值和研究意义。

这种系统可以实现多点温度监测,可以同时监测多个位置的温度数据,实现对整个区域的全面监控。

这对于一些需要对多个点位进行监测的场景非常重要,能够提高监测的效率和准确性。

无线通信技术的应用使得温度数据的传输更加方便快捷。

不再需要通过有线连接来传输数据,可以实现远距离传输温度数据,大大提高了系统的灵活性和便利性。

通过研究基于单片机的多点无线温度监控系统,可以促进单片机技术与无线通信技术的结合,推动传感器网络技术的发展,为实现智能化、自动化的监控系统奠定技术基础。

这对于提高生产效率、降低能耗、改善生活质量等方面都具有重要意义。

基于单片机的智能体温检测系统设计

基于单片机的智能体温检测系统设计

基于单片机的智能体温检测系统设计摘要:由于新冠疫情的爆发给大众的生活带来了巨大变化,为了满足疫情条件下对温度快速测量的需求,采用无接触式测温既有效规避病毒传染风险,又可以第一时间检测疑似病例。

在此基础上添加口罩识别功能极大减轻了工作人员人工识别的负担,为防疫工作提供保障。

目前市场现有系统存在价格高以及不易携带的问题,并且目前市场应用的大部分装置都是单独的口罩识别或是无接触测温系统。

与之相比该系统将两种功能结合在同一系统中,具有体积小、便携、易操作等优点,为操作人员提供了极大便利。

此装置适用于学校、工厂、商场等人流密集场所,可以为进出人员提供检测服务。

人机交互式装置在疫情防控中发挥重要作用,节省人力物力,并且其效率远高于人工检测。

关键词:单片机;智能体温;检测系统;设计引言患新冠肺炎的主要症状是发热,因此体温检测是疫情防控的第一道防线。

以当今人流密集场所疫情防控情况为背景,设计并实现了一款基于STM32单片机的非接触式体温测量与身份识别系统。

该系统利用OPENMV对目标人脸进行快速检测,精准识别目标身份信息和口罩佩戴情况,利用MLX90614准确测量目标体表温度,实时将测量信息通过显示屏直观地展示并通过蓝牙发送到手机App上,实现系统逻辑结构的完整性与任务完成的效率最优解。

1系统的组成及其工作原理1.1系统的组成以单片机作为系统控制基础,利用传感器测量温度,通过通信和控制技术,形成温度测量控制系统。

具体可分为基于MLX90614红外测温传感器的温度检测模块、LCD12864液晶屏显示模块、4X4矩阵键盘模块、电源模块、复位模块、晶振模块、报警模块、继电器控制模块和震动传感器模块。

1.2系统工作原理该系统基于STC12C5A60S2单片机进行设计,包括电源电路、复位电路、晶振电路、红外测温传感器、震动传感器、LCD显示电路、蜂鸣器报警电路、键盘输入电路和继电器控制电路,通过MLX90614红外温度传感器实现温度数据的处理。

基于51单片机的温度检测系统_单片机C语言课题设计报告

基于51单片机的温度检测系统_单片机C语言课题设计报告

单片机C语言课题设计报告设计题目:温度检测电气系2011级通信技术一班级通信技术一班通才达识,信手拈来通才达识,信手拈来1摘要本课题以51单片机为核心实现智能化温度测量。

利用18B20温度传感器获取温度信号,将需要测量的温度信号自动转化为数字信号,利用单总线和单片机交换数据,最终单片机将信号转换成LCD 可以识别的信息显示输出。

基于STC90C516RD+STC90C516RD+的单片机的智能温度检测系统,的单片机的智能温度检测系统,设计采用18B20温度传感器,其分辨率可编程设计。

本课题设计应用于温度变化缓慢的空间,综合考虑,以降低灵敏度来提高显示精度。

设计使用12位分辨率,因其最高4位代表温度极性,故实际使用为11位半,位半,而温度测量范围为而温度测量范围为而温度测量范围为-55-55-55℃~℃~℃~+125+125+125℃,℃,则其分辨力为0.06250.0625℃。

℃。

设计使用LCD1602显示器,可显示16*2个英文字符,显示器显示实时温度和过温警告信息,和过温警告信息,传感器异常信息设。

传感器异常信息设。

传感器异常信息设。

计使用蜂鸣器做警报发生器,计使用蜂鸣器做警报发生器,计使用蜂鸣器做警报发生器,当温度超过当温度超过设定值时播放《卡农》,当传感器异常时播放嘟嘟音。

单片机C 语言课题设计报告语言课题设计报告电动世界,气定乾坤2目录一、设计功能一、设计功能................................. ................................. 3 二、系统设计二、系统设计................................. .................................3 三、器件选择三、器件选择................................. .................................3 3.1温度信号采集模块 (3)3.1.1 DS18B20 3.1.1 DS18B20 数字式温度传感器数字式温度传感器..................... 4 3.1.2 DS18B20特性 .................................. 4 3.1.3 DS18B20结构 .................................. 5 3.1.4 DS18B20测温原理 .............................. 6 3.1.5 DS18B20的读写功能 ............................ 6 3.2 3.2 液晶显示器液晶显示器1602LCD................................. 9 3.2.1引脚功能说明 ................................. 10 3.2.2 1602LCD 的指令说明及时序 ..................... 10 3.2.3 1602LCD 的一般初始化过程 (10)四、软件设计四、软件设计................................ ................................11 4.1 1602LCD 程序设计流程图 ........................... 11 4.2 DS18B20程序设计流程图 ............................ 12 4.3 4.3 主程序设计流程图主程序设计流程图................................. 13 五、设计总结五、设计总结................................. ................................. 2 六、参考文献六、参考文献................................. ................................. 2 七、硬件原理图及仿真七、硬件原理图及仿真......................... .........................3 7.1系统硬件原理图 ..................................... 3 7.2开机滚动显示界面 ................................... 4 7.3临界温度设置界面 ................................... 4 7.4传感器异常警告界面 (4)电气系2011级通信技术一班级通信技术一班通才达识,信手拈来通才达识,信手拈来3温度温度DS18B20 LCD 显示显示过温函数功能模块能模块传感器异常函数功能模块数功能模块D0D1D2D3D4D5D6D7XT XTAL2AL218XT XTAL1AL119ALE 30EA31PSEN29RST 9P0.0/AD039P0.1/AD138P0.2/AD237P0.3/AD336P0.4/AD435P0.5/AD534P0.6/AD633P0.7/AD732P2.7/A1528P2.0/A821P2.1/A922P2.2/A1023P2.3/A1124P2.4/A1225P2.5/A1326P2.6/A1427P1.01P1.12P1.23P1.34P1.45P1.56P1.67P1.78P3.0/RXD 10P3.1/TXD11P3.2/INT012P3.3/INT113P3.4/T014P3.7/RD17P3.6/WR 16P3.5/T115U180C51X1CRYST CRYSTAL ALC122pFC222pFGNDR110kC31uFVCCGND234567891RP1RESPACK-8VCC0.0DQ 2VCC 3GND 1U2DS18B20R24.7K LCD1LM016LLS2SOUNDERMUC八、程序清单八、程序清单................................. .................................5 一、设计功能·由单片机、温度传感器以及液晶显示器等构成高精度温度监测系统。

基于PIC单片机的温湿度采集实验系统设计

基于PIC单片机的温湿度采集实验系统设计
! = 鲍
CN1 2 —1 3 5 2 /N





第l 6卷
第 3期
2 0 1 3年 6月
L AB0RAT0RY S C I ENC E
Vo 1 . 1 6 No . 3 J un . 2 0 1 3
基于 P I C单 片机的温 湿度采集实验 系统设计
李成伟 ,张毅 刚 ,彭 鹏
( 哈 尔滨工 业 大学 电气 工程及 自动 化 学院 ,黑龙 江 哈 尔滨

1 5 0 0 0 1 )
要 :温湿度的 自动测量和显示记录是工业的一项 常规 监测项 目。以往 的人 工采集数 据 占用人 力资源 ,可
靠性低 ,容易发生差错 ,已经不适应工业化生产的要求 。采用 P I C微处理器作 为平 台的核心构建 系统 ,温湿 度采集器用 J WS L 一 2 A T采集外界温湿度值 ,由 P I C开 发板 的 A D采集模 块采集 ,通 过液 晶的实时显示 采集信
i n d u s t i r a l p r o j e c t s .P r e v i o u s l y , m a n u a l d a t a c o l l e c t i o n o c c u p i e d h u ma n r e s o u r c e s , t h e r e l i a b i l i t y o f t h i s
Ue.
Ke y wor d s: t e mp e r a t u r e a n d h u mi d i t y; d a t a a c q u i s i t i o n;PI C ;r e a l — t i me d i s p l a y

基于单片机的多路温度采集控制系统的设计

基于单片机的多路温度采集控制系统的设计

基于单片机的多路温度采集控制系统的设计一、系统设计思路1、系统架构:本系统的所有模块分为两个主要的部分:单片机部分和PC部分。

单片机部分是整个温度控制系统的中心模组,它负责多路温度传感器的信号采集、温度计算和显示,还有一些辅助操作,如温度上下限报警等;PC部分主要实现数据采集、分析、处理、显示等功能,与单片机的交互可通过RS485、USB等接口进行。

2、硬件设计:本系统设计确定采用AT89C52单片机作为系统的处理核心,在系统中应用TLC1543数据采集芯片,采用ADC转换器将多个温度传感器的数据采集,使系统实现多路温度检测同时显示.另外,为了实现数据采集记录,系统可以选用32K字节外部存储封装。

二、系统总控程序设计系统总计程序采用C语言进行编写,根据实际情况,主要分为以下几个主要的模块:(1)初始化模块:初始化包括外设初始化、中断处理程序初始化、定时器初始化、变量初始化等功能。

(2)温度采集模块:主要对多路温度传感器的采集、计算并存储等操作,还可以实现温度的报警功能。

(3)录波模块:提供数据的实时采集、数据的存取、数据的滤波处理等功能。

(4)通信模块:主要是用于实现数据透传,采用RS485接口与PC端的上位机联网,可实现远程调试、远程控制等功能。

(5)用户界面模块:实现数据显示功能,可以根据用户的要求显示多路温度传感器检测到的数据。

三、实验检验(1)检查系统硬件的安装是否良好;(2)采用实测温度值与系统运行的实测温度值进行比对;(3)做出多路温度信号的对比,以确定系统读取的数据是否准确;(4)检查温度报警功能是否可以正常使用,也可以调整报警范围,试验报警功能是否可靠;(5)进行通信数据采集的联网检测,确保上位机和系统可以进行实时、准确的通信。

单片机原理与应用实验报告——温度测量显示及设定

单片机原理与应用实验报告——温度测量显示及设定

《单片机原理与应用》课程实验报告院系:班级:学生:学号:指导教师:设计时间:哈尔滨工业大学1 实验的目的、内容和设备1.1 实验的目的单片机综合实验的目的是训练单片机应用系统的编程及调试能力,通过对一个单片机应用系统进行系统的编程和调试,掌握单片机应用系统开发环境和仿真调试工具及仪器仪表的实用,掌握单片机应用程序代码的编写和编译,掌握利用单片机硬件仿真调试工具进行单片机程序的跟踪调试和排错方法,掌握示波器和万用表等杆塔工具在单片机系统调试中应用。

1.2 实验内容实验的内容是利用APP001开发板实现一个温度测量显示和控制的单片机应用系统,利用APP001开发板上的温度传感器测量温度,通过键盘输入一个稳定设定值,当测量温度高于设定温度时发出声音报警,开启散热风扇开关,并在LCD上显示实时温度值,设定温度值和散热风扇的开关状态,其中日期和时间利用单片机的定时器来产生,并能通过键盘来设定。

通过该实验学习和掌握以下的内容:1)MPLAB开发环境的使用,程序编写和排错及软件仿真2)利用MPLAB和ICD2对程序进行在线仿真和调试3)使用万用表和示波器等仪器对硬件系统进行测量和调试4)PIC18F452单片机的I/O和PWM驱动及编程方法5)PIC18F452单片机LCD和键盘接口及编程方法6)PIC18F452单片机的USART编程及与PC机的通讯方法7)利用Timer1外接32.768kHz的晶振产生RTC1.3 实验设备1)运行MPLAB的PC机2)示波器、万用表3)直流电源4)ICD2仿真器5)APP001多功能实验板2 总体设计2.1 硬件总体设计系统组成方案图1系统框图2.2 软件总体设计图2主程序框图图3 中断程序框图3 硬件设计1)散热风扇开发输出控制:实验中我们利用一个LED来模拟风扇状态,当散热风扇开关打开时,LED被点亮发光,当散热风扇关闭时,LED不发光。

开发板上的指示灯D11由RB2,低电平亮,高电平灭。

单片机(基于AT89C51的温度采集与显示系统设计)

单片机(基于AT89C51的温度采集与显示系统设计)

基于AT89C51的温度采集与显示系统设计摘要:以AT89C51单片机为核心控制元件介绍了与DS18B20和MAX7219显示驱动组成的温度采集系统的设计方案利用单片机空余I/O口以及上述元件的特性,构成该系统。

通过Proteus进行仿真。

关键词:温度采集,AT89C51,DS18B20,MAX7219目录1、系统概述……………………………………………………………….2、硬件介绍……………………………………………………………….3、软件设计……………………………………………………………….4、仿真结果……………………………………………………………….5、小结…………………………………………………………………….6、参考文献……………………………………………………………….1、系统概述温度传感器选用目前常用的数字温度传感器DS18B20,采用数码LED显示,显示驱动为MAX7219,首先设计系统的总体原理图如下:系统可以简单地分为为5个模块,由外部提供8V-24V直流电源供电。

电源模块将输入8-24V的电源电压转换为5V,为系统中的芯片供电,可以使用7805等常用的三端稳压器芯片;温度传感器采集温度信号,温度传感器有模拟输出和数字输出两种形式,这里选择具有数字输出的DS18B20;单片机是系统的核心,选用AT89C51;系统采用LED数码显示器显示温度值,LED显示屏采用独立的显示驱动芯片MAX7219,单片机将待显示的字符写入MAX7219后,MAX7219将会动态的刷新显示内容,无需占用单片机过多的资源。

尽管DS18B20的分辨率可已达到0.0625°C,但测量精确度为0.5°C,因此设计4位数的LED数码显示管就可以了,显示3位整数,1位小数。

2、硬件介绍:1、数字温度传感器DS18B20DS18B20数字温度计提供9位-24位(二进制)温度读数,以指示器件的温度,数据经过单线接口送入DS18B20或从DS18B20送出,因此从主机CPU到DS18B20仅需要一条DQ。

c51单片机实验温度采集控制报告

c51单片机实验温度采集控制报告
LM75A可设置成工作在两种模式:正常工作模式或关断模式。在正常工作模式中,每隔100ms执行一次温度-数字的转换,Temp寄存器保存着最后一次更新的结果;但是,在该模式下,器件的I2C接口仍然有效,寄存器读/写操作纠结执行。器件的工作模式通过配置寄存器可编程位B0业设定。当器件上电或从关断模式进入正常工作模式时启动温度转换。
(一)试验要求
1、在数码管的第一、二个显示当前环境温度,第三、六个数码管熄灭,第四、五个数码管显示设定温度,第七、八个数码管显示电机转速;设定温度初值25,利用“+”“-”两个按键可以加减该温度数值,范围在16~30之间,按键按下蜂鸣器响0.2s。
2、根据设定温度和实际环境温度的温差驱动直流电机。设定温度等于环境温度,直流电机停转;设定温度和环境温度温差的绝对值越大,直流电机转速越快(要求最大转速控制在100以内)。
八、对本实验过程及方法、手段的改进建议
九、附录
温度采集控制实验程序
/*
main.c
LM75A数字温度计
*/
#include "I2C.h"
#include <reg51.h>
#include <string.h>
#include <absacc.h>
#include <CTYPE.H>
//定义显示缓冲区(由定时中断程序自动扫描)
3、I2C工作原理
1)I2C总线概述
I2C总线是PHLIPS公司推出的一种串行总线,是具备多主机系统所需
的包括总线裁决和高低速器件同步功能的高性能串行总线。
2)I2C信号线
I2C总线只有两根双向信号线。一根是数据线SDA,另一根是时钟线SCL。I2C总线通过上拉电阻接正电源。当总线空闲时,两根线均为高电平。连到总线上的任一器件输出的低电平,都将使总线的信号变低,即各器件的SDA及SCL都是线“与”关系。

基于单片机的温度采集系统的设计

基于单片机的温度采集系统的设计

基于单片机的温度采集系统的设计本系统选用AT89C52 单片机作为数据处理与控制单元,单片机控制数字温度传感器,把温度信号通过单总线从数字温度传感器传递到单片机上。

系统选用AT89S52 作为主处理器,LCD模块选用LM6029作为人机接口。

外围电路有数字温度传感器DS18B20 ,通过单片机进行温度数据的运算处理,竟单片机串口传输温度信息到PC机上,实现检测记录变化曲线。

标签:单片机;温度传感器;显示1 引言温度检测在工农业等场所占有重要地位。

对于环境检测和监控数据的分析,并且对于数据进行处理,显示数据/信息存储并做到实时控制非常必要。

随工业科技、农业科技的发展,温度检测来提高生产效率及产品质量的检测,能源节约等都有重要的作用。

本系统可被广泛的应用于温度实时显示和动态记录的温度检测系统中,对实现物联网应用方向的智能化有很好的应用价值。

2 温度采集系统的整体设计本设计采用STC89C52单片机作为数据处理与控制单元,首先单片机控制DS18B20数字温度传感器,把温度采集信号传送至单片机进行数据处理,单片机发出控制信息,在LCD上每隔一定时间进行动态显示温度信息。

温度的传输通过按键,从存储器中提取温度信息发送出去,并通过单片机串口送至PC机上,PC 机可通过串口调试软件接受现实数据。

总体硬件框图如图1。

3 温度采集系统硬件构成系统硬件包括单片机处理器、温度检测单元、温度储存单元、温度数据传输和显示部分(LCD 与按键)五个电路模块。

3.1 单片机控制器由于控制系统方案比较简单,数据处理量不大,考虑到经济性和可扩展性,选用AT89S52作为主控制器,AT89C52是一个低功耗,高性能CMOS 型单片机,内含8KB的Flash存储器和256 B的随机存储器(RAM),并有在系统可编码ISP 功能,兼容标准MCS-51指令系统,便于软件调试和程序修改,可以缩短系统设计开发时间。

3.2 数据存储单片机AT89C52 内有256个字节的RAM,高8位字节与特殊功能寄存器地址重复,进行分时复用。

基于51单片机的温度测量系统

基于51单片机的温度测量系统

目录摘要 (I)ABSTRACT (II)1 绪论 (1)1.1选题的背景 (1)1.2课题研究的目的和意义 (1)1.3本文的结构 (1)2 系统总体方案设计 (1)2.1总体方案设计 (2)2.2部分模块方案选择 (3)2.2.1单片机的选择 (3)2.2.2温度检测方式的选择 (3)2.2.3显示部分的选择 (4)2.2.4电源模块的选择 (4)3 硬件电路的设计 (4)3.1 硬件电路设计软件 (4)3.2系统整体原理图 (5)3.3单片机最小系统电路 (6)3.4单片机的选型 (7)3.5温度测量模块 (8)3.5.1 DS18B20概述 (8)3.5.2 DS18B20测温工作原理 (11)3.5.3 DS18B20温度传感器与单片机的接口电路 (12)3.6 显示模块 (13)3.7 按键以及无线遥控模块 (15)3.7.1按键的相关知识 (15)3.7.2 5伏带解码四路无线接收板模块 (16)3.8 报警及指示灯模块 (18)3.9 电源模块 (19)4 系统软件设计及仿真部分 (20)4.1软件设计的工具 (20)4.1.1程序编写软件 (20)4.1.2仿真软件 (21)4.2各模块对应的软件设计 (22)4.2.1显示模块的程序 (22)4.2.2温度测量的程序 (26)4.2.3报警系统程序 (32)4.2.4按键程序 (33)4.2.5总体程序 (35)5 实物制作 (37)5.1电源部分 (37)5.2单片机最小系统部分 (37)5.3 总体实物 (37)6 总结 (38)7 致谢 (39)参考文献 (40)附录一 (41)附录二 (49)基于单片机的温度测量系统摘要随着测温系统的极速的发展,国外的测量系统已经很成熟,产品也比较多。

近几年来,国内也有许多高精度温度测量系统的产品,但是对于用户来说价格较高。

随着市场的竞争越来越激烈,现在企业发展的趋势是如何在降低成本的前提下,有效的提高生产能力。

基于单片机的温度数据采集系统实验报告

基于单片机的温度数据采集系统实验报告

基于单片机的温度数据采集系统实验报告
班级:192202
姓名:张尧
学号:123241
指导老师:
一、实验目的
1、了解温度传感器电路的工作原理;
2、了解闭环控制的基本原理;
3、进一步熟悉A/D变换原理和编程方法;
4、进一步熟悉键盘、显示接口电路使用和编程方法;
5、掌握单片机应用系统硬件及软件的设计方法;
二、实验内容及要求
内容:①根据各自设计方案,选择并连接各小模块电路构成温度采集与控制的实验电路,编写并调试程序,实现对温度的采集、检测、进行控制计算等处理后输出显示。

②控制加热机构,实现温度闭环控制。

(选做)
③采用PID算法控制温度在一定值上,实现恒温控制。

(选做)
要求:实现对温度的采集、检测、进行控制计算处理后输出显示;其温度控制为开环控制,采用发光二极管亮时表示加热状态,灭时为不加热状态。

显示采用7279显示板实时显示温度值。

三、实验设计思路单片机温度采集与控制实验报告。

基于51单片机的温度数据采集系统

基于51单片机的温度数据采集系统

8 | 电子制作 2018年11月格的,比如:工厂在生产某一种产品时温度要求范围在25到30摄氏度之间,只有在这个温度范围内才可以生产出合格的产品,还有在进行某些科研实验时对温度的要求就会更加严格,有的精确到1摄氏度以内,甚至有的精确到0.5摄氏度以内。

因此我想设计一个“电子温度计”,基本功能是对温度的采集与显示。

在温度采集的设计上必须要A/D 转换,也就是将模拟信号转化为数字信号,因此我选择了DS18B20温度传感器模块,该模块不仅可以对温度进行实时测控,并且具有较高的灵敏度。

在数据的显示方面我选择了LCD1602显示模块,整个系统采用STC89C52单片机控制。

本设计在Altium Designer 上画出原理图,然后通过热转印制作PCB 板,完成硬件部分。

此次设计在大量科学知识的支持下具有较高的可行性和实用性。

1 系统工作原理该系统是在C 语言编程以及51单片机知识为基础上进行设计的,同时采用了DS18B20温度传感器模块以及LCD1602显示模块,利用KEIL 软件进行软件编程,将编写好的程序录入51单片机中,在51单片机的控制下实现温度数据的采集。

图1 系统整体结构框图整个实时数据采集系统满足以下功能指标:线和表格中。

2 硬件系统设计图2 总体系统结构此系统以STC89C52单片机为控制核心,采用了数字温度传感器模块DS18B20,该模块将采集到的温度数据转化为数字信号,并将信号传送给单片机,单片机处理数据后,通过LCD1602液晶显示器将温度显示出来。

在整个作品上首先提到的是硬件系统的设计,然后就是各个模块的工作原理以及工作特点,详细介绍系统的硬件设计,在给出系统的连接图,通过PROTEL 99SE 进行系统电路原理图的绘制,生成相应的PCB 板,并分析系统的工作原理,在软件方面对整体和各个模块的程序进行设计,在KEIL 中进行编写,在编写过程中如果出现理论错误,系统会给与提示,编程结束后也可手动调试来改正错误,或者修改程序功能。

温度数据采集系统设计

温度数据采集系统设计

温度数据采集系统论文目录一、问题的提出二、系统功能分析三、硬件设计1、单片机2、温度传感器3、压力传感器4、程控放大器5、多路模拟开关6、A/D转换器7、三态缓冲器8、LED显示数码管9、简易键盘10、声光报警器11、总电路图四、软件设计1.程序流程图2.程序设计五、结论一、问题提出设计一个以单片机为核心的数据采集系统对温度、压力等参数进行实时采集与处理性能指标:1)温度:0℃-120℃,超范围时声光报警。

2)温度检测精度:0.5℃3) 压力检测范围:0Pa—3.92×10^5Pa;4)压力检测精度:±1.96×10^3Pa5)用9位LED显示数值,其中4位显示温度值(3位整数,1位小数),1位显示温度代号T,1位显示压力代号,3位显示压力值6)每分钟检测一次7)A/D转换器(不带三态缓冲)二、系统功能分析本系统为温度压力数据采集系统。

系统需求功能如下:1)温度测量范围为0℃-120℃,压力测量范围为0Pa—3.92×10^5Pa2)温度测量精度0.5℃,压力测量精度为±1.96×10^3Pa3)每分钟采样一次4)超温度范围或压力范围时以声、光的方式发生报警信号5)有简单的键盘功能和数码显示功能6)其他功能三、硬件选择与设计1、单片机:(选用AT89C52)AT89C52是51系列单片机的一个型号,它是ATMEL公司生产的。

AT89C52是一个低电压,高性能CMOS 8位单片机,片内含8k bytes的可反复擦写的Flash只读程序存储器和256 bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元,功能强大的AT89C52单片机可为您提供许多较复杂系统控制应用场合。

AT89C52有40个引脚,32个外部双向输入/输出(I/O)端口,同时内含2个外中断口,3个16位可编程定时计数器,2个全双工串行通信口,2个读写口线,AT89C52可以按照常规方法进行编程,但不可以在线编程(S系列的才支持在线编程)。

基于51单片机的多路温度采集系统

基于51单片机的多路温度采集系统

基于单片机的多路温度采集系统一、摘要:本设计利用单片机及Keil编程软件编程和PROTEUS单片机仿真软件和电子电工等方面知识,用Keil编程软件编程,用PROTEUS单片机仿真软件仿真。

最后制作实物,将程序下载到单片机中,利用(I/O)口采集来自多路温度的数据,根据各路温度的不同,集中准确的显示出来,并且根据所设温度的上下限通过驱动蜂鸣器进行听觉上的报警,同时还可以通过LED灯协助进行视觉上的报警,从而达到多点温度的采集和报警的目的。

以Keil编程软件和PROTEUS软件来进行仿真、分析,调试,为设计提供了一个方便、快捷的途径,为设计节约了设计时间。

关键词:AT89S52单片机温度采集报警二、设计要求1、检测的温度范围:0℃~100℃。

2、检测分辨率 0.1℃。

3、显示的多路的温度值不相互干扰,而且对各个传感器的所属温度都能进行报警。

三、硬件电路设计1、系统的设计思路本设计采用单片机作为数据处理与控制单元,为了进行数据处理,单片机控制数字温度传感器,把温度信号通过单总线从数字温度传感器传递到单片机上。

单片机数据处理之后,发出控制信息改变报警和控制执行模块的状态,同时将当前温度信息发送到LCD进行显示。

本系统可以实现多路温度信号采集与显示,可以使用程序来设置温度限定值,通过进行温度数据的运算处理,发出控制信号达到控制蜂鸣器和LED进行报警。

2、系统总体设计方案系统总体主要由对单片机进行编程后得到控制,系统的其他功能部件分别接至单片机的对应I/O口。

整体模块如图:3、主控制器本次设计选择Atmel 公司生产的AT89C51作为控制芯片。

AT89C51是高性能的CMOS8位单片机,片内含有4K bytes 的可反复擦写的只读程序存储器和128的随机存取数据存储器。

AT89系列与MCS-51系列单片机相比有两大优势:第一,片内程序存储器采用闪速存储器,使程序的写入更加方便;第二,提供了更小尺寸的芯片,使整个电路体积更小。

基于单片机的温度控制系统设计

基于单片机的温度控制系统设计

基于单片机的温度控制系统设计温度控制系统是现代生活中不可或缺的一部分,常见于家庭的的空调、电饭煲、烤箱等家用电器,以及工业生产中的各种自动化设备。

本文基于单片机设计针对室内温度控制系统的实现方法进行说明,包括温度采集、温度控制器的实现和人机交互等方面。

一、温度采集温度采集是温度控制系统的核心部分。

目前比较常见的温度采集器主要有热电偶、热敏电阻和半导体温度传感器。

在本文中我们以半导体温度传感器为例进行说明。

常见的半导体温度传感器有DS18B20、LM35等,本次实验中采用DS18B20进行温度采集。

DS18B20是一种数字温度传感器,可以直接与单片机通信,通常使用仅三根导线连接。

其中VCC为控制器的电源正极,GND为电源负极,DATA为数据传输引脚。

DS18B20通过快速菲涅耳射线(FSR)读取芯片内部的温度数据并将其转换为数字信号。

传感器能够感知的温度范围通常为-55℃至125℃,精度通常为±0.5℃。

为了方便使用,DS18B20可以通过单片机内部的1-Wire总线进行控制和数据传输。

具体实现方法如下:1.首先需要引入相关库文件,如:#include <OneWire.h> //引用1-Wire库#include <DallasTemperature.h> //引用温度传感器库2.创建实例对象,其中参数10代表连接传感器的数字I/O引脚:OneWire oneWire(10); //实例化一个1-Wire示例DallasTemperature sensors(&oneWire); //实例化一个显示温度传感器示例3.在setup中初始化模块:sensors.begin(); // 初始化DS18B204.在主循环中,读取传感器数据并将温度值输出到串口监视器:sensors.requestTemperatures(); //请求温度值float tempC = sensors.getTempCByIndex(0); // 读取温度值Serial.println(tempC); //输出温度值二、温度控制器的实现温度控制器是本次实验的关键部件,主要实现对温度的控制和调节,其基本原理是根据温度变化情况来控制输出电压或模拟脚电平,驱动继电器控制电器设备工作。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

单片机原理与运用课程设计课题名称:专业班级:学生姓名:指导老师:完成时间:温度采集与显示系统2012年7月4号摘要随着信息技术的飞速发展,嵌入式智能电子技术已渗透到社会生产、工业控制以及人们日常生活的各个方面。

单片机又称为嵌入式微型控制器,在智能仪表、工业控制、智能终端、通信设备、医疗器械、汽车电器、导航系统和家用电器等很多领域都有着广泛的应用,已成为当今电子信息领域应用最广泛的技术之一。

本文主要介绍了一个基于STC89C52单片机的温度采集与显示系统,详细描述了利用液晶显示器件温度传感器DS18B20开发测温系统的原理,重点对传感器与单片机的硬件连接和软件编程进行了详细分析。

主要地介绍了数字温度传感器DS18B20的数据采集过程,进而对各部分硬件电路的工作原理进行了介绍。

温度传感器DS18B20与STC89C52结合构成了最简温度检测系统,该系统可以方便的实现温度采集和显示,它使用起来相当方便,具有精度高、量程宽、灵敏度高、体积小、功耗低等优点,适合我们日常生活和工、农业生产中的温度测量,也可以当作温度处理模块嵌入其它系统中,作为其他主系统的辅助扩展。

单片机综合实验的目的是训练单片机应用系统的编程及调试能力,通过对一个单片机应用系统进行系统的编程和调试,掌握单片机应用系统开发环境和仿真调试工具及仪器仪表的实用,掌握单片机应用程序代码的编写和编译,掌握利用单片机硬件仿真调试工具进行单片机程序的跟踪调试和排错方法,掌握示波器和万用表等杆塔工具在单片机系统调试中应用。

关键词:单片机STC89C52、DS18B20温度传感器、液晶显示器LCD1602、AT24C02数据存储芯片目录一、绪论------------------------------------------41.1 、温度检测系统的介绍------------------------------41.2、温度检测的实际意义------------------------------41.3、设计内容及功能要求------------------------------4二、系统硬件部分---------------------------------52.1、单片机最小系统----------------------------------52.2、温度采集电路-----------------------------------52.3、LCD1602显示电路-------------------------------62.4、数据存储电路-----------------------------------72.5、报警电路--------------------------------------72.6、按键中断电路-----------------------------------8三、总电路图(仿真)----------------------------8四、系统软件部分---------------------------------94.1、程序流程图:-----------------------------------94.2、主程序(main.c)-------------------------------104.3、24c02.c-------------------------------------144.4、ds18b20.c-----------------------------------154.5、lcd.c---------------------------------------194.6、I2C.c---------------------------------------214.7、function.c-----------------------------------24五、元器件清单----------------------------------25六、安装与调试----------------------------------276.1、电路参数的选取与安装---------------------------276.2调试-----------------------------------------27七、总结-----------------------------------------28一、绪论1.1 、温度检测系统的介绍温度检测在各领域应用的非常广泛,可以说渗透到了社会的每一个领域。

人们的生活与温度检测息息相关,在工业生产过程中需要实时测量温度,在农业生产中也离不开温度的测量,因此研究温度的测量方法和装置具有重要的意义。

通过DS18B20采集温度数据,经I/O口传给单片机,单片机对接收到的数据进行实时在lcd上显示,并十秒采集通过I2C总线送到24c02进行储存,当按键按下时进入外部中断,并在外部中断中进行读取24c02所保存的值并在lcd上显示;拓展功能部分:在lcd的第二行显示时钟,并配有按键进行调时;温度报警电路,当温度上升到一定值时给蜂鸣器低信号,使其响起。

1.2、温度检测的实际意义在工业生产和实践研究中,像电力、化工、石油、冶金、航空航天、机械制造、粮食存储、酒类生产等领域,温度常常是表征对象和过程状态的重要参数之一。

比如,发电厂锅炉的温度必须控制在一定的范围之内;许多化学反应的工艺过程必须在适当的温度下才能正常进行;炼油过程中,原油必须在不同的温度和压力条件下进行分馏才能得到汽油、柴油、煤油等产品。

没有合适的温度环境,许多电子设备就不能正常工作,粮仓的储粮就会变质霉烂,酒类的品质就没有保障。

由此可见,温度的检测对日常生活很重要。

1.3、设计内容及功能要求利用STC89C52、DS18B20、LCD1602、AT24C02等元器件设计温度采集与显示系统。

系统具有以下功能:1、能正确检测温度;2、在1602上实时显示温度;3、每隔10秒采集一次温度数据并保存到AT24C024、按键按下后,可逐个显示之前采集到的数据;5、其他功能可根据系统上的资源自行设定。

扩展功能:温度超过设定值,蜂鸣器报警;时间日期的显示;按键按下,重新开始采集温度等等。

二、系统硬件部分2.1、单片机最小系统单片机是指一个集成在一块芯片上的完整计算机系统。

它具有一个完整计算机所需要的大部分部件:CPU、内存、内部和外部总线系统。

同时集成诸如通讯接口、定时器,实时时钟等外围设备。

在内部ROM中载入程序既可以实现对其的操作控制。

我们使用了AT89S52这款单片机,它具有内部ROM空间大,工作速度快等优点,便于以后的升级扩展。

现在主流的MCS-51单片机要想正常工作必须配备复位和时钟电路,复位脚必需在振荡器起振后至少保持两个机器周期复位电平。

也就是说,复位脚(RST)复位电平保持时间应包含VCC的建立时间、振荡器起振时间和至少两个机器周期时间。

本次设计采用最基本的上电复位电路。

另外的时钟电路则为整个系统提供了系统的时基,主要有一个晶振来起振,另外两个电容可以增强时钟电路的稳定性。

图2.1为单片机最小系统电路:图2.1:单片机最小系统电路2.2、温度采集电路温度传感器的种类众多,在高精度、高可靠性的应用场合时DALLAS(达拉斯)公司生产的DS18B20温度传感器比较理想。

它体积小,硬件开消低,抗干扰能力强,精度高,附加功能强。

与传统的热敏电阻等测温元件相比,它能直接读出被测温度,并且可根据实际要求通过简单的编程实现9~12位的数字值读数方式。

它具有独特的单线接口仅需要一个端口引脚进行通信,并可通过数据线供电,电压范围为3.0~5.5V。

采用单总线数字温度传感器DS18B20测量温度。

因为它直接输出数字信号,便于单片机进行处理及控制,同时也节省了硬件电路。

该芯片的物理化学性质很稳定,元件线形性能好。

当温度在0—100摄氏度范围内变化时,最大线形偏差小于1摄氏度。

图2.2为温度采集电路:图2.2:温度采集电路2.3、LCD1602显示电路采用液晶显示器件。

液晶显示具有平稳、省电、美观等优点,更容易满足题目要求。

而且对后续的工艺兼容性高,只需将修改软件中程序设计即可,可操作性强,也易于读数。

LCD1602液晶显示器具有两行十六个字符的显示,能同时显示其它的信息如日期、时间、星期、温度。

图2.3为LCD1602显示电路:图2.3:LCD1602显示电路2.4、数据存储电路AT24C02支持I2C,总线数据传送协议I2C,总线协议规定任何将数据传送到总线的器件作为发送器。

任何从总线接收数据的器件为接收器。

数据传送是由产生串行时钟和所有起始停止信号的主器件控制的。

主器件和从器件都可以作为发送器或接收器,但由主器件控制传送数据(发送或接收)的模式,由于A0、A1和A2可以组成000~111八种情况,即通过器件地址输入端A0、A1和A2可以实现将最多8个AT24C02器件连接到总线上,通过进行不同的配置进行选择器件。

选用这样的数据存储器件是比较合适的。

图2.4为数据存储电路图:图2.4:数据存储电路2.5、报警电路报警电路较为简单,只要由蜂鸣器组成,主要器件也是蜂鸣器。

蜂鸣器有正负端口,我在设计电路的时候将蜂鸣器的正端接+5V 的电源,另一端接到单片机的p1.0口,只要单片机在这个口输出低电平,则蜂鸣器接通后产生蜂鸣。

图2.5为报警电路图:图2.5:蜂鸣器报警电路2.6、按键中断电路在本次设计中我选用四个按键来控制温度显示中的一些步骤。

首先,采用一个中断来控制对AT24C02的锁存储数据的读取,然后显示在LCD1602上。

每按一次第一个按键所读取的温度不同。

其他三个按键为时间调整按键,可以通过这三个按键对液晶屏里面的时钟进行时间调整。

图 2.6为按键中断电路图:图2.6:按键中断电路三、总电路图(仿真)四、系统软件部分4.1、程序流程图:图4.1温度采集程序图图4.2按键中断程序图4.2、主程序(main.c)#include<reg52.h>#include<function.h>#define warn_35 350#define warn_11 110char miao,shi,fen,flag;uint s1num;ucharcount,m,n;uintsu,tt,mm;//uchar buff[4];unsigned char pDat[7],pDat1[7];sbit s1=P3^4;sbit s2=P3^5;sbit s3=P3^6;sbit beep=P1^0;//蜂鸣器void deal(uint tem){if((tem>warn_35)||(tem<warn_11)){beep=0;}else beep=1;}void main(){m=0;n=0;init();EX0=1;//init_com(); //包含了对定时器0的设定while(1){tempchange();tt=get_temp();if(flag==1){EA=0;flag=0;IRcvStr(0xa0,n,&pDat1[0],8);mm=pDat1[0]*100+pDat1[1]*10+pDat1[2];//pDat1[7]=0;n=n+0x08;if(n==0xf8)n=0;EA=1;}deal(tt);write_sfm(12,miao);write_sfm(9,fen);// write_sfm(6,shi);dis_temp1(mm);delay(5);dis_temp(tt);keyscan();}}void int_0() interrupt 0{flag=1;}void keyscan(){if(s1==0){delay(5);if(s1==0){ s1num++;while(!s1);if(s1num==1){TR0=0;write_com(0x80+0x40+12);//write_com(0x0f);}}if(s1num==2){write_com(0x80+0x40+9);}if(s1num==3){write_com(0x80+0x40+6);}if(s1num==4){s1num=0;write_com(0x0c);TR0=1;}}if(s1num!=0){if(s2==0){delay(5);if(s2==0){while(!s2);if(s1num==1){miao++;if(miao==60)miao=0;write_sfm(12,miao);write_com(0x80+0x40+12);//指针回原位}if(s1num==2){fen++;if(fen==60)fen=0;write_sfm(9,fen);write_com(0x80+0x40+9);//指针回原位}if(s1num==3){shi++;if(shi==24)shi=0;write_sfm(6,shi);write_com(0x80+0x40+6);//指针回原位}}}if(s3==0){delay(5);if(s3==0){while(!s3);if(s1num==1){/* if(miao==0){miao=59;write_sfm(10,miao);write_com(0x80+0x40+10);}*/miao--;if(miao==-1)miao=59;write_sfm(12,miao);write_com(0x80+0x40+12);}if(s1num==2){fen--;if(fen==-1)fen=59;write_sfm(9,fen);write_com(0x80+0x40+9);}if(s1num==3){shi--;if(shi==-1)shi=23;write_sfm(6,shi);write_com(0x80+0x40+6);}}}}}void timer0() interrupt 1{TH0=(65536-50000)/256;TL0=(65536-50000)%256;su++;if(su==100){su=0;pDat[0]=tt/100;pDat[1]=(tt%100)/10;pDat[2]=tt%10;ISendStr(0xa0,m,&pDat[0],8); //存温度// pDat[7]=0;m=m+0x08;if(m==0xf8)m=0;}count++;if(count==20){count=0;miao++;if(miao==60){miao=0;fen++;if(fen==60){fen=0;shi++;if(shi==24){shi=0;}// write_sfm(4,shi);}//write_sfm(7,fen);}//write_sfm(10,miao);}}4.3、24c02.c#include<Function.h>bit ISendStr(unsigned char sla,unsigned char suba,unsigned char *s,unsigned char no){unsigned char i;Start_I2c(); /*启动总线*/SendByte(sla); /*发送器件地址*/if(ack==0) return(0);SendByte(suba); /*发送器件子地址*/if(ack==0)return(0);for(i=0;i<no;i++){SendByte(*s); /*发送数据*/if(ack==0)return(0);s++;}Stop_I2c(); /*结束总线*/return(1);}bit IRcvStr(unsigned char sla,unsigned char suba,unsigned char *s,unsigned char no){unsigned char i;Start_I2c(); /*启动总线*/ SendByte(sla); /*发送器件地址*/if(ack==0)return(0);SendByte(suba); /*发送器件子地址*/ if(ack==0)return(0);Start_I2c(); /*重新启动总线*/ SendByte(sla+1);if(ack==0)return(0);for(i=0;i<no-1;i++){*s=RcvByte(); /*发送数据*/Ack_I2c(0); /*发送就答位*/s++;}*s=RcvByte();Ack_I2c(1); /*发送非应位*/Stop_I2c(); /*结束总线*/return(1);}4.4、ds18b20.c#include <reg52.h>#include <stdio.h>#include<function.h>sbit ds=P1^1; //温度传感器信号线//sbit beep=P2^3; //蜂鸣器uint temp;float f_temp;void dsreset(void) //18B20复位,初始化函数{uinti;ds=0;i=103;while(i>0)i--;ds=1;i=4;while(i>0)i--;}bit tempreadbit(void) //读1位函数{uinti;bit dat;ds=0;i++; //i++ 起延时作用ds=1;i++;i++;dat=ds;i=8;while(i>0)i--;return (dat);}uchartempread(void) //读1个字节{uchari,j,dat;dat=0;for(i=1;i<=8;i++){j=tempreadbit();dat=(j<<7)|(dat>>1); //读出的数据最低位在最前面,这样刚好一个字节在DAT里}return(dat);}void tempwritebyte(uchardat) //向18B20写一个字节数据{uinti;uchar j;bit testb;for(j=1;j<=8;j++){testb=dat&0x01;dat=dat>>1;if(testb) //写 1{ds=0;i++;i++;ds=1;i=8;while(i>0)i--;}else{ds=0; //写 0i=8;while(i>0)i--;ds=1;i++;i++;}}}void tempchange(void) //DS18B20 开始获取温度并转换{dsreset();delay(1);tempwritebyte(0xcc); // 写跳过读ROM指令tempwritebyte(0x44); // 写温度转换指令}uintget_temp() //读取寄存器中存储的温度数据{uchara,b;dsreset();delay(1);tempwritebyte(0xcc);tempwritebyte(0xbe);a=tempread(); //读低8位b=tempread(); //读高8位temp=b;temp<<=8; //两个字节组合为1个字temp=temp|a;f_temp=temp*0.0625; //温度在寄存器中为12位分辨率位0.0625°temp=f_temp*10+0.5; //乘以10表示小数点后面只取1位,加0.5是四舍五入f_temp=f_temp+0.05;return temp; //temp是整型}////////////////////显示程序调用lcd中的write_sfm1 十位地址写4 个位为5 小数为7//////////////////////////void dis_temp(uint t){uinti;i=t/100;write_sfm1(0,i);i=(t%100)/10;write_sfm1(1,i);i=t%10;write_sfm1(3,i);}void dis_temp1(uint t) //显示储存的温度{uinti;i=t/100;write_sfm1(11,i);i=(t%100)/10;write_sfm1(12,i);i=t%10;write_sfm1(14,i);}/*void init_com(void){TMOD = 0x20;PCON = 0x00;SCON = 0x50;TH1 = 0xFd;TL1 = 0xFd;TR1 = 1;}void comm(char *parr){do{SBUF = *parr++; //发送数据 while(!TI); //等待发送完成标志为1TI =0; //标志清零}while(*parr); //保持循环直到字符为'\0'}*////////////////////////////////////////////////*void warn(uints,uchar led) //蜂鸣器报警声音 ,s控制音调{uchari;i=s;beep=0;P1=~(led);while(i--){dis_temp(get_temp());}beep=1;P1=0XFF;i=s;while(i--){dis_temp(get_temp());}}void deal(uint t){uchari;if((t>warn_l2)&&(t<=warn_l1)) //大于25度小于27度{warn(40,0x01);}else if(t<=warn_l2) //小于25度{warn(10,0x03);}else if((t<warn_h2)&&(t>=warn_h1)) //小于32度大于30度 {warn(40,0x04);}else if(t>=warn_h2) //大于32度{warn(10,0x0c);}else{i=40;while(i--){dis_temp(get_temp());}}}4.5、lcd.c#include <reg52.h>#include<function.h>sbitrs=P2^6;sbitlcden=P2^7;//sbitrw=P2^5;uchar code tablenum[]= "0123456789";uchar code table[]= "00.0C Temp:00.0C";uchar code table1[]="Time: 00:00:00";uchar code table2[]=" MADE BY";uchar code table3[]=" CaiGuo Sen";void delay(uint z){uintx,y;for(x=z;x>0;x--)for(y=110;y>0;y--);}void write_com(uchar com){rs=0;lcden=0;P0=com;delay(5);lcden=1;delay(5);lcden=0;}void write_date(uchardat){rs=1;lcden=0;P0=dat;delay(5);lcden=1;delay(5);lcden=0;}void init(){ucharnum;lcden=0;//rw=0;// fen=59;// miao=53;// shi=23;write_com(0x38);write_com(0x0c);write_com(0x06);write_com(0x01);write_com(0x80);for(num=0;num<12;num++){write_date(table2[num]);delay(5);}write_com(0x80+0x40);for(num=0;num<13;num++){write_date(table3[num]);delay(5);}delay(2000);write_com(0x80);for(num=0;num<16;num++){write_date(table[num]);delay(5);}write_com(0x80+0x40);for(num=0;num<12;num++){write_date(table1[num]);delay(5);}TMOD=0x01;TH0=(65536-50000)/256;TL0=(65536-50000)%256;EA=1;ET0=1;TR0=1;}void write_sfm(ucharadd,uchardat)//写地址和自动显示两位数时间{uchars,g;s=dat/10;g=dat%10;write_com(0x80+0x40+add);write_date(tablenum[s]);write_date(tablenum[g]);}void write_sfm1(ucharadd,uchardat) //写温度值十位地址写4 个位为5 小数为7{write_com(0x80+add);write_date(tablenum[dat]);}4.6、I2C.c#include<reg52.h>#include <intrins.h>#include<Function.h>#define NOP() _nop_() /* 定义空指令 */#define _Nop() _nop_() /*定义空指令*/sbit SCL=P2^1; //I2C 时钟sbit SDA=P2^0; //I2C 数据bit ack; /*应答标志位*/void Start_I2c(){SDA=1; /*发送起始条件的数据信号*/_Nop();SCL=1;_Nop(); /*起始条件建立时间大于4.7us,延时*/_Nop();_Nop();_Nop();_Nop();SDA=0; /*发送起始信号*/_Nop(); /* 起始条件锁定时间大于4μs*/_Nop();_Nop();_Nop();SCL=0; /*钳住I2C总线,准备发送或接收数据 */_Nop();_Nop();}void Stop_I2c(){SDA=0; /*发送结束条件的数据信号*/_Nop(); /*发送结束条件的时钟信号*/SCL=1; /*结束条件建立时间大于4μs*/_Nop();_Nop();_Nop();_Nop();_Nop();SDA=1; /*发送I2C总线结束信号*/_Nop();_Nop();_Nop();_Nop();}void SendByte(unsigned char c) {unsigned char BitCnt;for(BitCnt=0;BitCnt<8;BitCnt++) /*要传送的数据长度为8位*/ {if((c<<BitCnt)&0x80)SDA=1; /*判断发送位*/elseSDA=0;_Nop();SCL=1; /*置时钟线为高,通知被控器开始接收数据位*/ _Nop();_Nop(); /*保证时钟高电平周期大于4μs*/_Nop();_Nop();_Nop();SCL=0;}_Nop();_Nop();SDA=1; /*8位发送完后释放数据线,准备接收应答位*/_Nop();_Nop();SCL=1;_Nop();_Nop();if(SDA==1)ack=0;else ack=1; /*判断是否接收到应答信号*/SCL=0;_Nop();_Nop();}unsigned char RcvByte(){unsigned char retc;unsigned char BitCnt;retc=0;SDA=1; /*置数据线为输入方式*/for(BitCnt=0;BitCnt<8;BitCnt++){_Nop();SCL=0; /*置时钟线为低,准备接收数据位*/_Nop();_Nop(); /*时钟低电平周期大于4.7μs*/_Nop();_Nop();_Nop();SCL=1; /*置时钟线为高使数据线上数据有效*/_Nop();_Nop();retc=retc<<1;if(SDA==1)retc=retc+1; /*读数据位,接收的数据位放入retc中 */ _Nop();_Nop();}SCL=0;_Nop();_Nop();return(retc);}void Ack_I2c(bit a){if(a==0)SDA=0; /*在此发出应答或非应答信号 */ elseSDA=1;_Nop();_Nop();_Nop();SCL=1;_Nop();_Nop(); /*时钟低电平周期大于4μs*/_Nop();_Nop();_Nop();SCL=0; /*清时钟线,钳住I2C总线以便继续接收*/_Nop();_Nop();}4.7、function.c#define uchar unsigned char#define uint unsigned intextern void write_sfm(ucharadd,uchardat);extern void delay(uint z);extern void dsreset(void); //18B20复位,初始化函数extern bit tempreadbit(void); //读1位函数extern uchartempread(void); //读1个字节extern void tempwritebyte(uchardat); //向18B20写一个字节数据extern void tempchange(void); //DS18B20 开始获取温度并转换extern uintget_temp(); //读取寄存器中存储的温度数据extern void dis_temp(uint t);//显示程序extern void dis_temp1(uint t);//extern void warn(uints,uchar led); //蜂鸣器报警声音 ,s控制音调//extern void deal(uint t);//extern void init_com(void);//extern void comm(char *parr);extern void write_com(uchar com);extern void write_date(uchardat);extern void init();extern void write_sfm(ucharadd,uchardat);//写地址和自动显示两位数时间extern void write_sfm1(ucharadd,uchardat); //写温度值十位地址写4 个位为5 小数为7extern void keyscan();/****h函数声明部分***********/extern bit ack;//起动总线函数extern void Start_I2c();//结束总线函数extern void Stop_I2c();//应答子函数extern void Ack_I2c(bit a);//字节数据发送函数extern void SendByte(unsigned char c);//有子地址发送多字节数据函数extern bit ISendStr(unsigned char sla,unsigned char suba,unsigned char*s,unsigned char no) ;//无子地址发送多字节数据函数extern bit ISendStrExt(unsigned char sla,unsigned char *s,unsigned char no); //无子地址读字节数据函数extern unsigned char RcvByte();//有子地址读取多字节数据函数extern bit IRcvStr(unsigned char sla,unsigned char suba,unsigned char*s,unsigned char no);五、元器件清单六、安装与调试6.1、电路参数的选取与安装在确定了电路主要的器件之后,我们可以查阅参考文献确定具体的电路参数,具体如下:单片机选择AT89S52一片,单片机的复位电路需要22uf电容和1K电阻各一,时钟电路需要12M晶振一个60pf电容两个,测温电路只需要一个DS18B20和一个10K的电阻即可,显示电路只要一块LCD1602就可以完成显示任务。

相关文档
最新文档