基于51单片机的脉搏测量仪设计与实现毕业论文_第1页
基于51单片机的脉搏测量仪设计与实现毕业论文_第2页
基于51单片机的脉搏测量仪设计与实现毕业论文_第3页
基于51单片机的脉搏测量仪设计与实现毕业论文_第4页
基于51单片机的脉搏测量仪设计与实现毕业论文_第5页
已阅读5页,还剩64页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

基于51单片机的脉搏测量仪设计与实现毕业论文封面脉率是指单位时间内脉搏跳动的次数,一般指每分钟的脉搏次数,是临床常规检查的生理指标。脉搏监测系统在我们的日常生活中已经得到了非常广泛的应用。在医学上,通过测量人的脉搏,便可初步判断人的健康状况。本课题设计完成了一个基于51单片机的脉搏测量系统。系统以STC89C52单片机为核心,以5mm光电对管为传感器,利用单片机系统内部定时器计算时间,通过光电对管及其相关外部电路产生脉搏信号,单片机通过检测两次脉冲间隔时间计算脉搏跳动次数,在LCD上显示脉搏次数。系统实现了脉搏的实时监测与显示、阈值调整以及超限报警等功能。实验结果表明,系统工作正常,测量灵敏度高,实现了设计功能。关键词:51单片机;脉搏;光电传感器AbstractPulseratereferstothenumberofpulsebeatsperunittime,generallyreferstothenumberofpulsesperminute,andisaphysiologicalindicatorofroutineclinicalexamination.Pulsemonitoringsystemhasbeenwidelyusedinourdailylife.Inmedicine,people'shealthcanbepreliminarilyjudgedbymeasuringtheirpulse.Thistopichasdesignedandcompletedapulsemeasurementsystembasedon51single-chipmicrocomputer.ThesystemtakesSTC89C52singlechipmicrocomputerasthecore,takes5mmphotoelectricpairtubeasthesensor,usestheinternaltimerofthesinglechipmicrocomputersystemtocalculatethetime,andgeneratespulsesignalthroughthephotoelectricpairtubeanditsrelatedexternalcircuit.Thesinglechipmicrocomputercalculatesthepulsebeatingtimesbydetectingthetimebetweentwopulses,anddisplaysthepulsetimesontheLCD.Thesystemrealizesthefunctionsofreal-timemonitoringanddisplayofpulse,thresholdadjustmentandalarmreminder.Theexperimentalresultsshowthatthesystemworksnormally,hashighmeasurementsensitivity,andachievesthedesignfunction.Keywords:51Microcontroller;Pulserate;Photoelectricsensor毕业论文封面 1 2Abstract 3 4第一章绪论 6 61.2课题的研究现状 61.3本文内容 7第二章总体方案设计 82.1设计功能要求 82.2元件选型 8 8 9 2.3本章小结 第三章系统硬件设计 113.1总体硬件设计 3.2电源电路设计 3.3STC89C52最小系统模块电路设计 3.2.1STC89C52芯片介绍 3.2.2STC89C52最小系统 3.4脉搏采集电路设计 3.4.1信号采集电路 3.4.2信号放大电路 3.4.3波形整形电路 3.5LCD显示电路设计 3.6键盘电路设计 3.7本章小结 第四章系统软件设计 4.1软件开发环境介绍 4.2软件设计要求 204.3系统软件流程图 204.4脉搏采集子程序设计 4.5键盘程序设计 224.6液晶显示子程序设计 错误!未定义书签。4.7本章小结 24第五章系统调试 25 255.1.2硬件电路焊接 255.2软件调试 265.3系统调试 275.4实物测试 285.5误差结果分析 参考文献 32致谢 33附录一实物图 34 35附录三元件清单 36附录四源程序 37第一章绪论1.1课题意义在中医四诊(望﹑闻﹑问﹑切)中,脉诊占有非常重要的位置。脉诊是我国传统医学中最具特色的一项诊断方法,其历史悠久,内容丰富,是中医“整体观念”﹑“辨证论证”的基本精神的体现与应用。脉搏携带有丰富的人体健康状况的信息,自公元三世纪我国最早的脉学专著《脉经》问世以来,脉学理诊作为“绿色无创”诊断的手段和方法得到了中外人士的关注。但由于中医是靠手指获取脉搏信息,虽然脉诊具有简便﹑无创﹑无痛的特点易为患者接受,然而在长期的医疗实践中也暴露出一些缺陷。首先,切脉单凭医生手指感觉辨别脉象的特征,受到感觉﹑经验和表述的限制,并且难免存在许多主观臆断因素,影响了对脉象判断的规化。其次,这种用手指切脉的技巧很难掌握。再则,感知的脉象无法记录和保存影响了对脉象机理的研究。脉诊的这种定性化和主观性大大影响了其精度与可行性,成为中医脉诊应用﹑发展和交流中的制约因素。为了将传统的中医药学发扬光大,促进脉诊的应用和发展,必须与现代科技相结合,实现更科学﹑客观的诊断[1]。医院的护士每天都要给住院的病人把脉记录病人每分钟脉搏数的方法是用手按在病人腕部的动脉上,根据脉搏的跳动进行计数。为了节省时间,一般不会作1分钟的测量,通常是测量10秒钟时间心跳的数,再把结果乘以6即得到每分钟的心跳数,即使这样做还是比较费时,而且精度也不高。因此,开发出一款功能强大的脉搏测量仪是非常有意义的。1.2课题的研究现状随着科学技术的发展,脉搏测量技术也越来越先进,对脉搏的测量精度也越来越高,国外先后研制了不同类型的脉搏测量仪,而其中关键是对脉搏传感器的研究。起初用于体育测量的脉搏测试集中在对接触式传感器的研究,利用此类传感器所研制的指脉﹑耳脉等测量仪各有其优缺点。指脉测量比较方便﹑简单,但因为手指上的汗腺较多,指夹常年使用,污染可能会使测量灵敏度下降。耳脉测量比较干净,传感器使用环境污染少,容易维护。但因耳脉较弱,尤其是当季节变化时,所测信号受环境温度影响明显,造成测量结果不准确。过去在医院临床监护和日常中老年保健中出现的日常监护仪器,如便携式电子血压计,可以完成脉搏的测量,但是这种便携式电子血压计利用微型气泵加压橡胶气囊,每次测量都需要一个加压和减压的过程,存在体积庞大﹑加减压过程会有不适﹑脉搏检测的精确度低等缺点[2]。近年来国外致力于开发无创非接触式的传感器,这类传感器的重要特征是测量的探测部分不侵入机体,不造成机体创伤,能够自动消除仪表自身系统的误差,测量精度高,通常在体外,尤其是在体表间接测量人体的生理和生化参数。其中光电式脉搏传感器是根据光电容积法制成的脉搏传感器,通过对手指末端透光度的监测,间接检测出脉搏信号。具有结构简单﹑无损伤﹑精度高﹑可重复使用等优点。通过光电式脉搏传感器所研制的脉搏测量仪已经应用到临床医学等各个方面并收到了理想效果。1.3本文内容本文主要是介绍基于51单片机的脉搏测量仪设计与实现。本次设计结合单片机技术、传感器技术、模拟电子技术、误差分析与处理等技术,实现脉搏测量仪的数据监测与设备控制等功能。本文主要内容包括五个部分:第一章为绪论。通过本次课题的意义和研究现状,对于脉搏测量仪的发展进行分析与推理,设计出具有创意的产品。第二章为介绍脉搏测量仪的原理,通过了解脉搏测量仪的工作原理,以及与现阶段脉搏测量仪的技术成就进行研究,利用最先进化的手段实现脉搏测量仪控制达到目前所要的要求。第三章为本设计的硬件系统设计,通过选择合适的元件,进入电路图设计,根据元件的电器参数、电路设计等设计出可靠的电路图。第四章为本设计的软件系统设计,经过设计好的电路图后,就可以进行软件程序的编写,首先画出程序流程图,然后通过所学单片机知识、C语言知识,利用单片机进行数据采集,并传出显示。第五章为本设计的系统调试,通过电路分析,最后通过焊接硬件调试,总结调试过中出现的问题,以及对最终结果进行分析。第二章总体方案设计2.1设计功能要求本次设计的脉搏测量仪主要具有以下功能:1、具有智能化产品的基本特点;2、具有使用者的脉搏检测、实时显示等功能;3、具有脉搏次数超限报警功能;4、具有按键调整功能,可对当前脉搏报警上下限阈值进行调整;2.2元件选型方案一:STM32F103系列微控制器,是ST意法半导体公司推出的基于Cortex-M3内核的一款控制器,该控制器最大的一款具有512K容量flash适合高级的集成电路开发,且是一款低功耗的产品,供电只需3.0-3.6V之间[3]。图2-1STM32F103C8T6最小系统板实物图方案二:STC89C52单片机,该单片机是目前51系类单片机代表,该芯片上资源丰富,寄存器不多,适合初学者入门学习使用。并且该控制器相比传统的MCS-51芯片做出了很多的改进,例如其P0口无需上拉电阻,可实现ISP在线编程,在电路调试时方便了很多。该芯片具有低功耗、性能好的特点,内部资源具有定时器、串口、外部中断等等[4]。如下图2-2为STC89C52单片机实物图。图2-2STC89C52单片机实物图方案三:MSP430,MSP430是上美国德州仪器(TI)半导体公司推出的一款低功耗处理器,该处理器以低功耗而闻名。它是一款16位的单片机,该芯片是具有精简指令集的混合信号处理器。由于其低功耗的特点通常用于便携式产品开发。综上所述,根据本次设计的要求,选择合适的微控制器,本次设计采用使用简单、性能比较高的STC89C52系列单片机,具有8kflash的芯片STC89C52RC作为主控。方案一:透射型光电式传感器,透射型是指由光电传感器的上端的红外发射二极管发出红外光线,由于红外线穿透能力强,经过手指透射进过血液循环,由于血液随心跳的流动具有舒张和收缩作用导致不同的变化,手指内的血液浓度从而跳动,在跳动时,底部的红外接收二极管接收到信号,从而产生不同的光电信号。传感器模块实物图如下图2-3透射型光电传感器实物图方案二:采用pulsesensor红外心率传感器,该传感器是利用内部红外对管进行血流的检测,红外模块检测心率信号抗干扰能力强,并且该模块内部集成了信号放大电路、滤波电路、整形输出电路等,输出波形也很好。适用于脉搏方面的科学研究和教学演示,也非常适合用于二次开发。如下图2-3为心率传感器实物图。图2-4心率传感器实物图综上所示,选择方案一透射型光电式传感器,能应用于手指实现心率脉搏测量,测量精度较高,而方案二该传感器是一款反射式的心率传感器,虽可适用于身体多个部位测量,但测量精度相比于透射型光电式传感器较低。方案一:采用单色液晶LCD1602显示屏,该液晶屏的显示功能强大,其内部是由32个5*7点阵组成,能显示大多数的字符。该液晶可通过四线串行接口或者8线并行接口驱动,其驱动时序非常简单,适合开发者使用。LCD1602价格低廉,功耗低,是一款非常适用显示字符、数字的液晶屏。方案二:低功耗的OLED12864显示器,该OLED是一款低功耗的显示器,该显示模块是基于SSD1306芯片驱动。数据通信采用IIC接口驱动显示,具有数据通信简单等特点。采用OLED的特点是该器件采用的是二极管自行发光器件,不需要背光电源,是通过软件控制的一款显示模块。其工作电压在3.3V-5.V之间,体积小显示内容丰富[5]。方案三:采用串口型TFT彩色液晶屏,该液晶屏界面绚丽,非常适合人机界面的开发,同时利用串口两线即可驱动液晶显示,通过上位机实现界面规划,良好的操作方法是该屏的一大亮点。通过单片机串口发送简单的指令即可显示想要的内容。该液晶屏广泛用于电子产品当中,但其价格昂贵是一大重要问题。综上所述,本次设计选取的液晶是用于脉搏测量仪,考虑到设计的成本和开发难度,故而选择方案一LCD1602显示。2.3本章小结本章对设计中用到的元器件进行了一个系统性的说明。包括对主控的说明,字符型液晶器的优点,以及介绍本次设计所要用到的脉搏传感器的原理等。STC89C52单片机报警模块STC89C52单片机报警模块第三章系统硬件设计3.1总体硬件设计要实现以上的要求,通过查阅资料,对照其器件的特性、性比价、稳定性等因素,选择出了该设计的硬件方案。具有方案如下:采用STC89C52RC单片机为系统控制器单元,利用透射型光电式传感器实现使用者的脉搏测量,通过STC89C52RC内部定时器计算出实际脉搏。通过LCD显示屏实时显示当前的数据,同时具有按键切换显示和超限报警等功能;综上所述,整个硬件部分主要由单片机最小系统、脉搏采集模块、键盘模块、LCD液晶显示模块构成。硬件框图如下图3-1所示。显示模块光电传感器显示模块复位电路复位电路键盘键模块时钟电路键盘键模块3.2电源电路设计本设计对电源要求不是很高,基本的USB5V或者四节1.5V干电池供电即可完成,本设计采用USB电源线供电,如下图3-2为本设计的电源接口及开关控制电路图。P4为电源DC插口,2、3脚接地线,1脚接到开关控制脚,通过开关P3控制电源的通断,输出到VCC为系统供电,VCC为5V。图3-2电源接口及开关控制电路图3.3STC89C52最小系统模块电路设计通过上一章节介绍了,设计中主控芯片采用STC89C52RC单片机作为主控制。该型号单片机为DIP封装,内部资源足够用于本次设计。STC89C52RC芯片最高工作频率可达24MHZ,片内有4k字节在线可重复编程快擦写程序存储器。内部8k字节的闪存程序存储器,也就是说代码量可以写到8k字节,足够本次设计。3.2.1STC89C52芯片介绍STC89C52是一种低电压,高性能CMOS8位单片机,片内含8KBYTES的可反复擦写的只读程序存储器(EPROM),器件采用ATMEL公司的高密度、非易失性存储技术生产,与标准的80C51和80C52产品的指令系统和引脚兼容,芯片擦写允许程序存储器在系统内部或一个普通的非易失存储器所改写。片内置通用8位中央处理器(CPU)和FLASH存储单元,功能强大的STC89C52单片机适用于许多较为复杂控制应用场合。具有以下标准功能:8k字节Flash,512字节RAM,32位I/O口线,看门狗定时器,内置4KB的EEPROM,MAX810复位电路,三个16位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内振荡器及时钟电路。同时,STC89C52可降至0HZ的静态逻辑操作,并支持两种软件可选的节电工作模式。STC89C52RC管脚图如图3-3所示[6]。图3-3STC89C52RC管脚图3.2.2STC89C52最小系统所有的微控制器当中,单单一个微控制器芯片是不足以完成一个控制系统的。51单片机最小系统,除了微控制器芯片,还需要晶振电路、复位电路来组成一个系统。STC89C52最小系统分为时钟电路和复位电路,我们采用STC89C52RC芯片,单片机的时钟电路由一个12M的晶振和两个30P的小电容组成。由于芯片IO口内部自带上拉电阻,因此复位电路只需一个10nF电容组成。51单片机相对STM32此类单片机较为简单,MCU微处理器是整个系统的核心,相当于整个系统的“大脑”,维持着整个系统的运行,所以微控制必须能够稳定的运行,下图(图3-4)为STC89C52最小系统电路图,芯片电源为5V供电。如下图3-4为本次设计使用的STC89C52RC最小系统模块内部电路图。图3-4STC89C52RC最小系统板3.4脉搏采集电路设计设计中采用5mm的光电对管,该模块是一款光电式传感器,由红外发射二极管和红外接收二极管构成,LED发光信号波长为940nm,模块可工作在5V,在进行正常工作时,检测的信号为光透射信号,经过模块外部放大、整形、滤波等处理,最终输出模拟信号。由于本次设计采用STC89C52RC芯片为主控制,通过检测IO口低电平存在的时间并结合换算关系可实现脉搏的计算。如下图3-5所示为光电式传感器的电路设计图,主要包括低通滤波、信号放大、波形整形等三部分所构成,信号放大和波形整形通过双运算放大器LM358实现[7]。图3-5光电传感器电路设计图3.4.1信号采集电路信号采集电路关键部分在于脉搏信号的检测。本设计采用由红外发射二极管器和红外接收二极管组成的透射式光电传感器。U2、D2分别是红外发射、接收装置,由于红外发射二极管中的电流越大,发射角度越小,产生的发射强度就越大,所以对R5阻值的选取要求较高。R5选择220Ω同时也是基于红外接收二极管感应红外光灵敏度考虑。R5过大,通过红外发射二极管的电流偏小,红外接收二极管无法区别有心跳和无心跳时的信号。反之,R5过小,通过的电流偏大,红外接收二极管也不能准确地辨别有脉搏跳动和无脉搏跳动时的信号。因光电传感器输出的脉冲信号是非常微弱的信号,而且频率很低(如脉搏50次/分钟为0.78Hz,200次/分钟为3.33Hz并且还伴有各种噪声干扰,故该信号要经过R7、C5低通滤波,去除高频干扰。脉搏信号采集电路如图3-6所示。图3-6信号采集电路3.4.2信号放大电路如下图所示,RT1与R14的电阻之比为放大器的放大倍数,经过计算所得该放大器的理论值为200倍,但由于接口上5V供压不足再加上材料限制和人为的因素,该放大倍数只有20倍左右。脉搏信号放大电路如图3-7所示。图3-7信号放大电路图中C5为耦合电容,作用为隔直流通交流。使用1uF的电容,让所有的信号通过。3.4.3波形整形电路电压比较器是一种常用的集成电路。它可用于报警器电路、自动控制电路、测量技术,也可用于V/F变换电路、A/D变换电路、高速采样电路、电源电压监测电路、振荡器及压控振荡器电路、过零检测电路等。电压比较器工作原理是对两个模拟电压比较其大小并判断出其中哪一个电压高,电压小于该值时显示0V,当大于该值时显示5V,这就形成了0和5V的方波。如图3-7所示,经过低通放大后的脉搏信号整形后为0和5V的方波,脉冲高电平与心跳同步,并由红色发光二极管RED1的闪亮指示出来,即发光二极管作脉搏状态显示,心脏每跳动一次发光二极管亮一次[8]。脉搏信号波形整形电路如图3-8所示。图3-8波形整形电路3.5LCD显示电路设计本次采用字符型液晶LCD1602作为本次脉搏测量仪的显示器,LCD1602是一种专门用于显示字母、数字、符号等点阵式LCD,其1602是指LCD显示的内容为16X2,即可以显示两行,每行16个字符,常作为各类单片机实物设计的显示屏。该模块具有16个引脚,包括8位数据输入部分、LCD读写操作及使能控制部分、背光打开与关闭控制部分以及对比度调节部分。其接口如下:第1引脚GND接地;第2引脚为VCC,接5V电源正极;第3引脚VO是LCD1602液晶显示器对比度调节端,接VCC时对比度最弱,接GND时对比度最高,在使用时如果对比度过高,会因为响应速度原因使图像发生模糊,所以在使用时用R2接VCC和R1接地调整对比度;第4脚RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器;第5脚RW为读写信号线,高低电平时分别进行读操作和写操作;第6脚,EN端为使能端,高电平时读取信息,负跳变时执行指令;第7脚与第14脚,D0到D7是8位双向数据端。如下图3-9所示[9]。3.6键盘电路设计本次设计采用三个独立式按键实现阈值调整、界面切换功能。三个按键分为设置加键、设置减键、切换键。设置加键是用来对报警阈值进行设置加,设置减键是用来对报警阈值进行设置减。界面切换键可实现对上下限阈值调整界面进行切换。下图中3-10为键盘电路设计图,图中三个个按键一端接公共端GND,另一端分别接单片机的I/O。三个按键接口分别接单片机的P3^0、P3^1、P3^2引脚,当单片机的相应引脚检测到低电平时,说明该引脚被触发,从而实现相应的动作。KEYO——K3图3-10键盘电路设计图3.7本章小结本章介绍了基于51单片机的脉搏测量仪的设计与实现的硬件电路设计,通过查阅相关器件资料,通过器件的技术文档做出了电路设计,通过不断的电路焊接调试,利用万用表、示波器等设备完成最终的电路设计。包括各个模块的电路图等做出了验证,具体模块有电源电路设计、主控制电路设计、脉搏采集电路设计、LCD显示电路设计、键盘电路设计等。并根据设计好的电路进行焊接验证调试电路图,做出参数记录等。第四章系统软件设计4.1软件开发环境介绍本次设计主控制采用STC89C52RC单片机为主控制,软件以KEIL5MDK为开发平台,该开发平台特点众多,具有界面美观、使用效率高、实用性强等特点。KEIL5MDK平台支持汇编语言、C语言混合编程,也可以单独编程,是集成化非常高的编译环境。可以用于多种单片机的开发,并且该开发环境支持软件仿真和硬件仿真,是51系列单片机开发的首选平台[10]。本次设计采用的是keil5MDK开发平台,利用C语言编程规范实现对本次设计软件,该平台是51系列单片机主流开发平台,其界面美观,是51系列单片机开发者的首选。该开发平台具有开发效率高、可在线编程仿真调试等优点。首先安装好KEIL5MDK平台后,新建工程、添加头文件、创建子程序、编译、仿真、下载到电路中等步骤,联合调试到最终的结果,完成最后的测试。如下图4-1为KEIL5MDK软件调试图。图4-1KEIL5MDK软件调试图4.2软件设计要求上一章介绍了本设计的硬件电路,包括了各个模块等。通过本章节根据电路原理以及设计要求写出软件程序,本设计的设计功能具体如下:能够实现液晶实时显示数据,并能够切换显示;能够实现按键调整功能,可对当前脉搏报警上下限阈值进行调整能够实现使用者的脉搏实时检测及脉搏超限报警功能;能够实现使用者的脉搏波采集并上传到Labview上位机显示;能够实现使用者的脉搏数据存储以及掉电显示;本设计以C语言为基础,采用Keil5编译器进行编程以及数据获取,硬件上采用STC15F2K60S2为主控芯片,结合光电传感器等模块进行硬件设计,最后通过液晶显示数据将硬件和软件相结合来实现脉搏测量系统的功能。本章通过系统软件流程图的介绍,主程序的介绍、以及各个模块子程序的介绍。集合硬件写出软件程序。4.3系统软件流程图本系统设计主要采用Keil软件编写与调试程序,程序语言采取易读性和移植性更高的C语言编写。系统运行流程图如下图所示。要实现以上功能要求,系统的软件程序框图如下图4-2所示。首先进行系统初始化,系统初始化包括液晶初始化配置、定时器初始化以及串口初始化。接下来进入主程序循环。主程序循环系统中主要是脉搏信号的实时采集。利用定时器2实现脉搏脉冲信号的捕获,检测两次脉冲的间隔时间,定时器0实现有效脉搏信号的计数,最终通过计算得到实际的脉搏值,将得出的脉搏值存储在EEPROM中。利用AD开始采集原始脉搏波形并通过串口上传到Labview上位机。同时键盘子程序实时扫描,检测到切换键按下时,会切换显示;在阈值界面设置状态下,设置按键按下时上限阈值或下限阈值会相应增加减。程序执行到这里完了一次,以下列出整体软件设计的流程图,如图4-2所示:否切换键按否切换键按系统初始化得出脉搏值采集脉搏波上传labview存储数据更新是切换显示图4-2主程序流程图4.4脉搏采集子程序设计设计采用检测两次脉搏信号脉冲间隔时间计算脉搏,在采集脉搏时,其具体步骤如下:首先是初始化定时器0、2,分别定时1ms、10ms中断,之后进入循环。在循环中,如果脉搏脉冲信号存在30ms以上,在定时器1中断开始脉搏计数,同时在定时器0中断排除脉搏测量不稳定的情况,最后通过脉搏算法算出其脉搏值,在OLED上显示出来,其代码见附录二源程序,其流程图如下图4-3所示。 N 30ms有信号?NY读取脉搏计数数脉搏算法计算脉搏显示脉搏值 图4-3脉搏读取程序流程图4.5键盘程序设计按键在本系统中主要起到阈值调整、切换界面等功能。按键工作流程如下:首先在正常工作状态下,按下切换键,进入设置上下限阈值界面,OLED显示脉搏测量值、上下限阈值,通过设置加键、设置减键实现上下限阈值的调整。设置完成后最后按下切换键会回到初始界面,具体流程图如下图4-4所示。YNYN切换键按切换键按进入设置界面Y加键被按加键被按Y减键被按减键被按显示设置值N设置键按Y图4-4键盘程序流程图4.6OLED显示程序设计本次设计采用OLED屏作为显示器,本次选用的是IIC接口,四针的OLED,通过IIC实现驱动OLED,使用方式非常简单。由上一章节可知,OLED的SDA、SCL分别接STC15F2K60S2的P2^7、P2^6,通过软件模拟IIC驱动。IIC接口包括IIC起始信号、IIC停止信号、IIC读数据、IIC写数据、IIC响应信号和非响应信号。以下为OLED读取显示数据流程图,首先进行初始化配置,初始化IIC,然后配置指令。接下来进入显示数据工作中,首先确定显示显示为坐标,然后显示字体大小等信息,然后写入显示数据。其流程图如下图4-4所示IIC初始化设定显示坐标写显示数据图4-5OLED显示流程图4.7本章小结本章对整个设计的软件设计进行了详细介绍,包括主程序流程图,主程序包括了各个子模块程序,首先通过主程序的分析,将每个模块分割为几个小模块,整个程序模块化编程使程序具有可读性。每一个子程序都包含的各个传感器、模块电路的驱动程序,通过每一个部分的驱动程序,在主程序的条件下来控制所有的子程序,方便程序的修改以及问题的调试。第五章系统调试通过系统硬件设计与软件设计完成整个系统的设计,设计功能实现后需要对硬件和软件进行调试,电子系统中最关键的就是系统的测试,测试可以鉴定其工作性能以及稳定性。本章通过硬件调试和软件调试来分别对系统测试,最终得到最后的结果。5.1硬件调试本次设计采用AltiumDesigner13设计出了PCB电路板线路图,该软件是Protel99se的升级版,是一款高性能、开发方便的EDA软件,该软件仅仅能够绘制原理图、PCB等还能进行嵌入式开发。本次采用该软件绘制出来整个系统的电路图,以及PCB图,在设计过程中要注意(1)线宽规则:地线铺铜,电源线宽大于信号线宽。(2)走线不能直角,尽量45度转角。(3)电源电路和信号电路尽量隔远。(4)电源线从滤波电容布线输出。5.1.2硬件电路焊接硬件电路是系统板的核心重要部分,也是最容易出错的部分,因此在焊接过程中必须要严谨仔细,注意焊接器件时要做注意轻拿轻放。特别是在电源一块要防止电路出现短路等问题。在焊接过程中主要有一下几步:第一步:检查,选择好合适的元件后,利用万用表等仪器测量元件的特性是否完好,能够识别出器件是否正常,通过仪表仪器测出其相关值。第二步:焊接,在焊接过程中,首先焊接电源部分,电源是硬件电路中的关键,首先分清楚供电电源线的正负极,以及元器件的正负极引脚。将对应引脚焊接,最终上电测试,电压是否正常,若正常则进步下一步。不正常则继续测试。第三部:核心控制部分调试:焊接剩余相关元件的时候注意芯片引脚顺序、LED的正负极等主要问题,最终焊接完成后,将程序烧录到STM32单片机中。第四步,在一切模块都可以单独运行后,对整个系统进行整合组装,并用万用表对所有功能模块进行监测,检测其是否正常运行。此时会出现一种现象,有时在手持设计的时候会造成现象丢失不准确等随机故障,但是把其放到桌面上就不会有这些问题。经过排查后发现手指的不慎误触,会导致一些元件引脚的短路,再加上电压不高,因此不易察觉,由于造成需焊接问题,最终通过在该点位置焊接加锡丝即可[11]。焊接完成效果5.2软件调试软件调试主要在KEIL5MDK平台上进行软件bug调试,通过对软件中编译的问题进行修改和调试。本次设计主控是STC89C52RC,开发环境是基于KEIL5,通过新建工程、创建主程序、编译、下载调试等步骤,先写出一个小模块,然后点击编译按钮,然后增加完善到最后的理想结果。图5-2KEIL5MDK软件最终调试图MDK的一个强大的功能就是提供软件仿真,通过软件仿真,我们可以发现很多将要出现的问题,避免了下载到STC89C52里面来查这些错误,这样最大的好处是能很方便的检查程序存在的问题,因为在MDK的仿真下面,你可以查看很多硬件相关的寄存器,通过观察这些寄存器,你可以知道代码是不是真正有效。5.3系统调试最后一步就是硬件整体测试了,主要运用万用表、直流电源和示波器对焊接好的板子进行整体调试,主要检查每一个器件是不是都正常工作了,主要分为两个环节动态调试和静态调试。其中静态调试主要分为以下四种:1.肉眼观察。主要观看焊接点是否饱满,以及相连器件之间是否相连或者器件管脚没有焊接好,出现短路现象。2.使用万用表调试。首先查看电源是否短路,然后测量管脚是否连接正确,有没有接线错误。3.上电检查。在完成第一步和第二步都没有问题,接下来就可以上电了,上电以后观看每个器件是否正常工作,然后在逐一测试功能。4.综合检查测试。这种测试方法只适合单片机开发板开发的系统才能使用这种方法,本文不适宜用这种方法测试。动态调试。动态调试主要是静态调试没有任何问题,做最后一步检查,就是每个器件能否正常工作,能否满足我系统开发的功能,防止器件内部损坏,影响系统性能[12]。5.4实物测试通过对本次课题设计的系统设计和硬件电路设计,最终做出电路板,将电路各个模块进行焊接。在焊接时应该注意先后顺序,先焊接电路模块,将电路接口和电源开关焊接好后,接通电源。接下来利用万用表测试各个电源点是否正常,测试正常后进入下一步的焊接。焊接顺序按照先焊接电源和主控制单片机部分,先焊接小元件再焊接大元件的方式,最终焊接完成图样如下图5-3所示。在系统板在开机后,正常运行不放手指时,LCD第一行会显示“HeartRate:”,第二行不显示,如下图5-4所示为系统开机界面和数据显示主界面图。放手指时,在主界面下实时显示该系统的脉搏数据,并可以自动刷新显示脉搏测量数据。如下图所示,LCD第一行会显示“HeartRate:”,第二行会显示脉搏测量值41。(a)开机界面图(b)主界面图图5-4开机和主界面调试界面图在主界面上实时显示时,可通过按键实现其他功能,按下切换键时,LCD将切换到阈值调整界面。整个显示界面显示脉搏测量值、上下限阈值等信息,通过设置增和设置减按键可以实现上、下限阈值的调整。默认下限阈值40,上限阈值100。当脉搏测量值低于下限阈值或者高于上限阈值,蜂鸣器报警提示。如下图5-5所示为阈值调整界面。第一行显示脉搏测量值,第二行显示当前上限或下限阈值。图5-5上下限阈值调整界面5.5误差结果分析经多次测量,得到下表1:表1测量数据表实际的心率次数测量得出脉搏波次数1测量得出脉搏波次数2测量得出脉搏波次数3测量得出脉搏波次数4测量得出脉搏波次数5注:实际的脉搏次数以听诊器测出的心率次数为准。根据绝对误差公式:D=X-x其中X为实际心率次数均值,x为脉搏测量次数均值,可得出绝对误差D为1.2。由相对误差公式Er得:Er= DEr=究其原因不难发现,因为传感器与各器件无法达到理想线性,需要实测值给予线性补偿。由均方差公式得:S=sqr[]=0.59误差结果在允许范围内,基本达到设计要求。参考文献[1]陈文彬,王友赤.诊断学[M].人民卫生出版社,2002.45-90.[2]王瑞元,孙学川,熊开宇.运动生理学[M].人民体育出版社,2002.76-81.[3]李朝青.单片机原理及其接口技术.北京:北京航空航天大学出版社,2006[4]孙惠芹.单片机项目设计教程.北京:电子工业出版社,2009[5]李建忠.单片机原理及应用.西安:西安电子科技大学,2002年[6]汪会.定脉冲实现心率测量[J].科技传播,2010(17):185+188.[7]陈奕鸿,孙玉轩,周祖德,何芳.心率计脉搏测量仪[J].电子世界,2019(06):66-67.DOI:10.19353/ki.dzsj.2019.06.033.[8]朱国富,廖明涛,王博亮.袖珍式脉搏波测量仪[J].电子技术应用杂志,1998,第12卷,第1期,1-3.[9]傅扬烈主编.单片机原理与应用教程.北京:电子工业出版社.2002[10]张毅刚编著.新编MCS-51单片机应用设计.哈尔滨:哈尔滨工业大学出版社.2003:89-102[11]江思敏主编.PROTEL电路设计教程.北京:清华大学出版社.2002.9:113-118[12]肖洪兵主编.跟我学用单片机.四川:北京航空航天大学出版社.2002.9:179-201致谢在即将毕业的这段时间,非常感谢我的指导老师,在我完成这次毕业设计的过程给了我细心的指导、以及严格的要求。他对我总是耐心的要求,老师的教学作风深深影响着我,当我遇到问题老师时,他并不会直接告诉我答案,总是让我自己去查阅资料,确实,很多知识点在网上和书上都能找到。在他的指点下我满怀信心的完成的我的毕业设计。与此同时,我也独立的解决的许多问题,这样也增强了我的自我创新能力老师的热心,真诚和严谨的学术精神给我印象深刻,也正是因为这样我才能学到更多的知识,在这里再次表达对老师的感激之情!从我上大学以来,学校的每位老师都兢兢业业的指导我们的工作和学习,这让我度过了充实而有意义的大学时光,同时我的专业能力,综合素质都得到了飞跃的提升。这次撰写毕业设计,不光得到了指导老师的帮助,同时也得到了很多同学的帮助,我想如果没有他们,我不会如此顺利的完成我的毕业设计,在这里,我衷心的感谢你们,谢谢!附录一实物图附录二电路图1kP3101kP31021VCC21VCCPOWERVCCVCCR13U3VCC2VCCLS1VCCRDERDER4R4bVCC1KVCCVCCVCC6R1VCC6RY10KXL10KXLR5K130pf30R5K1+U1RESERESET10uFR7RR3R8R9CBACB424231424231314212附录三元件清单11STC89C52单片机1LM358芯片11轻触按键45mm红外接收管15mm红外发射管1有源蜂鸣器111LED(5mm红色)111103可调电位器1116p单排母座11导线若干\焊锡若干\\\附录四源程序#include<reg52.h>#include<intrins.h>//包含头文件#defineuintunsignedint#defineucharunsignedchar#defineulongunsignedlong//宏定义#defineLCD_DATAP0//定义P0口为LCD_DATAsbitLCD_RS=P2^5;sbitLCD_RW=P2^6;//定义LCD控制引脚sbitLCD_E=P2^7;sbitXintiao=P1^0;//脉搏检测输入端定义sbitspeaker=P2^4;//蜂鸣器引脚定义voiddelay5ms(void);//误差0usvoidLCD_WriteData(ucharLCD_1602_DATA);//LCD1602数据写入voidLCD_WriteCom(ucharLCD_1602_COM);//LCD1602命令写入/*1602字符显示函数,变量依次为字符显示首地址,显示字符长度,所显示的字符*/voidlcd_1602_word(ucharAdress_Com,ucharNum_Adat,uchar*Adress_Data);voidInitLcd();//液晶初始化函数voidTim_Init();定时器初始化ucharXintiao_Change=0;uintXintiao_Jishu;ucharstop;ucharView_Data[3];ucharView_L[3];ucharView_H[3];ucharXintiao_H=100;ucharXintiao_L=40;ucharnum[10];uintnum_OK=0;ucharXT=0;//脉搏上限//脉搏下限ucharKey_Change;ucharKey_Value;ucharView_Con;ucharView_Change;//按键键值//设置的位(0正常工作,1设置上限,2设置下限)voidmain()//主函数{InitLcd();Tim_Init();lcd_1602_word(0x80,16,"HeartRate:");//初始化显示TR1=1;//打开定时器while(1)//进入循环{if(Key_Change)//有按键按下并已经得出键值{Key_Change=0;//将按键使能变量清零,等待下次按键按下View_Change=1;switch(Key_Value)//判断键值{case1://设置键按下{View_Con++;//设置的位加if(View_Con==3)//都设置好后将此变量清零View_Con=0;break;//跳出,下同}case2://加键按下{if(View_Con==2)//判断是设置上限{if(Xintiao_H<150)//上限数值小于150Xintiao_H++;//上限+}if(View_Con==1)//如果是设置下限{if(Xintiao_L<Xintiao_H-1)//下限值小于上限-1(下限值不能超过上限)Xintiao_L++;//下限值加}break;}case3://减键按下{if(View_Con==2)//设置上限{if(Xintiao_H>Xintiao_L+1)//上限数据大于下限+1Xintiao_H--;//上限数据减}if(View_Con==1)//设置下限{if(Xintiao_L>30)//下限数据大于30时Xintiao_L--;//下限数据减}break;}}}if(View_Change)//开始显示变量{View_Change=0;//变量清零if(stop==0)//心率正常时{if(View_Data[0]==0x30)//最高位为0时不显示View_Data[0]='';}else//心率不正常(计数超过5000,也就是两次信号时间超过5s)不显示数据{View_Data[0]='';View_Data[1]='';View_Data[2]='';}switch(View_Con){case0://正常显示{lcd_1602_word(0x80,16,"HeartRate:");//显示一行数据lcd_1602_word(0xc0,16,"");//显示第二行数据lcd_1602_word(0xcd,3,View_Data);//第二行显示心率break;}case1://设置下限时显示{lcd_1602_word(0x80,16,"HeartRate:");//第一行显示心率lcd_1602_word(0x8d,3,View_Data);View_L[0]=Xintiao_L/100+0x30;//将下限数据拆字View_L[1]=Xintiao_L%100/10+0x30;View_L[2]=Xintiao_L%10+0x30;if(View_L[0]==0x30)//最高位为0时,不显示View_L[0]='';lcd_1602_word(0xC0,16,"WarningL:");//第二行显示下限数据lcd_1602_word(0xCd,3,View_L);break;}case2://设置上限时显示(同上){lcd_1602_word(0x80,16,"HeartRate:");lcd_1602_word(0x8d,3,View_Data);View_H[0]=Xintiao_H/100+0x30;View_H[1]=Xintiao_H%100/10+0x30;View_H[2]=Xintiao_H%10+0x30;if(View_H[0]==0x30)View_H[0]='';lcd_1602_word(0xC0,16,"WarningH:");lcd_1602_word(0xCd,3,View_H);break;}}}}}voidTime1()interrupt3//定时器1服务函数{staticucharKey_Con,Xintiao_Con;uchari,j;ucharzancun;bitflag_break;TH1=0xd8;//10msTL1=0xf0;//重新赋初值switch(Key_Con)//无按键按下时此值为0{case0://每10ms扫描此处{if((P3&0x07)!=0x07)//扫描按键是否有按下{Key_Con++;//有按下此值加1,值为1}break;}case1://10ms后二次进入中断后扫描此处(Key_Con为1){if((P3&0x07)!=0x07)//第二次进入中断时,按键仍然是按下(延时去抖){Key_Con++;//变量加1,值为2switch(P3&0x07)//判断是哪个按键按下{//判断好按键后将键值赋值给变量Key_Valuecase0x06:Key_Value=1;break;case0x05:Key_Value=2;break;case0x03:Key_Value=3;break;}}else//如果10ms时没有检测到按键按下(按下时间过短){Key_Con=0;//变量清零,重新检测按键}break;}case2://20ms后检测按键{if((P3&0x07)==0x07)//检测按键是否还是按下状态{Key_Change=1;//有按键按下使能变量此变量为1时方处理键值数Key_Con=0;//变量清零,等待下次有按键按下}break;}}switch(Xintiao_Con)//此处与上面按键的检测类似{case0://默认Xintiao_Con是为0的{if(!Xintiao)//每10ms(上面的定时器)检测一次脉搏是否有信号{Xintiao_Con++;//如果有信号,变量加一,程序就会往下走了}break;}{if(!Xintiao)//每过10ms检测一下信号是否还存在{Xintiao_Con++;//存在就加一}else{Xintiao_Con=0;//跳出此次检测}break;}case2:{if(!Xintiao){Xintiao_Con++;//存在就加一}else{Xintiao_Con=0;//跳出此次检测}break;}case3:{if(!Xintiao){Xintiao_Con++;//存在就加一}else{Xintiao_Con=0;//跳出此次检测}break;}case4:{if(Xintiao)//超过30ms有信号,判定此次是脉搏信号{//心率计原理为检测两次脉冲间隔时间计算心率,变量Xintiao_Change//第一次脉冲时为0的,所有走下面的else,第二次走这里if(Xintiao_Change==1){if(60000/Xintiao_Jishu<200){num[XT]=(60000/Xintiao_Jishu);XT++;if(XT>=5){XT=0;for(i=0;i<5;i++){flag_break=0;for(j=0;j<5;j++){if(num[j]>num[j+1]){zancun=num[j];num[j]=num[j+1];num[j+1]=zancun;flag_break=1;}}if(flag_break==0)break;}num_OK=(num[1]+num[2]+num[3]/*+num[5]+num[6]+

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论