基于单片机的心率检测系统设计毕业论文(23页).doc
-基于单片机的心率检测系统设计毕业论文-第 19 页基于单片机的心率监测系统设计摘要随着社会的发展,心率监测系统已经得到广泛的应用,但医学心率监测系统还存在着单一地点、实时性不精确等缺点。本设计就是为了克服传统心率监测系统的局限性,突出价格低廉、使用简单方便、维护成本低的特点。所设计心率监测系统采用光学感应原理做成的传感器,把心率信号转换为可测量的电信号模拟量。在CPU的选型上,使用价格低、功能强大的AT89S52单片机。利用中断和定时器功能,能够精确的计算出心率。在做出硬件和完整的软件算法后,进行了多次测试,测试结果表明,本设计能够达到预期的效果。关键词:心率监测系统;AT89S52单片机;光电传感器Design of the heart-rate monitoring system based on single chip microcomputerAbstractWith the development of society, The heart-rate monitoring system has been widely used, but the heart-rate monitoring system has a single location, real-time imprecise and other shortcomings. To overcome these limitations of conventional heart-rate monitoring system, highlight the characteristics of inexpensive, easy to use, low maintenance costs, this heart-rate monitoring system made use of an optical sensor, the heart-rate signal was directly converted into the analog electrical signals. Using interrupt and timer functions, this heart-rate was calculated accurately. After making a complete hardware and software algorithms, several tests were achieved. The test results show this design could obtain the desired effect.Keywords:Heart-rate monitoring system; AT89S52; photoelectric sensor目 录摘 要IAbstractII第1章 概述11.1 选题的背景和意义11.2 心率监测系统的设计设想11.3 心率监测系统方案的选择2第2章 心率监测系统系统结构42.1 光电心率监测系统的结构42.2 工作原理52.3 光电心率监测系统的优点52.4 光电心率监测系统的适用范围6第3章 硬件系统73.1 控制器73.1.1 AT89S52 简介73.1.2 AT89S52 的结构73.2 信号采集93.2.1光电传感器的原理93.2.2光电传感器的结构93.2.3信号采集电路93.3 信号放大103.4 波形整形电路133.5 单片机处理电路143.6 显示电路143.6.1 1602字符型LCD简介153.6.2 1602LCD的指令说明及时序153.6.3 1602LCD的RAM地址映射及标准字库表163.6.4电源模块电路原理图16第4章 软件系统174.1 主程序流程:174.2 中断程序流程184.3 显示程序流程:184.4 软件说明19第5章 抗干扰及使用方法205.1 抗干扰措施205.1.1环境光对心率传感器测量的影响205.1.2电磁干扰对心率传感器的影响205.2 使用方法20第6章 系统检验216.1 系统检验216.2 误差分析22第7章 总结与展望23参 考 文 献24附 录 A25附 录 B26附 录 C27附 录 D28致 谢33第1章 概述1.1 选题的背景和意义 心血管疾病是当今发达国家死亡率占第一位的致命疾病,在我国同样是致死率最高的疾病,世界卫生组织已将心脑血管疾病列为2l世纪危害人类生命和健康的头等疾病1。据统计,1990年全球大约死于心血管疾病的人口就高达1400万,预计到2020年,将会有2500万人口死于心脑血管疾病2。我国平均每年有100万人死于心脑血管有关的疾病,且近年来心血管疾病的发病率逐年提高,患者的年龄却逐年降低,心血管疾病对人身体健康产生的威胁也越来越大。一些人希望通过早期的措施能够及时监测到疾病的到来,从而能在最快的时间内得到医治,使自己尽快恢复健康。与此同时,中国老龄化已经到来,越来越多的老年人遭受慢性疾病的残害,如三高(高血压、高血脂、高血糖)、冠心病、慢性支气管炎等。这种疾病通常会终生伴随着患者,疾病带来的痛苦和昂贵的治疗费用不仅让病人家庭承受着巨大的财政负担,还占用社会上有限的的医疗资源,给社会带来了不必要的负担。要避免和减少三高、心脏病这类心血管疾病给人类健康带来的危害和给身心带来的痛苦,如何有效的进行早期预防、早期诊断和早期治疗正是目前医学界研究的重点课题之一,由此改进心脑血管疾病前期预防和监控手段和设施成为现在的当务之急。 过去专门用于测量心率的仪器就很少。有些人为了清楚自己的身体状况,不惜大老远的跑到医院进行复杂的各种生理指标的测量,尤其是体抗力弱的老年人和儿童,也有每天超负荷运动的专业运动员,而当他们到了医院后这些指标都是随着时间的变化而产生变化的,所以测量的指标都没有一定的可信性。而心率监测系统的出现,使复杂的心电仪功能进入日常的家庭成为可能,但基于心电工作站的模式,导致个别地区医疗诊断的不健全而变得不适用。因此,设计一种性能优良,带有自动监测、报警等功能,适合在家庭和社区条件下使用,同时适用于有隐性疾患的亚健康人群及各种作业环境下的劳动者,在其心率变异时,能及时发出警示的安全监护器,而又符合我国人均收入水平不高这一国情的心率监测系统显得尤其重要。1.2 心率监测系统的设计设想在社会经济飞速发展的当代,人们的生活水平和质量相对上个世纪都有了极大的改善,但同时多种疾病有困扰着人们,给人们的生活带来了不必要的麻烦,对于心脑血管疾病,早期的预防工作尤为重要。本设计要解决的问题是能实时监控心率脉搏的变化和对突变情况下的告警功能。本设计采用高精度、低成本、微型化的AT89S52单片机为核心来设计数心率监测系统的硬件电路。整个硬件电路采用模块化设计,分为传感器模块、电源模块、CPU模块、信号处理模块和显示模块。其软件设计由主程序、信号采集子程序、预置子程序、显示子程序模块、信号放大处理子程序等组成。信号经过传感器经信号处理电路滤波、放大,得到稳定的脉搏信号。在此设计理念上设计出了系统的总体方案,最后通过软件和硬件的调试实现了各个模块的功能。相关部分附有硬件原理电路图、PCB图、程序流程图。此心率监测系统的原理是通过红外发射管发射的红外线经过人体组织后由红外接收管接收,心率变化会使光线的强度变化。由于人体信号很微弱,因此本设计采用了两级放大芯片(主要芯片:OP07、LM324N)。在经过电子电路的处理后,再传送至单片机,由单片机的算法处理传感器传送的信号。所设想该心率监测系统可以测出心率,能够实现了预定的设计要求,这将大大减少去医院监测所花费的时间。1.3 心率监测系统方案的选择传感器方案一:随着血液在心脏中的波动,人体血液中的半透明物质的浓度也随之改变。因此,该心率监测是在人体的上述位置放到红外发射管和接收管之间,并通过检测人体组织半透明物质的变化,从而转化为数字信号给单片机处理。由于人体心率次数和计数器频率是成正比,因此把传感器采集的微弱电信号进行滤波、整形、计数和计算的值显示到LCD上就是关键的步骤,就能达到时实时检测心率的目的。传感器方案二:当人体的心脏搏动时,人体颈部的脉搏及手腕的脉搏较为明显。选择压电传感器,即压电薄膜PVDF(聚偏二氟乙烯)传感器放在上述位置,把压电传感器测到的信号转换成脉冲并进行整形、计数和显示,通过感应脉搏跳动产生的振动实现计数。从成本和制作的难易程度考虑,最终选择了用方案一。相对于方案二,方案一具有很大的易操作和低成本性。CPU方案一:AT89S52单片机作为心率监测系统的CPU是因为其低廉的价格和编程的方便性。虽然AT89S52单片机的功能是有限的,但是对于心率监测系统的功能实现是没有问题的,下面我们也会具体介绍AT89S52单片机的基本功能和由此设计涉及到的功能。CPU方案二:飞思卡尔公司的嵌入式芯片9S12XS128,此款芯片的优点是在其中的112个引脚中有专门的计数器引脚,还可以根据需要设置超频方案,使单片机运行的更快。最终选择的是AT89S52单片机,虽然9S12XS128的功能很强大,但是在设计中会发现其中的很多引脚都是用不到的,造成了很到的浪费,也增加了设计的费用,不符合设计心率监测系统的尽可能的降低生产和研发的成本设计初衷。第2章 心率监测系统系统结构心率监测系统的设计原理是通过人体心脏的搏动而产生的血液涌动,从而血液在脉搏中浓度的突变产生了脉搏波动,通过光电传感器对不同的颜色会表现出不同的波长,从而采集到心率的波动,再经过硬件的滤波、整形就能得到AT89S52单片机可以采集的电信号。当然,测量心率的1分钟内跳动的次数不可能是测量1分钟,而是通过单片机算法用60比上两次心率跳动的的时间差就得到了1分钟内心率跳动的次数了。基于该设计想法,本设计就可以从硬件再到软件开始实现。2.1 光电心率监测系统的结构此心率监测系统的传感器是用光电发接收管和光电发射管作为传感器原件,把采集到的微弱红外光经过处理转换成电信号,利用各个功能模块分别实现测量、显示、报警等功能。本系统的构成包括光电传感器模块、整形放大模块、外围电路模块、液晶显示模块、稳压电源模块部分。各模块功能如表 2.1所示:表 2.1 模块功能表模块名称模块功能光电传感器非电量(红外光)模拟量点信号的转换元件,它由红外管和红外接收管组成,把接收到的红外光按一定线性关系转换成便于测量的物理量(如电压、电流或频率等)输出信号处理把采集到的非可直接运用的模拟量信号进行一系列的处理(包括滤波、整形、放大)。单片机电路单片机的计数/中断口会根据传感器输入的电平的变化运用算法计算出心率(包括AT89S52外围电路、时钟电路、外部中断等)。液晶显示把单片机计算得出的结果显示在LCD1602上,便于直观的读出所要测量的数据。电源能够给传感器、信号处理、单片机提供的电源,可以是通过7805芯片稳压后输出的5V直流稳压电源。可以向光电传感器、信号整形、放大、单片机Vcc提供的电源。2.2工作原理本设计控制器采用AT89S52单片机,实现心率监测系统的基本测量和显示功能。心率监测系统设计框图如图2.1 所示:图 2.1 心率监测系统设计框图手指放在传感器中间,随着心脏的跳动,血管中组织液的浓度和流量也随着改变。当光线照射到手指组织上时,血管中血液饱和度的改变将引起接收管接收光强度发生变化,因此光接收脉冲和心跳的节拍相一致,当接收管接收的波长发生变化时,红外接收管的电流也跟着波动,这时红外接收管就能检测到电压的变化,从而转化为脉冲信号。该信号经滤波、放大、整形后输出给单片机的端口,单片机接收到外部中断信号后执行相应指令。CPU对输入的脉冲信号通过一系列的算法计算后,得出的心率数值在液晶上面显示。2.3光电心率监测系统的优点 相比较于传统的心率监测系统,本设计光电式心率监测系统具有下列优点:1. 可测量并显示实时心率值。2. 对人体无创伤,安全可靠。3. 心率监测系统可以重复使用且使用简单,精度高。4. 电源电压为5V直流电压,容易获得。5. 工作稳定、磨损小、使用时间长、维护方便。6. 由于硬件简单,因此外形小巧、质量轻、性价比优越。7. 测量的有效范围为50次-199次/分钟。 2.4光电心率监测系统的适用范围1. 临床心率监护。2. 体力劳动者劳动强度测定。3. 运动员运动强度测定。4. 士兵训练强度测定。5. 各种环境状态下的生理实验分析研究。6. 心理紧张状态实验分析研究。第3章 硬件系统3.1 控制器本心率监测系统的CPU选择的是AT89S52单片机。因为此心率监测系统没有其他特殊的功能实现,所需要的端口也很少,所以没有选择功能复杂的Freescale单片机。3.1.1 AT89S52 简介AT89C51是8 位的 CPU,片内有振荡器和时钟电路,工作频率为024MHz。片内有 256字节数据存储器 RAM,有8K字节程序存储器ROM,4个8位的并行I/O口(P0、P1、P2、P3),1个全双工串行通讯口,3个16位定时器/计数器(T0、T1、T2),可处理 6个中断源,两级中断优先级。低功耗的闲置和掉电模式。3.1.2 AT89S52 的结构本设计所使用的单片机的封装形式是DIP40,如图3.1:图3.1 AT89S52 的封装形式AT89S52单片机40脚。如表3.1所示:表3.1 单片机引脚引脚名称引脚个数Vcc, GND2XTAL1, XTAL22RESET1EA/Vpp1ALE/PROG1PSEN1P0.0P0.78P1.0P1.78P2.0P2.78P3.0P3.78P3口也可作为特殊的功能口,如下列所示:口管脚 备选功能P3.0 RXD(串行输入口)P3.1 TXD(串行输出口)P3.2 /INT0(外部中断0)P3.3 /INT1(外部中断1)P3.4 T0(记时器0外部输入)P3.5 T1(记时器1外部输入)P3.6 /WR(外部数据存储器写选通)P3.7 /RD(外部数据存储器读选通)P3口同时为闪烁编程和编程校验接收一些控制信号RST:复位输入。当振荡器工作时,RST引脚出现两个机器周期以上高电平将使单片机复位。Vcc,GND:正电源端与接地端(+5V)XTAL1, XTAL2:片内振荡电路输入、输出端 CPU按照一定的时钟节拍与时序进行工作:时钟周期: Tc = 晶振频率fosc的倒数机器周期: Tm = 12个时钟周期(Tc)指令周期:Ti:执行一条指令所需的机器周期(Tm)数例:晶振频率是12M时,一个机器周期需要多长时间? Tc = 1/fosc = 1/12Mhz Tm = 12XTc = 12X1/12Mhz = 1us3.2 信号采集3.2.1光电传感器的原理依据朗伯一比尔(LamberBeer)定律,物质在一定波长处吸收光的强度和它的浓度成正比。当波长不变的光线照射到机体上时,通过人体组织的吸收、反射、衰减后,测得的光强可以反映组织的结构特征。心率主要由机体心脏节奏性波动产生的,而动脉也会跟随着节奏型的跳动。在人体指尖和耳垂的部位动脉分布比较密集,光线通过手指后可检测到的几率相对其他部位更为明显,因此本次设计的传感器应用在人体的手指尖部是最理想的位置。3.2.2光电传感器的结构应用在采集部分的传感器是由红外接收管和红外发射管组成。采用GaAs红外发光二极管作为光源时,可以大大减少因为呼吸产生的心率漂移。红外接收管在红外光线的照射下能产生微弱的电压,它的特点是将光信号转换为电压信号。此课程设计中,传感器的发射管和接收管相向摆放,这样就能得到最好的的光线接收效果。当光线从发射管发出后,手指的血液组织吸收掉一部分的光线外,也有一部分的光线会被红外接收管感应到。光电心率传感器可以分为透射式和反射式两种原理制作而成8。综合上述考虑本设计采用了透射型光电传感器, 这样不仅检测的时候方便快捷,在抗干扰上也很出色。因此,光电式传感器的结构图就如图3.2所示。图3.2 透射式光电传感器3.2.3信号采集电路图3.3是脉搏信号的采集电路,D1,Q3分别是红外发射二极管和红外接收管,当红外发射二极管中的电流越大,发射角度越小时,产生光线的强度就越大,所以对R6电阻的阻值选取精度较高。R6选择330,是基于红外接收管感应红外光灵敏度考虑的。R6过大,分得的电流就偏大,通过红外发射管的电流就会偏小,红外接收管就不能区别出电流信号是心率引起的还是非心率振动引起的。反之,R6选取的过小,通过的电流就会偏大,原因和R6选取过小相同。当手指离开传感器或检测到较强的干扰光线时,输入端的直流电压会出现很大变化,为了防止信号不致泄露到LM358输入端而造成错误指示,用C6耦合电容把它隔断10。传感器电路图如图3.3所示:图3.3 信号采集电路3.3信号放大 正常情况下人体的心率为50200次/分钟,对应的频率范围在0.83Hz3.33Hz之间,所以红外传感器采集到的红外频率就会很低。为了防止传感器受到外部高频信号以及光线干扰,设计稳定可靠地滤波、放大电路成为必然。要考虑到强光对其测量的干扰以及噪声等不可预知的干扰以外,低频信号需要经过多倍放大和整形,处理完的信号才能传送给单片机的处理模块。运算放大器选用的是具有两级放大功能的LM358,使用单电源供电。主要参数和特性如下:LM358 内部包括有两个独立的、高增益、内部频率补偿的双运算放大器,该芯片采用单电源供电,这样就节省了制作双电源的麻烦,但同时也适用于双电源工作模式。表 3.2 LM358引脚功能说明 5引脚序号英文缩写集成电路引脚功能电阻参数(K)直流电压参数(V)正笔接地负笔接地有信号无信号AMPout1放大信号(1)输出1776.56.5IN1-反向信号(1)输入197.56.56.5IN1+同向信号(1)输入4.94.96.36.3GND接地0000IN2-反向信号(2)输入4.94.96.36.3IN2+同向信号(2)输入5886.46.4AMPout2放大信号(2)输出186.96.46.4Vcc电源电压+12V0.430.4312123.3.1 放大电路在正常情况下,人体最大心跳频率可以达到200次/分钟,基于这种前提我们可以设计出想要的低通滤波电路,如图3.6所示。可调电位器RW1、C2,C3,C4组成低通滤波器滤除大部分干扰,截止频率由R4、C3,C2,C4决定,运放LM328将信号进行两次放大,放大倍数由R4和RW1的比值决定。低通放大电路图。如图3.4所示:图3.4 低通放大电路根据一阶有源滤波电路的传递函数,可得: (3-1)放大倍数为: (3-2)截止频率为: (3-3) 如果按照心率跳动频率为200次/分钟的频率计算3.3 Hz考虑,低频特性能够达到设计的要求。经过低通放大输出后的信号为掺杂有噪声的脉动正弦波。3.4 波形整形电路波形整形电路如图3.5所示,U3B是一个电压比较器,在电压比较器的负向电压输入端通过R3、R5分压得到2.5V的基准电压,放大后的信号通过C5电容耦合进入比较器,当输入的电压低于2.5v时,U3B的第七引脚输出高电平,发光二极管L2亮,并且输入单片机进行运算处理,反之输出低电平,发光二极管灭。图3.5 波形整形电路经过比较器U2B的输出波形:图3.6 示波器采集波形3.5单片机处理电路 如图3.7所示,中央处理器芯片采用了爱特梅尔(ATMEL)公司的AT89S52单片机作为CPU,此单片机不仅价格便宜,也能足够满足设计的要求和目的,且运算的速度和精度都能达到要求,并且可以根据实际情况进行编程,所用外围元件少,功耗低,故障率低。传感器采集到的脉冲经过整形和滤波后被输出到单片机AT89S52的/INT0脚,单片机设为低电平跳变中断触发模式,对脉冲进行计算,然后P0口控制液晶显示。图3.7 单片机处理电路3.6 显示电路此次设计采用了液晶显示,如图3.8。图3.8 显示电路3.6.1 1602字符型LCD简介1602字符型LCD液晶显示模块是一种专门显示数字、符号、字母且不带字库的一款价格低廉的液晶,本设计采用16列*2行的字符型LCD1602带背光的液晶显示屏。1602LCD主要技术参数:显示容量:16×2个字符芯片工作电压:4.5-5.5 V工作电流:2.0 mA(5.0V)模块最佳工作电压:5.0 V字符尺寸:2.95×4.35(W×H) mm3.6.2 1602LCD的指令说明及时序读写操作时序如图3.9和3.10所示:图3.9 读操作时序图3.10 写操作时序3.6.3 1602LCD的RAM地址映射及标准字库表1602LCD液晶是一个慢显示器件,因此在执行每条指令之前一定要确认模块的忙标志位为0电平,表示现在不忙,处于可操作状态,否则此指令发送失败。若要显示字符或者数字,首先要做的是给液晶发送地址指令,让字符显示的位置确定,图3.11是LCD的内部显示地址。图3.11 液晶内部显示地址3.6.4 电源模块电路原理图 78xx系列在设计电路时应该注意以下事项: 1、一般稳压5V使用的是7805。由于输出的是5V,输入的电压就不能太大,太 大则转换效率降低,稳定性能也会降低,而且容易损坏稳压芯片。2、负载电流不易过大,最大输出电流控制在1.5V以内。当负载连刘过大时,应该配备大的散热装置,不然会导致芯片过热而损坏。图 3.12 电源模块第4章 软件系统4.1 主程序流程:单片机中的存储器以及可操作的I/O口集成在一片芯片上,不易受环境条件的影响。开机进入主程序时,主程序一直执行的是检测按键和读液晶的程序,传感器的采集主要是在中断里进行,这样有利于提高单片机的执行效率。流程如图4.1所示。图 4.1 主程序流程图4.2 中断程序流程传感器采集程序是在外部中断进程中完成对外部电平变化进行测量和计算工作的,当外部有脉搏振动是就会产生一个脉冲信号,触发单片机的外部中断,计数器自动加1,外部中断采用边沿触发的方式。流程如图4.2所示。图 4.2 INT中断程序流程图4.3 显示程序流程:显示程序主要是显示此次测量心率的次数,在一定的时间后,从寄存器中重新取出最新的测量结果显示在液晶显示器上面。流程如图4.3所示。图 4.3 显示程序流程图4.4 软件说明本程序采用C语言编程,它具有非常好的可读性。C语言是一种结构化程序语言。它的层次分明,方便于按模块化的方式组织程序,在实际维护和调试时也很方便。C语言具有很好的编译性,是计算机最低层的语言,编写简单易懂,而且处理效率极高。它具有大量的运算符和数据类型,方便于实行多种复杂的数据结构。C语言同样还可以直接访问内存,进行位操作。由于C语言可以对硬件的编程进行操作,所以C语言能都实现一切转换为机器语言的代码,逻辑性强。适用于系统软件和应用软件的开发。第5章 抗干扰及使用方法5.1抗干扰措施为了达到高精度的测量数据,首先是从硬件下手,硬件是软件的基础,没有硬件的支持,软件只是纸上谈兵,只有硬件做的好,才能提高监测系统的精确度。 5.1.1环境光对心率传感器测量的影响 想要减少环境光对信号测量的影响,考虑到传感器使用的方便性,本打算是在暗盒中进行测量,但那样就不能很好地体现出设计的方便性了。在曝光的情况下测量就要考虑到各种干扰因素,所以硬件的完美盒软件算法的结合才能减少不必要的测量误差。 5.1.2电磁干扰对心率传感器的影响光电式传感器得到的电信号模拟量是比较微弱的,而经过整形、放大后的信号由于受到硬件的干扰也是比较强的,所以在硬件电路设计的时候尽量不用对电路影响比较大的感性负载和容性负载。 正常情况下心率的频率会在0.3-30Hz之间,也就是小于家用电网频率50Hz,因此在知道大环境的工频干扰之后就可也设计出信号的调理电路,这在信号调理电路中很容易通过硬件的方式实现;为了节能环,减少电路的整体功耗,在传感器信号调理中进行脉冲调剂,可以在一定程度上减少外界的电磁干扰。5.2使用方法测量仪接通电源后,数码管全部显示0。把手轻轻置于右下角的传感器中,以稍微有压迫感为宜,这时就可以看到红色发光二极管闪烁,这是根据心率而发出的信号,可以清楚看到自己心率跳动的速度,随后按下复位键,单片机和显示部分就开始分别工作,单片机开始计数,相应的数码管会显示出心率和测试时间。如果偶尔出现不稳的情况,可以通过按复位键对系统进行复位。第6章 系统检验6.1 系统检验系统上电后等待测试状态,如图6.1所示:图6.1测量中显示的数据,如图6.2所示:图6.2图6.36.2 误差分析实际的心率次数测量得出心率次数1测量得出心率次数2测量得出心率次数3测量得出心率次数4测量得出心率次数5656464636563727071696970767675757473818080798180858383858284注:实际测量出的心率次数以医学听诊器得出的数据为参考。由于光电式传感器和一些类似的传感器本身和信号并非完全理想线性,在实际编写程序时进行了衰减补偿。由均方差公式得: =0.59误差分析:经校准,非线性补偿后,误差已基本达到要求。第7章 总结与展望单片机运用简单,价格低廉,只要有C语言基础和一般硬件操作基础的都能够实现简单的功能。使用1602LCD液晶显示器,可以随时方便观察心率周期性的变化。当测量结束时候,如果测量的值超过一定的范围,就会报警功,这样就可以在早期起到了预防的作用,在测量时,手腕手指手掌等身体移动都会影响测量,因此在测量时需要防止其他部位移动。通过这次的毕业设计,不仅锻炼了自己的动手能力也大大提高了自己搜索和筛选信息的能力,这不仅是对本次设计的所能获得的,而且在日后的工作以及生活中都是大有益处的,尤其在遇到瓶颈的时候,自己百思不得其解的情况下,能向自己的同学和导师请教一下,思路一下就豁然开朗了。经过了几个月的的毕业设计,自己也收获了很多友谊,结交了很多新的朋友。主要是对过程的控制,以前都是直接在单片机上进行调节的,并没有接触到内存的控制,此次的设计中绝大部分是自己摸索出来的,从如何将模拟量转换成单片机可识别的数字量,通过上网查找和阅读书籍、请教老师才能将问题解决,这是真正的自我学习。这种学习方法一定会用到以后的工作中去。在此系统中还是有很多可以改进和扩展的地方,比如增加串口的发送功能,能够远程的实时监控心率,这样更有利于对有心脏问题而又不能时时有人看护的病人。当然也可以增加体温的测量和监控,这样的设计就是方便于医院护理的使用,当然单片机是可以扩展内存的,可以把历史的数据保存起来以便于日后查看以前某个时刻的心率。参 考 文 献1 余发山. 单片机原理及应用技术M 徐州:中国矿业大学出版社, 2003.2 饶连周. 基于单片机的语音心率检测仪的设计J. 三明学院学报, 2005,22(4):18-223 何忠蛟. 基于单片机控制的心率计J. 邵阳学院院报(自然科学版)2008,5(2):28-294 朱国富, 廖明涛, 王博亮. 袖珍式脉搏波测量仪J. 电子技术应用, 1998,(1):1-35 刘云丽, 徐可欣等. 微功耗光电式脉搏测量仪J. 电子测量技术,2005,(2),2-5.6 任为民.电子技术基础课程设计M. 北京:中央广播电视大学出版社,1997.7 张毅坤. 单片微型计算机原理及应用J. 西安:电子科技大学出版社,1998.8 刘文, 杨欣, 张铠麟. 基于AT89C2051单片机的指脉检测系统的研究J. 医疗装备, 2005.9 朱月秀. 单片机原理与应用M. 北京: 科学出版社, 2004.10 Analog Device. ADuC841_2_3_a data sheetM. Analog Device 2003,20-45. 11 Accelerated C+M. Practical Programming by Example Pearson Eduction 2006, 12-34附 录 A电路原理图附 录 BPCB原理图附 录 C整体样式附 录 D参考程序心率监测系统的信号处理、算法、以及显示程序如下#include<reg52.h>#include<stdio.h>#include<intrins.h>#include"lcd1602.H"#define uchar unsigned char#define uint unsigned int#define ulong unsigned long unsigned int i,n,ci,dd11,jj,j,k,tmp;bit w=0; /标志位uchar bh;ulong time;sbit spd = P12;/蜂鸣器端口/*外部中断*/external0() interrupt 0/外部中断服务程序 w=w; / 取反if(w=0) EX0=0; / 清除计算相关寄存器 ET0=1; TH0=0x0; TL0=0x0; n=0;else time=n*65536+TH0*256+TL0; /计算两次心率跳动的时间间隔(单片机定时计数器计数值)ddjj=30000000/time; /计算出1分钟,即60s的心率跳动次数 jj+;if(jj>10) jj=0; for(j=0;j<11;j+) /冒泡法排序 for(k=0;k<11-j;k+) if(ddk>ddk+1) tmp=ddk; ddk=ddk+1; ddk+1=tmp; if(dd5>50&&dd5<200)ci=(dd4+dd5+dd6)/3)+11; / 在一定的条件下,取出中间的值取平均值,并加以修正TH0=0x0; TL0=0x0;n=0; / 计数器清零/*定时器中断*/void timer0(void) interrupt 1 n+; /加1/*延迟函数*/void delay(void) /误差 0us 延时函数 unsigned char a,b,c; for(c=123;c>0;c-) for(b=116;b>0;b-) for(a=9;a>0;a-);/*主函数*/void main(void)InitLcd();/ 液晶初始化DelayMs(15); /延时IT0=1; /INT0下降沿中断EX0=1; /允许INT1中断TMOD=0x1; / 设定定时器工作方式TH0=0x0;TL0=0x0; TR0=1; /开定时器ET0=1;EA=1; /开总中断while(1) if(n>10) n=0; jj=0; ci=0; TimeNum0='H' TimeNum1='e' ; TimeNum2='a' ; TimeNum3='r' ; TimeNum4='t' ; TimeNum5=' ' ; TimeNum6='r' ; TimeNum7='a' ; TimeNum8='t' ; TimeNum9='e' ; TimeNum10=' ' ;/显示英文字符 ShowString(0,TimeNum); ShowString(1,Test1); else if(w=0&&EX0=0) delay(); EX0=1; TimeNum10=':' ; ShowString(0,TimeNum );WriteCommand (0x80+0x40+5);/write command 第二行显示 WriteData (LCD1602_Tableci/100); /write data 显示测量结果WriteData (LCD1602_Tableci%100/10); /write dataWriteData (LCD1602_Tableci%10); /write dataWriteData ('/'); /write dataWriteData ('m'); /write dataWriteData ('i'); /wri