基于51单片机的脉搏测量仪设计与实现

news2024/11/18 10:30:48

目录

前言

一、设计背景

二、系统功能

三、系统硬件设计

3.1 总体方案设计

3.2 信号采集电路设计

3.3 报警电路设计

3.4 下载电路

3.5 电源电路设计

3.6 OLED显示设计

3.7 键盘电路

四、系统软件设计

4.1 系统主程序设计

4.2  脉搏采集子程序设计

4.3 键盘程序设计

4.4 OLED显示程序设计

4.5 AD采集脉搏波程序设计

4.6 数据存储程序设计

五、实物测试

总结

前言

本设计为基于51单片机的脉搏测量仪,部分内容参考网络资料,如有侵权请及时联系博主删除。

一、设计背景

       在中医四诊(望﹑闻﹑问﹑切)中,脉诊占有非常重要的位置。脉诊是我国传统医学中最具特色的一项诊断方法,其历史悠久,内容丰富,是中医“整体观念”﹑“辨证论证”的基本精神的体现与应用。脉搏携带有丰富的人体健康状况的信息,自公元三世纪我国最早的脉学专著《脉经》问世以来,脉学理诊作为“绿色无创”诊断的手段和方法得到了中外人士的关注。但由于中医是靠手指获取脉搏信息,虽然脉诊具有简便﹑无创﹑无痛的特点易为患者接受,然而在长期的医疗实践中也暴露出一些缺陷。首先,切脉单凭医生手指感觉辨别脉象的特征,受到感觉﹑经验和表述的限制,并且难免存在许多主观臆断因素,影响了对脉象判断的规化。其次,这种用手指切脉的技巧很难掌握。再则,感知的脉象无法记录和保存影响了对脉象机理的研究。脉诊的这种定性化和主观性大大影响了其精度与可行性,成为中医脉诊应用﹑发展和交流中的制约因素。为了将传统的中医药学发扬光大,促进脉诊的应用和发展,必须与现代科技相结合,实现更科学﹑客观的诊断。

        医院的护士每天都要给住院的病人把脉记录病人每分钟脉搏数的方法是用手按在病人腕部的动脉上,根据脉搏的跳动进行计数。为了节省时间,一般不会作1分钟的测量,通常是测量10秒钟时间心跳的数,再把结果乘以6即得到每分钟的心跳数,即使这样做还是比较费时,而且精度也不高。因此,开发出一款功能强大的脉搏测量仪是非常有意义的。

二、系统功能

       本课题设计的脉搏测量仪,控制单元选择STC15F2K60S2单片机,传感器选择反射式光电对管ST188,利用人体指腹血液透光性不一样的特性,让传感器接收不同信号从而间接测量人体脉搏,OLED12864液晶显示器实时显示脉搏数据,使用STC15F2K60S2芯片内部EEPROM实现数据存储功能,将之前测得的数值存储起来,与新测得的脉搏进行对比,便于观察出人体脉搏的变化。用LabVIEW设计上位机软件,将采集到的信号通过串口发送到上位机,实时显示测量的脉搏波形。脉搏超标提醒装置选择蜂鸣器,提醒脉搏过高或过低。具体功能如下所示:

  1. 使用反射式光电传感器ST188,实现对人体的脉搏测量,显示分辨率为1bpm;
  2. 计量时,测量结果与信号发生器设置的信号相对误差小于5%;
  3. 采用OLED12864显示测量结果;
  4. 使用STC15F2K60S2芯片内部EEPROM实现数据存储功能,并能够显示存储的数据。
  5. 具有与PC端的通信功能;
  6. 设计labview软件显示测量的脉搏波形;
  7. 具有超标(脉搏过低或过高)提醒功能。

三、系统硬件设计

3.1 总体方案设计

       总体方案设计如图3.1所示。由于使用的单片机芯片中包含存储器EEPROM、AD转换器以及时钟电路,设计的硬件电路主要分为七个部分。

3.2 信号采集电路设计

       反射式光电对管ST188在进行正常工作时,检测的信号为光反射信号,经过模块外部放大、整形、滤波等处理,最终输出模拟信号。由于本次设计采用STC15F2K60S2芯片为主控制,通过检测IO口低电平存在的时间并结合换算关系可实现脉搏的计算。如下图3.2所示为信号采集电路,主要包括低通滤波、信号放大、波形整形等三部分所构成,信号放大和波形整形通过双运算放大器LM358实现。

3.3 报警电路设计

       本次设计的报警系统设计采用有源蜂鸣器实现报警电路,当检测到脉搏值不在阈值范围内时,单片机控制报警电路实现报警。如下图3.3为报警电路设计图。采用S8550 PNP三极管的开关作用控制蜂鸣器的开关,并拥有放大信号的作用。

       如图中所示,BUZZR为蜂鸣器元件,Q1为S8550三极管,三极管的发射极接到蜂鸣器,通过基极的电平状态从而控制三极管的开关,三极管基极限流电阻接到单片机的P0^4引脚,通过单片机输出高低电平从而控制蜂鸣器。其原理如下:当单片机的P0^4输出低电平时,三极管集电极导通,蜂鸣器负极接地,从而蜂鸣器发出声响;当P0^4输出高电平时,三极管集电极处于截止状态,蜂鸣器没有电压从而不发出声音。

3.4 下载电路

       如图3.4所示的下载电路。VCC引脚为正电源输入端,需要外接0.1uF退耦电容C6,接电脑的5V供电。V3引脚外接0.01uF退耦电容C3。XI/XO引脚接晶振12MHz,电容取22pF。TXD/RXD分别接单片机的RX和TX,用作数据通信。

       CH340芯片的发送引脚TXD上接一个反向二极管,然后再连接到对端IC。在接收引脚上加一个限流电阻来防止对端IC对CH340倒灌电流。通过反向二极管的原理是:在CH340发送数据时,发送高电平时二极管截止,但是由于对端RXD默认上拉也是高电平不会有采样问题,而发送低电平时二极管导通,对端RXD接收到低电平,因此可以正常通讯。并防止了CH340的TXD发送引脚将电流倒灌到对端IC。通过限流电阻的原理是:倒灌电流导致芯片工作甚至闩锁效应,是由于引脚电流过大超过了芯片设计时容忍的上限导致芯片内部电路出现异常,因此加一个限流电阻。

3.5 电源电路设计

       本设计对电源要求不是很高,基本的USB 5V或者四节1.5V干电池供电即可完成,本设计采用USB电源线供电,如下图3.5为本设计的电源接口及开关控制电路图。1脚接到开关控制脚,通过开关U3控制电源的通断,输出到VCC为系统供电,VCC为5V。2、3脚接CH340的UD+和UD-,用于USB转串口通信。4脚接GND。

3.6 OLED显示设计

    采用低功耗的0.96寸OLED显示屏,OLED即有机发光二极管(Organic Light-Emitting Diode)。该OLED具有轻薄、低功耗的特点,在MP3等播放器上被广泛应用,由于其低功耗的,在其他可穿戴式产品上也相继被使用。

        OLED具有多种驱动方式,常用的方式主要有SPI和IIC驱动,本设计采用IIC接口的方式,IIC只需要两根数据线即可驱动显示,使用原理简单。该模块内部不带任何字符,在显示字符、数字、汉字时都需要制作字库,因此可以显示各图案。如下图3.6所示为OLED显示电路。该模块具有4个引脚,VCC接电源5V供电,GND接地线,3脚接IIC的 SCL,4脚接IIC的 SDA。

3.7 键盘电路

      本设计采用三个独立式按键实现阈值调整、界面切换功能。三个按键分为设置加键、设置减键、切换键。设置加键是用来对报警阈值进行设置加,设置减键是用来对报警阈值进行设置减。界面切换键可实现对上下限阈值调整界面进行切换。

      下图中3.7为键盘电路设计图,图中三个个按键一端接公共端GND,另一端分别接单片机的I/O。三个按键接口分别接单片机的P0^1、P0^2、P0^3引脚,当单片机的相应引脚检测到低电平时,说明该引脚被触发,从而实现相应的动作。

四、系统软件设计

4.1 系统主程序设计

       首先进行系统初始化,系统初始化包括液晶初始化配置、定时器初始化以及串口初始化。接下来进入主程序循环。主程序循环系统中主要是脉搏信号的实时采集。利用定时器2实现脉搏脉冲信号的捕获,检测两次脉冲的间隔时间,定时器0实现有效脉搏信号的计数,最终通过计算得到实际的脉搏值,将得出的脉搏值存储在EEPROM中。利用AD开始采集原始脉搏波形并通过串口上传到Labview上位机。同时键盘子程序实时扫描,检测到切换键按下时,会切换显示;在阈值界面设置状态下,设置按键按下时上限阈值或下限阈值会相应增加减。系统的软件程序框图如下图4.1所示。

4.2  脉搏采集子程序设计

       设计采用检测两次脉搏信号脉冲间隔时间计算脉搏,在采集脉搏时,其具体步骤如下:首先是初始化定时器0、2,分别定时1ms、10ms中断,之后进入循环。在循环中,如果脉搏脉冲信号存在30ms以上,在定时器1中断开始脉搏计数,同时在定时器0中断排除脉搏测量不稳定的情况,最后通过脉搏算法算出其脉搏值,在OLED上显示出来,其流程图如下图4.2所示。

 

4.3 键盘程序设计

        按键在本系统中主要起到阈值调整、切换界面等功能。按键工作流程如下:首先在正常工作状态下,按下切换键,进入设置上下限阈值界面,OLED显示脉搏测量值、上下限阈值,通过设置加键、设置减键实现上下限阈值的调整。设置完成后最后按下切换键会回到初始界面,具体流程图如下图4.3所示。

 

4.4 OLED显示程序设计

        本次设计采用OLED屏作为显示器,本次选用的是IIC接口,四针的OLED,通过IIC实现驱动OLED,使用方式非常简单。由上一章节可知,OLED的SDA、SCL分别接STC15F2K60S2的P2^7、P2^6,通过软件模拟IIC驱动。IIC接口包括IIC起始信号、IIC停止信号、IIC读数据、IIC写数据、IIC响应信号和非响应信号。以下为OLED读取显示数据流程图,首先进行初始化配置,初始化IIC,然后配置指令。接下来进入显示数据工作中,首先确定显示显示为坐标,然后显示字体大小等信息,然后写入显示数据。其流程图如下图4.3所示 。

 

4.5 AD采集脉搏波程序设计

       本次设计采用STC15F2K60S2内部8通道10位高速ADC,速度可达30万次/秒,3路PWM还可当3路D/A使用。其使用方式非常简单,不需作为A/D使用的P1口可继续作为IO口使用(建议只作为输入)。需作为A/D使用的口需先将P1ASF特殊功能寄存器中的相应位置为‘1’,将相应的口设置为模拟功能,接着在配置ADC控制寄存器、ADC转换结果调整寄存器以及ADC转换结果寄存器即可。以下为AD采集脉搏波程序设计流程图,首先选择AD转换通道,开启AD转换。接下来获取AD采样结果即可。其流程图如下图4.5所示。

 

4.6 数据存储程序设计

       本次设计采用STC15F2K60S2内部大容量EEPROM,其与程序空间是分开的,擦写次数在10万次以上,可分为若干扇区,每个扇区512字节。使用时,建议同一次修改的数据放在同一个扇区,不是同一次修改的数据放在不同扇区。在不同的扇区,不一定要用满。数据存储器的擦除操作是按扇区进行的。以下为数据存储程序设计流程图,首先进行EEPROM初始化,然后写数据前擦除扇区。接下来写入存储数据即可。其流程图如下图4.6所示。

五、实物测试

       通过对本次课题设计的系统设计和硬件电路设计,最终做出电路板,将电路各个模块进行焊接。在焊接时应该注意先后顺序,先焊接电路模块,将电路接口和电源开关焊接好后,接通电源。接下来利用万用表测试各个电源点是否正常,测试正常后进入下一步的焊接。焊接顺序按照先焊接电源和主控制单片机部分,先焊接小元件再焊接大元件的方式,最终焊接完成图样如下图5.1所示。

       在系统板在开机后,正常运行时,OLED第三行会显示“欢迎使用”2秒,然后自动刷新显示心率、EEPROM存储心率值等。如下图5.2所示为系统开机界面和数据显示主界面图。在主界面下实时显示该系统的心率、EEPROM存储心率值等数据。如图所示,心率值通过心率传感器ST188采集心率,当没有进行心率测量时,屏幕第一行显示“0”,第二行显示EEPROM存储心率值。如图第一行显示心率为0,未进行心率测量,第二行显示上一次断电前最后一次测量EEPROM存储心率值51。

       在主界面上实时显示,可通过按键实现其他功能,按下切换键时,OLED将切换到阈值显示界面,由于OLED大小关系,故而选择分屏显示。显示界面显示心率测量值、上下限阈值、EPROM存储心率值等信息,如下图5.3所示为上下限阈值显示界面图。第一行显示心率测量值,当没有进行心率测量时,屏幕第一行显示“0”,第二行显示上/下限阈值,第三行显示EEPROM存储心率值。

       通过按键进行上下限阈值调整时,需要先按下设置键进入调整界面,如下图5.4所示为上下限阈值调整界面图。第一行显示心率测量值,第一行显示“0”,第二行显示上/下限阈值,第三行显示EEPROM存储心率值。图上所示,此时分别正在下限阈值和上限阈值,通过设置加、设置减键进行上下调整,按一次设置键自动化后退到下一个参数的设置,最后设置完分之后再次按下设置键,将自动保存设置好的时间并退出设置界面自动进入主界面。

总结

       本次设计顺利完成所有要求,但美中不足的是ST188焊接处出了问题,导致设计整体不够美观,当然本人水平有限,设计有所缺陷,欢迎各位小伙伴在评论区交流指正!设计源码、PCB原理图、设计报告见下百度网盘链接:

链接:https://pan.baidu.com/s/1pbsC4rZsHcywS5LAlzyhyg 
提取码:tqam 

创作不易,还请各位多多支持!
 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/451627.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

浏览器自动化(一)

目录 介绍 下载地址 安装教程 爬取百度热搜 介绍 Automa 是一个免费、开源的 Chrome 扩展,它通过目前流行的 No Code 无代码方式,只需要拖拽模块就实现了浏览器自动化,比如自动填写表格、执行重复性任务。 在工作中,如果我们…

Nacos单机搭建

Nacos概述 Nacos Nacos是阿里巴巴开源的服务注册中心及配置中心,致力于给开发者提供一款便捷、简单上手的开源框架 Nacos注册中心Eureka 服务配置Config 服务总线Bus 服务发现和服务健康监测 Nacos 使服务更容易注册,并通过DNS或HTTP接口发现其他…

Java企业电子招标采购系统源码Spring Boot + Mybatis + Redis + Layui + 前后端分离 构建企业电子招采平台之立项流程图

项目说明 随着公司的快速发展,企业人员和经营规模不断壮大,公司对内部招采管理的提升提出了更高的要求。在企业里建立一个公平、公开、公正的采购环境,最大限度控制采购成本至关重要。符合国家电子招投标法律法规及相关规范,以及…

Java网络通信

网络通信 网络程序设计是编写与其他计算机进行通讯的程序。Java已经将网络程序所需要的对象封装成不同的类。只要创建这些类的对,使用相应的方法,即使设计人员不具有关的网络知识,也可以编写处高质量的网络通讯程序 现实两台计算机的通信&a…

Activiti基本使用2

目录 3、流程实例 3.1、什么是流程实例 3.2、让实际业务与activiti表关联(BusinessKey) 3.3、挂起,激活流程实例 3.3.1、全部流程实例挂起 3.3.2、单个流程实例挂起 4、任务分配 4.1、固定分配 4.2、表达式分配 4.2.1、UEL-value 4.2.2、UEL-method 方式…

“码”上反馈,自动留痕:二维码助力湖塘街道人居环境巡查高效化

绍兴市柯桥区湖塘街道将农村人居环境巡查同二维码技术相结合,具体应用到了“村民垃圾分类检查”、“公厕卫生检查”和“各村垃圾分类工作的督导记录”这三项检查工作中,做到了“码”上反馈、自动留痕,有效提升了巡检实效,在2020年…

什么是薪酬管理系统,薪酬管理有哪些功能?

阅读本文您将了解:1.薪酬管理系统的定义;2.薪酬管理系统的功能;3.薪酬管理系统的作用。 一、薪酬管理系统是什么 薪酬管理系统是一种用于管理企业员工的薪资和奖金的工具。它可以自动计算员工的工资和奖金,记录员工的考勤和休假…

凌恩生物文献分享|大热门--HiFi宏基因组有效提升真核生物群落检出效果

binning和HiFi宏基因组测序优势: 不依赖于微生物的分离培养,环境微生物单菌基因组(框架图)研究的一种新的途径和高性价比策略; 可以得到环境中丰度较低的宏基因组,为研究低丰度微生物提供了途径&#xff1b…

【Unity VR开发】结合VRTK4.0:高亮与标签

语录: 信仰到底是什么呢,就是纵身一跃,就是我们跟神之间一个永远的约定,是舍弃日的去开始新的生活;信仰就是从今以后,再也不要放开你的手。 前言: Interactable Highlighter :当我们的手柄触碰…

Android Framework源码解析篇~

应用启动流程 Activity启动流程 关键debug节点: //左侧 ActivithThread //右侧 ActivityTaskManagerService>..>ActivityTaskSupervisor //中继 debug:ClientTransaction.schedule>mclient.scheduleTransaction //这里是 mclient是 ApplicationThread,从…

++i与i++有什么区别?

在编程时,经常会用到变量的自增或自减操作,尤其在循环中用的最多。以自增为例,有两种自增方式:前置和后置,即i和i,它们的不同点在于i是在程序执行完毕后进行自增,而i是在程序开始执行前就进行自…

基于Java+Springboot+Vue+elememt社区疫情返乡管控系统设计实现

基于JavaSpringbootVueelememt社区疫情返乡管控系统设计实现 博主介绍:5年java开发经验,专注Java开发、定制、远程、指导等,csdn特邀作者、专注于Java技术领域 作者主页 超级帅帅吴 Java项目精品实战案例《500套》 欢迎点赞 收藏 ⭐留言 文末获取源码联系…

Python爬取电商数据:商品采集接口 商品详情数据API 商品主图接口

学习Python自动化的一个好办法就是构建一个价格追踪器。由于这项任务生成的脚本可以立即投入使用,所以对于初学者来说尤为方便。本文将向大家介绍如何用Python采集器建立一个可立即实现电商价格监控的可扩展价格追踪器。 价格监控的目的 价格监控的好处多多。对于…

公司招人,面了一个4年经验不会自动化的测试人,他凭什么要15K?

在深圳这家金融公司也待了几年,被别人面试过也面试过别人,大大小小的事情也见识不少,今天又是团面的一天, 一百多个人都聚集在一起,因为公司最近在谈项目出来面试就2个人,无奈又被叫到面试房间。 整个过程…

No manual entry for ls解决办法

No manual entry for ls解决办法 如果在 Linux 中运行 man ls 命令时提示“no manual entry for ls”,则可能是因为您的系统没有安装 man 页面或者该页面已经被删除。此外,也有可能是您输入的命令不是标准命令。 可以通过以下方式进行排查:…

Git 时间线管理

Git 时间线管理 这一部分主要讲的是 取消(undo) 变化 和在不同的时间锚点跳来跳去,以 command 为主。 设计到的commits有: checkoutrestoreresetrevert checkout checkout 的一部分作用,即切换分枝在 git 分支操作 中有提到过&#xff0…

ESP32-s2芯片esp32-s2-saola-1开发板 micropython的repl连接

本文只是解决通过esp32-s2-saola-1开发板 自带microUSB 作为repl与micro python通信的问题。 如果你对esp32,micropython不熟,本文不适合你。 如果你用的不是esp32-s2,你不需要关心。 区分两个USB: 1. esp32-s2原生USB&#x…

25K 入职阿里的那天,我特么哭了

悲催的经历: 先说一下自己的个人情况,计算机专业,17 年本科毕业,一毕业就进入了“腾讯”测试 岗(进去才知道是接了个腾讯外包项目,可是刚毕业谁知道什么外包不外包的)。 更悲催的是:刚入职因为家里出现一…

什么是CDN加速?CDN加速有哪些作用?

一、什么是 CDN CDN 的全称是 Content Delivery Network,即内容分发网络。CDN 是在现有 Internet 基础上增加一层新的网络架构,通过部署边缘服务器,采用负载均衡、内容分发、调度等功能,使用户可以就近访问获取所需内容&#xff…

VMware 安装 MS-DOS7.10 并配置网络

VMware 安装 MS-DOS7.10 并设置软盘共享 1. 新建虚拟机2. 开机2.1. 这几个地方都可以开机2.2. 手速慢,进不了BIOS的朋友可以点这里 安装 MS-DOS7.101. 先选 1 安装 MS-DOS7.10 回车2. 欢迎页面,客气一下而已,继续 Next3. 继续王婆卖瓜4. 这步…