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

}

}

}

}

五、实验现象

演示视频:

相关推荐
aramae3 小时前
模拟实现strcmp()(C语言)
c语言·开发语言·后端
AOI小白新手上路4 小时前
韦东山 01_ARM架构与编程_2-1_处理器的区分MCU_MPU_AP_内容总结
嵌入式硬件
ysu_03144 小时前
TinyML 模型部署:从 Edge Impulse 到 STM32F103
驱动开发·stm32·嵌入式硬件·mcu·硬件架构·硬件工程·dsp开发
zjxtxdy7 小时前
SPI通信协议
笔记·单片机
Quanqiucard9 小时前
充电桩物联网卡如何精细化管理?实现企业高效降本增效
物联网
恒锐丰科技林技术员9 小时前
EG1196S:高压宽输入降压 DC‑DC 芯片,电动车工业电源的优选方案
经验分享·嵌入式硬件·硬件工程
Inhand-Victor10 小时前
智慧药房如何实现智能化?从设备联网到边缘AI推理的解决方案实践
物联网·视频
>Andre<10 小时前
UFS5.0标准中文全译·卷一:范围、术语与架构
android·linux·嵌入式硬件
剑指offer.10 小时前
ARM裸机开发-点亮LED灯
linux·服务器·嵌入式硬件
朝发如雪10 小时前
快速掌握单片机基础(8)(内存映射与启动寻址方式)(编译工具链与构建流程)(C语言操作寄存器)
单片机