基于STC89C52单片机的温度控制系统设计方案与软硬件实现

目录
摘要 I
Abstract II
第一章 前言 1
1.1 温度控制系统设计发展历史及意义
1.2 温度控制系统的目的
1.3 温度控制系统完成的功能
第二章 总体设计方案
2.1 方案一
2.2 方案二
3.1 DS18B20简介
3.1.1DS18B20封装与引脚
3.1.2 DS18B20的简单性能
3.2 DS18B20的工作原理
3.3 DS18B20的测温原理
3.3.1 测温原理:
3.3.2 DS18B20的温度采集过程
3.4 AT24CXX系列掉电存储器的介绍 ……………
第四章 单片机接口设计
4.1 设计原则
4.2 单片机引脚连接
4.2.1 单片机引脚图
4.2.2 串口引脚
第五章 硬件电路设计
5.1 主要硬件电路设计
5.2 软件系统设计
5.2.1 软件系统设计
5.2.2 程序组成
结束语
致谢
附录
参考文献

第二章 总体设计方案
2.1 方案一
利用温度传感器将温度测出,通过某种电信号传给外部电路产生一种变化,然后由外部电路控制装置的开启。测温电路的设计,可以使用热敏电阻之类的传感器件利用其感温效应,(如电阻随温度的变化有一个变化的曲线,即利用它的变化特性曲线)温度的变化使得电阻发生了变化根据欧姆定律,电阻的变化会带来电流或这电压的变化。再将随被测温度变化的电压或电流采集过来,然后进行模拟信号换成数字信号(A/D)转换,将数字信号送入单片机,用单片机进行数据的处理,将温度显示在电路上,这样就可以将被测温度显示出来。最后还有外围的控制电路,采取一定的措施来控制产生温度的电路,如加温、降温、保持不动、或者报警。本文转载自http://www.biyezuopin.vip/onews.asp?id=14746这种设计需要用到A/D转换电路,感温电路比较麻烦。
设计流程图如图2.1
2.2 方案二
利用温度传感器芯片直接将温度数据测出,之后通过单片机程序控制温度的上、下限值,用外部电路产生显示和控制加热和降,来达到设计的要求。
考虑使用温度传感器,结合单片机电路设计,采用一只DS18B20温度传感器,直接读取被测温度值,之后进行转换,依次完成设计要求。
比较以上两种方案,很容易看出,采用方案二,电路比较简单,软件设计容易实现,故实际设计中拟采用方案二。
在设计中的控制流程如图2.2所示。
在本系统的总体电路设计方框图如图2.3所示,它由五部分组成:单片机STC89C52控制部分; DS18B20温度传感器采集部分;AT24C16数据掉电存储部分;3位LED数码管显示部分;按键调节部分;二极管报警部分;继电器驱动部分。
整个设计总体分为以下几个部分:控制部分、显示部分、温度采集部分、按键控制部分,输出部分。
1、控制部分
由单片机STC89C52芯片在程序控制和外围简单组合电路作用下运行,和控制温度的上、下限,和 LED的温度显示。控制发光二级管的亮灭和继电器动作或复位,起到提醒报警功能。
2、显示部分
显示电路采用3位7断共阳LED数码管,从P3口送数,P0口扫描。有两部分显示电路,第一是显示DS18B20温度传感器所检测的当前温度,第二是设定恒定的温度值。
3、温度采集部分
由DS18B20智能温度传感器直接采集被测温度。
4、按键控制部分
由三个按键控制调节,用来调节温度的恒定限值,起到预设调节作用。

//*************************************************
//功能:发送非应答信号
void nack_24c16()
{
 sda_24c16=1;    
 delay_3us();
 delay_3us();
 scl_24c16=1;
 delay_3us();
 delay_3us();
 scl_24c16=0;
 sda_24c16=0;
}
//*************************************************
//功能:发送IIC停止信号
void stop_24c16()
{  
   sda_24c16=0;
   scl_24c16=1;                               
   delay_3us();
   delay_3us();                        
   sda_24c16=1;
   delay_3us();
   delay_3us();                                 
   scl_24c16=0;
} 
//*************************************************
//功能:发送启动通讯的信号
void star_24c16()
{
  sda_24c16=1;
  scl_24c16=1;
  delay_3us();
  delay_3us();
  sda_24c16=0;
  delay_3us();
  delay_3us();
  scl_24c16=0;
}  
//****************************************************
//功能:判断应答或非应答
//说明:通讯出错时标志为1,否则为0
void cack_24c16()
{  
   scl_24c16=0;
   sda_24c16=1;
   delay_3us();         
   scl_24c16=1;              
   flag12=0;//清除错误标志   
   if(sda_24c16)flag12=1;
   scl_24c16=0; 
}      
//****************************************************
//功能:发送应答信号
void mack_24c16()  
{ 
  sda_24c16=0;
  scl_24c16=1;
  delay_3us();
  delay_3us();
  scl_24c16=0;
  sda_24c16=1;
}
//*************************************************
//功能:向24C16写入一字节的数据
void w1byte_24c16(uchar byte1)
{
  uchar i=8;
  while(i--)    
  {             
    delay_3us();
    delay_3us();
    delay_3us();
    if(byte1 & 0x80)
    {sda_24c16=1;}
    else
    {sda_24c16=0;}
    delay_3us();
    delay_3us();
    delay_3us();
    scl_24c16=1;
    delay_3us();
    delay_3us();
    delay_3us();
    scl_24c16=0;
    byte1<<=1;  
  }
}
//****************************************************
//功能:从24C16中读出一字节的数据
uchar rd1byte_24c16(void)//;读1字节子程序(通用)读出的数据存放在30H中
{ 
  uchar i;
  uchar ddata=0;
  sda_24c16=1;//置IO口为1,准备读入数据                       
  for(i=0;i<8;i++)            
  {  
     ddata<<=1;
     delay_3us();
     delay_3us();
     delay_3us();
     scl_24c16=1;  
     if(sda_24c16) ddata++;
     delay_3us();
     delay_3us();
     delay_3us();    
     scl_24c16=0;
  }
  return ddata;
}  









物联沃分享整理
物联沃-IOTWORD物联网 » 基于STC89C52单片机的温度控制系统设计方案与软硬件实现

发表评论