10168140丁超越基于单片机的脉搏计设计.docx
《10168140丁超越基于单片机的脉搏计设计.docx》由会员分享,可在线阅读,更多相关《10168140丁超越基于单片机的脉搏计设计.docx(38页珍藏版)》请在冰豆网上搜索。
10168140丁超越基于单片机的脉搏计设计
安徽农业大学
毕业论文(设计)
论文题目:
基于单片机的脉搏仪设计
姓名:
丁超越学号:
10168140
院系:
信息与计算机学院专业:
电子信息工程
指导教师:
孟浩职称:
教授
中国·合肥
二〇一五年五月
安徽农业大学学士学位论文(设计)开题报告
课题名称
基于单片机的脉搏计设计
课题来源
导师指定
学生姓名
丁超越
专业
电子信息工程
学号
10168140
指导教师姓名
孟浩
职称
教授
研究内容
1.核心控制部分:
STC89C52的最小系统设计
2.信号处理部分:
LM358的运放与滤波电路
3.结果显示部分:
LCD1602的显示原理
研究计划
1月中3月底调研、查资料。
4月初4月中确定系统架构、分析并划分各功能模块的接口。
4月底5月初各功能模块的设计与开发以及整个系统的调试与运行。
5月初5月中撰写毕业设计论文。
特色与创新
1.自主设计,稳定性好。
2.系统具有较强的实际应用价值。
指导教师意见
教研室意见
学院意见
基于单片机的脉搏计设计
学生:
丁超越指导教师:
孟浩
(安徽农业大学信息与计算机学院中国合肥233036)
摘要:
本文介绍了一个基于STC89C52单片机的脉搏检测计数系统,该系统以STC89C52为核心,通过该单片机系统内部的定时器来计算时间,在使用时,光电传感器ST188感应然后产生信号,单片机STC89C52将经过放大滤波以及整形后的信号相加得到脉搏跳动次数。
在该检测系统中,还接入了一个LED指示灯,可以通过观察灯的敏感闪烁可以确定测量值是否准确。
经过对不同人群的分类检测,该系统工作运行正常,初步达到了在做本设计之前所预想的技术要求。
整个系统首先利用红外传感器检测光电信号并将其转换成对应的脉冲信号,然后,将该信号通过整形电路,再经过一次放大电路从而达到对整形后的脉搏信号放大的目的,最后将转换完成的信号输入单片机内,经过处理后,便可以测出每分钟的脉搏跳动次数,并将结果显示在液晶显示屏上。
一般来说,我们将10s测得的脉搏数乘6从而得到1min的脉搏数,从而达到减少时间,是整个测量系统方便快捷的目的。
关键词:
脉搏测量仪,光电传感器,STC89C52,LCD显示器
1引言
我国是一个有着悠久历史和丰富文化的国家。
在历史遗产中,中医无疑是一件绚丽的瑰宝。
在中医的理论中,四诊“望闻问切”是诊治疾病的首要程序,所谓“切”就是之摸脉象。
世界上几乎所有的民族都有通过“切脉”来诊断疾病的历史,脉搏波在波形、波幅、波速和周期等方面提供出的信息在很大程度上反映出人体心血管系统中许多生理和病理与其相关的血流特征,随着人们生活水平的提高,我国的心脑血管疾病的发病率呈逐年上升趋势,其死亡率和致残率均居各种疾病之首,是人类死亡的主要原因之一。
因此,脉搏测量工作无论在中医和现代医学上具有至关重要的地位。
脉搏测量仪是一种可以快速便捷测量脉搏跳动次数的电子仪器,也是心电图仪的主要组成部分。
除此之外,脉搏测量仪还在许多其他领域被广泛利用。
如无创心血管功能检测、妊高症检测、脉率监测等等,在商业方面也在不断发展,例如iWatch的上市,智能手表与智能手环越来越进入我们的日常生活。
众所周知,这些商品最大的卖点就是心率与脉搏的测算。
通过观测脉搏信号的改变,可以及时有效的观察人体健康的变化。
此类运动健身器材中心的心率测试都用到了先进的脉搏测量仪[1]。
在本设计的测量过程中,由于脉搏跳动原因导致的血液投光新不同,既有脉搏时透光性弱,无脉搏是透光性强。
传感器把得到的信号通过运放整形后输入单片机。
在本系统中,单片机是核心器件,利用其内部的定时器来计算时间,光电传感器是感应器件,它将测得的信号放大整形后传输给单片机,最后累加信号得到脉搏跳动的次数。
2设计思想
本系统设计主要实现的目标有:
测量脉搏、观察脉搏、测算脉搏、显示脉搏等功能。
1)测量脉搏:
通过手指来测量感应脉搏跳动。
2)观察脉搏:
通过发光二级管的亮灭来显示脉搏的跳动规律。
3)测算脉搏:
通过计算得到1分钟内脉搏跳动的次数。
4)显示脉搏:
通过发光二极管吧脉搏跳动次数显示出来。
基于单片机STC89C52的脉搏计由电源电路、复位电路、STC89C52单片机、晶振、脉搏感应电路、信号处理电路、显示电路和观察脉搏跳动的发光二极管组成。
图2-1本设计系统框图
3系统硬件选择方案
本系统的总体设计由单片机、LCD1602、光电传感器ST188、运放模块等构成。
图3-1系统运行流程图
3.1各模块的选择与论证
本设计的主要模块主要包括主控单片机模块、显示模块、传感器模块。
下面对各个模块的选型进行初步论证。
3.1.1单片机的选择
对于单片机的选型有两种初步方案。
方案一:
采用TI公司在1996年推向市场的MSP430系列单片机,该单片机具有16位超低功率的混合信号处理器,在它的内部集成了很多电路。
包括模拟电路、数字电路、和微处理器,这些集成电路提供了非常强大的功能。
但是它的价格比较昂贵,在一般的开发设计中不适合使用它[2]。
方案二:
采用51单片机系列。
所有兼容Intel8031指令系统的单片机统称为51单片机,此系列的单片机具有高的可靠性、低廉的价格、高性能已经无法解密等特点的高性能8为单片机,它具有32个IO接口。
其中STC系列单片机可以实现在线编程、在线调试的功能。
在程序下载与调试的过程中运用非常方便。
综上所诉,结合调试方便和性价比高的特点,本设计选用了方案二中的51系列单片机作为主控单片机模块。
3.1.2显示模块的选择
在显示模块的选择中,有三种初步方案。
方案一:
采用三位数码管作为显示器,三位数码管可以以共阴和共阳两种显示方式作为区别。
但是无论是共阴还是共阳,在接入系统时都需要连接限流电阻和7段译码74LS245的相对应驱动段。
所以在调试时,存在许多障碍。
方案二:
采用由八行八列的发光二极管所组成的点阵式数码管,这种数码管对于显示文字来说,是非常合适的。
但是价格相对昂贵,单纯的显示数字会显得过于浪费。
方案三:
采用LED数码管动态扫描。
这种数码管对于显示文字来说,也是非常合适的。
而且价格也相对便宜。
采用动态扫描法,在与单片机进行连接时占用的单片机口线也相对较少。
但也正是由于采用的是动态扫面法,所以需要借助74LS164进行移位,而74LS164在电路的调试过程中经常会出现很多问题。
方案四:
采用LCD液晶显示屏,总所周知,在显示大量文字、图形方面,液晶显示屏具有非常强大的显示功能。
在本设计中,需要显示所测脉搏的数据和单位,液晶显示屏再合适不过,而且性价比相对较高。
没有其他附加电路,这会给调试过程中带来许多方便。
综上所述有,综合显示多样清晰、调试简单快捷、价格可以接受的特点,本设计选用方案四中液晶显示屏中的LCD1602作为显示模块。
3.1.3传感器的选择
提到测量脉搏,我首先想到的是中医的切脉,通过感知脉搏的震动来检测脉搏的脉象。
于是想到了压力传感器。
但在实际制作过程中,发现由于每个个体的身体状况不同,手腕处的皮肤状况也不相同,这就给压力传感器提出了巨大而苛刻的条件。
经过很多次的尝试,还是无法解决由于个体不同而造成的传感器检测灵敏度不同的难题。
后来孟浩老师提出采用光电传感器来检测人体脉搏信号的方案。
上文提到,每个体由于年龄、性别、种族已经所从事的工作轻重不同,手腕处相应的皮肤状况也就不同。
但是有一点,那就是皮肤组织都是相同的,其中手指组织由非血液组织和血液组织组成。
非血液组织包括皮肤骨骼等,由于它们的光吸收率都是恒定的,在这里就不做探究了。
对于血液组织,相对于动脉血,静脉血的搏动是非常薄弱的,在检测过程中把它忽略,单纯的认为光透过手指后的变化仅仅是因为动脉血的充盈造成的。
因此,在恒定波长的光源照射下,通过检测透过手指的光强将可以间接测量到人体的脉搏信号[3]。
加之此类传感器购买起来相对方便,也很廉价,也就不再做进一步的选型和论证了。
在光电传感器的选型方面,我查阅了很多资料,最终选择了光敏三极管ST188作为本设计的光电传感器使用。
它的工作原理是:
当光照射到PN结上时,被吸收的光能会转换成电能,。
当在此三极管上接入方向电压,内部的电流就会随着光照增大而增大[4]。
3.2概述
经过不断的选型以及对其进行相应的论证,初步选择STC89C52作为单片机、LCD1602作为显示屏、12M晶振作为时钟标准模块、LM358作为运放模块、ST188作为传感器模块。
在使用时:
只需把手指指腹放在光电传感器ST188上面,在人体脉搏跳动过程中,由于血液的透光性不同,这就会导致接收器接收到的信号强弱不同。
再将接受到的信号通过整形电路和放大电路对信号进行处理后,传回单片机的IO口,然后单片机通过运算和换算得到此人在规定时间内的脉搏跳动次数,最终将结果显示在LCD1602显示屏上。
4系统的硬件电路设计
4.1设计原理
经过上文的论证选型处理已经对元器件的选择,本设计的初步工作原理为:
利用USB给整个系统供电;主控模块单片机,对整个系统进行对应的控制;ST188对脉搏进行检测;LM358对检测得到的信号进行放大的整形,之后传入单片机;LCD1602液晶显示屏用来显示最终的测量结果;晶振模块给单片机提供了标准的始终,以便它协调的控制各个模块的工作;复位电路提供复位功能,以便在使用时不需要开断电源;二极管通过自身的亮灭以便使用者更好的观测脉搏的跳动。
下面分别对主要模块进行设计说明。
4.2单片机主控模块
单片机模块在本设计中作为核心主控模块出现,在系统中,它起统筹作用,结合各个模块最终实现脉搏的测量和显示工作。
在本设计中,综合使用条件和价格,我选用了STC89C52作为主控单片机使用。
随着HOMS技术的飞速发展,Intel公司在48系列单片机的基础上,设计推出了51系列单片机。
后来随着核心设计被出售,市面上逐渐出现各种以51为内核而且兼容51指令的单片机。
本设计中用到的STC89C52是STC公司的一款单片机产品,该单片机有功耗低的特点;在微控制器方面,它具有高性能的CMOS8微控制器;还配备了8k在系统可编程的flash存储器。
4.2.1单片机引脚和结构
STC89C52一共有40个引脚,其中包括:
4个8位并行共32位的I/O口线;五个中断源,其中包括四个外部中断,一个7向量4级中断结构(可兼容51的传统5向量级2级中断结构);全双工异步串行口;16位定时器2个等等。
具体的引脚图如图4-1所示,基本的组成框图如图4-2所示。
图4-1STC89C52引脚图
图4-2STC89C52基本组成框图
该单片机的每个引脚功能如下:
1.时钟电路引脚XTAL1和XTAL2:
XTAL2(18脚):
接外部晶体和微调电容的一端;片内它是振荡电路反相放大器的输出端,振荡电路的频率就是晶体固有频率。
若需采用外部时钟电路时,该引脚输入外部时钟脉冲。
要检查振荡电路是否正常工作,可用示波器查看XTAL2端是否有脉冲信号输出。
XTAL1(19脚):
接外部晶体和微调电容的另一端;在片内它是振荡电路反相放大器的输入端。
在采用外部时钟时,该引脚必须接地[7]。
2.控制信号引脚RST,ALE,PSEN和EA:
RST/VPD(9脚):
RST是复位信号输入端,高电平有效。
当此输入端保持备用电源的输入端。
当主电源Vcc发生故障,降低到低电平规定值时,将+5V电源自动两个机器周期(24个时钟振荡周期)的高电平时,就可以完成复位操作。
RST引脚的第二功能是VPD,即接入RST端,为RAM提供备用电源,以保证存储在RAM中的信息不丢失,从而合复位后能继续正常运行。
ALE/PROG(30脚):
地址锁存允许信号端。
当8051上电正常工作后,ALE引脚不断向外输出正脉冲信号,此频率为振荡器频率fOSC的1/6。
CPU访问片外存储器时,ALE输出信号作为锁存低8位地址的控制信号。
平时不访问片外存储器时,ALE端也以振荡频率的1/6固定输出正脉冲,因而ALE信号可以用作对外输出时钟或定时信号。
如果想确定8051/8031芯片的好坏,可用示波器查看ALE端是否有脉冲信号输出。
如有脉冲信号输出,则8051/8031基本上是好的。
ALE端的负载驱动能力为8个LS型TTL(低功耗甚高速TTL)负载。
此引脚的第二功能PROG在对片内带有4KBEPROM的8751编程写入(固化程序)时,作为编程脉冲输入端。
PSEN(29脚):
程序存储允许输出信号端。
在访问片外程序存储器时,此端定时输出负脉冲作为读片外存储器的选通信号。
此引肢接EPROM的OE端(见后面几章任何一个小系统硬件图)。
PSEN端有效,即允许读出EPROM/ROM中的指令码。
PSEN端同样可驱动8个LS型TTL负载。
要检查一个8051/8031小系统上电后CPU能否正常到EPROM/ROM中读取指令码,也可用示波器看PSEN端有无脉冲输出。
如有则说明基本上工作正常。
EA/Vpp(31脚):
外部程序存储器地址允许输入端/固化编程电压输入端。
当EA引脚接高电平时,CPU只访问片内EPROM/ROM并执行内部程序存储器中的指令,但当PC(程序计数器)的值超过0FFFH(对8751/8051为4K)时,将自动转去执行片外程序存储器内的程序。
当输入信号EA引脚接低电平(接地)时,CPU只访问外部EPROM/ROM并执行外部程序存储器中的指令,而不管是否有片内程序存储器。
对于无片内ROM的8031或8032,需外扩EPROM,此时必须将EA引脚接地。
此引脚的第二功能是Vpp是对8751片内EPROM固化编程时,作为施加较高编程电压(一般12V~21V)的输入端[8]。
3.输入/输出端口P0/P1/P2/P3:
P0口(P0.0~P0.7,39~32脚):
P0口是一个漏极开路的8位准双向I/O口。
作为漏极开路的输出端口,每位能驱动8个LS型TTL负载。
当P0口作为输入口使用时,应先向口锁存器(地址80H)写入全1,此时P0口的全部引脚浮空,可作为高阻抗输入。
作输入口使用时要先写1,这就是准双向口的含义。
在CPU访问片外存储器时,P0口分时提供低8位地址和8位数据的复用总线。
在此期间,P0口内部上拉电阻有效。
P1口(P1.0~P1.7,1~8脚):
P1口是一个带内部上拉电阻的8位准双向I/O口。
P1口每位能驱动4个LS型TTL负载。
在P1口作为输入口使用时,应先向P1口锁存地址(90H)写入全1,此时P1口引脚由内部上拉电阻拉成高电平。
P2口(P2.0~P2.7,21~28脚):
P2口是一个带内部上拉电阻的8位准双向I/O口。
P口每位能驱动4个LS型TTL负载。
在访问片外EPROM/RAM时,它输出高8位地址。
P3口(P3.0~P3.7,10~17脚):
P3口是一个带内部上拉电阻的8位准双向I/O口。
P3口每位能驱动4个LS型TTL负载。
P3口与其它I/O端口有很大的区别,它的每个引脚都有第二功能,如下:
P3.0:
(RXD)串行数据接收。
P3.1:
(RXD)串行数据发送。
P3.2:
(INT0#)外部中断0输入。
P3.3:
(INT1#)外部中断1输入。
P3.4:
(T0)定时/计数器0的外部计数输入。
P3.5:
(T1)定时/计数器1的外部计数输入。
P3.6:
(WR#)外部数据存储器写选通。
P3.7:
(RD#)外部数据存储器读选通。
该单片机的主要性能如下:
1.一个8位的微处理器(CPU)。
2.片内数据存储器RAM(128B),用以存放可以读/写的数据,如运算的中间结果、最终结果以及欲显示的数据等,SST89系列单片机最多提供1K的RAM。
3.片内程序存储器ROM(4KB),用以存放程序、一些原始数据和表格。
但也有一些单片机内部不带ROM/EPROM,如8031,8032,80C31等。
目前单片机的发展趋势是将RAM和ROM都集成在单片机里面,这样既方便了用户进行设计又提高了系统的抗干扰性。
SST公司推出的89系列单片机分别集成了16K、32K、64KFlash存储器,可供用户根据需要选用。
4.四个8位并行I/O接口P0~P3,每个口既可以用作输入,也可以用作输出。
5.两个定时器/计数器,每个定时器/计数器都可以设置成计数方式,用以对外部事件进行计数,也可以设置成定时方式,并可以根据计数或定时的结果实现计算机控制。
为方便设计串行通信,目前的52系列单片机都会提供3个16位定时器/计数器。
6.五个中断源的中断控制系统。
现在新推出的单片机都不只5个中断源,例如SST89E58RD就有9个中断源。
7.一个全双工UART(通用异步接收发送器)的串行I/O口,用于实现单片机之间或单机与微机之间的串行通信。
8.片内振荡器和时钟产生电路,但石英晶体和微调电容需要外接。
最高允许振荡频率为12MHz。
SST89V58RD最高允许振荡频率达40MHz,因而大大的提高了指令的执行速度。
4.2.2STC89C52的中断系统
TC89C52系列单片机的中断系统有5个中断源,2个优先级,可以实现二级中断服务嵌套。
由片内特殊功能寄存器中的中断允许寄存器IE控制CPU是否响应中断请求;由中断优先级寄存器IP安排各中断源的优先级;同一优先级内各中断同时提出中断请求时,由内部的查询逻辑确定其响应次序。
在单片机应用系统中,常常会有定时控制需求,如定时输出、定时检测、定时扫描等;也经常要对外部事件进行计数。
STC89C52单片机内集成有两个可编程的定时/计数器:
T0和T1,它们既可以工作于定时模式,也可以工作于外部事件计数模式,此外,T1还可以作为串行口的波特率发生器
4.2.3STC89C52的最小系统设计
单片机最小系统有单片机、时钟电路、复位电路组成,时钟电路选用了12MHZ的晶振提供时钟,作用为给单片机提供一个时间基准,其中执行一条基本指令需要的时间为一个机器周期,单片机的复位电路,按下复位按键之后可以使单片机进入刚上电的起始状态。
图中10K排阻为P0口的上拉电阻,由于P0口跟其他IO结构不一样为漏极开路的结构,因此要加上拉电阻才能正常使用。
图4-3是单片机最小系统的电路图。
图4-3单片机最小系统
4.3LCD液晶显示屏
上文已经介绍了LCD显示屏的优缺点,本设计中也选择了该显示屏作为最终显示结果的元件。
4.3.1液晶显示原理介绍
本设计选用的LCD液晶显示屏是一种液晶显示器,所谓液晶显示器,是一种由于透光度被液晶控制,从而显示色彩。
此类显示器的优点是非常出众的,它的明暗是通过有无透光而实现的,所以明暗不变时,就不用考虑刷新率的问题。
本系统的LCD显示模块,采用的是点阵式液晶显示屏LCD1602,顾名思义是一个16*2的字符型液晶显示模块。
所谓点阵式,就是该液晶是由M*N个显示单元组成。
在使用时,屏幕上各个显示单元对应着显示RAM区的各个字节,因此没一个字节就和屏上相应位置的亮暗相对应。
从而控制显示器上应该显示的内容。
4.3.2液晶模块简介
LCD1602的核心控制器是HD44780,该控制器的指令集简单而且功能强大,可以轻松实现字符的基本功能,如闪烁,移动等。
LCD1602的引脚图如图4-4所示。
图4-4LCD1602引脚图
液晶寄存器选择控制表如表4-1所示。
表4-1寄存器选择控制
RS
R/W
操作说明
0
0
写入指令寄存器(清楚屏等)
0
1
读busyflag(DB7)、读取位址计数器(DB0~DB6)值
1
0
写入数据寄存器(显示各字形等)
1
1
从数据寄存器读取数据
4.3.3显示器与单片机的链接
单片机与LCD1602具体的链接方式如图4-5所示。
图4-5单片机与显示屏的引脚链接图
如图所示,P1.0、P1.1、P1.2与RS、R/W、EN相连。
其中RS是寄存器选择信号,R/W顾名思义是读写信号,EN是片选信号。
本模块设计要点如下:
显示模块初始化,首先清屏,再设置接口数据位为8位,显示行数为1行,字型为5×7点阵,然后设置为整体显示,取消光标和字体闪烁,最后设置为正向增量方式且不移位[10]。
向LCD的显示缓冲区中送字符,程序中采用2个字符数组,一个显示字符,另一个显示电压数据,要显示的字符或数据被送到相应的数组中,完成后再统一显示.首先取一个要显示的字符或数据送到LCD的显示缓冲区,程序延时2.5ms,判断是否够显示的个数,不够则地址加一取下一个要显示的字符或数据。
4.4信号的采集与处理
生物信号属于低频的微弱信号,脉搏信号是更加微弱的生理信号。
又因为测
量环境在外界,所以会存在一定的噪音污染,所以必须将得到的信号通过放大和滤波整形后再输入单片机。
从采集到处理到最后输出入下图所示。
图4-6信号采集处理流程图
4.4.1光电传感器
在上文中已经提到,由于每个人个体情况的不同,所以不能选用压力传感器通过检测手腕处的跳动来检测脉搏。
所以我选择了光电ST188通过检测动脉血充盈的情况来检测脉搏信号,并把检测到的信号转换成电信号。
具体的工作原理就是当把手指放在ST188的双二极管上面时,传感器收到的信号就会随着人脉搏强度的变化而变化【5】。
整个传感器原理图如图4-6所示。
图4-7传感器原理图
4.4.2放大滤波整形电路
传感器采集的初级信号是非常微弱、不规律而且有干扰的信号,无法满足单片机的要求,因此我选择了LM358构建了一个放大和滤波电路,这样就可以使传感器采集到的信号经过一系列的放大滤波和最后的整形变成适合的信号传输给单片机。
图4-7是整个信号处理电路。
图4-8信号处理电路
经过以上电路设计,初步焊接出了成品,但实际操作仍出现了不少问题,下文将解释和解决这些问题,图4-8、4-9为初步焊接图。
图4-9焊接图背面
图4-10焊接图正面
5系统软件设计
5.1软件流程设计
本设计的软件部分,采用C语言作为编程语言。
程序的大致思路是利用单片机内部计数器来计算时间,先得出十秒的脉搏次数,然后通过运算得到一分钟内的脉搏次数。
软件的总体流程图如图5-1所示。
图5-1系统流程图
系统在电源接通后,首先进行初始化,以清除参数的初值,当开始测量后,单片机通过在10s内对脉搏进行测算,得到结果后乘以6得到最终真实的脉搏次数,随后在液晶屏幕上显示结果。
5.2软件功能设计
从软件的功能上来看,可以把它们分为两种,一类是执行软件,另一类是监控软件。
执行软件主要负责完成所设计的功能,如计算功能等等。
监控软件主要是用来协调各模块之间的运转,起到统筹作用。
在编写程序时,应将执行软件和监控软件分开编写。
编写执行软件时,应该先将各个执行模块和其所需要实现的功能了解清楚,然后将此功能和其输入输出分别定义。
除此之外还要规划好所牵扯到的数据类型与结构。
把上诉问题完成之后,再继续编写监控软件。
在编写时,首先应该选择一种最适合的程序结构。
再进一步编写。
6系统调试
6.1硬件调试
本设计主要由传感器模块、信号处理模块、单片机模块和显示模块组成。
整个电路繁复,焊接工作量很大。
由在焊接的过程中,需非常严谨。
在处理电路的交线时,