基于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;
}  

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 4
    点赞
  • 53
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
在网上看到网友分享的单片机恒温控制源代码+仿真原理图,下载后已经仿真成功,这个功能很好,分享给更多的朋友,也感谢原作者的开源,也有论文哦! 本文介绍了基于单片机STC89C52温度控制系统设计方案软硬件实现。采用温度传感器DS18B20 采集温度数据,7段数码管显示温度数据,按键设置温度上下限,当设置为低于下降报警时,当温度低于设定的下限时,点亮发光二极管同时继电器工作,启动加热设备,当温度上升到上限时,断开继电器,停止加热设备工作,如此循环。当设置为高于上限报警时,当温度高于设定的上限时,点亮发光二极管同时继电器工作,启动制冷设备,当温度下降到下限时,熄灭LED,同时断开继电器,使制冷设备停止工作,使温度控制在上下限范围内。上限报警或者是下限报警可以设置,上限和下限温度也可以设置,同时设置的数据掉电后可以存储。给出了系统总体框架、程序流程图和Protel 原理图,并在硬件平台上实现了所设计功能。 本设计应用性比较强,可以应用在仓库温度、大棚温度、机房温度、水池等的监控。另外,如果把本设计方案扩展为多点温度控制,加上上位机,则可以实现远程温度监控系统,将具有更大的应用价值。 本文的创新点在于详细设计了基于单片机AT89C51 的温度监控系统,设计程序已经.此系统可广泛用于温度在DS18B20 测温范围之内的场合,有良好的应用前景。由于单片机的各种优越的特性,使得它的经济效益显的更加突出,有很好的实用性。
基于STC89C52单片机步数检测计步器无线蓝牙APP上传设计毕业设计论文+软硬件设计源码: 第二章 方案的设计与论证 2.1控制方案的确定 本设计由STC89C52单片机最小系统+ADXL345加速度传感器电路+蓝牙模块电路+LED灯电路+电源电路组成。 2.2控制方式的选择 2.2.1 单片机芯片的选择 方案一 采用可编程逻辑器件CPLD作为控制器,CPLD可以实现各种复杂的功能、规模大、密度高、体积小、稳定性高、I/O资源丰富、易于进行功能扩展。采用并行的输入输出方式,提高了系统的处理速度,适合作为大规模控制系统的控制核心。但本系统不需要复杂的逻辑功能,对数据的处理速度的要求也不是非常高。且从使用及经济的角度考虑,最终放弃了此方案方案二 采用ST公司的STC89C52单片机作为主控制器,STC89S52是一种低功耗、高性能CMOS8位微控制器,具有8K 在系统可编程 Flash 存储器。该单片机功耗低、接口丰富,成本低廉,完全能满足本设计要求。 方案三 采用单片机芯片控制MSP430单片机是美国德州仪器(TI)推出的一种16位超低功 耗的混合信号处理器(Mixed Signal Processor),主要是针对实际应用需求,把许多模拟电路、数字电路和微处理器集成在一个芯片上,以提供“单片”混合信号处理的解决方案。MSP430F149是一个16位的、具有精简指令集的、超低功耗的混合型单片机,具有可靠性高、功耗低、扩展灵活、体积小、价格低和使用方便等优点,广泛应用于仪器仪表、专用设备智能化管理及过程控制等领域,有效地提高了控制质量与经济效益,已成为众多单片机系列中一颗耀眼的新星。然而其成本太高,故舍弃。 故选择方案二。 2.2.2倾角传感器的选择 方案一 采用陀螺仪来检测老人的位置信息,陀螺仪是用高速回转体的动量矩敏感壳体相对惯性空间绕正交于自转轴的一个或二个轴的角运动检测装置,该模块精度高,稳定性强,但控制复杂。 方案二: 采用基于ADI公司的倾角传感器ADXL345模块来检测老人的位置信息,adxl345功能很强大,内置很多寄存器,而且成本低,易于控制。 故选择方案二。 2.2.3无线遥控模块的选择 方案一 采用红外遥控模块系统进行无线控制,红外载波频率:38KHz,其理论遥控范围为8-10米,遥控范围内,电路简单,成本极低。 中间有无障碍物等因素会影响到遥控距离,实际遥控距离可能更短,丧失了遥测的有用性。 方案二 使用WIFI模块进行本系统数据的无线传输。Wi-Fi是一种可以将个人电脑、手持设备(如PDA、手机)等终端以无线方式互相连接的技术。Wi-Fi是一个无线网路通信技术的品牌,由Wi-Fi联盟(Wi-Fi Alliance)所持有。目的是改善基于IEEE 802.11标准的无线网路产品之间的互通性。Wi-Fi主要是用于替代工作场所一般局域网接入中使用的高速线缆的。这类应用有时也称作无线局域网(WLAN)。其覆盖性强,传输距离远。 但是其安全性不高,很容易被黑客窜改数据。 方案三 使用蓝牙模块进行本系统数据的无线传输。蓝牙可以替代很多应用场景中的便携式设备的线缆,在能够应用于一些固定场所,如智能家庭能源管理(如恒温器)等。其数据传输为10米,完全满足本设计要求,而且其数据传输的安全性非常高。 故选择方案三。 10、系统硬件框图(针对本设计,1对1,直接用) 11、程序流程图(针对本设计,1对1,直接用) 12、器件清单(针对本设计,1对1,直接用) 13、所用到的芯片、电路模块资料(针对本设计,1对1,直接用) 14、元器件焊接方法及注意事项 15、疑难问题解答 16、答辩技巧 17、C语言学习视频教程 18、该设计单片机学习视频教程(多套经典教程) 19、程序下载串口软件STC_ISP安装包 1、使用前必读(怎样查看资料以及下载程序等等,一目了然) 20、程序下载串口软件STC_ISP使用视频教程 21、程序编写软件Keil安装包 22、程序编写软件Keil使用教程及安装看程序视频教程 23、原理图绘制软件Altium Designer 15 24、原理图查看多种格式软件安装查看视频教程 2、源程序(C语言含详细备注) 3、原理图(源文件+PDF版+照片版) 4、PCB图 51蓝牙计步器.apk 5、实物图(高清) 6、演示视频(电路讲解,模块说明,设计工作流程,现象演示) 7、任务书 8、开题报告(1对1,可直接使用) 9、本设计论文(本设计论文,完全符合,内容丰富,1万字以上)
要在单片机上控制继电器,你需要连接继电器到适当的IO口,并编写相应的代码来控制该IO口的电平状态。以下是一个简单的示例代码: ```c #include <reg52.h> // 引用相应单片机的寄存器定义文件 #define RELAY_PIN P1 // 定义继电器连接的IO口 void delay_ms(unsigned int ms) { unsigned int i, j; for (i = 0; i < ms; i++) for (j = 0; j < 120; j++); } void init() { RELAY_PIN = 0; // 将继电器引脚设为输出模式,默认关闭 } void main() { init(); // 初始化 while (1) { // 无限循环 RELAY_PIN = 1; // 打开继电器 delay_ms(1000); // 延时1秒 RELAY_PIN = 0; // 关闭继电器 delay_ms(1000); // 延时1秒 } } ``` 在上述代码中,我们假设继电器连接到P1口,通过将P1口的电平状态控制为高或低来打开或关闭继电器。 init函数用于初始化,将RELAY_PIN设置为输出模式,并将其初始状态设为关闭。 主函数中的控制代码使用了一个无限循环。在每次循环中,将RELAY_PIN设置为1表示打开继电器,然后延时1秒,再将RELAY_PIN设置为0表示关闭继电器,再延时1秒。这样循环执行,就能实现继电器的周期性开关。 需要注意的是,以上代码是基于51系列的单片机(如STC89C52、AT89S52)来编写的,如果使用其他系列的单片机,需要根据具体的寄存器和引脚定义进行调整。同时,还需确保继电器的工作电压和单片机IO口的电平兼容。在实际应用中,可能还需要考虑继电器保护电路、消除电磁干扰等问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

shejizuopin

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值