【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);

}

}

}

}

五、实验现象

演示视频:

相关推荐
.Ashy.1 小时前
2026.4.11 蓝桥杯软件类C/C++ G组山东省赛 小记
c语言·c++·蓝桥杯
2401_892070981 小时前
链栈(链式栈) 超详细实现(C 语言 + 逐行精讲)
c语言·数据结构·链栈
不懂的浪漫2 小时前
mqtt-plus 架构解析(六):多 Broker 管理,如何让一个应用同时连接多个 MQTT 服务
spring boot·分布式·物联网·mqtt·架构
嵌入式吴彦祖3 小时前
Luckfox Pico Ultra W WIFI
linux·嵌入式硬件
cmpxr_5 小时前
【C】局部变量和全局变量及同名情况
c语言·开发语言
网域小星球7 小时前
C 语言从 0 入门(十七)|结构体指针 + 动态内存 + 文件综合实战
c语言·开发语言·文件操作·结构体指针·动态内存·综合项目
ipod7417 小时前
电子电路的元器件
单片机·嵌入式硬件
清风6666667 小时前
基于单片机的脉搏与呼吸监测报警设备设计与实现
单片机·嵌入式硬件·毕业设计·课程设计·期末大作业
Hello_Embed8 小时前
嵌入式上位机开发入门(十九):Socket 状态检测与断线重连
网络·单片机·网络协议·tcp/ip·嵌入式
foundbug9998 小时前
STM32 内部温度传感器测量程序(标准库函数版)
stm32·单片机·嵌入式硬件·算法