【51单片机】【protues仿真】基于51单片机温度测量系统

目录

一、主要功能

二、使用步骤

三、硬件资源

四、软件设计

五、实验现象

一、主要功能

1、LCD1602液晶显示温度值

2、按键​设置温度上限限阈值

3、测量温度大于上限或下限启动蜂鸣器警报

二、使用步骤

基于51单片机的温度测量系统是一种广泛应用于工业、家电及医疗等领域的嵌入式解决方案,其核心通过单片机与数字温度传感器(如DS18B20)协同工作,实现高精度、实时化的温度监测与控制‌。

三、硬件资源

1、51单片机核心模块

2、按键模块

3、温度传感器

4、蜂鸣器模块

5、LCD1602显示模块

四、软件设计

#include "reg52.h"

#include "lcd1602.h"

#define uint unsigned int

#define uchar unsigned char //宏定义

sbit SET=P3^1; //定义调整键

sbit DEC=P3^0 ; //定义减少键

sbit ADD=P3^2 ; //定义增加键

sbit BEEP=P1^5 ; //定义蜂鸣器

sbit DQ=P3^7 ; //定义DS18B20总线I/O

signed char m; //温度值全局变量

uchar n; //温度值全局变量

uchar set_st=0; //状态标志

uint wendu;

signed int shangxian=280; //上限报警温度,默认值为28

signed int xiaxian=200; //下限报警温度,默认值为20

/*****延时子程序*****/

void Delay_DS18B20(int num)

{

while(num--) ;

}

/*****延时子程序*****/

void Delay(uint num)

{

while( --num );

}

/*****主函数*****/

void main(void)

{

Init_LCD1602();

LCD1602_write_com(0x80);

LCD1602_write_word("Temp L-War H-War");

LCD1602_write_com(0x0c);//清屏

LCD1602_write_com(0xc0+5);

LCD1602_Show_Data(xiaxian);

LCD1602_write_com(0xc0+11);

LCD1602_Show_Data(shangxian);

Delay(2000);

while(1)

{

check_wendu();

if(SET==0)

{

Delay(2000);

do{}while(SET==0);

BEEP=0; Delay(6000);BEEP=1;

set_st++;

if(set_st==3)

set_st=0;

if(set_st==0)

LCD1602_write_com(0x0c);

}

if(set_st==0)

{

LCD1602_write_com(0xc0);

LCD1602_Show_Data(wendu);

Alarm(); //报警检测

}

else if(set_st==1)

{

BEEP=1; //关闭蜂鸣器

LCD1602_write_com(0xC0+6);//光标闪烁的位置

LCD1602_write_com(0x0f);//光标

if(DEC==0)

{

Delay(2000);

do{}while(DEC==0);

xiaxian-=10;

if(xiaxian<=0)xiaxian=0;

LCD1602_write_com(0xc0+5);

LCD1602_Show_Data(xiaxian);

}

if(ADD==0)

{

Delay(2000);

do{}while(ADD==0);

xiaxian+=10;

if(xiaxian>=990)xiaxian=990;

LCD1602_write_com(0xc0+5);

LCD1602_Show_Data(xiaxian);

}

}

else if(set_st==2)

{

BEEP=1; //关闭蜂鸣器

LCD1602_write_com(0xC0+12);

LCD1602_write_com(0x0f);

if(DEC==0)

{

Delay(2000);

do{}while(DEC==0);

shangxian-=10;

if(shangxian<=0)shangxian=0;

LCD1602_write_com(0xc0+11);

LCD1602_Show_Data(shangxian);

}

if(ADD==0)

{

Delay(2000);

do{}while(ADD==0);

shangxian+=10;

if(shangxian>=990)shangxian=990;

LCD1602_write_com(0xc0+11);

LCD1602_Show_Data(shangxian);

}

}

}

}

五、实验现象

演示视频:

相关推荐
BreezeJuvenile4 分钟前
ADC_案例练习:独立模式多通道采集
stm32·单片机·adc·多通道采集·dma辅助
代码游侠5 分钟前
学习笔记——HC-SR04 超声波测距传感器
开发语言·笔记·嵌入式硬件·学习
Joshua-a24 分钟前
高云FPGA在线调试/逻辑分析仪简要使用流程
嵌入式硬件·fpga开发·高云
电气铺二表姐1377441661526 分钟前
超市冷柜专区电能计量方案:高能耗设备独立监测与优化
运维·物联网·能源
国科安芯29 分钟前
高轨航天器抗辐照MCU选型约束分析
单片机·嵌入式硬件·性能优化·机器人·安全性测试
CS Beginner43 分钟前
【单片机】嵌入式显示屏开发框架:QT、SDL、LVGL 深度解析
单片机·嵌入式硬件·qt
爱吃生蚝的于勒44 分钟前
【Linux】进程间通信之匿名管道
linux·运维·服务器·c语言·数据结构·c++·vim
!停1 小时前
C语言单链表
c语言·数据结构·算法
南行*1 小时前
C语言Linux环境编程
linux·c语言·开发语言·网络安全
Tao____1 小时前
如何对接Modbus-tcp协议(使用Thinlinks物联网平台)
java·物联网·网络协议·tcp/ip·modbus