单片机温度传感器
单片机应用中常用的传感器控制技术

单片机应用中常用的传感器控制技术在单片机应用中,传感器起着至关重要的作用。
不同类型的传感器可以用于检测环境变化,例如温度、湿度、光照强度等,也可以用于检测物理变化,例如加速度、旋转、位置等。
通过传感器的数据,我们可以控制电路中的元器件来完成目的,例如控制机器人的移动、检测工厂设备的状态、监测家庭温度、湿度等。
本文将重点介绍单片机应用中常用的传感器控制技术。
1. 模拟输入模拟输入是指将传感器的输出连接到单片机的模拟输入引脚上。
传感器通常输出一个电压信号,单片机通过采样模拟输入引脚的电压值,并将其转换为数字信息。
最常见的模拟传感器是温度传感器,例如DS18B20,该传感器输出的电压随温度的变化而变化,单片机可以根据采集到的电压值计算出温度,并控制相应的操作。
2. 数字输入数字输入是指将传感器的输出连接到单片机的数字输入引脚上。
传感器通常输出一个数字信号,单片机将其读取为高或低电平。
数字输入通常用于检测开关状态,例如检测是否有物体靠近,在机器人中可用于检测碰撞、检测距离等。
3. PWM控制PWM(Pulse Width Modulation)控制是通过调整脉宽来控制输出电压的一种技术。
在单片机应用中,PWM控制通常用于控制电机或灯光的亮度。
传感器可以用于检测电机或灯光的状态,例如通过光敏电阻检测感光元件的状态,或检测电机的转速。
传感器采集到的信息可以用于调整PWM的输出,从而实现对电路元器件的精确控制。
4. I2C总线通信I2C总线通信是一种串行通信协议,在单片机应用中广泛用于与传感器通信。
通过I2C总线,多个传感器可以通过同一根引脚与单片机进行通信。
传感器在总线上被赋予地址,单片机可以根据地址识别传感器,并向其发送指令读取数据。
总之,传感器控制技术对于单片机应用来说至关重要。
通过传感器收集的数据,单片机可以精确地控制电路元件,使其执行特定的任务。
在实际应用中,我们需要根据不同的传感器类型和应用场景,采用不同的控制技术,并实现传感器和单片机之间的有效通信。
单片机温度传感器的设计

单片机温度传感器的设计单片机温度传感器设计是一种基于单片机的温度测量系统,通过传感器获取环境中的温度数据,并通过单片机进行数据处理和显示。
在设计过程中,需要考虑传感器的选择、电路的连接和编程算法。
下面将详细介绍单片机温度传感器设计的具体步骤和注意事项。
一、传感器选择选择合适的温度传感器是设计过程的第一步。
常见的温度传感器有热电偶、热电阻和温度传感器模块等。
在选择传感器时,需要考虑以下几个因素:1.测量范围:根据实际需求确定温度测量范围,选择合适的传感器。
2.精度要求:根据实际需求确定测量精度,传感器的精度通常以温度偏差或百分比表示。
3.接口类型:选择与单片机兼容的传感器接口类型,常见的有模拟输出、数字输出和串行接口等。
二、电路连接1.模拟输出传感器连接:将传感器的输出与单片机的模拟输入引脚相连,使用电阻分压器将传感器的输出电压范围转换为单片机可接受的电压范围。
2.数字输出传感器连接:将传感器的数字输出引脚与单片机的数字输入引脚相连。
3.串行接口传感器连接:通过串行通信协议将传感器连接到单片机的串行通信接口,如I2C或SPI。
三、程序设计根据选择的传感器类型和接口进行程序设计,主要包括以下几个方面的内容:1.初始化:初始化单片机的IO口和通信接口,设置传感器的工作模式和采样率。
2.数据采集:不断读取传感器的输出数据,可以在一段时间内进行多次采样,然后取平均值或做其他处理。
3.数据处理:对采集到的数据进行处理和校正,可以对传感器的非线性特性进行校正,以提高温度测量的准确度。
4.数据显示:通过单片机的数字显示模块或串口通信模块将测量得到的温度值进行显示或传输。
5.系统控制:可以根据测量到的温度值进行系统控制,如温度报警、温度控制等。
四、注意事项在设计单片机温度传感器时,需要注意以下几个事项:1.传感器的位置:将传感器的敏感部分放置在需要测量温度的位置,避免传感器受到外界干扰。
2.温度补偿:考虑传感器自身的温度特性,进行温度补偿以提高测量的准确度。
单片机温度计的原理及应用(一)

单片机温度计的原理及应用(一)引言概述:单片机温度计是一种用于测量温度并输出数字化结果的设备。
它利用单片机的高精度和高稳定性来实现温度的准确测量,并可以通过数字信号输出与温度值对应的数据,广泛应用于各个领域。
本文将详细介绍单片机温度计的原理及其在实际应用中的重要性。
正文:一、温度传感器的原理1.热敏电阻的基本原理2.热电偶的工作原理3.半导体温度传感器的工作原理4.红外线温度传感器的工作原理5.其他常见温度传感器的原理及特点二、单片机温度测量的基本原理1.模拟信号采集与转换2.温度校准与补偿3.数字滤波与数据处理4.温度单位切换与显示方式选择5.温度测量精度与可靠性的提高方法三、单片机温度计的应用领域1.家用电器行业中的应用2.工业自动化控制领域中的应用3.环境监测与控制系统中的应用4.医疗仪器与设备中的应用5.农业生产与研究中的应用四、常见的单片机温度计实现方案1.基于热敏电阻的温度计设计2.基于热电偶的温度计设计3.基于半导体温度传感器的温度计设计4.基于红外线温度传感器的温度计设计5.其他先进的单片机温度计设计方案介绍五、单片机温度计的优缺点及未来发展方向1.优点:高精度、高稳定性、数据准确性高2.缺点:成本较高、对环境条件要求较高3.发展方向:无线传输技术、自动化控制集成等总结:通过本文对单片机温度计的原理及应用进行详细阐述,我们可以看到单片机温度计在各行各业中发挥着重要的作用。
随着技术的不断发展和创新,单片机温度计的性能将更加出色,应用领域也将更加广阔。
相信在未来的发展中,单片机温度计将继续为我们提供更准确、可靠的温度测量解决方案。
单片机应用的传感器原理

单片机应用的传感器原理1. 传感器的基本原理传感器是一种感受和测量物理量的装置。
在单片机应用中,传感器负责将外界的物理量输入转化为电信号,以便单片机进行处理和控制。
传感器的基本原理主要包括以下几个方面:•感受物理量:传感器能够感受和测量的物理量包括温度、湿度、压力、光照强度等等。
传感器通过内部的感应元件或传感元件对这些物理量进行感受并转化为电信号。
•转换电信号:传感器将感受到的物理量转化为电信号,常见的有模拟信号和数字信号。
模拟信号是连续变化的电信号,数字信号是离散的脉冲信号。
•输出电信号:传感器的输出电信号可以是直流电流、直流电压、交流电压等不同形式的电信号。
这些电信号可以直接被单片机读取和处理。
2. 常见传感器的原理和应用2.1 温度传感器温度传感器是测量温度的传感器,常见的有热电偶、热电阻、半导体温度传感器等。
其原理为:•热电偶:热电偶是利用两种不同材料的热电势差产生电信号来测量温度的。
常见的热电偶有铜-铁热电偶、镍铬-镍硅热电偶等。
•热电阻:热电阻是利用电阻随温度变化的特性测量温度的。
常见的热电阻有铂电阻和铜电阻。
•半导体温度传感器:半导体温度传感器是利用半导体材料温度特性进行测量的。
常见的有NTC热敏电阻。
温度传感器在工业自动化、气象监测、家电等领域中得到广泛应用。
2.2 光照传感器光照传感器用于测量光的强度或照度,常见的有光敏电阻、光感二极管等。
其原理为:•光敏电阻:光敏电阻是利用光照会改变电阻值的特性进行测量的。
•光感二极管:光感二极管是利用光照会产生电流的特性进行测量的。
光照传感器在照明控制、环境亮度检测等场景中被广泛应用。
2.3 压力传感器压力传感器用于测量气体或液体的压力,常见的有压阻式传感器和压电式传感器。
其原理为:•压阻式传感器:压阻式传感器是利用受压时电阻值发生变化的原理进行测量的。
•压电式传感器:压电式传感器是利用压电效应进行测量的。
压力传感器在工业自动化、气象监测、车辆轮胎压力检测等领域中得到广泛应用。
单片机基于51单片机的温度传感器设计

未来展望
技术升级
智能化发展
应用拓展
安全性考虑
随着技术的进步,未来可以 采用更高精度的温度传感器 ,提高系统的监测和控制精 度。同时,可以采用更先进 的单片机,提高数据处理速 度和控制效果。
未来可以增加更多的人工智 能算法,如神经网络、模糊 控制等,以实现更智能的温 度调控。此外,可以通过增 加传感器种类和数量,实现 对环境因素的全面监测与调 控。
03
02
传感器接口
将DS18B20温度传感器与单片机相 连,实现温度信号的采集。
通讯接口
通过UART串口通讯,实现单片机与 上位机之间的数据传输。
04
软件设计
温度采集
通过DS18B20温度传感器采集 温度信号,并转换为数字信号 。
数据显示
将处理后的温度数据通过 LCD1602液晶显示屏实时显示 出来。
温度传感器选择
选用常用的DS18B20温度传感器, 具有测量精度高、抗干扰能力强等优 点。
显示模块
选用LCD1602液晶显示屏,用于实 时显示温度值。
通讯接口
采用UART串口通讯,实现单片机与 上位机之间的数据传输。
硬件设计
01
电源电路
为单片机和传感器提供稳定的电源 。
显示接口
将LCD1602液晶显示屏与单片机相 连,实现温度的实时显示。
它能够检测环境中的温度变化,并将 其转换为电信号或其他可测量的物理 量,以便进一步处理和控制。
温度传感器的工作原理
温度传感器通常由敏感元件和转换电路组成。敏感元件负责 感知温度变化,而转换电路则将温度变化转换为电信号。
常见的温度传感器工作原理有热电效应、热电阻、热敏电阻 等。
温度传感器的分类
传感器与单片机配合应用的原理

传感器与单片机配合应用的原理1.介绍传感器和单片机是现代电子技术中常见的两个元件。
传感器可以将环境中的物理量或化学量转换为电信号,而单片机则可以将电信号进行处理和控制。
它们的配合应用可以实现各种功能,如温度监测、湿度测量、光线控制等。
本文将介绍传感器与单片机配合应用的原理。
2.传感器工作原理传感器是通过感受环境中的物理量或化学量来产生电信号。
常见的传感器有温度传感器、湿度传感器、压力传感器等。
以温度传感器为例,其工作原理如下:1.温度传感器内部包含一个敏感元件,它的电阻值会随着温度的变化而变化。
2.当敏感元件感受到温度变化时,会改变其电阻值。
3.通过连接到传感器的导线,将温度转换为电阻值。
4.单片机通过读取传感器连接的引脚上的电压值来确定温度。
3.单片机的工作原理单片机是一种集成电路,具有处理和控制电信号的能力。
它可以通过接口与传感器进行通信,读取和处理传感器产生的电信号,并根据需要做出相应的控制。
单片机的工作原理包括以下几个方面:1.输入/输出(I/O)口:单片机有多个I/O口,可以连接外部设备,如传感器。
2.模拟输入/输出(ADC/DAC):单片机内部有模数/数模转换器,可以将模拟信号转换为数字信号,或反之。
3.中央处理单元(CPU):单片机的核心部分,负责处理各种操作。
4.存储器:单片机内部有存储器用于存储程序和数据。
5.定时器/计数器:单片机可以通过定时器和计数器实现各种时间控制和测量功能。
4.传感器与单片机的配合应用原理传感器与单片机的配合应用主要包括以下几个步骤:1.连接传感器:将传感器连接到单片机的I/O口。
传感器可以通过模拟输入/输出口连接,也可以通过数字输入/输出口连接。
连接方法视传感器和单片机的类型而定。
2.读取传感器数据:单片机通过读取连接的传感器的电信号,获取传感器的数据。
如果传感器是模拟输出的,单片机需要通过ADC将其转换为数字信号。
3.数据处理:单片机可以对传感器获取的数据进行处理和分析。
单片机测温计工作原理

单片机测温计工作原理
单片机测温计的工作原理如下:
1. 温度检测:使用数字温度传感器检测当前环境的温度。
由于数字信号可以直接送入单片机,因此传感器检测到的温度值会通过数据线传输到单片机中。
2. 数据处理:单片机接收到温度数据后,进行相应的处理。
根据预设的阈值,单片机可以对接收到的温度数据进行比较,当实际温度低于或高于设定值时,会触发相应的动作。
3. 显示与报警:单片机将处理后的温度数据发送到显示器(如液晶、数码管、LED矩阵等),以数字形式显示温度。
同时,如果实际温度低于或高于设定值,单片机还会触发报警功能。
以上内容仅供参考,建议查阅相关资料文献,或者咨询专业技术人员,以获取更全面准确的信息。
单片机中的温度传感器原理与应用

单片机中的温度传感器原理与应用单片机(Microcontroller)是一种集成了处理器核心、存储器和外设接口等功能于一体的集成电路芯片。
温度传感器则是一种用于测量环境温度并将其转换为电信号的装置。
在许多单片机应用中,温度传感器被广泛使用以监测和控制温度。
本文将探讨单片机中常用的温度传感器原理与应用。
一、温度传感器原理温度传感器是一种能够将温度转换成电信号的传感器。
常见的温度传感器有电阻温度计(RTD)、热电偶(Thermocouple)和半导体温度传感器等。
1. 电阻温度计(RTD)电阻温度计是一种使用金属材料电阻随温度变化的特性来进行温度测量的传感器。
最常见的电阻温度计材料之一是铂金,其中常用的有白金电阻温度计(Pt100)和铂铑电阻温度计(Pt1000)。
电阻温度计通过测量电阻值变化来计算温度。
2. 热电偶热电偶是一种利用两种不同金属的热电效应来测量温度的传感器。
热电偶由两种不同金属的导线组成,两个导线的接合处称为热电偶焊点。
当热电偶的焊点处于不同温度下时,会产生一个电动势。
通过测量这个电动势来计算温度。
3. 半导体温度传感器半导体温度传感器是一种利用半导体材料的电阻随温度变化的特性进行温度测量的传感器。
常见的半导体温度传感器有硅(Silicon)温度传感器和石墨烯(Graphene)温度传感器等。
半导体温度传感器通常采用微型芯片方式制造,具有体积小、精度高、响应速度快等优点。
二、温度传感器在单片机中的应用单片机中的温度传感器广泛应用于温度检测、温度控制、温度补偿等场景。
以下介绍几种常见的应用案例。
1. 温度检测单片机可以通过温度传感器来实时检测环境的温度。
例如,温度传感器可以被用于室内温度监测系统中,单片机可以实时读取传感器输出的温度值,并根据温度变化进行相应的控制操作,如开启或关闭空调、加热等。
2. 温度控制单片机可以根据温度传感器的反馈信号来实现温度控制。
例如,温度传感器可以用于温度控制器中,单片机可以根据实时的温度值与设定的目标温度进行比较,并通过控制输出来调节加热或制冷设备,以维持恒温状态。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
课题二温度传感器1课程描述及要求 (2)2课程设计分析设计 (3)2.1课程设计方案 (3)2.2元器件介绍 (3)2.2.1AT89S52 (3)2.2.2DS18B02 (4)2.2.4DS18B02测温原理 (5)3系统硬件设计 (6)3.1最小系统 (7)3.2显示电路 (7)3.3测温电路 (8)3.4按键电路 (9)4软件流程图 (10)5程序的源代码清单 (11)6调试运行结果及分析 (11)6.1软件仿真 (11)7课程设计总结 (12)8参考文献 (13)附录:程序源代码清单 (14)1题目描述及要求课程设计要求:1.9V供电;2.温度采集采用DS18B20;3.4位LED显示;4.4个按键;5.设计温度控制器原理图,学习用PROTEL画出该原理图,并用proteus进行仿真;设计和绘制软件流程图,用C语言进行程序编写;焊接硬件电路,进行调试。
2课程设计分析设计2.1课程设计方案总体设计思路如下。
图2.1硬件框图2.2元器件介绍2.2.1AT89S52AT89S52是一种低功耗、高性能CMOS8位微控制器,具有8K 在系统可编程Flash 存储器。
使用Atmel 公司高密度非易失性存储器技术制造,与工业80C51产品指令和引脚完全兼容。
片上Flash 允许程序存储器在系统可编程,亦适于常规编程器。
在单芯片上,拥有灵巧的8位CPU 和在系统可编程Flash,使得AT89S52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。
AT89S52具有以下标准功能:8k 字节Flash,256字节RAM,32位I/O 口线,看门狗定时器,2个数据指针,三个16位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。
另外,AT89S52可降至0Hz 静态逻辑操作,支持2种软件可选择节电模式。
空闲模式下,CPU 停止工作,允许RAM、A T 89S 52最小系统模块按键模块测温模块驱动模块显示模块定时器/计数器、串口、中断继续工作。
掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。
8位微控制器8K字节在系统可编程Flash AT89S522.2.2DS18B02DALLAS最新单线数字温度传感器DS18B20是一种新型的“一线器件”,其体积更小、更适用于多种场合、且适用电压更宽、更经济。
DALLAS半导体公司的数字化温度传感器DS18B20是世界上第一片支持“一线总线”接口的温度传感器。
温度测量范围为-55~+125摄氏度,可编程为9位~12位转换精度,测温分辨率可达0.0625摄氏度,分辨率设定参数以及用户设定的报警温度存储在EEPROM 中,掉电后依然保存。
被测温度用符号扩展的16位数字量方式串行输出;其工作电源既可以在远端引入,也可以采用寄生电源方式产生;多个DS18B20可以并联到3根或2根线上,CPU只需一根端口线就能与诸多DS18B20通信,占用微处理器的端口较少,可节省大量的引线和逻辑电路。
因此用它来组成一个测温系统,具有线路简单,在一根通信线,可以挂很多这样的数字温度计,十分方便。
DS18B20的性能特点如下:独特的单线接口方式,DS18B20在与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯,DS18B20支持多点组网功能,多个DS18B20可以并联在唯一的三线上,实现组网多点测温,DS18B20在使用中不需要任何外围元件,全部传感元件及转换电路集成在形如一只三极管的集成电路内,适应电压范围更宽,电压范围:3.0~5.5V,在寄生电源方式下可由数据线供电,温范围-55℃~+125℃,在-10~+85℃时精度为±0.5℃零待机功耗,可编程的分辨率为9~12位,对应的可分辨温度分别为0.5℃、0.25℃、0.125℃和0.0625℃,可实现高精度测温在9位分辨率时最多在93.75ms内把温度转换为数字,12位分辨率时最多在750ms内把温度值转换为数字,速度更快用户可定义报警设置报警搜索命令识别并标志超过程序限定温度(温度报警条件)的器件测量结果直接输出数字温度信号,以"一线总线"串行传送给CPU,同时可传送CRC校验码,具有极强的抗干扰纠错能力负电压特性,电源极性接反时,温度计不会因发热而烧毁,但不能正常工作以上特点使DS18B20非常适用与多点、远距离温度检测系统。
DS18B20内部结构主要由四部分组成:64位光刻ROM、温度传感器、非挥发的温度报警触发器TH和TL、配置寄存器。
DS18B20的管脚排列、各种封装形式如图所示,DQ为数据输入/输出引脚。
开漏单总线接口引脚。
当被用着在寄生电源下,也可以向器件提供电源;GND为地信号;VDD为可选择的VDD引脚。
当工作于寄生电源时,此引脚必须接地。
其电路图所示:2.2.3DS18B20测温原理DS18B20的测温原理如图2所示,图中低温度系数晶振的振荡频率受温度的影响很小用于产生固定频率的脉冲信号送给减法计数器1,高温度系数晶振随温度变化其震荡频率明显改变,所产生的信号作为减法计数器2的脉冲输入,图中还隐含着计数门,当计数门打开时,DS18B20就对低温度系数振荡器产生的时钟脉冲后进行计数,进而完成温度测量.计数门的开启时间由高温度系数振荡器来决定,每次测量前,首先将-55℃所对应的基数分别置入减法计数器1和温度寄存器中,减法计数器1和温度寄存器被预置在-55℃所对应的一个基数值。
减法计数器1对低温度系数晶振产生的脉冲信号进行减法计数,当减法计数器1的预置值减到0时温度寄存器的值将加1,减法计数器1的预置将重新被装入,减法计数器1重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到减法计数器2计数到0时,停止温度寄存器值的累加,此时温度寄存器中的数值即为所测温图2中的斜率累加器用于补偿和修正测温过程中的非线性其输出用,于修正减法计数器的预置值,只要计数门仍未关闭就重复上述过程,直至温度寄存器值达到被测温度值,这就是DS18B20的测温原理。
另外,由于DS18B20单线通信功能是分时完成的,他有严格的时隙概念,因此读写时序很重要。
系统对DS18B20的各种操作必须按协议进行。
操作协议为:初始化DS18B20(发复位脉冲)→发ROM功能命令→发存储器操作命令→处理数据。
3系统硬件设计。
本温度计大体分三个工作过程。
首先,由DS18B20温度传感器芯片测量当前的温度,并将结果送入单片机。
然后,通过AT89S52单片机芯片对送来的测量温度读数进行计算和转换,井将此结果送入数码管显示模块。
最后,数码管显示温度数据。
本电路主要由DS18820温度传感器芯片、数码管显示模块和AT89S52单片机芯片组成。
原理图如下:3.1最小系统最小系统是指能进行正常工作的最简单电路。
AT89S52最小应用系统电路如图所示。
电源电路、时钟电路、复位电路是保证单片机系统能正常工作的最基本的三部分电路,缺一不可。
3.2显示电路显示电路采用4个数码管显示,如下图。
3.3测温电路DS18B20最大的特点是单总线数据传输方式,DS18B20的数据I/O均由同一条线来完成。
DS18B20的电源供电方式有2种:外部供电方式和寄生电源方式。
工作于寄生电源方式时,VDD和GND均接地,他在需要远程温度探测和空间受限的场合特别有用,原理是当1W ire总线的信号线DQ为高电平时,窃取信号能量给DS18B20供电,同时一部分能量给内部电容充电,当DQ为低电平时释放能量为DS18B20供电。
但寄生电源方式需要强上拉电路,软件控制变得复杂(特别是在完成温度转换和拷贝数据到E2PROM时),同时芯片的性能也有所降低,电路图如下图。
3.4按键电路4软件流程图软件程序从开始执行,先通过初始化各个寄存器,经过扫描按键来决定是否设定参数来执行相应功能的程序,进而在数码管上显示。
5程序的源代码清单源代码见附录。
6调试运行结果及分析在编写从程序时,程序分为两大部分去编写,分别是:1、led动态显示部分;2、DS18B20与单片机通信部分。
完成第一部分的编写后,通过proteus仿真,检验程序是否正确。
然后查阅相关资料编写通信部分的程序,然后结合led动态显示调试程序。
程序仿真及硬件调试效果如下截图所示。
6.1软件仿真7课程设计总结经过将近三周的单片机课程设计,我终于在参考了众多程序之后完成了我的数字温度计的设计,虽然没有完全达到设计要求,但我们还是高兴的,毕竟这次设计的电路板是我们一手焊出来的。
在本次设计的过程中,我们发现很多的问题,也学到了许多东西。
虽然我以前也做过类似的课程设计,但这次设计真的让我长进了很多。
本次单片机课程设计的重点就在于测温及按键编程软件算法的设计,其中有许多很巧妙的算法。
我以前总是能看懂别人写的程序,但自己单独写时就会出现很多问题,经过这次锻炼我基本掌握了C语言编程的方法并在以前的基础上有所提高。
通过本次课程设计,增长了知识固然重要,但提高了能力更重要。
这次设计是由五个人为一组进行,合理的安排、分配任务,让每个同学都参与进来,都有收获,学会摒弃争吵,做到互不对以后的工作很重要。
从这次的课程设计中,我真真正正的意识到,在以后的学习中,要理论联系实际,把我们所学的理论知识用到实际当中,学习单机片机更是如此,程序只有在经常的写与读的过程中才能提高,这就是我在这次课程设计中的最大收获。
8参考文献1.李春法,单片机原理及接口技术案例教程,机械工业出版社,20032.丁向荣,单片机应用系统与接口技术,电子工业出版社,20013.李朝青,单片机原理及接口技术,北京航空航天大学出版社,20054.马忠梅,单片机的C语言应用程序设计(第4版),清华出版社,20075.彭伟,单片机C语言程序设计实训100例,电子工业出版社,2009附录源代码如下:#include<reg52.h>sbit DQ=P3^7;//定义DS18B20总线I/O#define uint unsigned int#define uchar unsigned char//宏定义sbit SET=P1^0;//定义调整键sbit DEC=P3^2;//定义减少键sbit ADD=P3^3;//定义增加键sbit BEEP=P3^0;//高于上限温度亮sbit BEEA=P3^1;//低于下限温度亮bit shanshuo_st;//闪烁间隔标志bit beep_st;//蜂鸣器间隔标志uchar x=0;//计数器unsigned char m;//整数位温度值全局变量uchar p;//小数位温度值全局变量uchar set_st=0;//状态标志uchar shangxian=30;//上限报警温度,默认值为38uchar xiaxian=5;//下限报警温度,默认值为5uchar code LEDData[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0xff};//共阳极不带小数点段码uchar code LEDData1[]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10,0xff};//共阳极带小数点段码void Delay_DS18B20(int num){while(num--);}void Init_DS18B20(void){unsigned char q=0;DQ=1;//DQ复位Delay_DS18B20(8);//稍做延时DQ=0;//单片机将DQ拉低Delay_DS18B20(80);//精确延时,大于480usDQ=1;//拉高总线Delay_DS18B20(8);q=DQ;//稍做延时后,如果q=0则初始化成功,q=1则初始化失Delay_DS18B20(20);DQ=1;}unsigned char ReadOneChar(void){unsigned char i=0;unsigned char dat=0;for(i=8;i>0;i--){DQ=0;//给脉冲信号dat>>=1;DQ=1;//给脉冲信号if(DQ)dat|=0x80;Delay_DS18B20(4);}return(dat);}void WriteOneChar(unsigned char dat){unsigned char i=0;for(i=8;i>0;i--){DQ=0;DQ=dat&0x01;Delay_DS18B20(5);DQ=1;dat>>=1;}}unsigned int ReadTemperature(void){unsigned char a=0;unsigned char b=0;unsigned int t=0;float tem=0;Init_DS18B20();WriteOneChar(0xCC);//跳过读序号列号的操作WriteOneChar(0x44);//启动温度转换Init_DS18B20();WriteOneChar(0xCC);//跳过读序号列号的操作WriteOneChar(0xBE);//读取温度寄存器a=ReadOneChar();//读低8位b=ReadOneChar();//读高8位t=b;t<<=8;t=t|a;tem=t*0.0625;t=tem*100;//放大10倍输出并四舍五入return(t);}void Delay(uint num){while(--num);}void InitTimer(void){TMOD=0x01;TH0=0x3c;TL0=0xb0;//50ms(晶振12M)}void timer0(void)interrupt1{TH0=0x3c;TL0=0xb0;x++;}void int0(void)interrupt0{EX0=0;//关外部中断0if(DEC==0&&set_st==1){Delay(2000);do{}while(DEC==0);while(!DEC);shangxian--;if(shangxian<xiaxian)shangxian=xiaxian;}else if(DEC==0&&set_st==2) {Delay(2000);do{}while(DEC==0);while(!DEC);xiaxian--;if(xiaxian<0)xiaxian=0;}}void int1(void)interrupt2{EX1=0;//关外部中断1if(ADD==0&&set_st==1){Delay(2000);do{}while(ADD==0);while(!ADD);shangxian++;if(shangxian>99)shangxian=99;}else if(ADD==0&&set_st==2){Delay(2000);do{}while(ADD==0);while(!ADD);xiaxian++;if(xiaxian>shangxian)xiaxian=shangxian;}}void check_wendu(void){uint a,b,c,d,e;c=ReadTemperature();//获取温度值并减去DS18B20的温漂误差a=c/1000;//计算得到千位数字b=c/100-a*10;//计算得到百位数字m=c/100;//计算得到整数位d=c/10-a*100-b*10;//计算得到十位e=c-a*1000-b*100-d*10;//计算得到个位p=c%100;if(m<0){m=0;p=0;};//设置温度显示下限if(m>99){m=99;p=99;}//设置温度显示上限}Disp_Temperature()//显示温度{P0=0xc6;//CP2=0x08;Delay(300);P2=0x00;P0=LEDData[p/10];//显示十位P2=0x04;Delay(300);P2=0x00;P0=LEDData1[m%10];//显示百位P2=0x02;Delay(300);P2=0x00;P0=LEDData[m/10];//显示千位P2=0x01;Delay(300);P2=0x00;//关闭显示}Disp_alarm(uchar baojing){P2=0x00;P0=0xc6;//CP2=0x08;Delay(200);P2=0x00;P0=LEDData[baojing%10];P2=0x04;Delay(200);P2=0x00;P0=LEDData[baojing/10];P2=0x02;Delay(200);P2=0x00;if(set_st==1)P0=0x89;//上限H标示else if(set_st==2)P0=0xc7;//下限L标示P2=0x01;Delay(200);P2=0x00;//关闭显示}void Alarm(){if(x>=3){beep_st=~beep_st;x=0;}if(m>=shangxian&&beep_st==1)BEEP=1;//beep状态位和警戒温度一起决定高于上限温度else BEEP=0;if((m<xiaxian&&beep_st==1))BEEA=1;//beep状态位和警戒温度一起决定低于下限温度else BEEA=0;}void main(void){uint z;InitTimer();//初始化定时器EA=1;//全局中断开关TR0=1;//开启定时器0ET0=1;//允许定时器0中断BEEP=0;BEEA=0;IT1=0;IT0=0;while(1){if(SET==0){Delay(2000);do{}while(SET==0);while(!SET);set_st++;x=0;shanshuo_st=1;if(set_st>2)set_st=0;//调整键按下退出}switch(set_st){case(0):EX0=0;//关闭外部中断0EX1=0;//关闭外部中断1check_wendu();Disp_Temperature();Delay(2000);Alarm();//报警检测break;case(1):BEEP=0;//关闭蜂鸣器BEEA=0;EX0=1;//开启外部中断0EX1=1;//开启外部中断1if(x>=10){shanshuo_st=~shanshuo_st;x=0;}if(shanshuo_st){Disp_alarm(shangxian);}break;case(2):BEEP=0;//关闭蜂鸣器BEEA=0;EX0=1;//开启外部中断0EX1=1;//开启外部中断1if(x>=10){shanshuo_st=~shanshuo_st;x=0;}if(shanshuo_st){Disp_alarm(xiaxian);}break;}}}。