温度传感器实训报告Word格式.docx

上传人:b****2 文档编号:14715458 上传时间:2022-10-24 格式:DOCX 页数:22 大小:75.14KB
下载 相关 举报
温度传感器实训报告Word格式.docx_第1页
第1页 / 共22页
温度传感器实训报告Word格式.docx_第2页
第2页 / 共22页
温度传感器实训报告Word格式.docx_第3页
第3页 / 共22页
温度传感器实训报告Word格式.docx_第4页
第4页 / 共22页
温度传感器实训报告Word格式.docx_第5页
第5页 / 共22页
点击查看更多>>
下载资源
资源描述

温度传感器实训报告Word格式.docx

《温度传感器实训报告Word格式.docx》由会员分享,可在线阅读,更多相关《温度传感器实训报告Word格式.docx(22页珍藏版)》请在冰豆网上搜索。

温度传感器实训报告Word格式.docx

C,也就是显示整数。

如果你设定报警的温度为20º

C,则当环境温度达到21º

C时,报警发光二极管发光,同时继电器动作。

如果你不需要对温度控制(报警),可以将报警温度值设置高些。

如果控制的是某局部的温度,可将18B20用引线引出,但距离不宜过大,注意其引脚绝缘。

2.电路的构成

  该电路有电源、按键控制模块、信号处理、驱动模块、显示模块、检测。

3.电路原理图

4.电路仿真图

五、元件清单及功能介绍

名称

规格

编号

主要功能或作用

按钮

6X6X5

AN1、AN2、AN3

调节报警温度的值

电容

30P

C1、C2

单片机时钟振荡

10UF

C3

单片机复位

470UF

C4

电源滤波

104

C5

单片机(20P座)

AT89C2051

IC1

CPU

温度传感器

DS18B20

IC2

稳压块

L7805

IC3

电路工作于+5V

接线座

3P5.0

J1

外电路控制接线座

2P5.0

J2

外接电源接线

USB电源插座

USB

J3

电脑供电插座

晶体

12M

JZ

一位共阳数码管

0.56

LED1

摄氏温度符号显示

三位共阳数码管

LED2

温度值显示

发光二极管

3MM

LED3

报警发光指示兼Q1偏置

三极管

8550

Q1、Q2、Q3、Q4

Q1:

报警时驱动继电器;

Q2Q3Q4:

数码管驱动

电阻

10K

R1

220和470

R7—R13和R14

数码管限流,其中R14=470

4.7K

R2、R3、R4、R6

三极管基极和温度传感器偏置

2K

R5

三极管Q1基极偏置

二极管

1N4148

V1

续流,保护Q1

跳线

X1、X2

用元件引脚连

继电器

5V2A

JDQ

 温度达到报警值时触点动作

PCB板

73MMX85MM

USB电源线

连接电脑USB口

6、程序:

/*-------------------------------

温度控制器V1.5

显示为三个共阳极LED

温度传感器用单总线DS18B20

CPU为2051,四个按键,分别为UP,DOWN,SET

温度调节上限为125度,下限为-55度

只能用于单只18B20

-------------------------------*/

#include<

AT89X051.H>

intrins.h>

#defineKey_UPP3_0//上调温度

#defineKey_DOWNP3_1//下调温度

#defineKey_SETP1_7//设定键(温度设定,长按开电源)

#defineRelayOutPortP3_5//继电器输出

#defineLEDPortP1//LED控制口

#defineLEDOneCP3_2//LEDDS1控制(百位)

#defineLEDTwoCP3_3//LEDDS2控制(十位)

#defineLEDThreeCP3_4//LEDDS3控制(个位)

#defineTMPortP3_7//DS1820DataPort

unsignedcharcodeLEDDis[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0xFF,0xBF};

//0-9的LED笔划,0xFF为空,0xF7为负号

staticunsignedcharbdataStateREG;

//可位寻址的状态寄存器

sbitDS1820ON=StateREG^0;

//DS1820是否存在

sbitSetTF=StateREG^1;

//是否是在温度设置状态

sbitKeySETDown=StateREG^2;

//是否已按过SET键标识

sbitPowTF=StateREG^3;

//电源电源标识

sbitKeyTF=StateREG^4;

//键盘是否允许

//sbitKeySETDowning=StateREG^5;

//SET是否正在按下

staticunsignedcharbdataTLV_at_0x0029;

//温度变量高低位

staticunsignedcharbdataTHV_at_0x0028;

staticsignedcharTMV;

//转换后的温度值

staticunsignedcharKeyV,TempKeyV;

//键值

staticsignedcharTMRomV_at_0x0027;

//高温限制

staticsignedcharTMSetV_at_0x0026;

//温度设定值

staticunsignedcharKSDNum;

//SET键连按时的采集次数

staticunsignedcharIntNum,IntNum2,IntNum3;

//中断发生次数,IntNum用于SET长按检测,IntNum2用于设定状态时LED闪烁

staticsignedcharLED_One,LED_Two,LED_Three;

//LED的显示位LED_One为十位,LED_Two为个位

staticunsignedcharSign;

//负号标识

voidmain(void)

{

voidInitDS1820(void);

//定义函数

voidROMDS1820(void);

voidTMVDS1820(void);

voidTMRDS1820(void);

voidTMWDS1820(void);

voidTMREDS1820(void);

voidTMERDS1820(void);

voidReadDS1820(void);

voidWriteDS1820(void);

voidDelay_510(void);

voidDelay_110(void);

voidDelay_10ms(void);

voidDelay_4s(void);

voidV2ToV(void);

StateREG=0;

//初始化变量

SetTF=1;

PowTF=1;

//关电源

THV=0;

TLV=0;

TMV=0;

KeyV=0;

TempKeyV=0;

KSDNum=0;

IntNum=0;

IntNum2=0;

IntNum3=0;

LED_One=0;

LED_Two=0;

InitDS1820();

//初始化

ROMDS1820();

//跳过ROM

TMERDS1820();

//E2PRAM中温度上限值调入RAM

TMRDS1820();

//读出温度指令

ReadDS1820();

//读出温度值和上限值

TMSetV=TMRomV;

//拷贝保存在DS18B20ROM里的上限值到TMSetV

EA=1;

//允许CPU中断

ET0=1;

//定时器0中断打开

TMOD=0x1;

//设定时器0为模式1,16位模式

TH0=0xB1;

TL0=0xDF;

//设定时值为20000us(20ms)

TR0=1;

//开始定时

while

(1);

}

//定时器0中断外理中键扫描和显示

voidKeyAndDis_Time0(void)interrupt1using2

LEDPort=0xFF;

if(!

Key_UP)

KeyV=1;

Key_DOWN)

KeyV=2;

Key_SET)

KeyV=3;

//KeySETDowning=0;

//清除

if(KeyV!

=0)//有键按下

{

Delay_10ms();

//延时防抖按下10ms再测

TempKeyV=1;

TempKeyV=2;

TempKeyV=3;

if(KeyV==TempKeyV)//两次值相等为确定接下了键

if(KeyV==3)//按下SET键,如在SET状态就退出,否则进入

//KeySETDowning=1;

//表明SET正在按下

PowTF=0;

//电源标识开

if(!

KeyTF)

if(SetTF)

{

SetTF=0;

//标识位标识退出设定

InitDS1820();

ROMDS1820();

TMWDS1820();

//写温度上限指令

WriteDS1820();

//写温度上限到DS18B20ROM

TMREDS1820();

//温度上限值COPY回E2PRAM

}

else

SetTF=1;

KeySETDown)//没有第一次按下SET时,KeySETDown标识置1

KeySETDown=1;

else

KSDNum=KSDNum+1;

//前一秒内有按过SET则开始计数

}

if(SetTF)//在SET状态下

if((KeyV==1)&

&

(!

KeyTF))

TMSetV=TMSetV+1;

//上调温度

if((KeyV==2)&

TMSetV=TMSetV-

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 机械仪表

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1