基于STC89C52单片机的温度控制电路设计

2026/1/19 19:51:41

2.7系统整体硬件电路

系统整体硬件电路包括,传感器数据采集电路,温度显示电路,单片机主控电路等,通过Protel99se可画出如图2-9所示的电路图[9][10][11]

1

图2-9 温度控制电路原理

三 系统软件设计

3.1 温度控制系统原理框图

主控制程序的主要是用来实时控制当前所要测控的环境温度,并读出由DS18B20测量的经过处理的当前环境的温度值,同时检查温度是否在限度之内,否则报警,同时调整温度值。其主控制程序流程图如3-1所示。

开始 发温度转换命令 发DS18B20复位命令

Y

STC89C52初始化 DS18B20初始化 发跳过读序列号命令 温度是否到达设定限度 Y 红灯亮 N 温度显示 读取操作,CRC校验 Y N 9字节完? Y CRC校验正?N 温度在显示范围内 移入温度暂存器 N 结束 结束 图3-1 主程序流程图 图3-2 读温度流程图

2

温度控制系统C语言程序

#include #define uint unsigned int #define uchar unsigned char sbit p34=P2^4; sbit p35=P2^5; sbit p36=P2^6; sbit dp=P0^7; sbit p37=P2^7;

sbit DQ=P2^2; //定义DS18B20总线I/O

sbit SET=P3^1; //定义选择报调整警温度上限和下限(1为上限,0为下限) sbit LING=P2^0; //定义闪烁 signed char m; //温度值全局变量 bit sign=0; //外部中断状态标志

signed char shangxian=38; //上限报警温度,默认值为38 signed char xiaxian=5; //下限报警温度,默认值为5

ucharcode LEDData[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff,0xbf}; /*****延时子程序*****/ void Delay(uint i) {

while( i-- ); }

/*****初始化DS18B20*****/ void Init_DS18B20(void) {

unsigned char x=0; DQ=1;

Delay(8); //稍做延时 DQ=0; //单片机将DQ拉低 Delay(80); //精确延时,大于480us DQ=1; //拉高总线 Delay(14);

x=DQ; //稍做延时后,如果x=0则初始化成功,x=1则初始化失败 Delay(20); }

3

/*****读一个字节*****/ 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(4); }

return(dat); }

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

void WriteOneChar(unsigned char dat) {

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

void Tmpchange(void) //发送温度转换命令 {

Init_DS18B20();

WriteOneChar(0xCC); //跳过读序号列号的操作 WriteOneChar(0x44); //启动温度转换 }

/*****读取温度*****/

4


基于STC89C52单片机的温度控制电路设计.doc 将本文的Word文档下载到电脑
搜索更多关于: 基于STC89C52单片机的温度控制电路设计 的文档
相关推荐
相关阅读
× 游客快捷下载通道(下载后可以自由复制和排版)

下载本文档需要支付 10

支付方式:

开通VIP包月会员 特价:29元/月

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:xuecool-com QQ:370150219