温度控制器Word下载.docx

上传人:b****2 文档编号:4785722 上传时间:2023-05-04 格式:DOCX 页数:25 大小:163.49KB
下载 相关 举报
温度控制器Word下载.docx_第1页
第1页 / 共25页
温度控制器Word下载.docx_第2页
第2页 / 共25页
温度控制器Word下载.docx_第3页
第3页 / 共25页
温度控制器Word下载.docx_第4页
第4页 / 共25页
温度控制器Word下载.docx_第5页
第5页 / 共25页
温度控制器Word下载.docx_第6页
第6页 / 共25页
温度控制器Word下载.docx_第7页
第7页 / 共25页
温度控制器Word下载.docx_第8页
第8页 / 共25页
温度控制器Word下载.docx_第9页
第9页 / 共25页
温度控制器Word下载.docx_第10页
第10页 / 共25页
温度控制器Word下载.docx_第11页
第11页 / 共25页
温度控制器Word下载.docx_第12页
第12页 / 共25页
温度控制器Word下载.docx_第13页
第13页 / 共25页
温度控制器Word下载.docx_第14页
第14页 / 共25页
温度控制器Word下载.docx_第15页
第15页 / 共25页
温度控制器Word下载.docx_第16页
第16页 / 共25页
温度控制器Word下载.docx_第17页
第17页 / 共25页
温度控制器Word下载.docx_第18页
第18页 / 共25页
温度控制器Word下载.docx_第19页
第19页 / 共25页
温度控制器Word下载.docx_第20页
第20页 / 共25页
亲,该文档总共25页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

温度控制器Word下载.docx

《温度控制器Word下载.docx》由会员分享,可在线阅读,更多相关《温度控制器Word下载.docx(25页珍藏版)》请在冰点文库上搜索。

温度控制器Word下载.docx

#defineTMPortP2_3//DS1820DataPortunsignedcharcodeLEDDis[]={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为个位

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

{0=0xB1;

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

LEDPort=0xFF;

if(!

Key_UKeyV=1;

(!

Key_DOWN)

KeyV=2;

if(!

Key_SET)

KeyV=3;

//KeySETDowning=0;

//清除

if(KeyV!

=0)//有键按下

{

Delay_10ms();

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

if(!

Key_UP)

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

InitDS1820();

ROMDS1820();

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-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;

IntNum=0;

IntNum2=0;

IntNum3=0;

KSDNum=0;

KeyV=0;

TempKeyV=0;

//清空变量准备下次键扫描

PowTF)

InitDS1820();

ROMDS1820();

TMVDS1820();

//温度转换指令

Delay_510();

//延时等待转换完成

TMRDS1820();

ReadDS1820();

//读出温度值

V2ToV();

//转换显示值

if(TMV>

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

RelayOutPort=0;

}

{

}

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))gotoInitEnd;

//计数在后半段时显示

LEDPort=LED_One;

//显示十位数

LEDPort=LED_Two

//显示个位数

InitEnd:

;

voidV2ToV(void)//数值转换

TLV=TLV>

>

4;

THV=THV<

<

//读出的高低位数值移位

TMV=TLV|THV;

//合并高低位放入TM为实际温度值

Sign=0;

if(SetTF||!

Sign=TMSetV>

7;

//取符号

Sign=TMV>

if(Sign)

if(SetTF||!

LED_One=(~(TMSetV-1))/10;

//SET状态下显示设定值

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

else

LED_One=(~TMV)/100;

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

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

{

LED_One=(TMSetV)/10;

//SET状态下显示设定值

LED_Two=(TMSetV-LED_One*10)/10

}

LED_One=(TMV)/10;

//

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

voidInitDS1820(void)//初始化DS1820

四、各部分电路设计

4.1温度测量及设置报警温度电路

温度测量主要依靠DS18B20传感器,该传感器耐磨耐碰,体积小,比较抗干扰,使用方便,封装多种多样,适用于各种狭小空间的温度测量以及控制。

与传统的热敏电阻等测温元件相比,它能直接读出被测温度,并且可根据实际要求通过简单的编程实现9~12位的数字值读数方式。

4.1.1DS18B20的性能特点

(1)独特的单线接口仅需要一个端口引脚进行通信;

(2)多个DS18B20可以并联在唯一的三线上,实现多点组网功能;

(3)无须外接部件;

(4)可通过数据供电,电压范围为3.0—5.5V;

(5)零待机功耗;

(6)温度以9或12位数字量读出;

(7)用户可定义的非易失性温度报警设置;

(8)报警搜索命令识别并标志超过程序限定温度(温度报警条件)的器件;

(9)负电压特性,电源极性接反时,温度计不会因发热而烧坏,但不能正常工作..

4.1.2DS18B20与单片机的接口电路

DS18B20可以采用两种方式供电,一种是采用电源供电方式,此时DS18B20的1脚接地,2脚作为信号线,3脚接电源,另一种是寄生电源方式。

单片机端口接单总线,为保证在有效的DS18B20时钟周期内提供足够的电流,可用一个MOSFET管来完成对总线的上拉。

当DS18B20处于写存储器操作和温度A/D转换操作时,总线上必须有强的上拉。

温度/℃

二进制

十六进制表示

+125

0000011111010000

07D0H

+85

0000010101010000

0550H

+25.0625

0000000110010001

0191H

+10.125

0000000010100010

00A2H

+0.5

0000000000001000

0008H

0000000000000000

0000H

—0.5

1111111111111000

FFF8H

—10.125

1111111101011110

FF5EH

—25.0625

1111111001101111

FE6FH

—55

1111110010010000

FC90H

表1DS18B20温度与测得值对应表

上拉开始时间最大为10μs。

采用寄生电源供电方式时VDD和GND端均接地。

由于单线制只有一根线,因此发送接口必须是三态的。

下边是设置报警温度以及温度测量的电路部分的图:

图3设置报警温度以及温度测量的电路部分

4.2稳压电路

7805集成稳压器的典型应用电路如下图4所示,这是一个输出正5V直流电压的稳压电源电路。

IC采用集成稳压器7805,C1、C2分别为输入端和输出端滤波电容,RL为负载电阻。

图47805稳压电路

4.3报警指示电路

在此,我们用到了继电器,下方的三极管是用来控制继电器,三极管型号为NPN9014,当输入高电平,NPN饱和导通,从而使继电器导通从而使开关吸合,当达到报警温度时,三极管给的低电平从而使红色LED灯亮,以此报警,低于此温度时继电器吸合,变为绿灯,正常。

报警指示电路如下图5:

图5报警电路

4.4单片机控制及显示电路

4.4.110引脚数码管

两位共阳数码管:

图6数码管

将数码管正对着自己,dp在右下角。

从上边一行引脚开始,从左至右依次为:

a,b,1位选,2位选,f;

下边一行从左至右依次为:

c,dp,e,d,g。

4.5单片机STC89C52RC

STC89C52RC单片机是宏晶科技推出的新一代高速、低功耗、超强抗干扰的单片机,指令代码完全兼容传统80c51单片机,12时钟/机器周期和6时钟/机器周期可以任意选择。

4.5.1单片机STC89C52RC的主要特性

1.增强型8051单片机,6时钟/机器周期和12时钟/机器周期可以任意选择,指令代码完全兼容传统8051.。

2.工作电压:

5.5V~3.3V(5V单片机)/3.8V~2.0V(3V单片机)。

3.工作频率范围:

0~40MHz,相当于普通8051的0~80MHz,频率可达48MHz。

4.用户应用程序空间为8K字节。

5.片上集成512字节RAM。

6.通用I/O口(32个)复位后为:

P1/P2/P3/P4是准双向口,P0口是漏极开路输出,作为总线扩展用时,不用加上拉电阻,作为I/O口用时,需加上拉电阻。

7.ISP(在系统可编程)/IAP(在应用可编程),无需专用编程器,无需专用仿真器,可通过串口(RxD/P3.0,TxD/P3.1)直接下载用户程序,数秒即可完成一片。

8.具有EEPROM功能。

9.具有看门狗功能。

10.共3个16位定时器/计数器,即定时器T0、T1、T2。

11.外部中断4路,下降沿中断或低电平触发电路,PowerDown模式可由外中断低电平触发中断方式唤醒。

12.通用异步串行口(UART),还可用定时器软件实现多个UART。

13.工作温度范围:

-40~+85℃(工业级)/0~75℃(商业级)

14.PDIP封装。

4.5.2STC89C52RC单片机的工作模式

掉电模式:

典型功耗<

0.1μA,可由外部中断唤醒,中断返回后,继续执行原程序。

空闲模式:

典型功耗2mA典型功耗。

正常工作模式:

典型功耗4Ma~7mA典型功耗。

掉电模式可由外部中断唤醒,适用于水表、气表等电池供电系统及便携设备。

4.5.3STC89C52RC引脚功能说明

VCC(40引脚):

电源电压。

VSS(20引脚):

接地。

P0端口(P0.0~P0.7P0.7,39~32引脚):

P0口是一个漏极开路的8位双向I/O口。

作为输出端口,每个引脚能驱动8TTL负载,对端口P0写入每个引脚能驱动写入“1”时,可以作为高阻抗输入。

在访问外部程序和数据存储器时在访问外部程序和数据存储器时,P0口也可以提供低8位地址和8位数据的复用总线位数据的复用总线。

此时,P0内部上拉电阻有效。

在FlashROM编在程时,P0端口接收指令字节端口接收指令字节;

而在校验程序时,则输出指令字节则输出指令字节。

验证时,要求外上拉电阻。

P1端口(P1.0~P1.7,1~8引脚):

P1口是一个内部上拉电阻的8位双向I/O口。

P1的输出缓冲器可驱动(吸收或者输出电流方式)4TTL输入。

对端口写入1时,通过内部的上拉电阻把端口拉到高电位,这是可用作输入口。

P1口作输入口使用时,因为有内部上拉电阻,那些被外部拉低的引脚会输出一个电流(I)。

此外,P1.0和P1.1还可以作为定时器/计数器2的外部技术输入(P1.0/T2)和定时器/计数器2的触发输入(P1.1/T2EX),具体参见下表:

在对FlashROM编程和程序校验时,P1接收低8位表XXP1.0和P1.1引脚复用功能。

P2端口(P2.0~P2.7,21~28引脚):

P2口是一个带上拉电阻的8位双向I/O端口。

P2的输出缓冲器可以驱动(吸收或输出电流方式)4TTL输入。

对端口写入1时,通过内部的上拉电阻把端口拉到高电平,这时可用作输入口。

P2作为输入口使用时,因为有内部的上拉电阻,那些被外部信号拉低的引脚会输出一个电流(I)。

在访问外部程序存储器和16

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

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2