DS18B20测温单片机控制
- 格式:doc
- 大小:49.00 KB
- 文档页数:7
ds18b20与单片机工作原理
DS18B20是一款数字温度传感器,常用于单片机系统中进行温度测量。
它采用了1-Wire总线协议,可以通过单一的数据线实现数据传输和供电。
DS18B20传感器内部结构包含了一个温度传感器单元、数字转换单元和存储器单元。
温度传感器单元采用了精确的模拟传感器,能够测量环境温度并输出相应的模拟信号。
数字转换单元将模拟信号转换为数字信号,并通过1-Wire总线传输给单片机。
存储器单元用于存储温度传感器的序列号、配置信息和温度数据。
DS18B20与单片机之间的通信采用了1-Wire总线协议。
这种协议通过单一的数据线实现数据传输和供电,简化了硬件连接和布线。
在通信过程中,单片机作为总线的主设备,发出读取传感器数据的指令,并通过1-Wire总线接收传感器的响应。
传感器在接收到指令后,进行温度测量并将结果转换为数字信号,然后通过1-Wire总线传输给单片机。
为了确保稳定的数据传输,DS18B20还包含了内部的电源管理电路和时序控制电路。
电源管理电路能够自行调整传感器的供电电流,并且能够自动进入休眠状态以降低功耗。
时序控制电路用于控制通信的时间序列,确保数据的准确传输。
总结而言,DS18B20与单片机通过1-Wire总线协议进行通信,实现温度数据的测量和传输。
其内部结构包含温度传感器单元、数字转换单元和存储器单元,通过精确的模拟传感器进行温度测量,并采用电源管理和时序控制电路确保稳定的数据传输。
【注意】回答中出现的具体器件、厂商及其特定信息只是为了描述清楚相关原理,并不构成对其的任何推荐或宣传。
DS18B20智能温度控制器DALLAS最新单线数字温度传感器DS18B20简介新的“一线器件”体积更小、适用电压更宽、更经济 Dallas 半导体公司的数字化温度传感器DS1820是世界上第一片支持“一线总线”接口的温度传感器。
一线总线独特而且经济的特点,使用户可轻松地组建传感器网络,为测量系统的构建引入全新概念。
DS18B20、 DS1822 “一线总线”数字化温度传感器同DS1820一样,DS18B20也支持“一线总线”接口,测量温度范围为 -55°C~+125°C,在-10~+85°C范围内,精度为±0.5°C。
DS1822的精度较差为± 2°C 。
现场温度直接以“一线总线”的数字方式传输,大大提高了系统的抗干扰性。
适合于恶劣环境的现场温度测量,如:环境控制、设备或过程控制、测温类消费电子产品等。
与前一代产品不同,新的产品支持3V~5.5V 的电压范围,使系统设计更灵活、方便。
而且新一代产品更便宜,体积更小。
DS18B20、 DS1822 的特性 DS18B20可以程序设定9~12位的分辨率,精度为±0.5°C。
可选更小的封装方式,更宽的电压适用范围。
分辨率设定,及用户设定的报警温度存储在EEPROM中,掉电后依然保存。
DS18B20的性能是新一代产品中最好的!性能价格比也非常出色! DS1822与 DS18B20软件兼容,是DS18B20的简化版本。
省略了存储用户定义报警温度、分辨率参数的EEPROM,精度降低为±2°C,适用于对性能要求不高,成本控制严格的应用,是经济型产品。
继“一线总线”的早期产品后,DS1820开辟了温度传感器技术的新概念。
DS18B20和DS1822使电压、特性及封装有更多的选择,让我们可以构建适合自己的经济的测温系统。
DS18B20的内部结构DS18B20内部结构主要由四部分组成:64位光刻ROM、温度传感器、非挥发的温度报警触发器TH和TL、配置寄存器。
单片机DS18B20水温控制系统设计一.引言在一些温控系统电路中,广泛采用的是通过热电偶、热电阻或PN结测温电路经过相应的信号调理电路,转换成A/D转换器能接收的模拟量,再经过采样/保持电路进行A/D 转换,最终送入单片机及其相应的外围电路,完成监控。
但是由于传统的信号调理电路实现复杂、易受干扰、不易控制且精度不高。
本文介绍单片机结合DS18B20水温控制系统设计,因此,本系统用一种新型的可编程温度传感器(DS18B20),不需复杂的信号调理电路和A/D转换电路能直接与单片机完成数据采集和处理,实现方便、精度高,可根据不同需要用于各种场合。
目录一.引言...二.设计目的...三.系统功能...四.系统设备...五.温度控制总体方案与原理...1.系统模块图...2.系统模块总关系图...六.温度转换核心及其算法...1.温度传感器DS18B20原理与特性...DSl8B20的管脚及特点...DS18B20的内部结构...DS18B20的内存结构...DS18B20的测温功能...DSl820工作过程中的协议...温度传感器与单片机通讯时序...2.温度转换算法及分析...七.硬件设计说明...1.系统总体电路图...2.各个模块电路图...输入系统...输出系统...芯片系统...八.软件设计说明...1.总模块的流程图...2.各个模块的流程图...读取温度DS18B20模块的流程...键盘扫描处理流程...九.操作指引...按键功能...显示温度...设定温度...十.参考文献...程序源代码...二.设计目的设计并制作一个水温自动控制系统,控制对象为1升净水,容器为搪瓷器皿。
水温可以在一定范围内由人工设定,并能在环境温度降低时实现自动控制,以保持设定的温度基本不变。
利用单片机AT89S52实现水温的智能控制,使水温能够在40-90 度之间实现控制温度调节。
利用仪器读出水温,并在此基础上将水温调节到我们通过键盘输入的温度(其方式是加热或降温),而且能够将温度显示在我们的七段发光二极管板上。
课程实训报告《单片机技术开发》专业:机电一体化技术班级: 104201学号: 10420134姓名:杨泽润浙江交通职业技术学院机电学院2012年5月29日目录一、DS18B20温度测量与控制实验目的……………………二、DS18B20温度测量与控制实验说明……………………三、DS18B20温度测量与控制实验框图与步骤……………………四、DS18B20温度测量与控制实验清单……………………五、DS18B20温度测量与控制实验原理图…………………六、DS18B20温度测量与控制实验实训小结………………一、实验目的1.了解单总线器件的编程方法。
2.了解温度测量的原理,掌握 DS18B20 的使用。
二、实验说明本实验系统采用的温度传感器DS18B20是美国DALLAS公司推出的增强型单总线数字温度传感器。
Dallas 半导体公司的数字化温度传感器DS1820是世界上第一片支持“一线总线”接口的温度传感器。
现场温度直接以“一线总线”的数字方式传输,大大提高了系统的抗干扰性。
适合于恶劣环境的现场温度测量,如:环境控制、设备或过程控制、测温类消费电子产品等。
与前一代产品不同,新的产品支持3V~5.5V的电压范围,使系统设计更灵活、方便。
DS18B20测量温度范围为-55°C~+125°C,在-10~+85°C范围内,精度为±0.5°C。
DS18B20可以程序设定9~12位的分辨率,及用户设定的报警温度存储在EEPROM中,掉电后依然保存。
DS18B20 内部结构DS18B20 内部结构主要由四部分组成:64 位光刻 ROM、温度传感器、非挥发的温度报警触发器 TH 和 TL、配置寄存器。
DS18B20 的管脚排列如下: DQ 为数字信号输入/输出端;GND 为电源地;VDD 为外接供电电源输入端(在寄生电源接线方式时接地)。
光刻 ROM 中的 64 位序列号是出厂前被光刻好的,它可以看作是该DS18B20 的地址序列码。
电子综合实践设计报告专业班级:学生姓名:指导教师:设计时间:物理与通信电子学院摘要DS18B20数字温度计是DALLAS公司生产的1-Wire,即单总线器件,具有线路简单、体积小、低功耗、高精度、抗干扰能力强等特点的数字温度传感器。
本设计采用多点测温方法,在一个IO口上挂接多个DS18B20测温,在远距离工作时,为了防止信号的衰减,DS18B20用屏蔽双绞线包裹,远端接地的方法工作,并把所测得的温度在LCD上显示出来。
文中简要的介绍了DS18B20的基本特点、引脚功能、测温原理及时序的控制。
给出了DS18B20的使用电路、使用中的注意事项、硬件及软件设计方法。
经过测试,该系统的测量精度及速度等指标均能满足设计要求。
关键词:DS18B20 测温系统数字温度传感器多点测温目录摘要 (2)1 引言 (4)2 设计要求 (4)3 方案设计与原理 (4)3.1 DS18B20 简介 (4)3.1.1 DS18B20特性 (4)3.1.2说明: (5)3.1.3 DS18B20测温原理: (5)3.1.4 DS18B20测温原理图: (6)3.1.5 64位激光刻ROM (7)3.1.6 CRC发生器 (7)3.1.7 单总线系统 (7)3.2 DS18B20指令控制 (7)3.2.1 ROM时序指令控制 (8)3.2.2DS18B20功能指令控制 (8)3.3 18B20时序详解 (9)3.3.1初始化时序 (9)3.3.2读/写时序 (9)3.4二叉树遍历 (11)4 设计程序流程图: (16)5 设计硬件原理图 (17)6 DS18B20使用中应注意事项 (18)7测试中出现的问题及解决办法和说明: (18)8 结束语 (19)9 参考文献: (20)10 附录: (21)1 引言本系统利用DS18B20进行测温,基于单片机AT89S52进行温度控制,具有硬件电路简单,控温精度高、功能强,体积小,简单灵活等优点,可以应用于控制温度在-55℃到+125℃之间的各种场合,可以实现温度的实时采集、显示功能。
1) DS18B20 是DALLAS 公司生产的一线制数字温度传感器; 2) 具有3 引脚TO-92 小体积封装形式; 3) 温度测量范围为-55℃~+125℃; 4) 电源供电范围为3V~5.5V ; 5) 可编程为9 位~12 位数字表示;6) 测温分辨率可达0.0625℃,被测温度用符号扩展的16 位数字量方式串行输出;7) 其工作电源既可在远端引入,也可采用寄生电源方式产生;8) 多个DS18B20 可以并联到3 根(VDD、DQ 和GND)或2 根(利用DQ 线供电、GND)线上,CPU 只需一根端口线就能与总线上的多个串联的DS18B20 通信,占用微处理器的端口较少,可节省大量的引线和逻辑电路。
一线总线独特而且经济的特点,使用户可轻松地组建传感器网络,为测量系统的构建引入全新概念。
TO-92封装的DS18B20DS18B20 的管脚排列及不同封装形式如图 2所示,DQ 为数字信号输入/输出端;GND 为电源地;VDD 为外接供电电源输入端(在寄生电源接线方式时接地,见),NC 表示无连接。
管脚图DS18B20内部结构如图3所示,主要由4 部分组成:64 位ROM 、温度传感器、非易失性存储的温度报警触发器TH 和TL 、配置寄存器。
DS18B20管脚DS18B20概述DS18B20内部结构图非常适用于远距离多点温度检测系统。
DQ-数据输入输出。
漏极开路1 线接口。
也在寄生电源模式时给设备提供电源。
访问DS18B20 的顺序如理初始化;DS18B20读写 连接图应用领域ROM 命令(接着是任何需要的数据交换);DS18B20 函数命令(接着是任何需要的数据交换)。
每一次访问DS18B20 时必须遵循这一顺序,如果其中的任何一步缺少或打乱它们的顺序,DS18B20 将不会响应。
(1)初始化时序所有与DS18B20 的通信首先必须初始化:控制器发出复位脉冲,DS18B20 以存在脉冲响应。
水温控制系统摘要:该水温控制系统采用单片机进行温度实时采集与控制。
温度信号由“一线总线”数字化温度传感器DS18B20提供,DS18B20在-10~+85°C范围内,固有测温分辨率为0.5 ℃。
水温实时控制采用继电器控制电热丝和风扇进行升温、降温控制.系统具备较高的测量精度和控制精度,能完成升温和降温控制。
关键字:AT89C51 DS18B20 水温控制Abstract: This water temperature control system uses the Single Chip Microcomputer to carry on temperature real-time gathering and controling。
DS18B20,digitized temperature sensor, provides the temperature signal by "a main line”. In -10~+85℃the scope,DS18B20’s inherent measuring accuracy is 0.5 ℃. The water temperature real-time control system uses the electricity nichrome wire carring on temperature increiseament and operates the electric fan to realize the temperature decrease control。
The system has the higher measuring accuracy and the control precision,it also can complete the elevation of temperature and the temperature decrease control. Key Words:AT89C51 DS18B20 Water temperature control目录1.系统方案选择和论证 (2)1。
关于DS18B20在单片机中的应用摘要:DS18820是美国DALLAS半导体公司生产的单总线数字温度传感器,它可直接实现数字化输出和测试,具有控制功能强,高精度,传输距离远,抗干扰能力强,微型化和微功耗等特点.本文介绍了单线数字温度传感器DS18820的结构,特点和工作原理;在蓝桥杯CT107D开发平台了上利用DS18820测量正负范围内带小数的实时温度并显示,测量系统的硬件结构及设计C51程序所注意事项。
关键词:DS18820实时测温正负温度Abstract:DS18820 is a single bus digital temperature sensor produced by DALLAS Semiconductor Company in the United States. It can directly realize digital output and test, with strong control function, high precision, long transmission distance, strong anti-interference ability, miniaturization and micro-power consumption. This paper introduces the structure, characteristics and working principle of single-wire digital temperature sensor DS18820. On the development platform of Lanqiao CT107D, DS18820 is used to measure the real-time temperature with decimal in the range of positive and negative and display the hardware structure of the measurement system and thematters for attention in the design of C51 program..Keywords:DS18820,real-time temperature measuring,the positive and negative temperature温度传感器是比较常用的一种传感器,早期多使用模拟式温度传感器,如热敏电阻;随着科技进步,现在温度传感器多用数字式的,如DS18B20。
基于51单片机和DS18B20的数字温度计设计说明
1.硬件设计:
-51单片机:选择合适的型号,如STC89C52或AT89C52等。
-DS18B20温度传感器:该传感器是一种数字温度传感器,具有单总线接口和高精度测量能力。
-接口电路:将51单片机和DS18B20传感器连接起来,要注意电平转换和信号线的阻抗匹配。
2.软件设计:
-初始化:在主函数中,首先对单片机进行初始化设置,包括时钟设置、串口配置等。
-DS18B20通信协议:使用单总线协议与DS18B20传感器进行通信,包括发送复位信号、读写数据等操作。
-温度测量:通过向DS18B20发送读取温度的命令,从传感器中读取温度值并保存。
-数据传输:将温度值转换为可显示的格式,如摄氏度或华氏度,并通过串口输出或LED显示。
3.程序流程:
-初始化单片机,设置时钟和串口参数。
-进入主循环,循环执行以下操作:
-发送复位信号,启动温度转换。
-等待转换完成,发送读取温度命令。
-读取温度值,并进行数据处理转换。
-输出温度值。
4.其他功能:
-可以添加LCD显示模块,将温度值显示在液晶屏上。
-可以添加按键输入模块,通过按键切换温度单位或进行其他操作。
需要注意的是,该设计只是一个简单的示例,实际应用中可能需要根据具体需求进行扩展和修改。
同时,在程序设计过程中,也要注意低功耗和数据稳定性等方面的考虑。
基于单总线器件DS18B20的温度测量仪廖琪梅,韩彬,杨文昭,屈景辉时间:2008-08-281 引言许多情况下需要测量温度参数。
通常测温系统的主要器件是热敏电阻,由于它体积小、重复性好、测量方法简单,所以在测温系统中广泛应用。
但采用热敏电阻的测温系统需要A/D转换,而且测量精度不高。
本文采用Dallas公司生产的一种新型温度传感器DS18B20,它集温度测量、A/D转换于一体,其测量范围宽(-55℃~+125℃),精度高(0.0625℃),DS18B20是一款具有单总线结构的器件。
由DS18B20组建的温度测量单元体积小,便于携带、安装。
同时,DS18B20的输出为数字量,可以直接与单片机连接,无需后级A/D转换,控制简单。
由于DS18B20具有单总线特性,便于扩展,可在一根总线上挂接多个DS18B20来组建温度测量网络。
2 硬件电路设计本系统设计采用 Mega8单片机控制DS18B20,由显示电路显示当前温度。
其系统硬件电路如图1所示。
Atmel的Mega8单片机采用RTSC(精简指令集),指令执行速度快,内嵌8 KB Flash程序存储器,支持ISP(在系统编程),片内含有大容量的RAM 区,具有SPT总线、I2C总线、ADC功能。
Mega8单片机体积小,功能强,具有PDIP-28封装及TQFP封装。
DS18B20采用单总线方式和Mega8单片机相连,即DS18B20的1引脚和3引脚接地,2引脚通过一只240 Ω的电阻接至Mega8的PB7引脚,同时将PB7引脚采用一只4.7 kΩ的电阻上拉至VCC。
单总线即只用一根信号线,既供电,又传输数据,而且数据传输是双向的,单总线具有"线与"功能,连接方便,便于扩展。
由于DS18B20采用 CMOS技术,耗电量很小,从总线上"偷"一点电保存到DS18B20内的电容中就可供给器件工作。
串联240 Ω电阻的目的是防止有缺陷的程序损坏DS18B20,如果没有正确地采用OC(集电极开路)或OD(漏极开路)结构驱动DS18B20,而是选择推挽方式,DS18B20可能被烧坏。
51单片机DS18B20温度传感器原理及实验一、引言温度传感器是一种常用的传感器器件,它的作用是将物体的温度变化转换为电信号输出,以实现温度的监测和控制。
DS18B20是一种数字温度传感器,采用数字信号输出,具有体积小、精度高、线性度好等特点,被广泛应用于各种温度控制系统中。
本文将介绍DS18B20的工作原理及实验方法。
二、DS18B20的工作原理DS18B20是一种基于一线传输协议的数字温度传感器,其工作原理如下:1.接口电路:DS18B20具有三个引脚,分别是VDD、DQ和GND。
其中,VDD是供电引脚,DQ是数据引脚,GND是地引脚。
2.传感器原理:DS18B20内部包含一个温度传感器和一个数字转换器。
温度传感器采用热敏电阻的原理,通过测量热敏电阻的电阻值来反映物体的温度变化。
数字转换器将传感器测得的电阻值转换为数字信号输出。
三、实验流程以下是使用51单片机对DS18B20温度传感器进行实验的详细流程:1.硬件准备:-将DS18B20的VDD引脚连接到单片机的VCC引脚,DQ引脚连接到单片机的任意IO引脚,GND引脚连接到单片机的GND引脚。
-确保DS18B20的供电电压和单片机的工作电压一致。
2.初始化:-在程序中定义DS18B20的DQ引脚所对应的单片机的IO引脚。
-初始化DS18B20,即发送初始化指令给DS18B20。
3.温度转换:-发送温度转换指令给DS18B20,DS18B20开始测量温度。
-等待一定的延时,确保DS18B20完成温度转换。
4.读取温度:-发送读取温度指令给DS18B20,DS18B20将温度的原始数据发送给单片机。
-单片机通过计算将原始数据转换为温度值。
-温度值可以通过串口或LCD等方式进行显示。
5.循环实验:-以上步骤需要不断重复,以便实时监测温度的变化。
四、总结DS18B20温度传感器是一种常用的数字温度传感器,具有精度高、体积小、线性度好等特点,适用于各种温度控制系统。
温度测量在物理实验、医疗卫生、食品生产等领域,尤其在热学试验中,有特别重要的意义。
随着人们生活水平的不断提高,,人们对温度计的要求越来越高,传统的温度计功能单一、精度低,要为现代人工作、科研、生活、提供更好的更方便的设施就需要从单片机技术入手,一切向着数字化控制,智能化控制方向发展。
数字温度计(Digital Thermometer)简称D温度是许多监控系统中的一个重要参数。
TM,它是采用数字化测量技术,把连续的温度值转换成不连续、离散的数字形式并加以显示的仪表。
采用单片机控制的数字温度计,由于精度高、可扩展性强、集成方便、抗干扰能力强,得到了广泛的应用。
本设计以单片机和温度传感器为核心,设计数字温度计。
实现对温度的采集、监视和报警。
在温度采集的实现中,使用了AT89C51单片机和温度传感器DS18B20,温度监视部分利用动态驱动技术,以单片机驱动4位LED数码管。
温度测量范围-55℃~+125℃,通过按键设置上下限报警温度,并用4位共阳极LED数码管以串口传送数据,实现温度显示,能准确达到设计要求。
正文还介绍了AT89C51和集成温度传感器DS18B20。
1 设计的意义及主要功能 (3)1.1 意义 (3)1.2 主要功能 (3)2 总体方案设计 (4)2.1 方案比较 (4)2.2 方案论证 (5)2.3 方案选择 (5)3 硬件电路设计 (6)3.1 元器件的选择 (6)3.2 电路原理图 (6)3.3 特殊元器件的介绍 (6)3.3.1 AT89C51介绍 (6)3.3.2 DS18B20介绍 (9)4 总结 (13)5 参考文献 (13)附录 (14)1 设计的意义及主要功能1.1 意义随着人们生活水平的不断提高,数字化无疑是人们追求的目标之一,它所给人带来的方便也是不可否定的,其中数字温度计就是一个典型的例子,一切向着数字化控制,智能化控制方向发展。
数字温度计与传统的温度计相比,具有读数方便,测温范围广,测温准确,其输出温度采用数字显示,主要用于对测温比较准确的场所,或科研实验室使用。
特点 ● 单总线接口,节约布线资源● 应用简单,无需额外器件● 转换温度时间500ms● 可编程9~12位数字输出●宽供电电压范围● 每颗芯片有可编程的ID 序列号 ● 用户可自行设置报警值 ● 超强ESD 保护能力(HBM>8000V )● 典型待机电流功耗1µA @3V ●典型换电流功耗0.6mA@3V典型应用● 便携应用,手机与穿戴设备● 温度监控 ●粮情监测● 智能家电系统 ● 水温测量● 建筑、设备或机房内部温度监测系统● 过程监测和控制系统概述是一款高精度的单总线温度测量芯片。
温度传感器的测温范围为-55°C 到+125°C ;根据用户需要通过配置寄存器可以设定数字转换精度和测温速度。
芯片内置4byte 非易失性存储单元供用户使用,2byte 用于高低温报警,另外2byte 用于保存用户自定义信息。
在-10°C 到+85°C 范围内最大误差为±°C 。
用户可自主选择电源供电模式和寄生供电模式。
单总线接口允许多个设备挂在同一总线,该特性使得也非常便于部署分布型温度采集系统。
管脚图和管脚描述34167852GNDDQ VDD MSOP82.5V-5.5V DS18B20H DS18B200.4DS18B20图1 DS18B20框图结构框图图1是DS18B20的原理框图。
64位ROM存储了器件的唯一序列码。
暂存器包含了两个字节的温度寄存器,存储来自于温度传感器的数字输出。
另外,暂存器提供了一高一低两个报警触发阈值寄存器(TH和TL)。
配置寄存器允许用户设定温度数字转换的分辨率为9,10,11或12位。
2个字节的用户可编程E2PROM是非易失性存储,器件掉电时数据不会失去。
DS18B20使用单总线协议,总线通讯通过一根控制信号线实现。
控制线需要一个弱上拉电阻这样所有的器件都通过三态或者开漏极端口(就是DS18B20的DQ引脚)连接到总线上。
一核心器件的基本构成及特性1.1 AT89S51功能特性89C51是INTEL公司MCS-51系列单片机中基本的产品,它采用INTEL公司可靠的CHMOS工艺技术制造的高性能8位单片机,属于标准的MCS-51的HCMOS产品。
它结合了HMOS的高速和高密度技术及CHMOS的低功耗特征,它基于标准的MCS-51单片机体系结构和指令系统,属于80C51基础型单片机版本,集成了时钟输出和向上或向下计数器等更多的功能。
89C51内置8位中央处理单元、256字节内部数据存储器RAM、8k片内程序存储器(ROM)32个双向输入/输出(I/O)口、3个16位定时/计数器和5个两级中断结构,一个全双工串行通信口,片内时钟振荡电路。
此外,89C51还可工作于低功耗模式,可通过两种软件选择空闲和掉电模式。
在空闲模式下冻结CPU 而RAM定时器、串行口和中断系统维持其功能。
掉电模式下,保存RAM数据,时钟振荡停止,同时停止芯片内其它功能。
89C51有PDIP(40pin)和PLCC(44pin)两种封装形式。
1.2 AT89S51管脚介绍AT89C51单片机是把那些作为控制应用所必需的基本内容都集成在一个尺寸有限的集成电路芯片上。
如果按功能划分,它由如下功能部件组成,即微处理器(CPU)、数据存储器(RAM)、程序存储器(ROM)、并行I/O口(4个8位I/O口)、串行口、定时器/计数器、中断系统及特殊功能寄存器。
它们都是通过片内单一总线连接而成,其基本结构依旧是微处理器(CPU)加上外围芯片的传统结构模式。
但对各种功能部件的控制是采用特殊功能寄存器的集中控制方式,以实现不同的功能。
AT89C51单片机如图所示。
1.1.1引脚功能介绍Vcc(40引脚):接+5V电源。
Vss(20引脚):接地。
XTAL1(19引脚):片内振荡器反相放大器和时钟发生器电路的输入端。
XTAL2(18引脚):片内震荡器反相放大器的输出端。
RST:复位引脚,高电平有效。
基于单片机的温度控制系统设计温度控制系统是现代生活中不可或缺的一部分,常见于家庭的的空调、电饭煲、烤箱等家用电器,以及工业生产中的各种自动化设备。
本文基于单片机设计针对室内温度控制系统的实现方法进行说明,包括温度采集、温度控制器的实现和人机交互等方面。
一、温度采集温度采集是温度控制系统的核心部分。
目前比较常见的温度采集器主要有热电偶、热敏电阻和半导体温度传感器。
在本文中我们以半导体温度传感器为例进行说明。
常见的半导体温度传感器有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); //输出温度值二、温度控制器的实现温度控制器是本次实验的关键部件,主要实现对温度的控制和调节,其基本原理是根据温度变化情况来控制输出电压或模拟脚电平,驱动继电器控制电器设备工作。
/******************************************************************** * * ME850单片机开发实验仪演示程序- DS18B20温度显示* * * * 6数码管显示* * * * 版本:V1.0 (2008/08/23) ** 作者:gguoqing (Email: gguoqing@) ** 作者:gguoqing (gguoqing@) ** 网站:(硕飞科技) (伟纳单片机世界) ** 邮箱:sofitech@ ** * *【版权】Copyright(C)伟纳电子 All Rights Reserved **【声明】此程序仅用于学习与参考,引用请注明版权和作者信息!* * * *******************************************************************/#include <reg52.h>#include <intrins.h>sbit DQ = P3 ^ 3; //定义DS18B20端口DQsbit BEEP = P3 ^ 7; //定义蜂鸣器控制端口bit presence;unsigned char code LEDData[] ={0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82,0xF8, 0x80, 0x90, 0xff, 0xc6, 0x9c, 0xbf};unsigned char data temp_data[2];unsigned char data display[7] ={0x0b, 0x0c, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d};char code reserve[3]_at_ 0x3b; //保留0x3b开始的3个字节/**********************************************************us延时函数(8*1.085)*num**********************************************************/ void Delay(unsigned int num) //延时函数{while (--num);}/********************************************************** 延时子程序**********************************************************/ void delayms(unsigned int ms){unsigned char k;while (ms--){for (k = 0; k < 114; k++);}}/********************************************************** 蜂鸣器驱动子函数**********************************************************/ void beep(){unsigned char i;for (i = 0; i < 180; i++){Delay(80);BEEP = !BEEP; //BEEP取反}BEEP = 1; //关闭蜂鸣器delayms(100);}/********************************************************** DS18B20初始化presence=0 OK presence=1 ERROR**********************************************************/ unsigned char Init_DS18B20(void){DQ = 0; //单片机发出低电平复位信号Delay(60); //延时>480usDQ = 1; //释放数据线Delay(8); //延时>64us,等待应答presence = DQ; //接收应答信号Delay(50); //延时>400us,等待数据线出现高电平DQ = 1; //释放数据线return (presence); //返回presence信号}/********************************************************** 读一个字节数据**********************************************************/ unsigned char ReadOneChar(void){unsigned char i = 0;unsigned char dat = 0;DQ = 1;for (i = 0; i < 8; i++)//一个字节8个bit{DQ = 0; //给低脉冲信号dat >>= 1;DQ = 1; //释放总线_nop_();_nop_();if (DQ)//读总线电平状态dat |= 0x80;//最高位置1Delay(6); //延时>45usDQ = 1; //释放总线,表示此次读操作完成}return (dat); //返回所读得数据/********************************************************** 写一个字节数据**********************************************************/ void WriteOneChar(unsigned char dat){unsigned char i = 0;for (i = 0; i < 8; i++)//一个字节8个bit{DQ = 0; //给低脉冲信号Delay(1); //延时<15usdat >>= 1; //数据右移一位,最低位移入CYDQ = CY; //写1bit数据Delay(6); //延时>45usDQ = 1; //释放总线,表示此次写操作完成}}/********************************************************** 温度数据转换子程序**********************************************************/ void Temperature_conver(){unsigned char minus = 0;// display[0]=0x0b; //显示C// display[1]=0x0c; //显示°if (temp_data[1] > 127)//温度为负值{temp_data[0] = (~temp_data[0]) + 1; //取反加一,将补码变成原码if ((~temp_data[0]) >= 0xff)temp_data[1] = (~temp_data[1]) + 1;elsetemp_data[1] = ~temp_data[1];minus = 1; //温度为负值标志}display[6] = temp_data[0] &0x0f; //取小数位数据display[2] = (display[6] *10) / 16; //保留一位小数display[6] = ((temp_data[0] &0xf0) >> 4) | ((temp_data[1] &0x0f) << 4);//取整数display[5] = display[6] / 100; //百位display[4] = (display[6] % 100) / 10; //十位display[3] = display[6] % 10; //个位if (!display[5])//高位为0,不显示{display[5] = 0x0a;if (!display[4])//次高位为0,不显示display[4] = 0x0a;}if (minus){display[5] = 0x0d; //显示负号}}/********************************************************** 数码管显示子函数**********************************************************/ void ledplay(){unsigned char n, shift;shift = 0xfe; //位码初值for (n = 0; n < 6; n++)//6位数码管显示{if (n == 3)P0 = (LEDData[display[n]]) &0x7f;//加小数点显示elseP0 = LEDData[display[n]];//输出段码P2 = shift; //输出位码shift = (shift << 1) | 0x01; //修改位码delayms(1);}P2 = 0xff; //关闭显示delayms(1);}/********************************************************** 主函数**********************************************************/ void main(void){unsigned char m;P0 = 0xff;P2 = 0xff;while (1){Init_DS18B20();if (presence == 0){WriteOneChar(0xCC); //跳过ROM匹配操作WriteOneChar(0x44); //启动温度转换for (m = 0; m < 120; m++)//数码管初始化显示ledplay();//等待数据转换完成}Init_DS18B20();if (presence == 0){WriteOneChar(0xCC); //跳过ROM匹配操作WriteOneChar(0xBE); //读取温度寄存器temp_data[0] = ReadOneChar(); //温度低8位temp_data[1] = ReadOneChar(); //温度高8位Temperature_conver(); //数据转换for (m = 0; m < 120; m++)ledplay();//温度显示}else{beep(); //蜂鸣器报警P2 = 0xff; //关闭显示}}}/*********************************************************/。