基于51单片机温度采集监控系统

本文介绍了一个由STC89C52单片机、DS18B20温度传感器、LCD1602液晶屏等组成的温控系统,实现实时温度监测、上下限设置及PID控制。通过按键操作调整温度范围,并展示了Protues仿真和部分代码实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、硬件组成

系统由单片机STC89C52、液晶显示模块LCD1602、温度检测模块、按键模块、报警模块、加热继电器控制模块、冷却继电器控制模块所组成。
部分原理图:
在这里插入图片描述

二、系统功能

系统采用DS18B20对温度进行检测,在LCD1602上实时显示温度。用户可以通过按键设置上限和下限温度,当温度超过上限温度时,系统通过继电器使冷却器件导通工作,当温度低于下限温度时,系统通过继电器使加热器件工作。当温度在上限和下限之间时维持原状态,后续算法上可以加入pid控制调节,此功能可私信定制。

三、仿真

Protues仿真运行截图如图所示:
在这里插入图片描述

四、代码

//功能说明:使用DS18B20测量室内温度,并将它显示在1602液晶上。

#include <reg52.h>

//端口及函数声明---------------------------------------------------------
sbit   LCD_RS=P1^0;	  //片选信号 
sbit   LCD_RW=P1^1;	  //读写信号 
sbit   LCD_E=P1^2; 	  //使能信号 
sbit   DQ = P2^2;
sbit   BEEP=P1^3;   //高电平亮灯,超过设定值 
sbit   RED = P2^0;
sbit   GREEN = P2^1;
sbit   Key_2 = P1^4;  //按一次出现H 30,可以进行上限温度设置 按两次出现L 20,可以进行下限温度设置  按第三次恢复温度显示
sbit   Key_3 = P1^5;  //增加键,可以对上限温度或下限温度进行增大调整
sbit   Key_4 = P1^6;  //减小键,可以对下限温度或下限温度进行减小调整

#define LCD_DB        P0	//LCD1602数据信号 
#define LocationX  0		//横排的位置,即X得坐标值 取值范围0~15
#define LocationY  1		//竖排的位置,即Y得坐标值 取值范围为 2,1

unsigned char code dis_char[]={"Temperature is"}; 
unsigned char code dis_char1[]={"Htemp=      C    "};
unsigned char code dis_char2[]={"Ltemp=      C    "};

//LCD1602函数定义 
void LCD_init(void);                                                   //LCD1602初始化函数   
void LCD_write_command(unsigned char command);                         //LCD1602写指令函数	 
void LCD_write_data(unsigned char dat);                                //LCD1602写数据函数	   
void LCD_disp_char(unsigned char x,unsigned char y,unsigned char dat); //在某个屏幕位置上显示一个字符,X(0-15),y(1-2)
void delay_n40us(unsigned int n);               
//DS18B20函数定义 
void delayms(unsigned int z);           	 //延时(z)毫秒  
void SetReset(void);                         //产生复位信号 
void CheckReply(void);                       //检测器件应答信号 
bit MainReadBit(void);                       //从总线读一个bit
unsigned char MainReadByte(void);            //从总线读一个字节  
void MainWriteByte(unsigned char dat);       //向总线写一个字节  
void StartConvertTemperature(void);          //启动一次温度转换  
unsigned long int  ReadTemperature(void);         //读取温度数据 

五、资源下载

资料截图及下载链接(含参考论文)
资料截图及下载链接

目 录 引 言………………………………………………………1 第一章:绪论…………………………………………………………………2 1.1 问题的提出…………………………………………………………2 1.2 设计的目的及系统功能………………………………………………………2 第二章: 硬件电路设计…………………………………………2 2.1 硬件设计思路………………………………………………………2 2.2 总体设计框图………………………………………………………2 2.3 单元电路设计………………………………………………………3 2.3.1 8031单片机………………………………………………3 2.3.2 温度采集及调理电路………………………………………3 2.3.3 模-数转换电路……………………………………………4 2.3.4 键盘及数码管显示电路……………………………………6 2.3.5 地址译码电路………………………………………………6 2.3.6 程序存储器的扩展…………………………………………7 第三章:软件设计……………………………………………………9 3.1 程序流程图设计……………………………………………………9 3.2 程序设计…………………………………………………………12 3.2.1 A/D转换………………………………………………3 3.2.2 键盘及数码管显示………………………………………3 3.2.3 读当前温度子程序……………………………………………4 3.3 调试…………………………………………………………15 第四章:结论……………………………………………………16 参考文献……………………………………………………………17 附录:程序清单……………………………………………………18 致谢…………………………………………………………………24
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值