当前位置: 首页 > news >正文

18 基于51单片机的心率体温监测报警系统(包括程序、仿真、原理图、流程图)

目录

一、主要功能

二、硬件资源

三、程序编程

四、实现现象


一、主要功能

基于51单片机 ds18B20读取温度,
设置初始心率65 设置温度阈值38
心率阈值60 100 如果超过阈值,蜂鸣器报警,led灯亮

二、硬件资源

基于KEIL5编写C++代码,PROTEUS8.15进行仿真,全部资源在页尾,提供安装包。
在这里插入图片描述

三、程序编程

#include <REGX52.H>#include<intrins.h>#include<stdio.h>#include "Delay.h"#include "LCD1602.h"#define uchar unsigned char#define uint unsigned  intsbit beep = P2^5;			  //蜂鸣器引脚sbit DS=P2^4;                 //DS18B20温度传感器sbit key1=P3^2;
sbit key2=P3^3;
sbit key3=P3^4;
sbit key4=P3^5;
sbit led =  P1^0;unsigned char count;typedef unsigned char u8;typedef unsigned int  u16;static uint temp;static float ftemp = 0.0f;//温度转变uint temp;static unsigned char num;static int wdyz=38,xlyzmax=100,xlyzmin=60;static int xl=65;void tmpchange();uint tmp();void beep\_warning();void Time0\_Init()          //定时器初始化{
TMOD = 0x01;           //定时器0工作在方式1    IE   = 0x82;
TH0  = 0xfe;
TL0  = 0x33;     //11.0592MZ晶振,0.5msTR0=1;                 //定时器开始EA=1;
}void Time0_Int() interrupt 1 //中断程序{TH0  = 0xfe;             //重新赋值TL0  = 0x33;num++;	if(num==200){	    tmpchange();        //让18b20开始转换温度temp = tmp();       //读取温度ftemp = temp/10.0f; //转换温度num=0;}
}void dsreset(void)            //发出命令{uint i;DS=0;		              i=103;				   //将总线拉低480us~960uswhile(i>0)i--;DS=1;					   //然后拉高总线,若DS18B20做出反应会将在15us~60us后将总线拉低i=4;					   //15us~60us等待while(i>0)i--;  //while(DS);}bit tmpreadbit(void)          //读取数据{uint i;bit dat;DS=0;i++;          //i++ for delayDS=1;i++;i++;dat=DS;i=8;while(i>0)i--;   return (dat);
}uchar tmpread(void)           //读取数据{uchar i,j,dat;dat=0;  for(i=1;i<=8;i++){j=tmpreadbit();dat=(j<<7)|(dat>>1);   //读出的数据最低位在最前面,这样刚好一个字节在DAT里}  return(dat);
}void tmpwritebyte(uchar dat)  //传输数据给DS18B20{uint i;uchar j;bit testb;  for(j=1;j<=8;j++){testb=dat&0x01;dat=dat>>1;    if(testb)     //write 1{DS=0;i++;i++;DS=1;i=8;while(i>0)i--;}    else{DS=0;       //write 0i=8;while(i>0)i--;DS=1;i++;i++;}}
}void tmpchange(void)          //DS18B20开始工作{  dsreset();  Delay(1);  tmpwritebyte(0xcc);  tmpwritebyte(0x44);  
}					  
uint tmp()                    //获得温度{  float tt;uchar a,b;  dsreset();  Delay(1);  tmpwritebyte(0xcc);  tmpwritebyte(0xbe);a=tmpread();//低八位b=tmpread();//高八位temp=b;temp<<=8;             //two byte  compose a int variabletemp=temp|a;tt=temp*0.0625; //算出来的是测到的温度,数值可到小数点后两位temp=tt*10+0.5; //为了显示温度后的小数点后一位并作出四舍五入,因为取值运算不能取小数点后的数return temp;
}void beep_warning() //温度传感器蜂鸣器警报并且电机转动{	if(ftemp>=wdyz){beep=1;			 //蜂鸣器报警led = 1;}	if(xl>xlyzmax){beep=1;			 //蜂鸣器报警led = 1;}	if(xl<xlyzmin){beep=1;			 //蜂鸣器报警led = 1;}	if(ftemp<wdyz && xl<xlyzmax && xl>xlyzmin){beep=0;					//蜂鸣器报警led = 0;}
}void main()					  //主函数{	beep=0;			    //蜂鸣器关掉led = 0;	LCD_Init();         //显示屏初始化Time0\_Init();	LCD\_ShowString(1,1,"wendu:");	LCD_ShowString(2,1,"xinlv:");	while(1){		if(key1==0)                  //第一个按键按下{	  Delay(150);	  if(key1==0){xl++;}}	 if(key2==0){	  Delay(150);	  if(key2==0){xl--;}}	 	 if(key3==0)                  //第一个按键按下{	  Delay(150);	  if(key3==0){wdyz++;}}	 if(key4==0){	  Delay(150);	  if(key4==0){wdyz--;}}	  LCD_ShowNum(1,7,ftemp,2); //第一行显示温度LCD_ShowString(1,9,"C "); LCD\_ShowNum(2,7,xl,2);	 LCD\_ShowNum(1,13,wdyz,2);	 beep_warning(); //温度/心率超出报警}
}

四、实现现象

具体动态效果看B站演示视频:

基于51单片机的心率体温监测报警系统_哔哩哔哩_bilibili

全部资料(源程序、仿真文件、原理图、流程图、安装包、演示视频):

通过百度网盘分享的文件:基于51单片机的心率体温监测报警系统.zip
链接:https://pan.baidu.com/s/1VRiz4-p8dzY0NeCt0Rmxog?pwd=i5cw
提取码:i5cw
–来自百度网盘超级会员V4的分享

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 基于vue框架的传染病人管理系统3w776(程序+源码+数据库+调试部署+开发环境)系统界面在最后面。
  • 【Java集合】LinkedList
  • vue一级、二级路由设计
  • 多态的使用和原理(c++详解)
  • 【第十二周】李宏毅机器学习笔记10:生成式对抗网络2
  • Mysql梳理9——多表查询连接分类及实现内、外连接
  • 探讨基于AI技术的相亲交友系统设计与实现
  • 得物App荣获新奖项,科技创新助力高质量发展
  • ArcGIS10.2/10.6安装包下载与安装(附详细安装步骤)
  • 深度学习——pytorch来实现延迟初始化
  • C++——给出年、月、日,计算该日是该年的第几天。(提示:要判断是否为闰年)
  • camtasia2024绿色免费安装包win+mac下载含2024最新激活密钥
  • C:内存函数
  • JVM-类加载器的双亲委派模型详解
  • 在C#中使用NPOI将表格中的数据导入excel中
  • @jsonView过滤属性
  • codis proxy处理流程
  • ECMAScript6(0):ES6简明参考手册
  • iOS筛选菜单、分段选择器、导航栏、悬浮窗、转场动画、启动视频等源码
  • JavaScript创建对象的四种方式
  • Java面向对象及其三大特征
  • js学习笔记
  • Linux中的硬链接与软链接
  • PhantomJS 安装
  • PHP 小技巧
  • 闭包--闭包作用之保存(一)
  • 多线程事务回滚
  • 翻译:Hystrix - How To Use
  • 计算机常识 - 收藏集 - 掘金
  • 看完九篇字体系列的文章,你还觉得我是在说字体?
  • 软件开发学习的5大技巧,你知道吗?
  • 三栏布局总结
  • 自制字幕遮挡器
  • kubernetes资源对象--ingress
  • postgresql行列转换函数
  • ​DB-Engines 12月数据库排名: PostgreSQL有望获得「2020年度数据库」荣誉?
  • # 数仓建模:如何构建主题宽表模型?
  • #《AI中文版》V3 第 1 章 概述
  • #stm32整理(一)flash读写
  • (17)Hive ——MR任务的map与reduce个数由什么决定?
  • (2)(2.4) TerraRanger Tower/Tower EVO(360度)
  • (23)Linux的软硬连接
  • (24)(24.1) FPV和仿真的机载OSD(三)
  • (3)Dubbo启动时qos-server can not bind localhost22222错误解决
  • (JSP)EL——优化登录界面,获取对象,获取数据
  • (八)Spring源码解析:Spring MVC
  • (二)测试工具
  • (附源码)springboot高校宿舍交电费系统 毕业设计031552
  • (精确度,召回率,真阳性,假阳性)ACC、敏感性、特异性等 ROC指标
  • (每日持续更新)jdk api之StringBufferInputStream基础、应用、实战
  • (十八)devops持续集成开发——使用docker安装部署jenkins流水线服务
  • (一)使用IDEA创建Maven项目和Maven使用入门(配图详解)
  • (转)C语言家族扩展收藏 (转)C语言家族扩展
  • (转)http协议
  • (转载)CentOS查看系统信息|CentOS查看命令