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~960us

  while(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 delay
   DS=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 0
      i=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 variable
  temp=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的分享

相关推荐
DA02216 小时前
系统移植-STM32MP1_TF-A移植
stm32·单片机·系统移植
我叫洋洋9 小时前
[Proteus 和 stm32f103c8t6]的使用控制OLED篇]
c语言·stm32·单片机·嵌入式硬件·蓝桥杯·proteus
yuan1999711 小时前
STM32F103C8T6 串口通信程序实例
stm32·单片机·嵌入式硬件
chao18984412 小时前
六个舵机组成的双足机器人程序(51单片机)
机器人·51单片机
意法半导体STM3214 小时前
【官方原创】STM32H7双核芯片通过 STlink连接失败问题分析 LAT1654
开发语言·前端·javascript·stm32·单片机·嵌入式硬件
zd84510150015 小时前
ESP8266 MQTT连接onenet
stm32·单片机
oyezitan16 小时前
发送语音流程图
流程图
数说星榆18116 小时前
电脑流程图模板精选 中文适配一键修改超方便
论文阅读·毕业设计·流程图·论文笔记·毕设
昵称只能一个月修改一次。。。16 小时前
【无标题】
单片机·嵌入式硬件
AI+程序员在路上16 小时前
新手进入嵌入式行业方法与方向选择
c语言·开发语言·单片机·嵌入式硬件