基于单片机压力传感器MPX4115检测-报警系统proteus仿真+源程序

news/2024/11/8 0:39:51/

一、系统方案
1、本设计采用这51单片机作为主控器。
2、MPX4115采集压力值、DS18B20采集温度值送到液晶1602显示。
3、按键设置报警值。
4、蜂鸣器报警。
在这里插入图片描述

二、硬件设计
原理图如下:
在这里插入图片描述

三、单片机软件设计
1、首先是系统初始化
/*******************************************************************
液晶初始化
*****************************************************************/
void chushihua()
{
delayxms(20); //给液晶一段时间
en=0;
xiemingling(0x38);//设置16
2显示,5
7点阵,8位数据接口
delayxms(20);
xiemingling(0x38);//
delayxms(20);
xiemingling(0x0c);//设置开显示,不显示光标
delayxms(20);
xiemingling(0x06);//写一个字符后地址指针加1
delayxms(20);
xiemingling(0x01);//显示清零,数据指针清零
delayxms(20);
xiemingling(0x80);//指定字符显示的实际地址,,,显示位置的确定方法规定为"80H+地址码x"
delayxms(20);
}
2、液晶显示程序
//毫秒

void delayxms(uint ms) //延时 x ms
{
uint a,j;
for(a=0;a<ms;a++)
for(j=0;j<110;j++);
}

/*******************************************************************
写命令
/
void xiemingling(unsigned char mingling)
{
en=0;
rs=0;
rw=0;
P0=mingling;
delayxms(5);
en=1;
delayxms(10);
en=0;
}
/

写数据
/
void xieshuju(unsigned char shuju)
{
en=0;
rs=1;
rw=0;
P0=shuju;
delayxms(5);
en=1;
delayxms(10);
en=0;
}
3、按键程序
/
/
// 按键扫描
/
*************************************/
void key()
{

if(key5==0)
{delay(10);if(key5==0){while(!key5);c1=c;temp1=temp;}
}	if(key6==0)
{delay(10);if(key6==0){while(!key6);mode=!mode;chushihua(); //LCD1602初始化
}
}	if(key1==0)
{delay(10);if(key1==0){while(!key1);h++;if(h>1000) h=1000;
}
}	if(key2==0)
{delay(10);if(key2==0){while(!key2);if(h>=1) h--;}
}	
if(key3==0)
{delay(10);if(key3==0){while(!key3);l++;if(l>1000) l=1000;
}
}	if(key4==0)
{delay(10);if(key4==0){while(!key4);if(l>=1) l--;}
}	

}

4、核心算法程序
void main(void)
{

chushihua(); //LCD1602初始化

while(1)
{
key();
getdata=Adc0832(0);
check_wendu();
if(0<getdata<243)
{
int vary=getdata;
press=((10.0/23.0)vary)+9.3;
temp=(int)(press
10);

		dispbuf[3]=temp/1000;			     	//取压力值百位dispbuf[2]=(temp%1000)/100;		    	//取压力值十位dispbuf[1]=((temp%1000)%100)/10;	    	//取压力值个位dispbuf[0]=((temp%1000)%100)%10;			//取压力值十分位if(temp/10<l){ led1=0;led2=1;beep=0;}else  if(temp/10>h){led1=1;led2=0;beep=0;}else  {led1=1;led2=1;beep=1;}}if(mode==0){xiemingling(0x80+0);xieshuju('Q');xieshuju(':');xieshuju(dispbuf[3]+0x30);	xieshuju(dispbuf[2]+0x30);	xieshuju(dispbuf[1]+0x30);xieshuju('.');		xieshuju(dispbuf[0]+0x30);	xieshuju(' ');xieshuju('T');xieshuju(':');xieshuju(c/1000+0x30);	xieshuju(c%1000/100+0x30);	xieshuju(c%1000%100/10+0x30);xieshuju('.');		xieshuju(c%10+0x30);	xiemingling(0x80+0x40); xieshuju('H');xieshuju(':');xieshuju(h/100+0x30);	xieshuju(h%100/10+0x30);	xieshuju(h%10+0x30);xieshuju(' ');
xieshuju('L');xieshuju(':');xieshuju(l/100+0x30);	xieshuju(l%100/10+0x30);	xieshuju(l%10+0x30);	
}
else{xiemingling(0x80+0);xieshuju('R');xiemingling(0xC0+0);xieshuju('Q');xieshuju(':');xieshuju(temp1/1000+0x30);	xieshuju(temp1%1000/100+0x30);	xieshuju(temp1%1000%100/10+0x30);xieshuju('.');		xieshuju(temp1%10+0x30);	xieshuju(' ');xiemingling(0xC0+0);xieshuju('Q');xieshuju(':');xieshuju(temp1/1000+0x30);	xieshuju(temp1%1000/100+0x30);	xieshuju(temp1%1000%100/10+0x30);xieshuju('.');		xieshuju(temp1%10+0x30);	xieshuju(' ');xieshuju('T');xieshuju(':');xieshuju(c1/1000+0x30);	xieshuju(c1%1000/100+0x30);	xieshuju(c1%1000%100/10+0x30);xieshuju('.');		xieshuju(c1%10+0x30);	}

}
}
四、 proteus仿真设计
Proteus软件是一款应用比较广泛的工具,它可以在没有硬件平台的基础上通过自身的软件仿真出硬件平台的运行情况,这样就可以通过软件仿真来验证我们设计的方案有没有问题,如果有问题,可以重新选择器件,连接器件,直到达到我们设定的目的,避免我们搭建实物的时候,如果当初选择的方案有问题,我们器件都已经焊接好了,再去卸载下去,再去焊接新的方案的器件,测试,这样会浪费人力和物力,也给开发者带来一定困惑,Proteus仿真软件就很好的解决这个问题,我们在设计之初,就使用该软件进行模拟仿真,测试,选择满足我们设计的最优方案。最后根据测试没问题的仿真图纸,焊接实物,调试,最终完成本设计的作品。

在这里插入图片描述


http://www.ppmy.cn/news/1241485.html

相关文章

30系列显卡在ubuntu下不能满血运行的问题

之前发现在ubuntu下&#xff0c;我的3080只能跑115w最高&#xff0c;而这在win下是可以跑165w的。于是乎google了所有结果&#xff0c;无解… 现已经过去一年&#xff0c;显卡价格飞涨&#xff0c;无奈只能使用笔记本跑自己的代码了。结果发现nvidia推了Linux下的动态加速&…

电源控制系统架构(PCSA)之系统分区电压域

目录 4.1 电压域 4.1.1 系统逻辑 4.1.2 Always-On逻辑 4.1.3 处理器Clusters 4.1.4 图形处理器 4.1.5 其他功能 4.1.6 SoC分区示例 本章描述基于Arm组件的SoC划分为电压域和电源域。 所描述的选择并不详尽&#xff0c;只是可能性的一个子集。目的是描述基于Arm组件的SoC…

Android逆向实战 - MIUI调起三方应用系统拦截弹窗分析

近期&#xff0c;发现在部分Android手机调起其他应用时&#xff0c;会弹出一个系统弹窗拦截调起&#xff0c;需要用户二次确认。经过内部众测&#xff0c;发现绝大多数是小米手机&#xff0c;而且跟Android版本没有直接关系&#xff0c;猜测是MIUI某次升级引入的功能。这篇文章…

生活知识也需要学习--处理灰指甲

我的灰指甲从我读大学时发生&#xff0c;当时还患过鸡眼&#xff0c;还好同学爷爷有秘方&#xff0c;把鸡眼挑出&#xff08;无麻药&#xff09;&#xff0c;涂抹药膏&#xff0c;一次见效。 而左脚的灰指甲&#xff0c;也专门治疗过2次&#xff0c;但没有效果。 今天看到了柏…

nodejs微信小程序+python+PHP-健身俱乐部在线管理平台的设计与实现-安卓-计算机毕业设计

目 录 摘 要 I ABSTRACT II 目 录 II 第1章 绪论 1 1.1背景及意义 1 1.2 国内外研究概况 1 1.3 研究的内容 1 第2章 相关技术 3 2.1 nodejs简介 4 2.2 express框架介绍 6 2.4 MySQL数据库 4 第3章 系统分析 5 3.1 需求分析 5 3.2 系统可行性分析 5 3.2.1技术可行性&#xff1a;…

C语言第三十弹---打印一个整数的每一位数

C语言实现打印整数的每一位数 逆序打印整数 思路&#xff1a;通过n%10可以获得整数的个位&#xff0c;获得个位后&#xff0c;整数/10就看去掉个位&#xff0c;得到新的一个数。循环即可获得所有数。 #define _CRT_SECURE_NO_WARNINGS #include <stdio.h>void print(i…

Node.js 中的事件驱动架构

Node.js 中的事件驱动架构 事件驱动架构 (EDA) 已成为构建可扩展、响应式和松散耦合系统的强大范例。在 Node.js 中&#xff0c;EDA 发挥着关键作用&#xff0c;利用其异步特性和事件驱动功能来创建高效且健壮的应用程序。让我们深入研究 Node.js 中事件驱动架构的复杂性&…

html实现360度产品预览(附源码)

文章目录 1.设计来源1.1 拖动汽车产品旋转1.2 汽车产品自动控制 2.效果和源码2.1 动态效果2.2 源代码 源码下载 作者&#xff1a;xcLeigh 文章地址&#xff1a;https://blog.csdn.net/weixin_43151418/article/details/134613931 html实现360度产品预览&#xff08;附源码&…