【普中开发板】基于51单片机的温度报警器LCD1602_可调上下限( proteus仿真+程序+设计报告+讲解视频)

news/2024/7/7 23:36:47

基于51单片机的温度报警器LCD1602_可调上下限

  • 1.主要功能:
    • 资料下载链接:
  • 普中开发板实物演示图:
  • 2.仿真
  • 3. 程序代码
  • 4. 设计报告
  • 5. 设计资料内容清单

【普中】基于51单片机的温度报警器LCD1602_可调上下限

( proteus仿真+程序+设计报告+讲解视频)

仿真图proteus8.16(有低版本)

程序编译器:keil 4/keil 5

编程语言:C语言

设计编号:P11

1.主要功能:

基于51单片机AT89C51/52(与AT89S51/52、AT89C51/52、STC89C51/52等51内核单片机通用)

基于51单片机的温度报警系统

1、实时检测DS18B20温度测量及显示,超出温度范围蜂鸣器报警,温度报警值可通过按键设定功能;

2、温度测量范围-55到128摄氏度;

3、对上下限报警值进行设定,通过按键设置,设置范围是0-128;

4、温度高于上限或低于下限LCD1602显示屏有相应提示,蜂鸣器响;

5、普中开发板上可以实现效果,仿真和开发板都可以。

(目前仅完全适配普中开发板A234,其他普中开发板型号可能需要做代码修改或接线)

需注意仿真中51单片机芯片是兼容的,AT89C51,AT89C52是51单片机的具体型号,内核是一样的。相同的原理图里,无论stc还是at都一样,引脚功能都是一样的,程序是兼容的,芯片可以替换为STC89C52/STC89C51/AT89C52/AT89C51等51单片机芯片。

资料下载链接:

P系列单片机设计下载链接(复制到浏览器打开)

https://docs.qq.com/doc/DS2pPenNRaHB6SlR1

以下为本设计资料展示图:

普中开发板实物演示图:

仿真讲解+实物演示+代码讲解
在这里插入图片描述

img

2.仿真

开始仿真

打开仿真工程,双击proteus中的单片机,选择hex文件路径,然后开始仿真。

img

img

共4个按键:上限阈值加、上限阈值减、下限阈值加、下限阈值减。按下对应按键阈值加减并更新阈值在LCD1602液晶屏上。温度高于高温报警值,蜂鸣器响,LCD1602显示High。

img

温度低于低温报警值,蜂鸣器响,LCD1602显示LOW。

img

3. 程序代码

使用keil4或者keil5编译,代码有注释,可以结合报告理解代码含义。

img

完整代码见文章下载链接压缩包。有偿
#include "reg51.h"
#include"Ds18b20.h"
#include "lcd1602.h"
#define uchar unsigned char	//重定义
#define uint unsigned int
sbit k1=P3^0;//按钮
sbit k2=P3^1;
sbit k3=P3^2;
sbit k4=P3^3;
sbit beep=P2^5;//蜂鸣器

uchar time=0,num1=0;//定时
int wendu=0;//温度
uchar Ds_0_flag=0;//0度以上标志位
float tp; 

uint down=30,up=80;//阀值
uchar disp1[]="wendu:000 C";
uchar disp2[]="L:000 C  H:000 C";
uchar flag=0,beep_flag=0;

void delay(uint i)//延时
{
	while(i--)
	{
		delay_uint(50000);
	}
}
void main()
{
	disp1[9]=0xdf;
	disp2[5]=0xdf;
	disp2[14]=0xdf;
	init_1602();//初始化液晶
	TMOD|=0X11;//选择为定时器0模式,工作方式1,仅用TR0打开启动。
	TH1=(65536-50000)/256;	//给定时器赋初值,定时50ms
	TL1=(65536-50000)%256;	
	TH0=(65536-5000)/256;	//给定时器赋初值,定时5ms
	TL0=(65536-5000)%256;	
	ET1=1;//打开定时器1中断允许
	ET0=1;//打开定时器0中断允许
	EA=1;//打开总中断
	TR1=1;//打开定时器1
	TR0=1;//打开定时器0
	delay(4);
	beep_flag = 0;
	while(1)
	{
		//按键检测
		if(!k1)
		{
			if(down<up-5) //下限阈值要比上限低5℃
				down++;	//下限阈值+1
			while(!k1);
		}
		if(!k2)
		{
			if(down>0)
				down--;	 	//下限阈值-1
			while(!k2);
		}
		if(!k3)
		{
			if(up<200)
				up++;  //上限阈值+1
			while(!k3);
		}
		if(!k4)
		{
			if(up>down)
				up--;	 //上限阈值-1
			while(!k4);
		}
	}
}

void Timer0() interrupt 1			//定时器0的中断函数
 {
 	TH0=(65536-5000)/256;			//重装初值5ms	
	TL0=(65536-5000)%256;
	num1++;
	if(num1==1&&beep_flag)					//中断1次为5ms
	{
		num1=0;
	   beep=~beep;				//蜂鸣器报警
	}
}
void Timer1() interrupt 3//定时器中断
{
	TH1=(65536-50000)/256;	//给定时器赋初值,定时50ms
	TL1=(65536-50000)%256;	
	if(time<10)
		time++;
	else
	{
		time=0;
		wendu=Ds18b20ReadTemp();//测量温度
		if(wendu<0){
			Ds_0_flag=0;
			wendu=wendu-1;
			wendu=~wendu;
			tp=wendu;
			wendu=tp*0.0625+0.5;	
			disp1[6]='-';//计算温度
	  		disp1[7]=wendu%100/10+0x30;
			disp1[8]=wendu%10+0x30;
		}else{
			Ds_0_flag=1;
			tp=wendu;
			wendu=tp*0.0625+0.5;	
			//温度在寄存器中12位,分辨率:0.0625
			//加0.5是四舍五入
			disp1[6]=wendu/100+0x30;//计算温度
			disp1[7]=wendu%100/10+0x30;
			disp1[8]=wendu%10+0x30;
		}


		disp2[2]=down/100+0x30;//计算低阀值
		disp2[3]=down%100/10+0x30;
		disp2[4]=down%10+0x30;
		disp2[11]=up/100+0x30;//计算高阀值
		disp2[12]=up%100/10+0x30;
		disp2[13]=up%10+0x30;
		write_string(1,0,disp1);//显示
		write_string(2,0,disp2);
	}
	if(wendu<down||Ds_0_flag==0){
		write_string(1,12,"Low ");
		beep_flag = 1;//低温报警
	}else if(wendu>up){
		write_string(1,12,"High");
		beep_flag = 1;//高温报警
	}else if((wendu>down)&&(wendu<up)){
		write_string(1,12,"    ");
		beep_flag=0;//取消温报警
	}
		
}


4. 设计报告

7080字设计报告,内容包括目录,硬件设计、软件设计、软硬件框图、调试、结论等

img

本次课程设计是基于51单片机的温度监控报警系统Proteus仿真设计。在设计中,我们采用了STC89C51/52单片机作为核心控制器,通过温度传感器对环境温度进行实时采集。采集到的温度数据经过单片机处理后,通过数码管显示模块进行实时显示。同时,我们还设置了按键输入模块,可以通过按键进行温度阈值的设定。一旦环境温度超过设定的阈值,系统就会通过蜂鸣器报警模块发出报警声,以提醒用户注意。

img

51单片机控制LCD1602显示。读取按键控制电平和DS18B20的数据,处理数据并做显示处理和按键操作等。

5. 设计资料内容清单

资料设计资料包括仿真,程序代码、讲解视频、功能要求、设计报告、软硬件设计框图等。

0、常见使用问题及解决方法–必读!!!!

1、仿真图

2、程序源码注释

3、功能要求

4、开题报告

5、设计报告

6、软硬件流程框图

7、烧录工具

8、讲解视频

Altium Designer 安装破解

KEIL+proteus 单片机仿真设计教程

KEIL安装破解

Proteus元器件查找

Proteus安装

Proteus简易使用教程

单片机学习资料

普中-2&普中-3&普中-4开发板原理图.pdf

相关数据手册

答辩技巧

设计报告常用描述

鼠标双击打开查找嘉盛单片机51 STM32单片机课程毕业设计.url

img


http://lihuaxi.xjx100.cn/news/1952264.html

相关文章

【Vue2】一个数组按时间分割为【今年】和【往年】俩个数组

一. 需求 后端返回一个数组&#xff0c;前端按时间维度将该数组的分割为【今年】和【往年】俩个数组后端返回的数组格式如下 timeList:[{id:1,billTime:"2024-01-10",createTime:"2024-01-10 00:00:00",status:0},{id:2,billTime:"2022-05-25"…

SCS模型(径流曲线法)概述

目录 1.介绍&#xff1a;2.计算公式&#xff1a;参考文献&#xff1a;小结&#xff1a; 1.介绍&#xff1a; SCS模型&#xff08;径流曲线法&#xff09;是由美国农业部水土保持局(Soil Conservation Service) 基于经验提出&#xff0c;最初用于预测在农业用地小型流域降雨所累…

useCounter计数器

实现一个计数器 <script setup langts> import {ref} from vueinterface UseCounterOptions {min?: numbermax?: number }/*** Implement the composable function* Make sure the function works correctly */ function useCounter(initialValue 0, options: UseCou…

vue3 +TS axiox接口模块添加,fast mock接口访问测试

目录 一.接口地址 二.apipost 接口测试&#xff0c;能否接通 三.安装axiox 1.下载安装依赖 2.新建src/utils/request.ts文件 2.1解释&#xff1a;后续后端真实接口需要替换baseURL&#xff0c;目前没有使用配置文件&#xff0c;后续更换 3.新建src/utils/storage.ts文件 …

2024年最牛家用NAS+虚拟化方案,极低功耗

谈谈个人搭建NAS服务器有哪些需求 我有5台华为服务器、群晖、DX4600、路由器、交换机、小主机等&#xff0c;为了尝试出最牛NAS方案&#xff0c;前后投入了几万元&#xff0c;可谓是发烧友。 听我劝&#xff0c;照着这个方案执行&#xff0c;爽死你。 低功耗。NAS是长期运行的…

2024--Django平台开发-Django知识点(五)

day05 django知识点 今日概要&#xff1a; 中间件 【使用】【源码】cookie 【使用】【源码 - Django底层请求本质】session【使用】【源码 - 数据库请求周期中间件】 1.中间件 1.1 使用 编写类&#xff0c;在类型定义&#xff1a;process_request、process_view、process_…

汽车IVI中控开发入门及进阶(十二):手机投屏

前言: 汽车座舱有车载中控大屏、仪表/HUD多屏的显示能力,有麦克风/喇叭等车载环境更好的音频输入输出能力,有方控按键、旋钮等方便的反向控制输入能力,还有高精度的车辆数据等。但汽车座舱中控主机硬件计算能力升级迭代周期相对较长,汽车的应用和服务不够丰富。现在很多汽…

力扣热题100

排序 快速排序 哈希 1.两数之和 class Solution { public:vector<int> twoSum(vector<int>& nums, int target) {// unordered_map<int, int> hashtable;for (int i 0; i < nums.size(); i) {// 看能否找到 nums[i]&#xff0c;it返回索引auto it …