1887 基于单片机的脉搏体温血压检测仪设计【毕设课设】

摘要

本文设计了一种基于单片机的脉搏体温血压检测仪,该检测仪以单片机为控制核心,集成了血压测量和体温测量的功能。系统通过压力传感器和温度传感器分别采集血压和体温信号,经过处理模块和信号处理模块后,通过显示模块展示给用户。本文详细介绍了系统的硬件设计、软件编程以及仿真验证过程,验证了该电子血压计的可操作性和实用性。

关键词:单片机;脉搏体温血压检测仪;压力传感器;温度传感器;Proteus;Keil C51

一、引言

随着人们对健康管理的日益关注,脉搏、体温和血压等生理参数的实时监测成为了重要的健康监测手段。传统的血压计和体温计功能单一,操作繁琐,无法满足现代人对健康监测的需求。因此,设计一种集成血压和体温测量功能的电子血压计具有重要意义。本文基于单片机技术,设计了一种具有体温测量功能的电子血压计,实现了血压和体温的实时监测与显示。

二、系统总体设计

本系统以单片机为控制核心,通过压力传感器和温度传感器分别采集血压和体温信号。整个系统包括处理模块、测量模块、信号处理模块、显示模块以及电源处理模块。血压和体温的测量功能通过按键进行切换。处理模块负责接收传感器的信号并进行初步处理;测量模块根据处理后的信号计算血压和体温值;信号处理模块对测量结果进行滤波和校准;显示模块用于实时显示血压和体温的数值;电源处理模块为整个系统提供稳定的电源。

三、硬件设计

1. 单片机选型

考虑到系统的复杂性和实时性要求,选用性能稳定、功耗低的单片机作为控制核心。本设计中采用常用的AT89C51单片机。

2. 传感器选型

压力传感器选用高精度、高稳定性的压力传感器,用于采集血压信号;温度传感器选用响应速度快、精度高的温度传感器,用于采集体温信号。

3. 显示模块

显示模块采用液晶显示屏,用于实时显示血压和体温的数值。液晶显示屏具有高分辨率、低功耗等特点,适用于本系统的显示需求。

4. 电源处理模块

电源处理模块采用稳压电源电路,为整个系统提供稳定的电源。同时,加入电源滤波电路,减少电源噪声对系统的影响。

5. Proteus硬件设计

使用Proteus软件完成整体硬件设计原理图的绘制。在原理图中,将单片机、传感器、显示模块等各个部件进行连接,形成完整的硬件系统。

四、软件设计

基于Keil C51编写软件程序,实现系统的控制逻辑和数据处理功能。程序主要包括初始化模块、数据采集模块、数据处理模块、显示模块以及按键处理模块。初始化模块负责初始化单片机的各个寄存器和端口;数据采集模块通过单片机读取传感器的数据;数据处理模块对采集到的数据进行处理,计算出血压和体温值;显示模块将处理后的数据通过液晶显示屏显示出来;按键处理模块负责处理用户的按键输入,实现血压和体温测量功能的切换。

五、仿真验证

在Proteus硬件原理图中,通过仿真验证的方式确定该电子血压计的可操作性。首先,设置传感器的输入信号,模拟血压和体温的变化;然后,运行仿真程序,观察液晶显示屏上的显示结果;最后,通过按键切换测量功能,验证系统的测量精度和稳定性。仿真结果表明,该电子血压计能够准确测量血压和体温,并实时显示在液晶显示屏上,满足设计要求。

六、结论

本文设计了一种基于单片机的脉搏体温血压检测仪,通过硬件设计、软件编程和仿真验证等步骤,实现了血压和体温的实时监测与显示。该电子血压计具有结构简单、操作方便、测量准确等特点,适用于家庭、医院等场所的生理参数监测。未来可以进一步优化系统的性能,提高测量精度和稳定性,以满足更多场景下的应用需求。

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

#define uint            unsigned int
#define uchar           unsigned char
#define ulong           unsigned long	 //宏定义
#define LCD_DATA        P0				 //定义P0口为LCD_DATA
unsigned char getdata; //获取ADC转换回来的值
unsigned char dispbuf[4];

unsigned int OverCounter = 0; 
unsigned char ptemp;
bit OverFlg = 0;
unsigned int temp,ppress = 0;
float  press;	
char KEY_TIMES = 0;
char KEY_Set_TIMES = 0;

sbit LCD_RS =P2^5;
sbit LCD_RW =P2^6;
sbit LCD_E  =P2^7;						 //定义LCD控制引脚

#define R24C04ADD 0xA1
#define W24C04ADD 0xA0

//ADC0832的引脚
sbit ADCS =P2^2;  //ADC0832 chip seclect
sbit ADDI =P2^4;  //ADC0832 k in
sbit ADDO =P2^4;  //ADC0832 k out
sbit ADCLK =P2^3;  //ADC0832 clock signal

sbit KEY  =P1^7;

sbit KEY_Set = P3^0;
sbit KEY_ADD = P3^1;
sbit KEY_DEC = P3^2;

sbit speaker =P2^0;						 //蜂鸣器引脚定义
sbit DQ=P3^7;

void delay5ms(void);   //误差 0us
void LCD_WriteData(uchar LCD_1602_DATA);	 /********LCD1602数据写入***********/
void LCD_WriteCom(uchar LCD_1602_COM);		 /********LCD1602命令写入***********/
void lcd_1602_word(uchar Adress_Com,uchar Num_Adat,uchar *Adress_Data); /*1602字符显示函数,变量依次为字符显示首地址,显示字符长度,所显示的字符*/
void InitLcd();//液晶初始化函数

unsigned int Adc0832(unsigned char channel);
void LCD1602_Write_char( unsigned char *prointer );


uchar Xintiao_H=110;	//脉搏上限
uint wendu=0;



/*****延时子程序*****/
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);

部分代码

资料下载地址:

https://docs.qq.com/doc/p/ffc421513a628b30450ae742547c0b850456d7c8

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值