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

【51单片机】【protues仿真】基于51单片机脉搏体温检测仪系统

目录

一、主要功能

二、使用步骤

三、硬件资源

四、软件设计

五、实验现象

一、主要功能

1、LCD1602液晶显示脉搏和温度值
2、按键​设置脉搏上限限阈值
3、测量脉搏值在阈值外蜂鸣器警报

二、使用步骤

基于51单片机的脉搏体温检测仪是一种集心率监测与体温测量于一体的便携式设备,其设计结合温度传感器、心率传感器。

三、硬件资源

1、51单片机核心模块
2、按键模块
3、DS18B20温度传感器、脉搏传感器模块
4、蜂鸣器模块
5、LED灯模块
6、LCD1602显示模块

四、软件设计

#include <reg52.h>
#include <intrins.h>    

#define uint            unsigned int
#define uchar           unsigned char
#define ulong           unsigned long   
#define LCD_DATA        P0                 //定义P0口

sbit LCD_RS =P2^5;
sbit LCD_RW =P2^6;
sbit LCD_E  =P2^7;                       

sbit Xintiao =P1^0 ;                   
sbit speaker =P2^4;                        
sbit DQ=P3^7;

void delay5ms(void);   //误差 0us
void LCD_WriteData(uchar LCD_1602_DATA);    
void LCD_WriteCom(uchar LCD_1602_COM);        
void lcd_1602_word(uchar Adress_Com,uchar Num_Adat,uchar *Adress_Data); 
void InitLcd();//液晶初始化函数

void Tim_Init();

uchar Xintiao_Change=0;       //
uint  Xintiao_Jishu;
uchar stop;
uchar View_Data[3];
uchar View_L[3];
uchar View_H[3];
uchar Xintiao_H=100;    //脉搏上限
uchar Xintiao_L=40;        //脉搏下限
uint wendu=0;

uchar Key_Change;
uchar Key_Value;        //按键键值
uchar View_Con;           
uchar View_Change;


/*****延时子程序*****/
void Delay_DS18B20(int num)
{
  while(num--) ;
}
/*****初始化DS18B20*****/
void Init_DS18B20(void)
{
  unsigned char x=0;
  DQ = 1;         //DQ复位
  Delay_DS18B20(8);    //稍做延时
  DQ = 0;         //单片机将DQ拉低
  Delay_DS18B20(80);   //精确延时,大于480us
  DQ = 1;         //拉高总线
  Delay_DS18B20(34);
}
/*****读一个字节*****/
unsigned char ReadOneChar(void)
{
  unsigned char i=0;
  unsigned char dat = 0;
  for (i=8;i>0;i--)
  {
    DQ = 0;     // 给脉冲信号
    dat>>=1;
    DQ = 1;     // 给脉冲信号
    if(DQ)
    dat|=0x80;
    Delay_DS18B20(4);
  }
  return(dat);
}

void WriteOneChar(unsigned char dat)
{
  unsigned char i=0;
  for (i=8; i>0; i--)
  {
    DQ = 0;
    DQ = dat&0x01;
    Delay_DS18B20(5);
    DQ = 1;
    dat>>=1;
  }
}
void main()      //主函数
{
 InitLcd();
 Tim_Init();
 lcd_1602_word(0x80,16,"Heart Rate:     ");      //初始化显示 
 
 TR0=1;
 TR1=1;                  //打开定时器
 while(1)              //进入循环
  {
      if(View_Con==0)
    {
        wendu=ReadTemperature();
        lcd_1602_word(0xc0,10," Temp:    ");//显示第二行数据
        LCD_WriteCom(0x80+0x40+10);
        LCD_WriteData(wendu/100+0x30);
        LCD_WriteData(wendu%100/10+0x30);
        LCD_WriteData('.');
        LCD_WriteData(wendu%100%10+0x30);
        LCD_WriteData(0xdf);
        LCD_WriteData('C');
    }
     
   if(Key_Change)      //有按键按下并已经得出键值
    {
     Key_Change=0;      //将按键使能变量清零,等待下次按键按下
     View_Change=1;
     switch(Key_Value)                //判断键值
      {
       case 1:                        //设置键按下
             {
              View_Con++;            //设置的位加
              if(View_Con==3)        //都设置好后将此变量清零
               View_Con=0;
              break;                //跳出,下同
             }
       case 2:                        //加键按下
             {
              if(View_Con==2)        //判断是设置上限
               {
                   if(Xintiao_H<150)    //上限数值小于150
                 Xintiao_H++;        //上限+
               }
              if(View_Con==1)        //如果是设置下限
               {
                   if(Xintiao_L<Xintiao_H-1)//下限值小于上限-1(下限值不能超过上限)
                 Xintiao_L++;        //下限值加
               }
              break;
             }
       case 3:                        //减键按下
             {
              if(View_Con==2)        //设置上限
               {
                   if(Xintiao_H>Xintiao_L+1)//上限数据大于下限+1(同样上限值不能小于下限)
                 Xintiao_H--;        //上限数据减
               }
              if(View_Con==1)        //设置下限
               {
                   if(Xintiao_L>30)    //下限数据大于30时
                 Xintiao_L--;        //下限数据减
               }
              break;
             } 
     }
    }
      }
    }
  }
}

五、实验现象

演示视频:

【51单片机-B025】【protues仿真】基于51单片机脉搏体温检测仪仿真

http://www.xdnf.cn/news/19527.html

相关文章:

  • 2024 年 AI 技术全景图:大模型轻量化、多模态融合如何重塑产业边界?
  • 数据库索引失效的原因+示例
  • (线上问题排查)3.线上API接口响应慢?一套高效排查与定位问题的心法
  • OpenCV-Python Tutorial : A Candy from Official Main Page(五)
  • Roo Code自定义Mode(模式)
  • 基于单片机智能家居环境监测报警系统Proteus仿真(含全部资料)
  • Cesium 加载桥梁3DTiles数据时,出现部分区域发暗、部分正常的现象
  • openEuler2403编译安装Nginx
  • 【期末复习】--软件工程
  • 苍穹外卖项目实战(日记十三)-记录实战教程及问题的解决方法-(day3-5) 修改菜品功能实现
  • C++ Bellman-Ford算法
  • 「数据获取」《中国住户调查年鉴》(2000-2024)(获取方式看绑定的资源)
  • # [特殊字符] 构建现代化黄金价格实时仪表盘:技术解析与实践
  • AI产品经理面试宝典第81天:RAG系统架构演进与面试核心要点解析
  • C++11新特性解析与应用
  • GPU 通用手册:裸机、Docker、K8s 环境实战宝典
  • Jetson AGX Orin平台R36.3.0版本1080P25fps MIPI相机图像采集异常调试记录
  • 在idea当中git的基础使用
  • 【公告】更新预告
  • 1.4 汽车的制动性
  • 面向对象六大设计原则(2.0详细版)
  • 永磁同步电机无速度算法--高频脉振方波注入法(测量轴系转子位置误差信号解耦处理)
  • Ansible 变量全解析与实践
  • MySQL DBA请注意 不要被Sleep会话蒙蔽了双眼
  • 【算法】124.二叉树中的最大路径和--通俗讲解
  • DeepSeek-V3.1 模型 API 新特性拆解:逆向 + 火山双渠道适配与推理模式智能切换指南
  • 保健品跨境电商:如何筑牢产品质量与安全防线?
  • 【推荐】Maye 更轻更简洁的快速启动工具【优化桌面】
  • AutoSar RTE介绍
  • FOC+MCU:重新定义吸尘器电机控制——高效、静音、智能的终极解决方案