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

}

}

}

}

五、实验现象

演示视频:

相关推荐
csdn杰哥14 分钟前
瑞萨单片机开发教程[二十六] DMAC 存储器数据传输实验
单片机·嵌入式硬件·mongodb·瑞萨·ra6m5
求知喻15 分钟前
串口中断模式
单片机·嵌入式硬件
ACP广源盛1392462567320 分钟前
GSV6155@ACP# Type-C 视频信号转换芯片:技术架构、工程痛点适配与落地场景分析
大数据·c语言·开发语言·人工智能·分布式·嵌入式硬件·架构
光子物联单片机24 分钟前
STM32传感器模块编程实践(二十一)DIY语音控制小车套件模型
c语言·stm32·单片机·嵌入式硬件·mcu
csdn杰哥35 分钟前
瑞萨单片机开发教程[二十八] DTC 串口传输实验
单片机·嵌入式硬件·瑞萨·ra6m5
义嘉泰36 分钟前
【硬核拆解】540×540时代的显示核心:集创北方 CO6300 AMOLED驱动芯片深度解析
嵌入式硬件·芯片
铅笔小新z38 分钟前
【stm32】GPIO
stm32·嵌入式硬件·mongodb
Darkwanderor1 小时前
使用管道实现进程间通信 (IPC, Inter-Process Communitation)
linux·c语言·c++
冻柠檬飞冰走茶1 小时前
PTA基础编程题目集 7-37 整数分解为若干项之和(C语言实现)
c语言·开发语言·数据结构·算法
csdn杰哥1 小时前
瑞萨单片机开发教程[三十] IIC 触摸驱动实验
单片机·嵌入式硬件·瑞萨·ra6m5