导航:首页 > 装置知识 > 单片机室温自动记录装置

单片机室温自动记录装置

发布时间:2022-06-29 19:44:20

❶ 论文单片机温度控制系统的(程序清单)!!!!急!!!!

本设计的温度测量及加热控制系统以 AT89S52 单片机为核心部件,外加温度采集电
路、键盘及显示电路、加热控制电路和越限报警等电路。采用单总线型数字式的温度传
感器 DS18B20,及行列式键盘和动态显示的方式,以容易控制的固态继电器作加热控制
的开关器件。本作品既可以对当前温度进行实时显示又可以对温度进行控制,以使达到
用户需要的温度,并使其恒定在这一温度。人性化的行列式键盘设计使设置温度简单快
速,两位整数一位小数的显示方式具有更高的显示精度。建立在模糊控制理论上的控制
算法,使控制精度完全能满足一般社会生产的要求。通过对系统软件和硬件设计的合理
规划,发挥单片机自身集成众多系统级功能单元的优势,在不减少功能的前提下有效降
低了硬件成本,系统操控简便。
实验证明该温控系统能达到 0.2℃的静态误差,0.45℃的控制精度,以及只有 0.83%
的超调量,因而本设计具有很高的可靠性和稳定性。
关键 词: 单片机 恒温控制 模糊控制

1

引 言
温度是工业生产中主要的被控参数之一,与之相关的各种温度控制系统广泛应用于
冶金、化工、机械、食品等领域。温度控制是工业生产过程中经常遇到的过程控制,有
些工艺过程对其温度的控制效果直接影响着产品的质量,因而设计一种较为理想的温度
控制系统是非常有价值的。

硬件 系统的设计
1、电路总体原理框图
温度测量及加热系统控制的总体结构如图 1 所示。系统主要包括现场温度采集、实
时温度显示、加热控制参数设置、加热电路控制输出、与报警装置和系统核心 AT89S52
单片机作为微处理器。

图 1:系统总体原理框图
温度采集电路以数字量形式将现场温度传至单片机。单片机结合现场温度与用户设
定的目标温度,按照已经编程固化的模糊控制算法计算出实时控制量。以此控制量控制
固态继电器开通和关断,决定加热电路的工作状态,使水温逐步稳定于用户设定的目标
值。在水温到达设定的目标温度后,由于自然冷却而使其温度下降时,单片机通过采样
回的温度与设置的目标温度比较,作出相应的控制,开启加热器。当用户需要比实时温
度低的温度时,此电路可以利用风扇降温。系统运行过程中的各种状态参量均可由数码
管实时显示。
2、温度采集电路的设计
温度采集电路模块如图 2 示。DS18B20 内部结构主要由四部分组成:64 位光刻 ROM、
温度传感器、非挥发的温度报警触发器 TH 和 TL、配置寄存器。其中 DQ 为数字信号输
入/输出端;GND 为电源地;VDD 为外接供电电源输入端。

2

图 2:温度采集电路
DS18B20 中的温度传感器可完成对温度的测量,以 12 位转化为例:用 16 位符号扩展
的二进制补码读数形式提供,以 0.0625℃/LSB 形式表达,其中 S 为符号位。

这是 12 位转化后得到的 12 位数据,存储在 18B20 的两个 8 比特的 RAM 中,二进
制中的前面 5 位是符号位,如果测得的温度大于 0,这 5 位为 0,只要将测到的数值乘
于 0.0625 即可得到实际温度;如果温度小于 0,这 5 位为 1,测到的数值需要取反加 1
再乘于 0.0625 即可得到实际温度。
3、键盘和显示的设计
键盘采用行列式和外部中断相结合的方法,图 3 中各按键的功能定义如下表 1。其
中设置键与单片机的 INT 0 脚相连,S 0 −−S 9 、YES、NO 用四行三列接单片机 P0 口,REST
键为硬件复位键,与 R、C 构成复位电路。模块电路如下图 3:
表 1:按键功能

按键 键名 功能
REST 复位键 使系统复位
RET 设置键 使系统产生中断,进入设置状态
S 0 −−S 9 数字键 设置用户需要的温度
YES 确认键 用户设定目标温度后进行确认
NO 清除键 用户设定温度错误或误按了 YES 键后使用

3

图 3 键盘接口电路
显示采用 3 位共阳 LED 动态显示方式,显示内容有温度值的十位、个位及小数点后
一位。用 P2 口作为段控码输出,并用 74HC244 作驱动。P1.0—P1.2 作为位控码输出,
用 PNP 型三极管做驱动。模块电路如下图 4:

4、加热控制电路的设计

图 4 显示接口电路

用于在闭环控制系统中对被控对象实施控制,被控对象为电热杯,采用对加在电热
杯两端的电压进行通断的方法进行控制,以实现对水加热功率的调整,从而达到对水温
控制的目的。对电炉丝通断的控制采用 SSR-40DA 固态继电器。它的使用非常简单,只
要在控制端 TTL 电平,即可实现对继电器的开关,使用时完全可以用 NPN 型三极管接
成电压跟随器的形式驱动。当单片机的 P1.3 为高点平时,三极管驱动固态继电器工作
接通加热器工作,当单片机的 P1.3 为低电平时固态继电器关断,加热器不工作。控制
电路图如下图 5:

4

图 5 加热控制电路
5、报警及指示灯电路的设计
当用户设定的目标温度达到时需用声音的形式提醒用户,此时蜂鸣器为三声断续的
滴答滴答的叫声。在本系统中我们为用户设计了越限报警,当温度低于用户设置的目标
温度 10 度或高于 10 度时蜂鸣器为连续不断的滴答滴答叫声。当单片机 P1.7 输出高电
平时,三极管导通,蜂鸣器工作发出报警声。P1.7 为低电平时三极管关断,蜂鸣器不
工作。
D1 为电热杯加热指示灯,P1.5 低电平有效;D0 为检测到 DS18B20 的指示,高电平
有效;D10 为降温指示灯,低电平有效。报警及指示灯电路如下图 6 示:

图 6 报警及指示灯电路

5

软 件系统的设计
系统的软件由三大模块组成:主程序模块、功能实现模块和运算控制模块。
1、主程序模块
主程序主要完成加热控制系统各部件的初始化和实现各功能子程序的调用,以及实
际测量中各个功能模块的协调在无外部中断申请时,单片机通过循环对外部温度进行实
时显示。把设置键作为外部中断 0,以便能对数字按键进行相应处理。主程序流程图如
下图 7:

6

图 7 主程序流程图

7

2、功能实现模块
以用来执行对固态继电器及电热杯的控制。功能实现模块主要由中断处理子程序、
温度比较处理子程序、键盘处理子程序、显示子程序、报警子程序等部分组成。键盘显
示及中断程序流程图如下图 8:

3、运算控制模块

图 8 键盘、显示、中断 子程序流程图

该模块由标度转换、模糊控制算法,及其中用到的乘法子程序。
3.1 标度转换
16
式中 A 为二进制的温度值, A0 为 DS18B20 的数字信号线送回来的温度数据。

8

单片机在处理标度转换时是通过把 DS18B20 的信号线送回的 16 位数据右移 4 位得
到二进制的温度值。其小数部分通过查小数表的形式获取。程序流程图如下图 9:

开始

将28H低4位与29H高4位组合成
一个字节

将合成的字节(整数部分)送29H
单元
将29H单元低4位送A

给DPTR赋常数表格2首地址

将查到的数值(即小数部分)送
30H单元

结束

3.2 模糊控制算法子程序

图 9 标度转换子程序流程图

该系统为一温度控制系统,由于无法确切确定电炉的物理模型,因而无法建立其数
学模型和传递函数。加热器为一惯性系统,我们采用模糊控制的方法,通过多次温度测
量模糊计算当用户设定目标温度时需提前关断加热器的温度,利用加热器自身的热惯性
使温度上升到其设定温度。每隔 5 摄氏度我们进行一次温度测量,并当达到其温度时关
断加热器记录下因加热器的热惯性而上升的温度值。从而可以建立热惯性的温度差值
表,在程序中利用查表法,查出相应设定温度对应的关断温度。通过实验数据我们可以
看出,当水温从 0℃加热到 50℃这段温度区域,其温度惯性曲线可近似成线性的直线,
水温从 50℃加热到 100℃这段温度惯性曲线可近似成另一条线性的直线段。通过对设置
的目标温度与温控系统监测温度进行差值处理就可近似的求出单片机的提前关断温度。
程序流程图如图 10:

9

4.源程序见附录[2]

图 10 模糊控制算法子程序流程图

设计 总结
我们的温度控制系统是基于 AT89S52 单片机的设计方案,她能实时显示当前温度,
并能根据用户的要求作出相应的控制。此系统为闭环系统,工作稳定稳定性高,控制精
度高,利用模糊控制算法使超调量大大降低。软件采用模块化结构,提高了通用性。本设
计的目的不仅仅是温度控制本身,主要提供了单片机外围电路及软件包括控制算法设计
的思想,应该说,这种思想比控制系统本身更为重要。
1、设计所达到的性能指标
1.1 温控系统的标度误差
我们将标准温度计和温控系统探头放人同一容器中,选定若干不同的温度点,记
录下标准温度计显示的温度和温控系统显示的温度进行比较。测量数据如下表 2 所示:
表 2 标准温度计测量的温度和温控系统显示的温度

标准温度计和温控系统显示的温度(℃)
标准温度计 16.9 47.7 57.8 63.0 72.8 85.1 90.9
温控系统 16.5 48.0 58.3 62.9 73.0 85.5 90.5
差值比较 -0.4 0.3 0.5 0.1 0.2 0.4 -0.4
标度误差 1.5%

10

1.2 温控系统的静态误差
通过测量在不同的温度点同标准温度的温度差来确定温控系统的静态误差。其测量
数据如下表 3:
表 3 标准温度和温控系统显示的温度

标准温度和温控系统显示的温度(℃)
标准温度 26.0 37.0 46.0 60.0 70.0 83.0
系统显示值 25.7 36.4 46.1 59.6 70.0 83.3
差值 -0.3 -0.6 -0.1 -0.4 0 0.3
静态误差 0.18℃

1.3 温控系统的控制精度
通过设定不同的温度值,使加热器加热,待温度稳定时记录各温度点的温度计数据
和温控系统的显示值。其记录数据如下表 4:

温度计读数和温控系统显示的温度(℃)
设定温度
值 20.0 28.0 35.0 45.0 55.0 75.0 87.0 91.0
系统显示
值 20.5 27.7 34.4 45.1 54.1 74.9 86.1 91.2
差值 0.5 -0.3 -0.6 0.1 -0.9 -0.1 -0.9 0.2
控制精度 0.45℃
超调量 0.83%

2、结果分析论述
我们的系统完全满足设计要求,静态误差方面可以达到 0.18℃的误差,在读数正确
方面与标准温度计的读数误差为 1.5%,对一般的工业生产完全可以采用我们的设计。
该系统具有较小的超调值,超调值大约为 0.83%左右。虽然超调为不利结果,但另
一方面却减小了系统的调节时间。从其数据表可以看出该系统为稳定系统。
3、设计方案评价
3.1 优点
在硬件方面:本设计方案采用了单总线型数字式的温度传感器,提高了温度的采集
精度,节约了单片机的口线资源。方案还使用仅一跟口线就可控制的美国生产的固态继
电器 SSR—40DA 作加热控制器件,使设计简单化,且可靠性强。在控制精度方面,本设
计在不能确定执行机构的数学模型的情况下,大胆的假设小心的求证,利用模糊控制的
算法来提高控制精度。
在软件方面:我们采用模块化编程,思路清晰,使程序简洁、可移植性强。
3.2 缺点
本设计方案虽然采用了当前市场最先进的电子器件,使电路设计简单,但设计方案
造价高。本系统虽然具有较小的超调量,但加大了调节时间。如果需要更高的控制精度,
则我们的模糊控制将不适应,需修改程序。
11

3.3 方案的改进
在不改变加热器容量的情况下,为减小调节时间,可以实行在加热快达到设定温度
时开启风扇来减小热惯性对温度的影响的措施。在控制精度上可采用先进的数字 PID
控制算法,对加热时间进行控制,提高控制精度。
可以改进控制系统使能同 PC 联机通信,以利用 PC 的图形处理功能打印显示温度曲
线。AT89S52 串行口为 TTL 电平,PC 串行口为 RS232 电平,使用一片 MAX232 作为电
平转换驱动。

参考 文献
[1] 李广弟 单片机基础 北京:北京航空航天大学出版社,2001
[2] 王福瑞 单片微机测控系统设计大全 北京:北京航空航天大学出版社,1997
[3] 赵茂泰 智能仪器原理及应用(第 2 版) 北京:电子工业出版社,2004
[4] 赖寿涛 微型计算机控制技术 北京:机械工业出版社,2000
[5] 沙占友 模拟与数字万用表检测及应用技术 北京:电子工业出版社 1999

12

附 录
附录[1]使用说明书

按 键功能说明
数字键:按 SET 键后,按相应的数字键(0~9)可对温度进行设置,所设置的温
度将实时显示在 LED 显示器上;
SET 键:按 SET 键可对温度的十位、个位以及小数部分进行设置;
YES 键:设置好温度后按 YES 键,系统将据你所设置的温度(须大于当前实际
温度)对水进行加热;
NO 键:若误按了 SET 键,或对输入有误,可按 NO 键进行取消;
RST 键:对系统进行复位。
指示 灯及报警器说明
红 灯:加热状态标志;
绿 灯:温度传感器正常工作标志;
蓝 灯:保温状态标志;
报警器:功能①当水温达到预设值时报警提醒;
功能②当水温达到或超越上、下限时报警提示。

13

附录[2]设计总电路

14

附录[3]程序清单
TEMPER_L EQU 29H ;用于 保存读出温度的低 8 位
TEMPER_H EQU 28H ;用于 保存读出温度的高 8 位
FLAG EQU 38H ;是否 检测到 DS 18B20 标志位
DAYU EQU 44H ;设温 >实温
XIYU EQU 45H ;设温 <实温
DEYU EQU 46H ;设温 =实温
GAOLE EQU 47H ;水温 高于最高温度
DILE EQU 48H ;水温 低于最低温度
A_bit EQU 79h ;数码 管个位数存放内存位置
B_bit EQU 7Ah ;数码 管十位数存放内存位置
C_BIT EQU 78H ;数码 管小数存放内存位置

ORG 0000H
AJMP START
ORG 0003H
AJMP PITO
ORG 0030H
START: CLR P1.7
CLR P1.3
CLR P1.5
SETB P1.6
MOV R4, #00H
MOV SP, #60H ;确立堆栈区
MOV PSW, #00H ;
MOV R0, #20H ;RAM 区首地址
MOV R7, #60H ;RAM 区单元个数
ML: MOV @R0, #00H
INC R0
DJNZ R7, ML
CLR IT0
MAIN:LCALL GET_TEMPER ;调用读温度子程序 进行温度显示,这里我们考
;虑用网站提供的两位数码管来显示温度
;显示范围 00 到 99 度,显示精度为 1 度
;因为 12 位转化时每一位的精度为 0.0625 度,
;我们不要求显示小数所以可以抛弃 29H 的低 4
;位将 28H 中的低 4 位移入 29H 中的高 4 位,这
;样获得一个新字节,这个字节就是实际测量获
;得的温度

LCALL DISPLAY ;调用数码管显示 子程序
JNB 00H, MAIN
CLR 00H

15

MOV A, 38H
CJNE A, #00H, SS
AJMP MAIN
SS: LCALL GET_TEMPER
LCALL DISPLAY;调用 数码管显示子程序
LCALL BIJIAO
LCALL XIAOYU
LCALL JIXIAN
JNB DEYU ,LOOP
CLR P1.3 ;关加热器
SETB P1.6 ;关 蓝灯
SETB P0.7 ;关风扇
CLR DEYU
LCALL GET_TEMPER
LCALL DISPLAY
AJMP TT2
LOOP:JNB DAYU ,TT
CLR DAYU
SETB P1.3
SETB P1.6
SETB P0.7
CLR P1.7
LCALL GET_TEMPER
LCALL DISPLAY
AJMP TT2
TT:JNB XIYU, TT2
CLR XIYU
CLR P0.7
CLR P1.6
CLR P1.3
CLR P1.7
LCALL GET_TEMPER
LCALL DISPLAY
TT2:MOV A, 29H
CLR C
CJNE A, 50H, JX
MOV A , 30H
CLR C
CJNE A, 51H, JIA1
AJMP YS2
JIA1:JC JX
MOV A, 51H
MOV 52H, A
ADD A, #2

16

MOV 52H, A
CLR C
MOV A, 30H
CJNE A, 52H, JIA2
JIA2:JNC JX
YS2:SETB P1.7
CLR P1.6
MOV R5, #20H
YS:LCALL GET_TEMPER
LCALL DISPLAY
DJNZ R5, YS
CLR P1.7
SETB P1.6
MOV R5, #20H
YS1:LCALL GET_TEMPER
LCALL DISPLAY
DJNZ R5, YS1
YS3:SETB P1.7
CLR P1.6
MOV R5, #20H
YS0:LCALL GET_TEMPER
LCALL DISPLAY
DJNZ R5, YS0
CLR P1.7
SETB P1.6
MOV R5, #20H
YS01:LCALL GET_TEMPER
LCALL DISPLAY
DJNZ R5, YS01
YS4:SETB P1.7
CLR P1.6
MOV R5, #20H
YS02:LCALL GET_TEMPER
LCALL DISPLAY
DJNZ R5, YS02
CLR P1.7
SETB P1.6
MOV R5, #20H
YS03:LCALL GET_TEMPER
LCALL DISPLAY
DJNZ R5, YS03
JX: MOV A, 29H
CJNE A, 31H, JX00
JX01:SETB P1.7

17

CLR C
AJMP LAST
JX00:JC JX01
CLR P1.7
CJNE A,
JX02:SETB P1.7
CLR C
AJMP LAST
JX03:JNC JX02

32H,

JX03

CLR P1.7
LAST:LCALL GET_TEMPER
LCALL DISPLAY
AJMP SS
;***************************常数表格区**** ******************************************
TAB:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8 H,80H ;0-8
DB 90H,88H,83H,0C6H,0A1H,86H,8EH,0FFH ,0CH ;9,A,B,C,D,E,F,灭,p.
TAB1:DB40H,79H,24H,30H,19H,12H,02H,78H,00H ,10H, ;0.--9.
TAB2:DB 0, 0, 1, 2, 3, 3, 4, 4, 5, 5, 6, 7, 8, 8, 9, 9, ;小数点
;*************************1ms 延时程序*************** *********************
;************************* ****中断服务程序* *********************************
; 完成按键识别,键值求取,按键实时显示 等功能;
;************************* **************** **********************************
PITO: PUSH ACC
PUSH PSW
SETB RS0
CLR RS1
SET B 00H
MAIN1: MOV R7 , #03H ;显示位数为 2 位
MOV R0, #7AH
MOV 78H, #00H
MOV 79H, #00H
MOV 7AH, #00H
KK: LCALL DIR
LCALL KEY1
LOOP1:CJNE A, #11, LOOP2
AJMP LAST0
LOOP2:CJNE A, #12, LOOP3
LJMP LAST3
LOOP3: CJNE A, #10, L4
MOV A, #00H
L4: MOV @R0, A
LCALL DIR
DEC R0
DJNZ R7, KK

18

SETB 01H
LAST0:JNB 01H, KK
LOOP4:LCALL KEY1
CJNE A, #12, LOOP5
AJMP LAST3
LOOP5:CJNE A, #11, LOOP4
LAST1:LCALL DIR
LCALL MUN
LCALL JD
LCALL BIJIAO
LAST3:POP PSW
POP ACC
RETI
;******************精度控制 子程序********** ******
JD: PUSH ACC
PUSH PSW
CLR C
MOV A, 38H
MOV 50H, A
MOV A, 39H
MOV 51H, A
CJNE A, 29H, L001
L001:JC LAST02 ;设温<实温,则跳出
MOV A, 29H
MOV 41H, A
MOV A, 38H
CJNE A, #25, L002
L003:CLR C ;0 <T<25
SUBB A, 41H
CJNE A, #3, L004
L005:MOV A, 30H
ADD A, #5 ;0<T<25, 差值小于 3 度
DA A
JNB ACC.4, L0051
ANL A, #0FH
SETB C
L0051:MOV 39H, A
MOV A, 29H
ADDC A, #1
MOV 38H, A
AJMP LAST2
LAST02: AJMP LAST2
L004:JC L005
MOV A, 39H

19

SUBB A, #0
DA A
MOV 39H, A
JNC L0041
DEC 38H
L0041:MOV A, 38H
SUBB A, #2 ;0<T<25, 差值大 于 3 度
MOV 38H, A
AJMP LAST2
L002:JC L003
CJNE A, #50, L006
L007:CLR C ;25<T<5 0
SUBB A, 41H
CJNE A, #3, L008
L009:MOV A, 30H
ADD A, #1
DA A
JNB ACC.4, L0091
ANL A, #0FH
SETB C
L0091:MOV 39H, A
MOV A, 29H
ADDC A, #1
MOV 38H, A
AJMP LAST2
L008:JC L009
MOV A, 39H
SUBB A, #0
MOV 39H, A
MOV A, 38H
SUBB A, #2
MOV 38H, A
AJMP LAST2
L006:JC L007
CJNE A, #65, L010
L011:CLR C
SUBB A, 41H
CJNE A, #3, L012
L013:MOV A, 30H
ADD A, #2
JNB ACC.4, L00131
ANL A, #0FH
SETB C
L00131:MOV 39H, A

20

MOV A, 29H
ADDC A, #1
MOV 38H, A
AJMP LAST2
L012:JC L013
MOV A, 39H
SUBB A, #0
MOV 39H, A
MOV A, 38H
SUBB A, #2
MOV 38H, A
AJMP LAST2
L010:JC L011
CJNE A, #90, L016
L017:CLR C
SUBB A, 41H
CJNE A, #2, L014
L015:MOV A, 30H
ADD A, #0
JNB ACC.4, L00151
ANL A, #0FH
SETB C
L00151:MOV 39H, A
MOV A, 29H
ADDC A, #1
MOV 38H, A
AJMP LAST2
L014:JC L015
CLR C
MOV A, 38H
SUBB A, #1
MOV 38H, A
AJMP LAST2
L016:JC L017
LAST2:POP PSW
POP ACC
RET
;*******************************键扫描** ************************************
KEY1:LCALL KS1 ;键 扫描
JNZ LK1
LCALL DIR
AJMP KEY1
LK1:LCALL DIR
LCALL DIR

21

LCALL KS1
JNZ LK2
LCALL DIR
AJMP KEY1
LK2:MOV R2, #0FEH ;确定键值
MOV R4, #01H
MOV A, R2
LK4:MOV P0, A
NOP
MOV A, P0
JB ACC.3, LONE
MOV A, #00H
AJMP LKP
LONE:JB ACC.4 , LTWO
MOV A, #03H
AJMP LKP
LTWO:JB ACC.5, LTHR
MOV A, #06H
AJMP LKP
LTHR:JB ACC.6, NEXT5
MOV A, #09H
AJMP LKP
NEXT5:INC R4
MOV A, R2
JNB ACC.2 ,KND
RL A
MOV R2, A
AJMP LK4
KND:AJMP KEY1
LKP: ADD A, R4
PUSH ACC
LK3:LCALL DIR
LCALL KS1
JNZ LK3
POP ACC
RET

KS1: PUSH PSW
MOV P0, #78H
NOP
MOV A, P0 ;判断有无键按下
CPL A
ANL A, #78H
POP PSW

22

RET
;*************求设置温度的二 进制代码,值保存在 38H 单元**************
MUN: PUSH PSW
MOV R0, #7AH ;求键值
MOV A, @R0
SWAP A
DEC R0
ADD A, @R0
MOV R1, A
ANL A, #0F0 H
SWAP A
MOV B, #10
MUL AB
MOV R2, A
MOV A, R1
ANL A, #0FH
ADD A, R2
MOV 38H, A
MOV R0, #78H
MOV 39H, @R0
POP PSW
RET
;*************比较实际温度和设置温度的大小 并设置相应的标志位***********
BIJIAO:MOV A, 29 H ;实际温度
MOV 40H, A

❷ 单片机温湿度传感器

ARN系统室外温湿度传感器核心部分由一组高度集成的温湿度传感器芯片组成,选用芯片均为全量程标定数字输出的芯片。轻型百叶箱能防止太阳对仪器的直接辐射和地面对仪器的反射辐射,保护其内部仪器免受强风、雨、雪等的影响。并且其特殊的表面处理和结构设计,使仪器感应部分可适当的通风,能真正地感应外界空气温度和湿度、二氧化碳等环境因子的变化。本产品采用CMOSens专利技术,确保产品具有极高的可靠性与卓越的长期稳定性。传感器包括一个电容性聚合体湿度敏感元件和一个用能隙材料制成的温度敏感元件,这两个敏感元件与一个14位的A/D转换器以及一个串行接口电路设计在同一个芯片上面。该传感器品质卓越、响应超快、抗干扰能力强、级高的性价比。每个传感器芯片都在极为精确的恒温室中进行标定,以镜面冷凝式露点仪为参照。通过标定得到的校准系数以程序形式储存在芯片本身的OTP内存中。通过两线制的串行接口与内部的电压调整,使外围系统集成变得快速而简单。
二、适用范围
本广泛应用于农业、林业、气象环境、仓储、温室、环境保护、
气象站、船舶、码头等温度、湿度的测量。
2
三、技术参数
�供电电压:24V
�工作环境:-40~+75℃
�空气温度
�温度范围:-30℃-70℃
�温度精度: ±0.3℃
�输出范围: 4-20mA
�负载能力: <=250欧
�空气湿度
�湿度范围:0-100%RH
�湿度精度:4%RH
�输出范围: 4-20mA
�负载能力: <=250欧
�防护等级:IP54
�规格尺寸:外总高290mm(丝杆总长度)、外高265mm(顶部至
百色柱端总长度)、内径:Φ42mm、外径Φ140mm
�材料:高科技优质抗紫外线材料制成
�颜色:白色
四、功能特点
该产品自投入市场以来,以其优异的质量,卓越的性能赢得广大
用户的好评,具备以下特点:
1.体积小、重量轻、安装方便。
3
2.轻型百叶箱(防辐射罩)完全符合WMO标准,标准19层高
度、带托架支板。
3.采用高科技优质抗紫外线材料制成,可有效阻挡自然条件下
的紫外线照射,防止仪器仪表在野外恶劣的条件下快速老化。
4.可减小因光线强烈造成的测量误差。
5.测量精度高,性能可靠,确保正常工作。
6.响应速度快,数据传输效率高。
五、线色说明
红线: 电源正极
白线:空气温度信号输出
绿线:空气湿度信号输出
黑线:电源负极
六、测量方法
空气温度=(电流值-4mA)/(20-4)*100-30
空气湿度=(电流值-4mA)/(20-4)*100

❸ 如何用单片机做一个自动加热控制系统

单片机+温度传感器+加热装置。

温度传感器提供温度值给单片机,然后单片机控制加热装置。

设定个温度值,高了停止加热,低了加热。

如果真要做,还要考虑保温,风扇,干燥等功能。。

再或者直接使用温控仪成品,更简单。

❹ 用单片机做了一个温度记录仪,数据记录的很奇怪,悬赏100解决

先别急,错误是有,但不离谱。
你发现没?错误是有规律的,就是把温度个位(Dec)+温度十分位发到下一行了,就是说数据串位而且有丢失。我有点不明白你怎么用VB读的数据,串口通信吗?你这样,不去发送存储的数据,就发固定数据,就大概能发现问题所在。

❺ 基于单片机的温湿度记录仪设计

建议你用一个
温度传感器
和一个
湿度传感器
,最好是
数字输出
的(模拟的还得
AD转换
),至于报警部分那就很简单的了!你可以说得更详细些我可以帮你做一个(一切基于实物~~)

❻ 51单片机温度记录器程序求助

没有贴出程序来,有求助别人也帮不了你的。

❼ 能用一个单片机设计一个程序控温装置吗

1 系统的组成和工作原理
多功能温度控制系统的结构如图1所示,系统由六部分组成:控制核心部分、温度数据采集部分、加热装置控制部分、液晶显示部分、按键输入部分和报警提示部 分。单片机启动温度采集电路完成温度的一次转换,然后读出转换后的数字量并转化成当前的温度呈现在显示模块中,并将当前的温度与通过按键输入电路设定的保 持恒温度数进行比较,以实现温度的控制。还可以通过按键设置温度的上下限值以实现超温或低温报警提示功能。本系统的设计目标要对温度的控制精度达到 0.1℃。

1.1 报警电路
报警电路采用蜂鸣器作为发声装置,当温度高于设定的上限值或低于下限值,给蜂鸣器送周期为1s,占空比为50%的方波,报警的时间可以持续1分钟或等待按 键解除报警,这由软件控制实现。

1.2 按键电路
采用2×3的小键盘,键盘的识别可以采用两种方法:行扫描法和行反转法。两种方法都要注意消除按键的抖动。文中采用行扫描法并做成子程序,出口参数为按键 的键值。定义键K1设置TH,K2设置TL,K3调高TH或TL,K4调低TH或TL,K5对TH或TL的数值进行确认。
1.3 温度检测电路
温度检测电路采用智能温度传感器DSl8820,它与单片机相连只需要3线,减少了外部的硬件电路。DSl8820主要性能特点如下:
(1)测温的范围为-55~125℃,最大分辨率可以达到0.0625℃;
(2)电源电压范围为3.0~5.5V;
(3)供电模式:寄生供电和外部供电;
(4)封装形式有两种:3脚的TO-92封装和8脚的SOIC封装;
(5)可编程的温度转换分辨率,分辨率为9~12位(包括1位符号位),由配置寄存器决定具体位数,配置寄存器的格式如表1所示。

其中RlR0是用来设定分辨率的,分辨率的定义如表2所示。

由表2可以看出,分辨率设定得越高,温度转换所需要的时间就越长,因此应根据实际应用的需要来选择合适的分辨率。本文中选取12位分辨率,每隔1秒检测一 次温度。12位分辨率的温度数据值格式如下:

当S=0表示测得的温度为正值,当S=l表示测得的温度为负值。
1.3.1 DSl8820的存储器结构
DSl8820的存储器有高速暂存RAM和非易失性电擦写EEPROM。高速暂存RAM的内容从低字节到高字节9个字节依次为:温度LSB、温度MSB、 高温限值字节TH、低温限值字节TL、配置寄存器、保留、保留、保留,最后一个字节是前8个字节的CRC码。EEPROM用来存储TH和TL。
1.3.2 温度数据的处理方法
从DSl8820读出的两个字节的二进制值温度必须先转换成十进制数值,然后才能将其ASCII码送往LCDl602显示。12位的分辨率,温度是以 0.0625步进的,由于两个字节的温度采用补码表示,所以先判断读出温度的最高位是0还是1,即判断是正温还是负温,然后对其求补码转化成正温,之后将 高字节的低4位和低字节的高4位组成一个字节,这个字节的二进制值不断除以10得出的余数即为温度值的个、十、百位值。若读出的温度数值是负数,显示处理 时,在温度数的前面人为显示负号即可。对小数部分的温度只需将低字节的低4位乘以0.0625,然后对乘积取其小数点后的一位数即可。

1.3.3 DSl8820的控制步骤
(1)首先对DSl8820进行复位。由单片机将数据线DQ拉至低电平480-960 μs,然后将DQ拉高15-60 μs,以便单片机检测到DSl8820送来的低电平响应。然后检测DQ,若DQ仍然为高电平,则复位操作失败,可采用循环的方式再次对其进行复位;若DQ 为低电平,则复位操作成功。
(2)DSl8820的ROM操作命令。DSl8820复位后,主机可以发器件ROM的操作命令如读ROM[33H]、匹配ROM[55H]、跳过 ROM[0CCH],报警搜索[4EH]等。在单点总线的情况下,可发跳过ROM[0CCH]操作命令,以节省时间。另外,文中有报警的功能,温度转换后 还需要发报警搜索命令,该命令会将最近一次测得的温度值T与高速RAM中的TH或TL作比较,若T>TH或T<TL,则该器件内的报警标志位 置位,并对主机发出的报警搜索命令作出响应。
(3)DSl8820的存储器操作命令。如启动温度转换命令[44H],写入命令[4EH](写入该命令后,紧接着要写入报警上限TH,报警下限TL及配 置寄存器字节),读暂存器RAM的内容命令[0BEH](读取将从第一个字节开始一直到第9个字节结束,如仅需要部分字节,主机可以在合适的时刻发复位命 令来终止读取)及复制命令[48H](把暂存器RAM的第2、3、4字节转存到DSl8820的EEROM中)等。
(4)DSl8820的ROM或RAM操作的总线读写时序。对于读时序,首先将DQ拉低并延时1-15μs以内(延时时间不能太长),然后将DQ拉高并延 时几个μs后再读取DQ的值,读完一位后需要延时45 μs以上才能读取下一位;对于写时序,先将DQ拉低10-15μs,接着向总线写入数据并延时50μs以上,最后将DQ拉高1μs以上再进行下一位的写 入。
1.4 液晶显示模块
采用的是长沙太阳人电子有限公司生产的SMCl602A。
1.4.1 主要技术参数
芯片的工作电压4.5~5.5V,能显示两行,每行显示16个字符,字符的大小为2.95×4.35mm。
1.4.2 接口信号说明
除电压、背光引脚及8个I/O引脚外,主要的控制引脚还有数据/命令选择RS引脚,该引脚为高电平时表示I/O引脚出现的是数据,该引脚为低电平时表示 I/O引脚出现的是命令;读/写选择引脚及使能引脚E(该引脚为高电平时对SMCl602A的操作才有效)。
1.4.3 指令说明
(1)初始化设置
a.显示模式设置。指令码:00111000b,用于设置16×2显示,5×7点阵。
b.显示开/关及光标设置。二进制指令码:00000DCB中D位用来控制显示开或关,C位用来控制显示光标,B位控制光标是否闪烁。二进制指令 码:000001NS中N位控制读写一个数据后地址指针和光标加或减1,S位控制字符的移动。
c.数据指针设置。指令码:80H+地址码(0-27H,40H-67H)用于设置数据指针。
(2)其他设置。如指令码01H:显示清屏且数据指针清零。
1.4.4 LCDl602的初始化步骤
(1)延时15ms,写指令38H(不检测忙信号);
(2)延时5ms,写指令38H(不检测忙信号),上述过程执行两遍,后面的过程每次写指令、读/写数据之前均需要检测忙信号;
(3)写指令38H:显示模式设置;
(4)写指令08H:关闭显示;
(5)写指令0lH:清屏且数据指针清零;
(6)写指令06H:字符不移动,光标和指针加1;
(7)写指令0FH:显示开,光标闪烁。
1.5 恒温保持控制模块
选用6V固态继电器作为开关器件,通过控制其断与通的时序从而控制加热器件的工作时长,以实现样品的恒温保持功能。

2 系统硬件电路的设计
该系统的主要电路原理图如图2所示。系统中使用USB口提供5V电源的电路;使用RS232串口通过P3.0和P3.1烧写程序的电路;以及使用继电器控 制的恒温保持电路等在原理图中并未画出。

3 系统的软件设计
系统总的流程图如图3所示。系统程序主要有主程序和LCDl602初始化子程序及读写时序子程序、DSl8820复位及读写时序子程序、键盘扫描子程序、 温度数据处理子程序等构成。

4 程序的编辑及调试
编程语言可以采用汇编语言,也可以采用C51语言。本文采用汇编语言,使用Keil C软件新建一个工程,然后新建一个文件输入源程序并保存成.asm格式,并将该源文件添加到刚刚新建的工程,随后编译链接后生成十六进制文件 (.HEX),最后使用烧写软件stc-isp-v3.9l通过RS232串口将十六进制文件烧写进单片机的Flash中运行程序即可。

5 结论
本文设计的多功能温度控制器体积小、功耗低、可靠性高,实验表明,对温度的控制精度达到了0.1℃的设计目标。

❽ 单片机的无线温度监控系统:1、本课题的目的及研究意义 2.本课题的国内外的研究现状 这2条怎么写啊急急

一、论文选题的目的和意义

温度控制器是对用冷部位(如空调室、冷冻水、库温等)的温度及其波动范围进行控制的电开关。根据制冷装置的大小和供冷方式的不同,温度继电器电路的电控对象亦不同。例如,对小型制冷装置(如空调器、冷饮水机、电冰箱)温度控制器可以根据设定温度直接控制压缩机电机的停开

二、国内外关于该论题的研究现状和发展趋势

国外对温度控制技术研究较早,始于20世纪70年代。先是采用模拟式的组合仪表,采集现场信息并进行指示、记录和控制。80年代末出现了分布式控制系统。目前正开发和研制计算机数据采集控制系统的多因子综合控制系统。现在世界各国的温度测控技术发展很快,一些国家在实现自动化的基础上正向着完全自动化、无人化的方向发展。

我国对于温度测控技术的研究较晚,始于20世纪80年代。我国工程技术人员在吸收发达国家温度测控技术的基础上,才掌握了温度室内微机控制技术,该技术仅限于对温度的单项环境因子的控制。我国温度测控设施计算机应用,在总体上正从消化吸收、简单应用阶段向实用化、综合性应用阶段过渡和发展。在技术上,以单片机控制的单参数单回路系统居多,尚无真正意义上的多参数综合控制系统,与发达国家相比,存在较大差距。我国温度测量控制现状还远远没有达到工厂化的程度,生产实际中仍然有许多问题困扰着我们,存在着装备配套能力差,产业化程度低,环境控制水平落后,软硬件资源不能共享和可靠性差等缺点。

❾ 51单片机温度报警器原理图和程序有吗

这个是自动控制温度的一个例子,温度降低到一定程度就启动加热。

//温度传感器:DS18B20
//显示方式:LED
#include <reg51.h>
#define uchar unsigned char
sbit keyup=P1^0;
sbit keydn=P1^1;
sbit keymd=P1^2;
sbit out=P3^7;//接控制继电器
sbit DQ = P3^4;//接温度传感器18B20
uchar t[2],number=0,*pt;//温度值
uchar TempBuffer1[4]={0,0,0,0};
uchar Tmax=18,Tmin=8;
uchar distab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,0xff,0xfe,0xf7};
uchar dismod=0,xiaodou1=0,xiaodou2=0,currtemp;
bit flag;
void t0isr() interrupt 1
{
TH0=(65536-5000)/256;
TL0=(65536-5000)%256;
switch(number)
{
case 0:
P2=0x08;
P0=distab[TempBuffer1[0]];
break;
case 1:
P2=0x04;
P0=distab[TempBuffer1[1]];
break;
case 2:
P2=0x02;
P0=distab[TempBuffer1[2]]&0x7f;
break;
case 3:
P2=0x01;
P0=distab[TempBuffer1[3]];
break;
default:
break;
}
number++;
if(number>3)number=0;
}

void delay_18B20(unsigned int i)
{
while(i--);
}

/**********ds18b20初始化函数**********************/

void Init_DS18B20(void)
{
bit x=0;
do{
DQ=1;
delay_18B20(8);
DQ = 0; //单片机将DQ拉低
delay_18B20(90); //精确延时 大于 480us
DQ = 1; //拉高总线
delay_18B20(14);
x=DQ; //稍做延时后 如果x=0则初始化成功 x=1则初始化失败,继续初始化
}while(x);
delay_18B20(20);
}

/***********ds18b20读一个字节**************/

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_18B20(4);
}
return(dat);
}

/*************ds18b20写一个字节****************/

void WriteOneChar(unsigned char dat)
{
unsigned char i=0;
for (i=8; i>0; i--)
{
DQ = 0;
DQ = dat&0x01;
delay_18B20(5);
DQ = 1;
dat>>=1;
}
}

/**************读取ds18b20当前温度************/

unsigned char *ReadTemperature(unsigned char rs)
{
unsigned char tt[2];
delay_18B20(80);
Init_DS18B20();
WriteOneChar(0xCC); //跳过读序号列号的操作
WriteOneChar(0x44); //启动温度转换
delay_18B20(80);
Init_DS18B20();
WriteOneChar(0xCC); //跳过读序号列号的操作
WriteOneChar(0xBE); //读取温度寄存器等(共可读9个寄存器)前两个就是温度
tt[0]=ReadOneChar(); //读取温度值低位
tt[1]=ReadOneChar(); //读取温度值高位
return(tt);
}

void covert1(void)//将温度转换为LED显示的数据
{
uchar x=0x00,y=0x00;
t[0]=*pt;
pt++;
t[1]=*pt;
if(t[1]&0x080) //判断正负温度
{
TempBuffer1[0]=0x0c; //c代表负
t[1]=~t[1]; /*下面几句把负数的补码*/
t[0]=~t[0]; /*换算成绝对值*********/
x=t[0]+1;
t[0]=x;
if(x==0x00)t[1]++;
}
else TempBuffer1[0]=0x0a;//A代表正
t[1]<<=4;//将高字节左移4位
t[1]=t[1]&0xf0;
x=t[0];//将t[0]暂存到X,因为取小数部分还要用到它
x>>=4;//右移4位
x=x&0x0f;//和前面两句就是取出t[0]的高四位
y=t[1]|x;//将高低字节的有效值的整数部分拼成一个字节
TempBuffer1[1]=(y%100)/10;
TempBuffer1[2]=(y%100)%10;
t[0]=t[0]&0x0f;//小数部分
TempBuffer1[3]=t[0]*10/16;
//以下程序段消去随机误检查造成的误判,只有连续12次检测到温度超出限制才切换加热装置
if(currtemp>Tmin)xiaodou1=0;
if(y<Tmin)
{
xiaodou1++;
currtemp=y;
xiaodou2=0;
}
if(xiaodou1>12)
{
out=0;
flag=1;
xiaodou1=0;
}
if(currtemp<Tmax)xiaodou2=0;
if(y>Tmax)
{
xiaodou2++;
currtemp=y;
xiaodou1=0;
}
if(xiaodou2>12)
{
out=1;
flag=0;
xiaodou2=0;
}
out=flag;
}
void convert(char tmp)
{
uchar a;
if(tmp<0)
{
TempBuffer1[0]=0x0c;
a=~tmp+1;
}
else
{
TempBuffer1[0]=0x0a;
a=tmp;
}
TempBuffer1[1]=(a%100)/10;
TempBuffer1[2]=(a%100)%10;
}
void keyscan( )
{
uchar keyin;
keyin=P1&0x07;
if(keyin==0x07)return;
else if(keymd==0)
{
dismod++;
dismod%=3;
while(keymd==0);
switch(dismod)
{
case 1:
convert(Tmax);
TempBuffer1[3]=0x11;
break;
case 2:
convert(Tmin);
TempBuffer1[3]=0x12;
break;
default:
break;
}
}
else if((keyup==0)&&(dismod==1))
{
Tmax++;
convert(Tmax);
while(keyup==0);
}
else if((keydn==0)&&(dismod==1))
{
Tmax--;
convert(Tmax);
while(keydn==0);
}
else if((keyup==0)&&(dismod==2))
{
Tmin++;
convert(Tmin);
while(keyup==0);
}
else if((keydn==0)&&(dismod==2))
{
Tmin--;
convert(Tmin);
while(keydn==0);
}
xiaodou1=0;
xiaodou2=0;
}
main()
{
TMOD=0x01;
TH0=(65536-5000)/256;
TL0=(65536-5000)%256;
TR0=1;
ET0=1;
EA=1;
out=1;
flag=0;
ReadTemperature(0x3f);
delay_18B20(50000);//延时等待18B20数据稳定
while(1)
{
pt=ReadTemperature(0x7f); //读取温度,温度值存放在一个两个字节的数组中
if(dismod==0)covert1();
keyscan();
delay_18B20(30000);
}
}

阅读全文

与单片机室温自动记录装置相关的资料

热点内容
仪表盘出来蓝色油箱是什么意思 浏览:129
外径75的轴承有什么型号 浏览:146
省力搬运设备哪个好 浏览:731
江苏轴承油多少钱 浏览:757
做什么仪器能查出脂肪瘤 浏览:885
阀门上的s和o代表什么 浏览:86
商场消防器材放哪里 浏览:872
枪管为什么不能铸造 浏览:754
建材公司设备有哪些 浏览:774
管道防护密闭阀门图片 浏览:225
准速器材是什么意思 浏览:52
泡脚仪器泡出黄褐色水是什么原因 浏览:195
进口德国电动工具代理 浏览:321
机械图上的尺寸代表什么 浏览:624
江西电动工具铝压铸件 浏览:378
制乙烯的实验装置图常见错误 浏览:827
四轴机械手指的是什么样的 浏览:687
做阀门工资怎么样 浏览:218
脱水机包埋机染色机哪个科室设备 浏览:704
如何确认多串口对应设备 浏览:247