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

}

}

}

}

五、实验现象

演示视频:

相关推荐
良许Linux16 分钟前
DSP的选型和应用
后端·stm32·单片机·程序员·嵌入式
leaves falling19 分钟前
c语言单链表
c语言·开发语言
请注意这个女生叫小美24 分钟前
C语言实例22 乒乓球比赛
c语言
混分巨兽龙某某31 分钟前
基于STM32的嵌入式操作系统RT-Thread移植教学(HAL库版本)
stm32·嵌入式硬件·rt-thread·rtos
方便面不加香菜32 分钟前
数据结构--链式结构二叉树
c语言·数据结构
Tingjct37 分钟前
十大排序算法——交换排序(一)
c语言·开发语言·数据结构·算法·排序算法
_ZeroKing43 分钟前
自制智能门锁:NFC 刷卡 + 小程序远程开锁(完整实战记录)
嵌入式硬件·小程序·notepad++·arduino
senijusene1 小时前
数据结构与算法:栈的基本概念,顺序栈与链式栈的详细实现
c语言·开发语言·算法·链表
星火开发设计1 小时前
命名空间 namespace:解决命名冲突的利器
c语言·开发语言·c++·学习·算法·知识
清风6666661 小时前
基于单片机的多路温湿度采集与WIFI智能报警控制系统设计
单片机·嵌入式硬件·毕业设计·课程设计·期末大作业