单片机温度传感器程序

单片机温度传感器程序
单片机温度传感器程序

#include

#include

#define Key_UP P3_0 //上调温度

#define Key_DOWN P3_1 //下调温度

#define Key_SET P1_7 //设定键(温度设定,长按开电源)

#define RelayOutPort P3_5 //继电器输出

#define LEDPort P1 //LED控制口

#define LEDOneC P3_2 //LED DS1控制(百位)

#define LEDTwoC P3_3 //LED DS2控制(十位)

#define LEDThreeC P3_4 //LED DS3控制(个位)

#define TMPort P3_7 //DS1820 DataPort

unsigned char code LEDDis[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0xFF,0xBF}; //0-9的LED笔划,0xFF为空,0xF7为负号

static unsigned char bdata StateREG; //可位寻址的状态寄存器

sbit DS1820ON = StateREG^0; //DS1820是否存在

sbit SetTF = StateREG^1; //是否是在温度设置状态

sbit KeySETDown = StateREG^2; //是否已按过SET键标识

sbit PowTF = StateREG^3; //电源电源标识

sbit KeyTF = StateREG^4; //键盘是否允许

//sbit KeySETDowning = StateREG^5; //SET是否正在按下

static unsigned char bdata TLV _at_ 0x0029; //温度变量高低位

static unsigned char bdata THV _at_ 0x0028;

static signed char TMV; //转换后的温度值

static unsigned char KeyV,TempKeyV; //键值

static signed char TMRomV _at_ 0x0027; //高温限制

static signed char TMSetV _at_ 0x0026; //温度设定值

static unsigned char KSDNum; //SET键连按时的采集次数

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

static signed char LED_One,LED_Two,LED_Three; //LED的显示位LED_One为十位,LED_Two为个位

static unsigned char Sign; //负号标识

void main(void)

{

void InitDS1820(void); //定义函数

void ROMDS1820(void);

void TMVDS1820(void);

void TMRDS1820(void);

void TMWDS1820(void);

void TMREDS1820(void);

void TMERDS1820(void);

void ReadDS1820(void);

void WriteDS1820(void);

void Delay_510(void);

void Delay_110(void);

void Delay_10ms(void);

void Delay_4s(void);

void V2ToV(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

InitDS1820(); //初始化

ROMDS1820(); //跳过ROM

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中断外理中键扫描和显示

void KeyAndDis_Time0(void) interrupt 1 using 2

{

TH0=0xB1;

TL0=0xDF; //设定时值为20000us(20ms)

LEDPort = 0xFF;

if (!Key_UP)

KeyV = 1;

if (!Key_DOWN)

KeyV = 2;

if (!Key_SET)

KeyV = 3;

//KeySETDowning = 0; //清除

if (KeyV != 0) //有键按下

{

Delay_10ms(); //延时防抖按下10ms再测

if (!Key_UP)

TempKeyV = 1;

if (!Key_DOWN)

TempKeyV = 2;

if (!Key_SET)

TempKeyV = 3;

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

{

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

{

//KeySETDowning = 1; //表明SET正在按下

PowTF = 0; //电源标识开

if (!KeyTF)

if (SetTF)

{

SetTF = 0; //标识位标识退出设定

InitDS1820(); //初始化

ROMDS1820(); //跳过ROM

TMWDS1820(); //写温度上限指令

WriteDS1820(); //写温度上限到DS18B20ROM

WriteDS1820(); //写温度上限到DS18B20ROM

WriteDS1820(); //写温度上限到DS18B20ROM

InitDS1820(); //初始化

ROMDS1820(); //跳过ROM

TMREDS1820(); //温度上限值COPY回E2PRAM

}

else

SetTF = 1;

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

KeySETDown = 1;

else

KSDNum = KSDNum + 1; //前一秒内有按过SET则开始计数}

if (SetTF) //在SET状态下

{

if ((KeyV == 1) && (!KeyTF))

TMSetV = TMSetV + 1; //上调温度

if ((KeyV == 2) && (!KeyTF))

TMSetV = TMSetV - 1; //下调温度

if (TMSetV <= -55) //限制温度上下限

TMSetV = -55;

if (TMSetV >= 125)

TMSetV = 125;

}

if ((!KeyTF) && (IntNum3 == 0)) KeyTF = 1; //当键盘处于可用时,锁定

}

if (KeySETDown) //在2秒内按下了SET则计中断发生次数用于长按SET时计时用

IntNum = IntNum + 1;

if (IntNum > 55) //中断发生了55次时(大约1.2秒)75为1.5秒左右

{

IntNum = 0;

KeySETDown = 0;

if (KSDNum == 55) //如一直长按了SET1.2秒左右

{

RelayOutPort = 1; //关闭继电器输出

PowTF = 1; //电源标识关

LEDOneC = 0;

LEDTwoC = 0;

LEDThreeC = 0;

LEDPort = 0xBF; //显示"--"

Delay_4s(); //延时

LEDOneC = 1;

LEDTwoC = 1; //关显示

LEDThreeC = 1;

Delay_4s();

IntNum = 0;

IntNum2 = 0;

IntNum3 = 0;

}

KSDNum = 0;

}

}

KeyV = 0;

TempKeyV = 0; //清空变量准备下次键扫描

if (!PowTF)

{

InitDS1820(); //初始化

ROMDS1820(); //跳过ROM

TMVDS1820(); //温度转换指令

Delay_510();

Delay_510(); //延时等待转换完成

InitDS1820(); //初始化

ROMDS1820(); //跳过ROM

TMRDS1820(); //读出温度指令

ReadDS1820(); //读出温度值

V2ToV(); //转换显示值

if (TMV > TMSetV) //根据采集到的温度值控制继电器

{

RelayOutPort = 0;

}

else

{

RelayOutPort = 1;

}

if (SetTF) IntNum2 = IntNum2 + 1; //用于闪烁计数

if (IntNum2 > 50 ) IntNum2 = 0;

if (KeyTF) IntNum3 = IntNum3 + 1; //用于防止按键连按

if (IntNum3 > 25)

{

IntNum3 = 0;

KeyTF = 0;

}

if ((SetTF) && (IntNum2 < 25)) goto InitEnd; //计数在后半段时显示

LEDPort = LED_One;

LEDOneC = 0;

Delay_510();

LEDOneC = 1; //显示百位数

LEDPort = LED_Two;

LEDTwoC = 0;

Delay_510();

LEDTwoC = 1; //显示十位数

LEDPort = LED_Three;

LEDThreeC = 0;

Delay_510();

LEDThreeC = 1; //显示个位数

}

InitEnd:;

}

void V2ToV(void) //数值转换

{

TLV = TLV >> 4;

THV = THV << 4; //读出的高低位数值移位

TMV = TLV | THV; //合并高低位放入TM为实际温度值

Sign = 0;

if (SetTF || !Key_SET)

Sign = TMSetV >> 7; //取符号

else

Sign = TMV >> 7;

if (Sign)

{

if (SetTF || !Key_SET)

{

LED_One = (~(TMSetV-1)) / 100; //SET状态下显示设定值

LED_Two = ((~(TMSetV-1)) - LED_One * 100)/10;

LED_Three = (~(TMSetV-1)) - LED_One * 100 - LED_Two * 10;

}

else

{

LED_One = (~TMV) / 100; //转换百位值

LED_Two = ((~TMV) - LED_One * 100)/10;

LED_Three = (~TMV) - LED_One * 100 - LED_Two * 10;

}

}

else

{

if (SetTF || !Key_SET)

{

LED_One = (TMSetV) / 100; //SET状态下显示设定值

LED_Two = (TMSetV - LED_One * 100)/10;

LED_Three = TMSetV - LED_One * 100 - LED_Two * 10;

}

else

{

LED_One = (TMV) / 100; //转换百位值

LED_Two = (TMV - LED_One * 100)/10;

LED_Three = TMV - LED_One * 100 - LED_Two * 10;

}

}

//转LED字段

if (LED_One) //超过百时十位的处理

LED_Two = LEDDis[LED_Two];

else

{

if (LED_Two == 0)

LED_Two = LEDDis[10];

else

LED_Two = LEDDis[LED_Two];

}

if (Sign)

LED_One = LEDDis[11];

else

{

if (LED_One == 0)

LED_One = LEDDis[10];

else

LED_One = LEDDis[LED_One];

}

LED_Three = LEDDis[LED_Three];

}

void InitDS1820(void) //初始化DS1820

{

TMPort = 1; //拉高TMPort

_nop_(); //保持一个周期

TMPort = 0; //拉低TMPort

Delay_510(); //延时DS1820复位时间要500us的低电平TMPort = 1; //拉高TMPort

_nop_(); //保持

_nop_();

_nop_();

Delay_110(); //延时110us 等待DS1820回应

if (!TMPort) //回应信号为低电平

DS1820ON = 1;

else

DS1820ON = 0;

Delay_110(); //延时

Delay_110();

TMPort = 1; //拉高TMPort

}

void ROMDS1820(void) //跳过ROM匹配

{

#pragma asm

MOV A,#0CCH

MOV R2,#8

CLR C

WR1:

CLR P3_7

MOV R3,#6

DJNZ R3,$

RRC A

MOV P3_7,C

MOV R3,#23

DJNZ R3,$

SETB P3_7

NOP

DJNZ R2,WR1

SETB P3_7

#pragma endasm

}

void TMVDS1820(void) //温度转换指令

{

#pragma asm

MOV A,#44H

MOV R2,#8

CLR C

WR2:

CLR P3_7

MOV R3,#6

DJNZ R3,$

RRC A

MOV P3_7,C

MOV R3,#23

DJNZ R3,$

SETB P3_7

NOP

DJNZ R2,WR2

SETB P3_7

#pragma endasm

}

void TMRDS1820(void) //读出温度指令

{

#pragma asm

MOV A,#0BEH

MOV R2,#8

CLR C

WR3:

CLR P3_7

MOV R3,#6

DJNZ R3,$

RRC A

MOV P3_7,C

MOV R3,#23

DJNZ R3,$

SETB P3_7

NOP

DJNZ R2,WR3

SETB P3_7

#pragma endasm

}

void TMWDS1820(void) //写入温度限制指令{

#pragma asm

MOV A,#04EH

MOV R2,#8

CLR C

WR13:

CLR P3_7

MOV R3,#6

DJNZ R3,$

RRC A

MOV P3_7,C

MOV R3,#23

DJNZ R3,$

SETB P3_7

NOP

DJNZ R2,WR13

SETB P3_7

#pragma endasm

}

void TMREDS1820(void) //COPY RAM to E2PRAM {

#pragma asm

MOV A,#48H

MOV R2,#8

CLR C

WR33:

CLR P3_7

MOV R3,#6

DJNZ R3,$

RRC A

MOV P3_7,C

MOV R3,#23

DJNZ R3,$

SETB P3_7

NOP

DJNZ R2,WR33

SETB P3_7

#pragma endasm

}

void TMERDS1820(void) //COPY E2PRAM to RAM {

#pragma asm

MOV A,#0B8H

MOV R2,#8

CLR C

WR43:

CLR P3_7

MOV R3,#6

DJNZ R3,$

MOV P3_7,C

MOV R3,#23

DJNZ R3,$

SETB P3_7

NOP

DJNZ R2,WR43

SETB P3_7

#pragma endasm

}

void WriteDS1820(void) //写入温度限制值

{

#pragma asm

MOV A,26H //发出4EH写ROM指令后连发两个字节分别为上下限

MOV R2,#8

CLR C

WR23:

CLR P3_7

MOV R3,#6

DJNZ R3,$

RRC A

MOV P3_7,C

MOV R3,#23

DJNZ R3,$

SETB P3_7

NOP

DJNZ R2,WR23

SETB P3_7

#pragma endasm

}

void ReadDS1820(void) //读出温度值

{

#pragma asm

MOV R4,#3 ; 将温度高位和低位,高温限制位从DS18B20中读出

MOV R1,#29H ; 低位存入29H(TEMPER_L),高位存入28H(TEMPER_H),高温限制位存入27H(TMRomV)

RE00:

MOV R2,#8

RE01:

CLR C

SETB P3_7

NOP

CLR P3_7

NOP

NOP

NOP

SETB P3_7

MOV R3,#09

RE10:

DJNZ R3,RE10

MOV C,P3_7

MOV R3,#23

RE20:

DJNZ R3,RE20

RRC A

DJNZ R2,RE01

MOV @R1,A

DEC R1

DJNZ R4,RE00

#pragma endasm

}

void Delay_510(void) //延时510微秒{

#pragma asm

MOV R0,#7DH

MOV R1,#02H

TSR1:

DJNZ R0,TSR1

MOV R0,#7DH

DJNZ R1,TSR1

#pragma endasm

}

void Delay_110(void) //延时110微秒{

#pragma asm

MOV R0,#19H

MOV R1,#02H

TSR2:

DJNZ R0,TSR2

MOV R0,#19H

DJNZ R1,TSR2

#pragma endasm

void Delay_10ms(void) //延时10ms {

#pragma asm

MOV R0,#19H

MOV R1,#0C8H

TSR3:

DJNZ R0,TSR3

MOV R0,#19H

DJNZ R1,TSR3

#pragma endasm

}

void Delay_4s(void) //延时4s

{

#pragma asm

MOV R2,#28H

TSR5:

MOV R0,#0FAH

MOV R1,#0C8H

TSR4:

DJNZ R0,TSR4

MOV R0,#0FAH

DJNZ R1,TSR4

DJNZ R2,TSR5

#pragma endasm

}

基于51单片机及DS18B20温度传感器的数字温度计程序(详细注释)

基于51单片机及DS18B20温度传感器的数字温度计程序(详细注释)

电路实物图如下图所示: C 语言程序如下所示: /******************************************************************** zicreate ----------------------------- Copyright (C) https://www.360docs.net/doc/9613632752.html, -------------------------- * 程序名; 基于DS18B20的测温系统 * 功 能: 实时测量温度,超过上下限报警,报警温度可手动调整。K1是用来 * 进入上下限调节模式的,当按一下K1进入上限调节模式,再按一下进入下限 * 调节模式。在正常模式下,按一下K2进入查看上限温度模式,显示1s 左右自动 * 退出;按一下K3进入查看下限温度模式,显示1s 左右自动退出;按一下K4消除 * 按键音,再按一下启动按键音。在调节上下限温度模式下,K2是实现加1功能, * K1是实现减1功能,K3是用来设定上下限温度正负的。 * 编程者:Jason * 编程时间:2009/10/2 *********************************************************************/ #include //将AT89X52.h 头文件包含到主程序 #include //将intrins.h 头文件包含到主程序(调用其中的_nop_()空操作函数延时) #define uint unsigned int //变量类型宏定义,用uint 表示无符号整形(16位) #define uchar unsigned char //变量类型宏定义,用uchar 表示无符号字符型(8位) uchar max=0x00,min=0x00; //max 是上限报警温度,min 是下限报警温度 bit s=0; //s 是调整上下限温度时温度闪烁的标志位,s=0不显示200ms ,s=1显示1s 左右 bit s1=0; //s1标志位用于上下限查看时的显示 void display1(uint z); //声明display1()函数 #include"ds18b20.h" //将ds18b20.h 头文件包含到主程序 #include"keyscan.h" //将keyscan.h 头文件包含到主程序 #include"display.h" //将display.h 头文件包含到主程序

基于51单片机的DS18B20数字温度计的实训报告

电子信息职业技术学院 暨国家示性软件职业技术学院 单片机实训 题目:用MCS-51单片机和 18B20实现数字温度计 姓名: 系别:网络系 专业:计算机控制技术 班级:计控 指导教师: * 伟 时间安排:2013年1月7日至 2013年1月11日

摘要 随着国民经济的发展,人们需要对各中加热炉、热处理炉、反应炉和锅炉中温度进行监测和控制。采用单片机来对他们控制不仅具有控制方便,简单和灵活性大等优点,而且可以大幅度提高被控温度的技术指标,从而能够大大的提高产品的质量和数量。 在日常生活及工业生产过程中,经常要用到温度的检测及控制,温度是生产过程和科学实验中普遍而且重要的物理参数之一。在生产过程中,为了高效地进行生产,必须对它的主要参数,如温度、压力、流量等进行有效的控制。温度控制在生产过程中占有相当大的比例。温度测量是温度控制的基础,技术已经比较成熟。传统的测温元件有热电偶和二电阻。而热电偶和热电阻测出的一般都是电压,再转换成对应的温度,这些方法相对比较复杂,需要比较多的外部硬件支持。我们用一种相对比较简单的方式来测量。 我们采用美国DALLAS半导体公司继DS18B20之后推出的一种改进型智能温度传感器DS18B20作为检测元件,温度围为-55~125 oC,最高分辨率可达0.0625 oC。DS18B20可以直接读出北侧温度值,而且采用三线制与单片机相连,减少了外部的硬件电路,具有低成本和易使用的特点。 本文介绍一种基于AT89C51单片机的一种温度测量及报警电路,该电路采用DS18B20作为温度监测元件,测量围0℃-~+100℃,使用LED模块显示,能设置温度报警上下限。正文着重给出了软硬件系统的各部分电路,介绍了集成温度传感器DS18B20的原理,AT89C51单片机功能和应用。该电路设计新颖、功能强大、结构简单。 关键词:单片机,数字控制,温度计, DS18B20,AT89S51

基于AT89C51单片机的温度传感器

基于AT89C51单片机的温度传感器 目录 摘要.............................................................. I ABSTRACT........................................................... I I 第一章绪论 (1) 1.1 课题背景 (1) 1.2本课题研究意义 (2) 1.3本课题的任务 (2) 1.4系统整体目标 (2) 第二章方案论证比较与选择 (3) 2.1引言 (3) 2.2方案设计 (3) 2.2.1 设计方案一 (3) 2.2.2 设计方案二 (3) 2.2.3 设计方案三 (3) 2.3方案的比较与选择 (4) 2.4方案的阐述与论证 (4) 第三章硬件设计 (6) 3.1 温度传感器 (6) 3.1.1 温度传感器选用细则 (6) 3.1.2 温度传感器DS18B20 (7) 3.2.单片机系统设计 (13)

3.3显示电路设计.................................错误!未定义书签。 3.4键盘电路设计................................错误!未定义书签。 3.5报警电路设计.................................错误!未定义书签。 3.6通信模块设计.................................错误!未定义书签。 3.6.1 RS-232接口简介..............................错误!未定义书签。 3.6.2 MAX232芯片简介.............................错误!未定义书签。 3.6.3 PC机与单片机的串行通信接口电路.............错误!未定义书签。 第四章软件设计..................................错误!未定义书签。 4.1 软件开发工具的选择..........................错误!未定义书签。 4.2系统软件设计的一般原则.......................错误!未定义书签。 4..3系统软件设计的一般步骤......................错误!未定义书签。 4.4软件实现....................................错误!未定义书签。 4.4.1系统主程序流程图.........................错误!未定义书签。 4.4.2 传感器程序设计...........................错误!未定义书签。 4.4.3 显示程序设计.............................错误!未定义书签。 4.4.4 键盘程序设计.............................错误!未定义书签。 4.4.5 报警程序设计.............................错误!未定义书签。 4.4.6 通信模块程序设计.........................错误!未定义书签。 第五章调试与小结..................................错误!未定义书签。致谢...............................................错误!未定义书签。参考文献...........................................错误!未定义书签。附录...............................................错误!未定义书签。系统电路图.......................................错误!未定义书签。系统程序.........................................错误!未定义书签。

基于51单片机的温度警报器的设计

西安文理学院物理与机械电子工程学院课程设计任务书

目录 摘要 (3) 1 引言 (3) 1.1课题背景 (3) 1.2研究内容和意义 (5) 2 芯片介绍 (5) 2.1 DS18B20概述 (5) 2.1.1 DS18B20封装形式及引脚功能 (6) 2.1.2 DS18B20内部结构 (6) 2.1.3 DS18B20供电方式 (9) 2.1.4 DS18B20的测温原理 (10) 2.1.5 DS18B20的ROM命令 (11) 2.2 AT89C52概述 (13) 2.2.1单片机AT89C52介绍 (13) 2.2.2功能特性概述 (13) 3 系统硬件设计 (13) 3.1 单片机最小系统的设计 (13) 3.2 温度采集电路的设计 (14) 3.3 LED显示报警电路的设计 (15) 4 系统软件设计...................................................15 4.1 流程图........................................................15 4.2 温度报警器程序.................................................16 4.3 总电路图..................................................... 19 5总结 (20)

摘要 随着时代的进步和发展,温度的测试已经影响到我们的生活、工作、科研、各个领域,已经成为了一种非常重要的事情,因此设计一个温度测试的系统势在必行。 本文主要介绍了一个基于AT89C52单片机的数字温度报警器系统。详细描述了利用数字温度传感器DS18B20开发测温系统的过程,重点对传感器在单片机下的硬件连接,软件编程以及各模块系统流程进行了详尽分析,对各部分的电路也一一进行了介绍,该系统可以方便的实现温度的采集和报警,并可以根据需要任意上下限报警温度,它使用起来相当方便,具有精度高、量程宽、灵敏度高、体积小、功耗低等优点,适合于我们日常生活和工、农业生产中的温度测量,也可以当做温度处理模块潜入其他系统中,作为其他主系统的辅助扩展。DS18B20与AT89C52结合实现最简温度报警系统,该系统结构简单,抗干扰能力强,适合于恶劣环境下进行现场温度测量,有广泛的应用前景。 关键词:单片机;温度检测;AT89C52;DS18B20; 1 引言 1.1课题背景 温度是工业对象中主要的被控参数之一,如冶金、机械、食品、化工各类工业生产中,广泛使用的各种加热炉、热处理炉、反应炉等,对工件的温度处理要求严格控制。随着科学技术的发展,要求温度测量的范围向深度和广度发展,以满足工业生产和科学技术的要求。 基于AT89C51单片机提高了系统的可移植性、扩展性,利于现代测控、自动化、电气技术等专业实训要求。以单片机为核心设计的温度报警器,具有安全可靠、操作简单方便、智能控制等优点。 温度对于工业生产如此重要,由此推进了温度传感器的发展。温度传感器主要经过了三个发展阶段[1]: (1)模拟集成温度传感器。该传感器是采用硅半导体集成工艺制成,因此亦称硅传感器或单片集成温度传感器。此种传感器具有功能单一(仅测量温度)、

基于51单片机的红外遥控器设计

天津职业大学 二○一五~二○一六学年第1学期 电子信息工程学院 通信系统综合实训报告书 课程名称:通信系统综合实训 班级:通信技术(5)班 学号:1304045640 1304045641 1304045646姓名:韩美红季圆圆陈真真指导教师:崔雁松 2015年11月17日

一、任务要求 利用C51单片机设计开发一套红外线收发、显示系统。 具体要求: ●编写相关程序(汇编、C语言均可); ●用Proteus绘制电路图并仿真实现基本功能; ●制作出实物 二、需求分析(系统的应用场景、环境条件、参数等) 现在各种红外线技术已经源源不断进入我们的生活中,在很多场合发挥着作用。 机场、宾馆、商场等的自动门,会在人进出时自动地开启和关闭。原来,在自动门的一侧有一个红外线光源,发射的红外线照射到另一侧的光电管上,红外线是人体察觉不到的。当人走到大门口,身体挡住红外线,电管接收不到红外线了。根据设计好的指令,触发相应开关,就把门打开了。等人进去后,光电管又可以接到红外线,恢复原来的线路,门又会自动关闭。因此这种光电管被称为“电眼”,在许多自动控制设备中大显身手。 在家庭中,许多电子设备如彩色电视、空调、冰箱和音响等,都使用了各种“红外线遥控器”。利用它我们可以非常方便的转换电视频道或设定空调的温度档次。 三、概要设计(系统结构框图/系统工作说明流程图) 红外线收发、显示系统硬件由以下几部分组成:红外遥控器,51单片机最小系统,接收放大器一体集成红外接收头,LED灯显示电路。 红外线接收是把遥控器发送的数据(已调信号)转换成一定格式的控制指令脉冲(调制信号、基带信号),是完成红外线的接收、放大、解调,还原成发射格式(高、低电位刚好相反)的脉冲信号。这些工作通常由一体化的接收头来完成,输出TTL兼容电平。最后通过解码把脉冲信号转换成数据,从而实现数据的传输。 红外遥控系统电路框图

WZPK型温度传感器使用说明书

WZPK型温度传感器 使用说明书 泰兴市热工仪表厂2015年01月10日

隔爆温度传感器 ■应用 通常和显示仪表、记录仪表、电子计算机等配套使用。直接测量生产现场存在碳氢化合物等爆炸的0~500℃范围内液体、蒸汽和气体介质以及固体表面温度。 ■特点 ●压簧式感温元件,抗振性能好; ●测量范围大; ●毋须补偿导线,节省费用; ●进口薄膜电阻元件,性能可靠稳定。 ●防爆标志:Ex dⅡBT1~T5,防爆合格证号:GYB ■主要技术参数 ●产品执行标准 JB/T8622-1997 《工业铂热电阻技术条件》 《爆炸性气体环境用电气设备第1部分:设备通用要求_部分2》和《爆炸性气体环境用电气设备第2部分:隔爆型“d”保护的设备》,《设备保护等级(EPL)为Gb级的设备产品防爆标志为Ex d ⅡB T1~T5 Gb ■常温绝缘电阻 防爆热电阻在环境温度为15~35℃,相对湿度不大于80%,试验电压为10~100V(直流)电极及外套管之间的绝缘电阻≥100MΩ.m。

■测温范围及允差 ●测温范围及允差 注:t为感温元件实测绝对值。 ●防爆分组形式 d Ⅱ□ T □ 温度组别:T1~T5 防爆等级:A、B、C 工厂用电气设备 d:隔爆型 ai:本质安全型 ○电气设备类别 Ⅰ类——煤矿井下用电气设备 Ⅱ类——工厂用电气设备 ○防爆等级 防爆热电偶的防爆等级按其使用于爆炸性气体混合物最大安

全间隙分为A、B、C三级。 ○温度组别 防爆热电偶的温度组别按其外漏部分允许最高表面温度分为T1~T5 ●防爆等级 ●Exd Ⅱ□T□ ●Exia Ⅱ□T□ ●防护等级:IP65 ■接线盒形式

基于51单片机DS18B20温度传感器的C语言程序和电路

基于51单片机DS18B20温度传感器的C语言程序和电路 DS18B20在外形上和三极管很像,有三只脚。电压范围为3.0 V至5.5 V 无需备用电源测量温度位温度转换为12位数字格式最大值为750毫秒用户可定义的非易失性温度报警设置应用范围包敏感系统。 下面是DS18B20的子程序,本人用过完全可行的: #include #include #define uchar unsigned char #define uint unsigned int sbit DQ=P2^0; void reset(); //DS18B20 void write_byte(uchar val); //DS18B20写命令函数 uchar read_byte(void); //DS18B20读1字节函数 void read_temp(); //温度读取函数 void work_temp(); //温度数据处理函数 uchar data temp_data[2]={0x00,0x00}; uchar data display[5]={0x00,0x00,0x00,0x00,0x00}; //对于温度显示值值 uchar code ditab[16]={0x00,0x01,0x01,0x02,0x03,0x03,0x04,0x04,0x05,0x06,0x06,0x07,0x0数部分查表 main() { while(1) { 自己添加; } } void delay1(uint t) { for(;t>0;t--); } ///////温度控制子函数 void reset() { uchar presence=1; while(presence) { while(presence) {

单片机温度传感器设计报告

泰州职业技术学院 电子与信息工程系 课程名称: 51单片机开发 课题名称:用1602LCD与DS18B20设 计的温度报警器 班级: 10信息 课题小组成员:林淑云朱翠竹 刘苏慧 指导老师:蔡菁

摘要 现代社会是信息社会,随着现代农业技术的发展及人们对生活环境要求的提高,人们也迫切需要检测与控制温度,所以对于温度的测量控制具有十分重要的意义。 随着全球温度的普遍升高,高温火灾更是无处不在:电气线路短路、过载、接触电阻过大等引发高温火灾;静电产生高温火灾;雷电等强电入侵导致高温火灾;最主要是机房内电脑、空调等用电设备长时间工作,导致设备老化,空调发生故障,而不能降温。因此,机房内所属的电子产品发热快,在短时间内机房温度升高超出设备正常温度,导致系统瘫痪或产生火灾,这时温度报警系统就会发挥应有的功能。 本课题介绍的就是利用温度传感DS18B20制作的温度报警器,自动测量当前环境温度。由单片机AT89C52控制,并通过1602LCD显示,若当前环境温度超过此温度,系统发出报警。

目录 一、系统总体设计要求 二、系统硬件设计 三、系统程序设计 四、调试与性能分析 五、源程序清单 六、心得体会

一、系统总体设计要求 1. 本设计采用集成温度传感器的的s18b20,设计一个数字显示的温度报警器。定安全温度值范围为20°C~30°C(可根据具体需要在程序中进行调整),对在这一范围内的温度变化采集后送入A/D转换器,A/D转换器的模拟电压范围为0~5V。例如传感器采集的温度为25°C,则对应液晶显示器的显示值为25°C。而温度高出30°C或者低于20°C时,不在安全温度范围之内,喇叭会进行报警、二极管发光显示 2 总体设计框图 本设计采用AT89C52作为主控芯片,蜂鸣器作为输出设备产生报警声,LCD1602能够实时的显示当前的的温度。其中P3.3和P3.2外接按键,P0口用作LCD输出数据端口,P2.3接蜂鸣器端口。详细原理图见附件 设计框图如图一所示。

单片机红外电视遥控器C51程序代码单片机程序

单片机红外电视遥控器C51程序代码单片机程序 //************************************************************** //名称:单片机红外电视遥控器C51程序代码() /*-------------------------------------------------------------- 描述: 一般红外电视遥控器的输出都是用编码后串行数据对38~40kHz的方波进行 脉冲幅度调制而产生的.当发射器按键按下后,即有遥控码发出,所按的键 不同遥控编码也不同。这种遥控码具有以下特征: 采用脉宽调制的串行码,以脉宽为0.565ms、间隔0.56ms、周期为1.125ms的组合表示二进制的“0”;以脉宽为0.565ms、间隔1.685ms、周期为2.25ms 的组合表示二进制的“1”。上述“0”和“1”组成的32位二进制码经38kHz 的载频进行二次调制,然后再通过红外发射二极管产生红外线向空间发射。 一般电视遥控器的遥控编码是连续的32位二进制码组,其中前16位为用户识别码,能区别不同的红外遥控设备,防止不同机种遥控码互相干扰。后16位 为8位的操作码和8位的操作反码,用于核对数据是否接收准确。 根据红外编码的格式,发送数据前需要先发送9ms的起始码和4.5ms的结果码。接收方一般使用TL0038一体化红外线接收器进行接收解码,当TL0038接收到38kHz红外信号时,输出端输出低电平,否则为高电平。 所以红外遥控器发送红外信号时,参考上面遥控串行数据编码波形图,在低 电平处发送38kHz红外信号,高电平处则不发送红外信号。 ----------------------------------------------------------------*/ //编辑: //日期: //**************************************************************** #define uchar unsigned char //定义一下方便使用 #define uint unsigned int #define ulong unsigned long #include //包括一个51标准内核的头文件 static bit OP; //红外发射管的亮灭 static unsigned int count; //延时计数器 static unsigned int endcount; //终止延时计数 static unsigned char flag; //红外发送标志 char iraddr1; //十六位地址的第一个字节 char iraddr2; //十六位地址的第二个字节 void SendIRdata(char p_irdata); void delay(); //************************************************************** void main(void) {

GFSIGNET2350温度传感器操作说明书.

? SIGNET 2820 Series Conductivity Sensor Instruction Manual ENGLISH 1. Wiring 2. Recommended Position 3. 2819/2820/2821 In-line Installation SAFETY INSTRUCTIONS FOR IN-LINE ELECTRODE INSTALLATION 1.Do not remove from pressurized lines.2.Do not exceed maximum temperature/pressure specifications.3.Wear safety goggles or face shield during installation/service.4.Do not alter product construction. Failure to follow safety instructions may result in severe personal injury! Customer supplied pipe tee/reducer Standard fitting kit Hole up Mark hole position 3/4 in. NPT Hand tighten only! Optional fitting kit Hole up Mark hole position

Customer supplied pipe tee/reducer 1/2 in. NPT Hand tighten only! O-ring O-ring Sealant Sealant +GF + SIGNET 5800CR ?Use three conductor shielded cable for cable extensions up to 30 m (100 ft max.? Shield must be maintained through cable splice RED WHITE BLACK SILVER (SHLDS h l d S i g n a l I N T e m p . I N I s o . G n d CH 2 CH 1 RED SILVER (SHLD BLACK

基于51单片机的数字温度报警器

摘要:随着传感器在生产生活中更加广泛的应用,一种新型的数字式温度传感器实现对温度的测试与控制得到了更快的开发。本文设计了一种基于单片机AT89C52的温度检测及报警系统。该系统将温度传感器DS18B20接到单片机的一个端口上,单片机对温度传感器进行循环采集。将采集到的温度值与设定的上下限进行比较,当超出设定范围的上下限时,通过单片机控制的报警电路就会发出报警信号,从而实现了本次课程设计的要求。该系统设计和布线简单、结构紧凑、体积小、重量轻、抗干扰能力较强、性价比高、扩展方便,在工农业等领域的温度检测中有广阔的应用前景。本次课程设计的测量范围为0℃--99℃,测量误差为±2℃。 关键字:温度传感器、单片机、报警、数码管显示 一、概述 本次设计可以应用到许多我们用过的软件设计,将前面所学的知识融汇在一起实现温度监测及其报警的功能,来提醒农民当前大棚内温度是否适合农作物的生长。 电子技术是在十九世纪末、二十世纪初开始发展起来的新兴技术,在二十世纪发展最迅速,应用最广泛,成为近代科学技术发展的一个重要标志。 随着电子技术的飞速发展,电子技术在日常生活中得到了广泛的应用,各类转换电路的不断推出以及电子产品的快速更新,电子技术已成为世界发展和人们生活中必不可少的工具。 本次课设应用Protues软件设计一个温度检测报警系统,用温度传感器DS18B20采集大棚内的温度,当大棚内的温度高于30℃。或低于15℃。时,电路发出报警信号并显示当前温度,达到提醒农民的效果。 本次课设要求设计一个温度监测报警显示电路,要求温度范围:0℃--99℃;测量误差为±2℃;报警下限温度为:15℃;报警上限温度为:30℃。 二、方案论证 设计一个用于温室大棚温度监测系统。大棚农作物生长时,其温度不能太低,也不能太高,太低或太高均不适合农作物生长。该系统可实时测量、显示大棚的温度,当大棚温度超过农作物生长的温度范围时,报警提醒农民。 方案一: 方案一原理框图如图1所示。 图1 大棚温度检测系统的原理框图 方案二: 方案二原理框图如图2所示。

基于单片机数字控温器实验报告

重庆交通大学 课外实践报告 题目:基于单片机数字控温器 姓名:罗杰 专业:电子信息工程 班级:2011 级4 班 学号:631106020405 指导老师:王淑良

目录 设计目的-------------------------------------------------------------------------- 1 设计要求----------------------------------------------------------- ---------------1 设计方案--------------------------------------------- 1 系统工作原理-------------------------------------------------------------------- 2 各部分电路的设计和芯片的结构功能作用-------------------------------- 2 单片机程序(C语言程序)------------------------------------------------------ 11 设计总结------------------------------------------- 20 一、设计目的

1、系统地运用已学的理论知识解决实际问题的能力和查阅资料的能力。培养一定 的自学能力和独立分析问题、解决问题的能力,和团队协作能力,能通过独立思考、查阅工具书、参考文献,寻找解决方案。 2、能设计、安装和调试数显温度测试控制系统,并能利用模拟和数字电路和单片 机的知识分析和解决设计、安装和调试中遇到的实际问题。 3、能熟练的设计并良好的印制PCB电路板。 4、对温度的控制要求尽量的高效,精确。 二、设计要求 1、 (1)温度控制范围为30度~100度之间; (2)可键盘设置控制温度值,并显示; (3)数字显示水的实际温度; (4)设置温度控制值和检测值之间的误差在±1度; 2、发挥部分 (1)设计温度报警电路; (2)升温或降温在5—10分钟之内完成; 三、设计方案 方案:用控制器MCS-51系列单片机和数字传感器DS18B20来进行控制,并用七段数码显示管来显示温度,在程序中来设置温度的上下限,当温度超出上下限时,由单片机发出控制信号,外界控制电路接收信号并作相应的响应来调节温度。此为全控制型,最为简便。 四、系统工作原理 1、系统的总体结构图如下:

c51、c52单片机红外线遥控接收解码c程序(可直接使用)

/ 亲,此程序以经过测试,可直接使用!!!/ #include #define uchar unsigned char #define uint unsigned int void delay(uchar x); sbit IRIN = P3^2; uchar IRCOM[4]; void main() { IE = 0x81; TCON = 0x01; IRIN=1; /* 此处可以根据按键码自由编写程序 /以下为3*7遥控按键码/ /(也可以应用与其他类型遥控,本程序只以3*7遥控为例)/ / 0x45 0x46 0x47 / / 0x44 0x40 0x43 / / 0x07 0x15 0x09 / / 0x16 0x19 0x0d / / 0x0c 0x18 0x5e / / 0x08 0x1c 0x5a / / 0x42 0x52 0x4a / 例如: while(1) {switch(IRCOM[2]) {case 0x45: P2=0x7f; break; case 0x44: P2=0xbf; break; case 0x07: P2=0xdf; break; case 0x16: P2=0xef; break; case 0x0c: P2=0xf7; break; case 0x08: P2=0xfb; break; case 0x42: P2=0xfd; break; case 0x52: P2=0xfe; break; case 0x4a: P2=0xff; break; case 0x5a: P2=0x00; break;} } */ while(1); } //end main /**********************************************************/ void IR_IN(void) interrupt 0 //外部中断服务程序 {unsigned char j,k,N=0; EX0 = 0; delay(15); if (IRIN==1) { EX0 =1;

T255温度传感器使用说明

T255温度传感器使用说明 T255温度传感器是一款用来检测功率半导体温升的理想模拟器件,主要配合运放整形或直接送入单片机A/D口采集温度信息,并作出实时显示或过温保护等动作。 T255是以其阻值变化来反映温度变化的,故选用相应电阻分压来获取对应电压值是非常重要的参数。 典型:R(25℃)=5.000kΩ ,静动态特性好,灵敏度高。 阻值-温度特性表 温度℃ 阻值KΩ 温度℃ 阻值KΩ 温度℃ 阻值KΩ 温度℃ 阻值KΩ -20 37.49 11 8.801 42 2.674 73 0.980 -19 35.53 12 8.439 43 2.582 74 0.951 -18 33.76 13 8.093 44 2.493 75 0.923 -17 32.09 14 7.764 45 2.409 76 0.896 -16 30.52 15 7.451 46 2.327 77 0.870 -15 29.03 16 7.151 47 2.249 78 0.844 -14 27.62 17 6.866 48 2.174 79 0.820 -13 26.29 18 6.593 49 2.102 80 0.796 -12 25.03 19 6.333 50 2.032 81 0.773 -11 23.84 20 6.085 51 1.966 82 0.751 -10 22.72 21 5.848 52 1.902 83 0.729 -9 21.65 22 5.621 53 1.840 84 0.709 -8 20.64 23 5.405 54 1.780 85 0.689 -7 19.68 24 5.198 55 1.723 86 0.670 -6 18.77 25 5.000 56 1.668 87 0.650 -5 17.91 26 4.811 57 1.615 88 0.632 -4 17.10 27 4.630 58 1.564 89 0.614 -3 16.32 28 4.457 59 1.514 90 0.597 -2 15.59 29 4.291 60 1.467 91 0.581 -1 14.89 30 4.132 61 1.421 92 0.565 0 14.23 31 3.980 62 1.376 93 0.549 1 13.60 3 2 3.835 6 3 1.33 4 94 0.534 2 13.01 3 3 3.696 6 4 1.292 9 5 0.520 3 12.4 4 34 3.562 6 5 1.252 9 6 0.506 4 11.90 3 5 3.434 6 6 1.214 9 7 0.492 5 11.39 3 6 3.311 6 7 1.177 9 8 0.479 6 10.90 3 7 3.194 6 8 1.141 9 9 0.466 7 10.44 38 3.081 69 1.107 100 0.453 8 10.00 39 2.973 70 1.073 9 9.580 40 2.869 71 1.041 10 9.181 41 2.769 72 1.010

温度传感器实验设计概要

成都理工大学工程 技术学院 单片机课程设计报告 数字温度计设计

摘要 在这个信息化高速发展的时代,单片机作为一种最经典的微控制器,单片机技术已经普及到我们生活,工作,科研,各个领域,已经成为一种比较成熟的技术,作为自动化专业的学生,我们学习了单片机,就应该把它熟练应用到生活之中来。本文将介绍一种基于单片机控制的数字温度计,本温度计属于多功能温度计,可以设置上下报警温度,当温度不在设置范围内时,可以报警。本文设计的数字温度计具有读数方便,测温范围广,测温精确,数字显示,适用范围宽等特点。 关键词:单片机,数字控制,数码管显示,温度计,DS18B20,AT89S52。

目录 1概述 (4) 1.1设计目的 (4) 1.2设计原理 (4) 1.3设计难点 (4) 2 系统总体方案及硬件设计...................................................... 错误!未定义书签。 2.1数字温度计设计方案论证 (4) 2.2.1 主控制器 (5) 2.4 系统整体硬件电路设计 (7) 3系统软件设计 (8) 3.1初始化程序 (8) 3.2读出温度子程序 (9) 3.3读、写时序子程序 (10) 3.4 温度处理子程序 (11) 3.5 显示程序 (12) 4 Proteus软件仿真 (13) 5硬件实物 (14) 6课程设计体会 (15) 附录1: (14) 附录2: (21)

1概述 1.1设计目的 随着人们生活水平的不断提高,单片机控制无疑是人们追求的目标之一,它所给人带来的方便也是不可否定的,其中数字温度计就是一个典型的例子,但人们对它的要求越来越高,要为现代人工作、科研、生活、提供更好的更方便的设施就需要从数单片机技术入手,一切向着数字化控制,智能化控制方向发展。 本设计所介绍的数字温度计与传统的温度计相比,具有读数方便,测温范围广,测温准确,其输出温度采用数字显示,主要用于对测温比较准确的场所,或科研实验室使用,可广泛用于食品库、冷库、粮库、温室大棚等需要控制温度的地方。目前,该产品已在温控系统中得到广泛的应用。 1.2设计原理 本系统是一个基于单片机AT89S52的数字温度计的设计,用来测量环境温度,测量范围为-50℃—110℃度。整个设计系统分为4部分:单片机控制、温度传感器、数码显示以及键盘控制电路。整个设计是以AT89S52为核心,通过数字温度传感器DS18B20来实现环境温度的采集和A/D转换,同时因其输出为数字形式,且为串行输出,这就方便了单片机进行数据处理,但同时也对编程提出了更高的要求。单片机把采集到的温度进行相应的转换后,使之能够方便地在数码管上输出。LED采用三位一体共阳的数码管。 1.3设计难点此设计的重点在于编程,程序要实现温度的采集、转换、显示和上下限温度报警,其外围电路所用器件较少,相对简单,实现容易。 2 系统总体方案及硬件设计 2.1数字温度计设计方案论证 由于本设计是测温电路,可以使用热敏电阻之类的器件利用其感温效应,在将随被测温度变化的电压或电流采集过来,进行A/D转换后,就可以用单片机进行数据的处理,在显示电路上,就可以将被测温度显示出来,这种设计需要用到A/D 转换电路,感温电路比较麻烦。进而考虑到用温度传感器,在单片机电路设计中,大多都是使用传感器,所以这是非常容易想到的,所以可以采用一只温度传感器DS18B20,此传感器,可以很容易直接读取被测温度值,进行转换,就可以满足设计要求。 2.2总体设计框图 温度计电路设计总体设计方框图如图1所示,控制器采用单片机AT89S52,温度传感器采用DS18B20,用3位共阴LED数码管以串口传送数据实现温度显示。

基于单片机的温度传感器的设计说明

基于单片机的温度传感器 的设计 目录 第一章绪论-------------------------------------------------------- ---2 1.1 课题简介 ----------------------------------------------------------------- 2 1.2 设计目的 ----------------------------------------------------------------- 3 1.3 设计任务 ----------------------------------------------------------------- 3 第二章设计容与所用器件 --------------------------------------------- 4第三章硬件系统设计 -------------------------------------------------- 4 3.1单片机的选择------------------------------------------------------------- 4 3.2温度传感器介绍 ---------------------------------------------------------- 5 3.3温度传感器与单片机的连接---------------------------------------------- 8 3.4单片机与报警电路-------------------------------------------------------- 9 3.5电源电路----------------------------------------------------------------- 10 3.6显示电路----------------------------------------------------------------- 10 3.7复位电路----------------------------------------------------------------- 11 第四章软件设计 ----------------------------------------------------- 12 4.1 读取数据流程图--------------------------------------------------------- 12 4.2 温度数据处理程序的流程图 -------------------------------------------- 13 4.3程序源代码 -------------------------------------------------------------- 14

单片机实训实验报告

单片机实训实验报告 课题:单片机实训 院系:电子信息工程学院 班级 学号: 姓名: 指导老师:熊老师、罗老师 日期:2011.6.10

一、硬件系统 1、自制单片机实验板由七部分组成: (1).8路跑马灯 (2)动态扫描共阳型数码管 (3)4X4矩阵键盘 (4)蜂鸣器 (5)4路独立键盘 (6)温度传感器 (7)I2C通信方式的EEPROM芯片24C02 二、Keil C u Vision2 简述与使用 1.打开 u Vision2 2.新建工程:菜单【project】→【New Project】选择工程存放的路径,并输入工程文件名,然后点“保存” 3.进入器件选择界面树列表框内选择“Atmel”→“AT89C52”,然后点“确定”完成器件选择。 4.编辑源程序: 新建文件:菜单【File】→【new…】。然后输入代码,编辑完成后菜单【File】→【Save】或【Save As…】把代码文件存入硬盘。C源文件存为.C后缀,汇编源文件存为.a或.src后缀,并存放在同一个工程文件夹下。 5.加入源文件到工程中: 在左边浮动窗口【File】选项卡里展开“Target 1”树,在“Source Group 1”上右键单击,弹出菜单,选【Add File to Group“Source Group 1”】,选择需要加入的源文件,点“Add”按钮加入,加入完成后按“Close”关闭。 6.设置编译选项:先选中左边浮动窗口【File】选项卡里“Target1“树节点,然后选菜单【Project】→【Options for Target “Target 1”】。 7.在弹出的“Options for Target “Target 1””对话框中选择[output]选项卡,勾选“Create HEX File”然后按“确定”完成设置。 8.按“F7”开始编译,编译成功后会在工程文件夹内生成.Hex目标文件生成的.hex文件就可以用来对AT89S52芯片进行编程和运行了。 三.STC-ISP V29 Beta5 下载软件的使用 1.连接好电源线与串口线(附件中的九孔对九孔线分别连接电脑和点偏激开发板)。 2.检查电源板上电源指示灯是否亮起,如果亮起则检查USB电源线,如果已亮则关掉电源看后面的步骤。 3.启动软件。 4.选择好STC单片机的型号(STC89CF52RC). 5.选择好你使用的计算机串口号. 6.点击OPEN FILE选择你用KEIL编译好的HEX文件.

相关文档
最新文档