基于单片机心率计的设计.docx
《基于单片机心率计的设计.docx》由会员分享,可在线阅读,更多相关《基于单片机心率计的设计.docx(21页珍藏版)》请在冰豆网上搜索。
基于单片机心率计的设计
基于单片机心率计的设计
前排提示,此论文是本人毕业的时候所做论文,通过了查重与答辩,内容真实可靠,结果完美运行
归档号:
武汉工商学院毕业论文(设计)
学院:
信息工程学院
专业:
电子信息工程年级:
学生:
学号:
指导教师:
职称:
讲师
题目:
基于单片机心率计的设计
2016年月日
武汉工商学院
本科毕业论文(设计)原创性声明
本人郑重声明:
所呈交的论文是本人在导师的指导下独立进行研究所取得的研究成果。
除了文中特别加以标注引用的内容外,本论文不包含任何其他个人或集体已经发表或撰写的成果作品。
本人完全意识到本声明的法律后果由本人承担。
作者签名:
年月日
pulsebeatredlightemittingdiodewillbeabright,thefinalmeasurementresultsindigitalformontheLCDdisplay.
Keywords:
heartratemeter;infraredsensor;singlechipmicrocomputerSTC89C51;LM358amplifier
1绪论
1.1前言
现在人们的生活水平虽然不断提高,但是因为工作繁重,没有时间等等原因没有去锻炼身体,加上饮食不规律,身体也许会出现问题。
身体是革命的本钱,越来越多的人认识到这一点,开始关注自身的健康。
说起健康问题,每年心脏病都会夺取许多人的生命,各种各样的心脑血管疾病威胁着人类的健康。
在现实生活中,能够直接测量心率的仪器不是很多,在一些小型的医院和诊所里面,有些医生还在使用淘汰了的的手动听诊器,大大影响了工作的效率,拖延了最佳治疗的时间。
这可能会影响病人的病情,这种情况为此次心率计的设计奠定了基础。
1.2研究意义
心率就是指心脏一分钟跳动的次数,它能够反映出心脏的工作状态,从而发现人体是否健康。
在体育竞赛和临床治疗等方面,准确实时的心率测量都有广泛的应用。
近年来,心脑血管疾病正在夺走越来越多人的生命,于是很多人开始关注自身的健康状况,很多心脑血管疾病可以通过脉搏反映出来,防病比治病更重要,针对这些疾病的早期预防是很有意义的工作。
自古以来,脉诊在中医里面就有的重要的地位,医生通过把脉来判断人体的健康程度。
这种方法简单方便,却也暴露了很多问题。
医院的医生用听诊器对病人的心脏进行计数的时候为了节省时间,一般也不会测量一分钟,通常是测量10秒钟的心跳次数,在乘以6得出一分钟的心跳次数,这种方法还是比较浪费时间,而且精准度也不高。
动脉硬化检测仪等新技术虽然国内已经引进,但是,这些仪器只在大型医院中有,使用成本很高,而且也不能随时随地的对心率进行测量。
针对这个情况,就有必要设计出一款简单实用,造价低廉的心率计了。
本次设计就是要研制一种面向个人的便携式数字心率计,能够让人很方便的使用,让人可以随时了解自己的心血管健康状态,做到对心血管疾病能够及早的发现和预防。
2方案论证以及元器件选择
2.1传感器的选择与论证
方案一:
使用压力传感器,这种方法是通过脉搏的跳动来采集信号的,当心脏跳动时,手腕和颈部有明显的脉搏,然后把压力传感器放在手腕或者颈部,测得的信号转换为成为脉冲信号,对脉冲信号整形计数得出心率。
方案二:
采用红外传感器来采集心率信号。
传感器是由红外发射管以及光敏二极管组成的。
电源给红外发射管加正向的电压,正向的电压产生正向的电流,给红外发射管发射红外线提供了能量。
红外线属于不可见光,它的波长在760纳米到1毫米之间。
红外接收管具有单向导电特性,所以运行时要加反向的电压。
它的管芯其实是PN结,这个PN结是具有光敏特性的。
当没有光照时,有极小的饱和反向漏电流,此时光敏二极管截止。
当有光照时,饱和反向漏电流大大增强,形成了光电流,它随着光强度的变化而变化。
所以可以通过光照的强度来改变输出的电流。
红外发射管发射红外线,经过手指的血液吸收,由光敏二极管接收。
手指血管的血液浓度随着心脏的跳动呈现周期性的变化,光敏二极管对光的吸收能力也发生了相应的改变,使得光敏二极管的输出电流也呈周期性的变化,光敏二极管输出信号的变化可以反映出脉搏的跳动。
经过两个方案的比较,方案二仅仅需要一个手指就可以快速的采集人体心率信号,所以选择方案二。
2.2信号处理方案选择和论证
方案一:
小规模数字电路:
此方案采用一个二进制计数器,对处理完成的脉波信号进行计数,计时一分钟,把一分钟的计数值显示出来。
不足之处是数字电路器件功能很单一,电路结构复杂,可移植性差,应用成本高,功耗大,效率低,,本方案不能实现实时心率测量和超限报警。
方案二:
单片机集成电路:
单片机全称单片微型计算机,又称为MCU。
单片机发展迅速,应用越来越广泛,所以销量极大,各大公司的竞争十分激烈,所以价格低廉。
单片机对数据的分析与处理等方面十分强大。
STC系列单片机是由STC公司推出的一种51内核的单片机。
单片机STC89C51的内部包含了CPU,I/O口,ROM、RAM,功能很强大。
只要修改程序和一些外部电路就可以改变整个设计的功能,维护和移植很方便。
以单片机为核心外接按键、显示器等硬件电路,就能完成数据运算、脉波计数、显示等功能。
STC89C51引脚图如图2-1所示。
经过两个方案的比较,单片机集成度高,体积小,易扩展,性价比高的特点更符合此次设计的要求,所以,本次设计采用单片机STC89C51。
图2-1stc89c51引脚图
2.3显示模块选择和论证
方案一:
LED数码管显示
LED易于编程,显示的亮度高,响应速度。
数码管是根据各个发光二极管的的亮暗组合成字符,根据内部发光二极管的接线形式,可以分为共阴极型和共阳极型,COM是发光二极管的公共点,另一端与单片机I/O连接,所以占用I/O口多,浪费了I/O口的资源。
方案二:
LCD1602液晶显示
LCD1602液晶显示器可以显示数字,字母和符号。
显示质量高,画面不会闪烁,功耗低,重量体积小,控制简单。
而且占用I/O口资源线少。
经过两种方案比较,本次设计不仅要显示数字,还要显示字母,所以选择LCD1602液晶显示。
3硬件系统设计
3.1系统设计总框图
此次设计以单片机为核心控制单元,由红外传感器采集信号,LM358放大和整形,以及按键和电源供电作为输入部分,LCD1602液晶显示和蜂鸣器为输出部分。
系统总框图如图3-1所示。
红外发射管发射红外线,经过手指的血液吸收,由光敏二极管接收。
手指血管的血液浓度随着心脏的跳动周期性的变化,光敏接收管的输出信号也是周期性的。
经过LM358运算放大器放大得到周期性变化的脉搏信号,在将其整形成脉冲信号送入单片机STC89C51中处理。
红外传感器采集到的信号是与心跳频率相同的,它的波形是类似于正弦的波形。
红外传感器采集的信号是低频信号,这个信号要经过RC振荡器滤波消除高频干扰送到运算放大器LM358,LM358会对此信号进行放大和整形,然后送到单片机,单片机对信号进行处理送到液晶上显示。
图3-1系统设计框图
3.2单片机最小系统部分
单片机stc89c51最小系统包括单片机、晶振电路、复位电路。
复位电路,单片机的复位就像普通电脑的重启一样,当系统在运行中不正常的时候按下复位按键,复位会初始化单片机的内部电路。
STC89C51复位只需要在9引脚接一个持续5ms的高电平即可。
但是不能让RST持续为高电平,不然单片机就处于循环复位状态,而无法执行程序,因此要求复位后能马上脱离复位状态。
当按下复位按键的时候,电容c1被短路,9引脚接收到高电平,复位成功。
晶振电路为单片机提供时钟信号,它由电容和石英晶体组成,它有内部震荡和外部震荡两种方式,本次设计采用内部震荡方式,即在STC89C51引脚XTAL1和引脚XTAL2外接电容和石英晶体,晶振为12Mhz,电容大小选取30pf。
单片机的最小系统电路图如图3-2所示
图3-2单片机的最小系统电路图
3.3输入部分
3.3.1信号采集电路
这部分电路实现信号采集的功能,5MM红外对管D1与D2组成红外传感器用来采集信号。
当心脏跳动的时候,血液会在体内流动,当血液送到人体组织时,透过组织的光照强度比较小,光敏二极管截止,输出低电平。
当血液回流心脏的时候,透过组织的光照强度比较大,光敏二极管导通,输出高电平。
R5选择220欧姆是基于红外接收二极管感应红外光灵敏度考虑的,R5过大,通过红外发射二极管的电流过小,红外接收二极管无法区别有心跳和无心跳时的信号。
R5过小,通过红外发射管的电流过大,红外接收二极管也不能准确地辨别有心跳和无心跳时的信号。
红外传感器输出的是伴有各种噪声干扰的电信号,信号非常微弱,频率很低,所以将该信号经过R8、R9、C4滤波,去除高频干扰,输出电信号,然后接入LM358的5引脚进行放大和整形,输出脉冲电压信号。
信号采集电路如图3-3所示。
图3-3信号采集电路
3.3.2信号放大整形电路
这部分电路实现了信号放大和整形的功能。
信号放大和整形采用LM358放大器。
LM358是一款双运放,它的有两个运算放大器,这两个运算放大器是相互独立的,也是相同的。
LM358有8个引脚,1、2、3脚是一个运放通道,5、6、7脚为另一运放通道,3引脚和5引脚是两个同相输入端,2引脚和6引脚是两个反相输入端,1引脚和7引脚是两个输出端。
8引脚接正电源;4引脚接负电源或地。
LM358引脚图如图3-4所示。
图3-4LM358引脚图
LM358的第一个运算放大器实现信号放大的功能,放大倍数为(RT1+R10)/RT1,。
RT1是103可调电位器。
调节电位器就能调节放大倍数。
经过放大之后的信号还有残留的干扰。
使用R10和C6组成低通滤波器来消除。
C5是1uf的耦合电容,它的作用是隔直流通交流。
使用LM358的另一个运算放大器作为电压比较器,放大的信号从7引脚输入LM358的3引脚。
最后从1引脚输出。
顾名思义,电压比较器的作用就是对两个电压信号的大小进行比较,电压比较器只能输出高电平或低电平,当模拟电压信号高于固定电压时,电压比较器输出高电平;当模拟电压信号低于固定电压时,电压比较器输出为电平。
R11和R12是分压电阻,给2引脚提供一个固定的电压,当3引脚的输入电压大于2引脚的电压时,1引脚输出5V,当3引脚的输入电压小于2引脚的电压时,1引脚输出0V。
D3是红色发光二极管,每当1引脚输出一个高电平时,D3就会亮一次,就表示脉搏跳动了一次,1引脚连接到单片机你的P1.0口。
信号放大比较电路如图3-5所示。
图3-5信号放大整形电路
3.3.3键盘电路
键盘电路实现了设置心率上下限的功能。
键盘设计采用线性键盘。
一共有3个键,第一个是设置键,第二个是加键,第三个是减键,用于正常心率范围的设置,超出设置的范围时会有报警提示。
P3.0,p3.1,p3.2三个引脚通过按键来接地。
有程序控制扫描。
这三个按键接到单片机的P3.0、P3.1、P3.2上面。
按一次设置键进入设置上限模式,再按一下进入设置下限模式,再按就返回测量模式。
加减键用于调节报警上下限的值。
键盘如图3-6所示。
图3-6键盘电路
3.4输出模块
输出模块包含LCD显示电路和蜂鸣器报警电路。
3.4.1LCD1602显示电路
显示电路实现了实时显示心率的功能。
它的1引脚VSS接地。
2引脚脚VCC接5V电源正极。
3引脚V0是调整液晶显示器亮度的,3引脚与地之间的之间的阻值为选取1.5k,3引脚与电源之间的阻值选取10k。
4引脚是数据指令选择,高电平时输入数据、低电平时输入指令。
5引脚是读写选择,高电平的时候从LCD读取信息,低电平的时候向LCD写入指令。
6引脚E端是使能端,高电平的时候读取数据,下降沿的时候执行命令。
7引脚到14引脚是双向数据端,连接单片机的P0.0到P0.7。
15引脚是背光正极,16引脚是背光负极。
LCD1602接口电路如图3-7所示。
图3-7LCD1602接口电路
3.4.2蜂鸣器
蜂鸣器电路部分实现了心率超出设置范围报警的功能。
因为单片机的I/O的输出电流很小,基本上不能驱动蜂鸣器,所以本次设计没有直接使用单片机的I/O口驱动蜂鸣器,而是采用了9012PNP型三极管Q1和一个限流电阻R4来控制蜂鸣器的发声与关闭。
蜂鸣器的正极接到+5V的电源,负极接到三极管Q1的发射极,Q1的集电极接地,基极通过限流电阻R4接到STC89C51的P2.4引脚。
原理就是利用三极管的开关作用。
当P2.4输出低电平的时候,三极管Q1导通,电源流过蜂鸣器和三极管到地,蜂鸣器电路形成回路,蜂鸣器发声,当P2.4输出高电平的时候,三极管Q1截止,电流不能通过三极管,蜂鸣器电路不能形成回路,蜂鸣器不发声。
所以,可以通过STC89C51的P2.4引脚的高低电平控制蜂鸣器是否发声。
图3-8蜂鸣器电路
4系统软件设计
4.1测量计算原理
相对汇编语言,C语言易于编写,可读性好,可移植性好,故本次设计的程序采用C语言编写,。
程序中对测量的脉搏数据进行了计算,并且用液晶显示。
程序的编写使用了keilc51软件,KeilC51集成开发环境功能非常强大,是单片机开发最优秀的软件之一。
KeilC51能够方便地完成编译、汇编、链接程序等操作,还能模拟仿真调试,让开发者清晰地了解各个变量的变化。
心率计原理为检测两次脉冲间隔时间计算心率,假设两次脉搏间隔时间为t秒,则心率为60/t
4.2程序流程图
4.2.1主流程图
按下复位按键,系统初始化,进入while循环,系统会判断哪个键按下,按设置键会切换模式,按加键会加报警值,按减键会减报警值,液晶上会显示设置的报警心率值。
然后判断当前模式,如果是测量模式,把手指放在红外传感器之间就会正常显示心率,设置上限模式液晶显示设置的上限值,设置下限模式液晶显示设置的下限值。
主流程图如图4-1所示。
图4-1主流程图
4.2.2心率计数流程图
stc89c51的定时/计数器T1由寄存器TH1,TL1组成,它们都是8位寄存器。
定义变量Xintiao_Con初始值为0,定时器T1定时10ms,每当定时时间到,就会进入中断,检测一下信号是否还存在,存在Xintiao_Con就加一,如果不存在了,检测时间很短,说明检测到的不是脉搏信号,可能是其他干扰,将变量清零,跳出此次检测,中断四次,信号还在,信号持续了40ms,说明是心率信号。
然后检测这个心跳是不是第一个心跳,如果是,继续检测第二次心跳,如果不是,计算出两次心跳的时间间隔,就能得出一分钟的心率了。
心率计数流程图如图4-2所示
图4-2心率计数流程图
5系统测试
5.1仿真
程序编写完成后可能会有许多错误,可以使用仿真来测试程序是否可行,这就可以避免频繁使用硬件下载调试的麻烦。
在焊接硬件之前也需要在proteus中仿真通过,确保方案是可行的再做实物。
首先启动proteus软件,新建一个工程,然后根据原理图调用相应元器件,根据实际要求调整它们的属性,按照原理图的连接方式把它们连接起来,最后然后把程序加载到单片机中,开始仿真。
仿真图如图5-1所示
图5.1系统仿真图
5.2测试数据
由于仿真中没有红外,手指也模拟不了,就用单片机的IO口检测脉冲信号,用个方波信号模拟。
用信号发生器作信号源,产生一个30~120次/分的方波,观测信号发生器输出的频率和心率计读数是否一致。
表5-1为测试的结果。
表5-1测量结果
序号
信号发生器
心率计所示
1
30
40(低限报警)
2
80
80
3
90
90
4
120
120(高限报警)
通过结果可以看出心率计读数与信号发生器产生的信号一致。
而且超出范围有报警。
5.3实物效果图
仿真成功之后就要实物焊接了,焊接之前要仔细看原理图,想好焊接的先后顺序,不要这里焊一个,那里焊一个,这样容易打乱布局,线都交错在一起容易连错,还很容易漏焊。
焊接前要对电烙铁通电预热。
元器件焊到焊点上之后,电烙铁要等待3秒钟在拿开,让焊锡充分覆盖焊点,否则容易虚焊。
移开电烙铁之后,左手还是要按住元器件,等到焊点上的焊锡充分凝固了之后才能松开手,焊接过程中要谨慎。
每当焊好一个元器件都要用万用表来检查是否焊接成功,不然等到焊接完成之后再来检测就不知道是哪里出了问题,焊接完成之后要检测有没有短路,虚焊,漏焊等问题。
实物效果图如图5-2所示。
图5-2实物效果图
6总结
刚刚准备做这次毕业设计的时候,思绪很乱,不知道从何下手,大三学习的单片机知识也基本都忘记了,这让我很沮丧,但我很快打起了精神,一边工作一边复习单片机的知识,毕业设计是对我一次很好的锻炼,不仅让我学到了更多的知识,也提高了我的抗压能力,返校后我不停到图书馆查阅单片机的资料,每当查到需要的资料的时候内心无比的兴奋,做好这次设计用了几个月的时候,花费了我无数的心血,当设计做成功的时候,感觉所有的付出都是值得的。
此次设计以单片机为核心控制单元,由红外传感器采集信号,LM358放大和整形,以及按键和电源供电作为输入部分,LCD1602液晶显示和蜂鸣器为输出部分。
经过测试,本款心率计系统稳定,能够实时的测量心率并显示出来。
易于携带,制作成本低。
在日常生活中用处很大。
测量心率的时候要注意手指不要抖动,因为红外传感器检测到的信号很微弱,手指要是抖动的话会严重影响测量结果的,所以在设计的时候把红外对管的距离调到刚好放置食指的大小,这样可以尽量让手指不抖动。
这款心率计就简单实用,造价低廉,具有不错的开发价值。
参考文献
[1]张永红.单片机应用设计与实现--基于KeilC和Proteus开发仿真平台[M].北京:
电子工业出版社,2014:
15-21.
[2]王骏明,唐洪涛.C51单片机与机器人控制[M].江苏:
江苏大学出版社,2015:
45-63.
[3]陶国正.耿永刚.动化生产线单片机技术应用[M].北京:
中国铁道出版社,2014:
25-36.
[4]钱伟.单片机与接口技术[M].北京:
经济管理出版社,2015:
23-45.
[5]王丽艳.李黎.杨飞.项目引导单片机应用教程[M].西安:
西安电子科技大学出版社,2015:
15-36.
[6]申忠如.张倩.申淼.单片机实验及实训教程[M],西安:
西安交通大学出版社,2015:
63-78
[7]魏学业.传感器技术与应用[M].武汉:
华中科技大学出版社,2013:
14-23.
[8]杨效春.传感器与检测技术[M].北京:
清华大学出版社,2015:
30-42.
[9]黄锡泉.何用辉.单片机技术及应用[M].北京:
机械工业出版社,2014:
65-78.
[10]刘小成,吴清.夏春明单片机原理及C51应用[M].上海:
华东理工大学出版社,2010:
23-36.