为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

基于C51单片机的脉搏测量仪设计 (1)

2012-12-23 26页 doc 1MB 128阅读

用户头像

is_143311

暂无简介

举报
基于C51单片机的脉搏测量仪设计 (1)桂林电子科技大学课程设计(论文)报告用纸 第 9 页 共 27 页 摘 要 脉搏传感器采样脉搏信号,采用STC89C51单片机作为控制器,脉搏传感器输出方波传入单片机,单片机每接收一个脉冲波形,数码管就计数一次。脉搏次数超限时用蜂鸣器报警。三极管加大功率 ,驱动器件工作。单片机软件设计,设置中断向量,编程执行。 关键词:STC89C51单片机、脉搏测量仪、软件设计 Abstract: Pulse sensor sampling pulse signal, using STC89C51 MCU ...
基于C51单片机的脉搏测量仪设计 (1)
桂林电子科技大学课程设计(论文)报告用纸 第 9 页 共 27 页 摘 要 脉搏传感器采样脉搏信号,采用STC89C51单片机作为控制器,脉搏传感器输出方波传入单片机,单片机每接收一个脉冲波形,数码管就计数一次。脉搏次数超限时用蜂鸣器报警。三极管加大功率 ,驱动器件工作。单片机软件设计,设置中断向量,编程执行。 关键词:STC89C51单片机、脉搏测量仪、软件设计 Abstract: Pulse sensor sampling pulse signal, using STC89C51 MCU as controller, pulse sensor output square wave into single chip microcomputer chip, each receiving a pulse waveform, digital tube counting time. Pulse frequency overrun with buzzer alarm. The three transistor to increase power, driving device. MCU software design, set the interrupt vector, programming executive. Key words: STC89C51 monolithic integrated circuit. pulse measuring instrument. Software design. 目 录 1引 言 11 系统选择与论证 11.1 任务 11.2 要求 11.3 系统基本方案 11.3.1各个部分电路的方案选择及论证 21.3.2系统各模块的最终方案 32.系统硬件设计 32.1单片机处理电路 32.1.1STC89C51系列单片机的主要性能特点 42.1.2C51系列单片机的基本组成 62.2 复位电路 62.2.1单片机复位电路 72.2.2测试复位电路 72.3 振荡电路 82.4 脉搏传感器部分 82.4.1HK-2000A 集成化脉搏传感器 92.4.2脉搏传感器接收电路 102.4.3电源电路 102.5显示报警部分 102.5.1数码管显示电路 112.5.2报警电路 113 软件设计 113.1 程序设计 133.2 程序调试 184结 论 19谢 辞 20参考文献 21附 录 引 言 脉搏波所呈现出来的形态、强度、速率和节律等方面的综合信息,能反映出人体心血管系统中许多生理疾病的血流特征。本系统采用STC89S51单片机为核心而制作的一种实用型脉搏测量仪。采用HK-2000A 集成化脉搏传感器作为传感器对人体的脉搏心率警醒数据采集。得到的信号送入STC89S51单片机进行处理。单片机将采集到的脉搏心率在数码管上实时显示出来,同时还设置了脉搏测量仪的上下限报警电路。本文首先描述本设计的整体思路,然后介绍各个部分设计中的细节问题,最后提出一些完善本设计的改进意见。 从脉搏波中提取人体的生理病理信息作为临床诊断和治疗的依据,历来都受到中外医学界的重视。几乎世界上所有的民族都用过“摸脉”作为诊断疾病的手段。脉搏波所呈现出的形态(波形)、强度(波幅)、速率(波速)和节律(周期)等方面的综合信息,在很大程度上反映出人体心血管系统中许多生理病理的血流特征,因此对脉搏波采集和处理具有很高的医学价值和应用前景。 1 系统方案选择与论证 1.1 任务 基于C51单片机的脉搏测量仪设计 1.2 要求 (1)通过脉搏传感器采样脉搏信号,设计脉搏波检测电路,通过数码管来显示脉搏次数。 (2)将脉冲波送入单片机,采用单片机构成脉搏检测仪,要求实时脉搏次数对超限时用蜂鸣器报警。 1.3 系统基本方案 根据题目的要求系统模块可以基本划分为:脉搏传感器部分、单片机处理电路部分及显示电路部分。为实现各模块的功能,分别做了几种不同的设计方案病进行了论证 1.3.1各个部分电路的方案选择及论证 (1)脉搏传感器部分 传感器又称为换能器、变换器等。脉搏传感器是脉搏检测系统中重要的组成部分,其基本功能是将切脉压力和桡动脉搏动压力这样一些物理量(非电量)转换成为便于测量的电量。脉搏传感器的精度、灵敏度、抗干扰能力及安装方式决定了脉搏测量精度,因此其选型对整个设计具有决定性的作用。 本设计中,采用HK-2000A 集成化脉搏传感器,HK-2000A 集成化脉搏传感器采用高度集成化将 力敏元件(PVDF压电膜)、灵敏度温度补偿元件、感温元件、信号调理电路集成在传感器内。压电式原理采集信号,模拟信号输出,输出同步于脉搏波动的脉冲信号,脉搏波动一次输出一正脉冲。该产品可用于脉率检测,如运动、健身器材设备中的心率测试。 (2)单片机选择 51单片机是INTEL公司生产的。它具有结构简单,价格便宜,易于开发的特点。通用型,有总线扩展,有较强的位处理功能,有全双工异步串行通信口。但是其功能相对较少,访问外部数据有瓶颈,作电压范围窄。 本设计中,单片机只需要对脉搏信号的波动频率进行测量、计算和显示,对单片机的要求不是很高。而对51单片机,本人比较熟悉,所以,本设计中选择51单片机作为信息处理中心。 (3)显示部分 根据题目要求,设计出来的系统是可以设定报警的范围的。对显示部分采用以下方案:采用数码管。数码管具有功耗小、轻薄短小无辐射危险,简单方便等特点。 1.3.2系统各模块的最终方案 根据以上分析,结合器件和设备等因素,确定如下方案: 1. 采用STC89C51单片机作为控制器,分别对输入、显示、信号的处理和控制。 2. 传感器部分采用光HK-2000A 集成化脉搏传感器,该器件结构简单、可靠性高、抗干扰能力强。 3. 显示用数码管显示实时脉搏数和蜂鸣器报警上下限数值。 系统的基本框图如下图1.1所示。 图1.1设计框图 2.系统硬件设计 2.1单片机处理电路 单片机处理电路如图2.1所示 图2.1单片机处理电路 2.1.1STC89C51系列单片机的主要性能特点 STC89C51系列单片机是宏晶科技推出的新一代超强抗干扰、高速、低功耗的单片机,指令代码与传统8051单片机完全兼容。 MCS-51的主要特点为: ◆CPU为8位; ◆片内带振荡器,频率范围为1.2~12MHz; ◆片内带128字节的数据存储器;(RAM) ◆片内带4KB的Flash程序存储器;(ROM) ◆程序存储器的寻址空间为64KB;(需要扩展ROM) ◆片外数据存储器的寻址空间为64KB;(需要扩展RAM) ◆128位(16字节)用户位寻址空间;(在128个字节中) ◆18个字节特殊功能寄存器SFR(MCS—52子系列为21个); ◆4个8位的并行I/O接口:P0、P1、P2、P3; ◆2个16位定时器/计数器T0、T1;(MCS-52子系列为3个,T2) ◆2个优先级别的5个中断源;(高、低2个) ◆1个全双工的串行I/O接口,可多机通信; ◆片内采用单总线结构; ◆有较强的位处理能力; 2.1.2C51系列单片机的基本组成 图2.2框图 图2.3 DIP管脚图 AT89C51与51系列中各种型号芯片的引脚互相兼容。目前多采用40只引脚双列直插,如图2.3所示。 引脚按其功能可分为如下3类:【要熟练记住】 ①电源及时钟引脚—-VCC、VSS;XTAL1、XTAL2; ②控制引脚—- 、 、 、和 ; ③I/O口引脚——P0、P1、P2、P3,为4个8位I/O口。 1. 电源引脚 VSS(20脚):接地,0V参考点。 VCC(40脚):5V电源。【提供掉电、空闲、正常工作电压】 图2.4总线分布 2.外接晶体引脚 XTAL1(19脚):接外部晶体振荡器的一端。当使用芯片内部时钟时,此脚用于外接石英晶体振荡器和微调电容;当使用外部时钟时,对于HMOS单片机,此引脚接地;对于CMOS单片机,此引脚作为外部振荡信号的输入端。 XTAL2(18脚):接外部晶体振荡器的另一端,当使用芯片内部时钟时,此脚用于外接石英晶体振荡器和微调电容。当使用外部时钟时,对于HMOS单片机,此引脚接外部振荡源;对于CMOS单片机,此引脚悬空不接。 89C51晶体振荡器频率可在6MHZ~40MHZ之间选择,常选6MHz或12MHz的石英晶体。电容的值没有严格要求,但其取值对振荡器的频率输出的稳定性、大小、振荡电路起振速度稍有影响,C1、C2可在20pF~100pF之间选择。当外接晶体振荡器时,电容可选30pF±10pF;外接陶瓷振荡器时,电容可选40pF±10pF。 3. 控制信号或与其它电源复用引脚 (1) (9脚):复位端。当输入的复位信号持续2个以上机器周期(12个晶体振荡周期)高电平即为有效,用于完成单片机的复位初始化操作。正常工作时,此脚电平应 ≤ 0.5V。 在VCC发生故障、降低到电平规定值掉电期间,此引脚可接备用电源VPD(电源范围5V±0.5V),由VPD向内部RAM供电,以保持内部RAM中的数据。 (2) (30脚):地址锁存使能。 ALE(Address Latch Enable);PROG(Program) 为CPU访问外部程序存储器或外部数据存储器提供地址锁存信号,将低8位地址锁存在片外的地址锁存器中。 引脚第二功能,对片内 Flash编程,为编程脉冲输入端。 (3) (29脚):(Programmer Saving ENable),外部程序存储器读选通信号。 在读外部程序存储器时有效(低电平),以实现外部程序存储器单元的读操作。 在访问外部数据存储器、访问内部程序存储器时 无效。 (4) (31脚):(Enable Address/Voltage Pulse of Programming) 访问程序存储控制信号。 当 =“0”时,示读外部程序存储器。 只读取外部的程序存储器中的内容,读取的地址范围为0000H~FFFFH(64KB),片内的4KB Flash 程序存储器不起作用。 当 =“1”时,表示对程序存储器的读操作是从内部程序存储器开始,并可延至外部程序存储器。 在PC值不超出0FFFH(即不超出片内4KB Flash存储器的地址范围)时,单片机读片内程序存储器(4KB)中的程序,但当PC值超出0FFFH (即超出片内4KB Flash地址范围)时,将自动转向读取片外60KB(1000H-FFFFH)程序存储器空间中的程序。 对于EPROM(或FLASH)型单片机,在EPROM编程期间,此引脚需加12.75V或21V的编程电压。 2.2 复位电路 2.2.1单片机复位电路 图2.5 单片机复位电路图 时钟电路工作后,在REST管脚上加两个机器周期的高电平,芯片内部开始进行初始复位(如图2.5)。 2.2.2测试复位电路 图2.6 测试复位电路图 单片机程序里通过检测该口,判断是否有按键按下,如按下开始计数工作,如一直未按则一直在此等待如图2.6。 2.3 振荡电路 图2.7 振荡电路图 本设计晶振选择频率为11.0592MHz,电容选择30pF如图2.7。经计算得单片机工作机器周期为: 11.0592×(1÷11.0592M)=1us。 2.4 脉搏传感器部分 2.4.1HK-2000A 集成化脉搏传感器 HK-2000A 集成化脉搏传感器采用高度集成化工艺将力敏元件(PVDF 压电膜)、灵敏度温度补偿元件、感温元件、信号调理电路集成在传感器内。压电式原理采集信号,模拟信号输出,输出同步于脉搏波动的脉冲信号,脉搏波动一次输出一正脉冲。该产品可用于脉率检测,如运动、健身器材设备中的心率测试。 图2.8HK-2000A 集成化脉搏传感器 图2.9波形图 主要特点: ƒ 模拟脉冲信号输出 ƒ 灵敏度高 ƒ 抗干扰性能力强 ƒ 过载能力大 ƒ 一致性好 ƒ 性能稳定可靠,使用寿命长 技术指标: ƒ 电源电压:3~12V DC ƒ 压力量程:-50~+300mmHg ƒ 过载:100 倍 2.4.2脉搏传感器接收电路 图2.10脉搏传感器接收电路 HK-2000A型脉搏传感器输出方波传入单片机,单片机每接收一个脉冲波形,数码管就计数一次,当一分钟结束后,单片机停止接收信号,数码管也停止计数,如果需要重新计数,再次按下测试按键开关。脉搏传感器输出波形清晰,较完整,不需要进行信号波形放大与调整。需要注意脉搏传感器3个接口位置。如图2.10所示:黑线1号接地,红线3号电源,黄线2号接单片机。 2.4.3电源电路 图2.11电源电路 采用USB电源接口,电容的作用是滤波 ,从外界进来的电流,电压可能不稳定,接上电容是为了保证后面的电路电压相对稳定,为方便指示电源工作状态,电源接通时LED灯亮,表示器件开始工作。 2.5显示报警部分 2.5.1数码管显示电路 图2.12数码管电路 数码管DS1~DS3、VT1~VT3、R12~R21等组成数码显示电路。本机采用动态扫描显示的方式,使用共阳数码管, P3.3-P3.5口作三个数码管的动态扫描位驱动码输出,通过三极管驱动数码管。P1.0-P1.6口作数码显示七段笔划字形码的输出,用以驱动数码管的各字段。因为单片机的端口输出电流能力低,无法直接驱动那些器件,故增加三极管加大功率 ,驱动数码管工作。如图2.12所示。 2.5.2报警电路 图2.13(LED灯与蜂鸣器电路) 根据医学数据,人体脉搏正常在60到120之间,当数码管所显示的示数大于120时LED红灯亮,蜂鸣器响应报警;示数小于60时LED黄灯亮,蜂鸣器响应报警;示数大于120时小于60时,LED绿灯亮,蜂鸣器不响。因为单片机的端口输出电流能力低,无法直接驱动那些器件,故增加三极管加大功率 ,驱动蜂鸣器工作。 3 软件设计 3.1 程序设计  在软件设计中,一般采用模块化的程序设计方法,它具有明显的优点。把一个多功能的复杂的程序划分为若干个简单的、功能单一的程序模块,有利于程序的设计和调试,有利于程序的优化和分工,提高了程序的阅读性和可靠性,使程序的结构层次一目了然。应用系统的程序由包含多个模块的主程序和各种子程序组成。各程序模块都要完成一个明确的任务,实现某个具体的功能,在具体需要时调用相应的模块即可。 这里采用顺序结构,通过对按键的扫描,判断要实现什么功能。(如图3.1) 图3.1 程序图 3.2 程序调试 源程序的编写有多种语言,经过对原理的分析和自身的实际情况本课程设采用C语言编写,其主要程序代码如下: /* 初始化函数 / void init() { t=0; TMOD=0x11; //定时器0,1的定时方式1都打开 TH1=-5000/256; //定时器1定时5ms TL1=-5000%256; TH0=0x3c; //定时器0定时50ms TL0=0xb0; EA=1; // 开总中断 ET1=1; //开定时器1中断 TR1=1; //开定时器1 TR0=1; //开定时器0 ET0=1; //开定时器0中断 IT0=1; //下降沿促发 EX0=1; //开中断0 } 图3.2程序图 图3.3调试图 4结 论 脉搏检测中关键技术是单片机设置与传感器输出的信号提取问题, 本文设计系统模拟电路简单,由STC89C51芯片实现脉搏信号采集,信号处理,脉搏计数等功能,因此体积小,功耗低,系统稳定性高。本系统可实现脉搏次数的实时存储并可实现与脉搏次数报警, 因此可作为简单医院脉搏测量仪。 为了实现脉搏测量重复性,特别设置单片机复位按键和测试复位按键。同时方便观察脉搏次数变化,采用动态扫描显示的方式,使用共阳极数码管,可以随时方便观察脉搏跳动变化。当测试结束时,增加的报警功能,起到对病人进行预警作用,当3种灯任何一种灯亮起时,即表示测试结束。当然本次脉搏测量仪还有很多改进地方,比如HK-2000A 集成化脉搏传感器对微弱跳动特别敏感,在测量时,手腕手指手掌等身体移动都会影响测量,因此在测量时需要防止其他部位移动。 通过这次课程设计,加强了我动手、思考和解决问题的能力。我觉得做课程设计同时也是对课本知识的巩固和加强,平时看课本时,有时问题老是弄不懂,做完设计,那些问题就迎刃而解了。而且还可以记住很多东西。比如单片机管脚用途,平时看课本,这次看了,下次就忘了,主要是因为没有动手实践过吧!认识来源于实践,实践是认识的动力和最终目的,实践是检验真理的唯一。在内容设计方面,比较深入的学习了单片机方面的知识,补充了自己知识上的不足,更重要的是给自己找到了一个新的发展方向。 谢 辞 在这次课程设计的过程中,我的指导老师丁勇老师给予了我很大的帮助,提供了相关的资料,对我的课程设计作品给予了指导和支持。使我顺利圆满的完成了此次课称设计设计。在此,向丁勇老师表示衷心的感谢!同时,也要感谢学院提供制板等设施,使我的设计得以顺利完成。 古人云:预则立,不预则废。祖先曾经教导我们:一年之计在于春,一日之计在于晨。作为即将走向社会的我们又何尝不是如此?一个没有规划的人生,就像一场没有球门的足球赛,满场乱踢;一个没有规划的人生,就像一叶在茫茫大海上漫无目标的小舟,随波飘荡。在我们即将走向社会的时候,我们必须对自己的职业生涯进行规划。罗素曾说:选择职业就是选择你自己的将来。因此我们要针对社会需要,结合自身的情况及早做好相应准备,为我们走向社会打下坚实的基础。俗话说:磨刀不误砍柴功。为适应社会需要,促进自我发展,我们除了学好本专业外,还应辅修相关专业知识,积极参加社会实践活动,培养工作能力,努力提高综合素质,同时努力培养特长,形成自身竞争优势。 最后,再次感谢学院给了我们机会,以及信息与通信学院的各位老师和许多的朋友、同学在各个方面给予了我很多的帮助和支持,让我坚持到了最后,谢谢你们! 参考文献 1. 刘云丽,徐可欣等.微功耗光电式脉搏测量仪.电子测量技术.2005.第二期 2. 李世馨.模拟电子技术基础.高等教育出版社.2001.12 3 3. 朱国富,廖明涛,王博亮.袖珍式脉搏波测量仪.电子技术应用.1998.第1期 4. 欧阳俊.基于BL-410 的指端脉搏波采集系统应用研究.2004.第11卷第2期 5. 程咏梅,夏雅琴,尚岚.人体脉搏波信号检测系统.北京生物医学工程.2006.第25卷 6. 任为民.电子技术基础课程设计. 中央广播电视大学出版社.1997年5月第1版 7. 张毅坤.单片微型计算机原理及应用. 西安电子科技大学出版社. 1998.9第1版 8.刘文,杨欣,张铠麟.基于AT89C2051单片机的指脉检测系统的研究.医疗装备.2005 9. 朱月秀.单片机原理与应用.科学出版社.2004.2 10. 韩文波.光电式脉搏波监测系统.长春光学精密机械学院学报.1999.第22卷第4期 附 录 原理图 PCB图 程序代码: #include #include #define uchar unsigned char #define uint unsigned int uchar i=0xfe;//显示位选初值 uchar ge,shi,bai; uint count =887;//脉搏次数 uint t; uchar disp[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//共阳数码管编码 sbit P0_0=P0^0; //黄灯 sbit P0_1=P0^1; //红灯 sbit P0_2=P0^2; //绿灯 sbit P2_4=P2^4; //按键 //sbit P3_2=P3^2; sbit P3_6=P2^3; //蜂鸣器 bit BELL=0; //响铃标志 /**************************************/ /* / /* 软件延时函数 / /* / /**************************************/ void delay10ms(void) { uchar i,j; for(i=20;i>0;i--) for(j=248;j>0;j--); } /**************************************/ /* / /* 显示函数 / /* / /**************************************/ void display(uchar i,uchar number) { P2=i; P1=disp[number]; } /**************************************/ /* / /* 定时器0中断处理函数 / /* 用于定时一分钟 / /**************************************/ void timer0(void) interrupt 1 { TH0=0x3c; TL0=0xb0; t++; if(t==1200) { EA=0; t=0; bai=count/100; shi=(count%100)/10; ge= (count%100)%10; if(count<60)//设置最低值 { P0_0=0; P3_6=0; BELL=1; } else if(count>120) //设置最高值 { P0_1=0; P3_6=0; BELL=1; } else P0_2=0; EA=1; TR0=0; //开定时器0 ET0=0; //开定时器0中断 EX0=0; //开外部中断 } } /**************************************/ /* / /* 定时器1中断处理函数 / /* / /**************************************/ void timer1_int(void) interrupt 3 { TH1=-5000/256; TL1=-5000%256; bai=count/100; //提取三位数字 shi=(count%100)/10; ge= (count%100)%10; switch(i)//选择数码管位 { case 0xfe: display(i,ge);break; case 0xfd: display(i,shi);break; case 0xfb: display(i,bai);break; } i=i<<1; //流水效果 i=i|0x01; if(i==0xf7) //右移三位后置初值 i=0xfe; if(BELL) //蜂鸣器响 { P3_6=0; } } /**************************************/ /* / /* 初始化函数 / /* / /**************************************/ void init() { t=0; TMOD=0x11; //定时器0,1的定时方式1都打开 TH1=-5000/256; //定时器1定时5ms TL1=-5000%256; TH0=0x3c; //定时器0定时50ms TL0=0xb0; EA=1; // 开总中断 ET1=1; //开定时器1中断 TR1=1; //开定时器1 TR0=1; //开定时器0 ET0=1; //开定时器0中断 IT0=1; //下降沿促发 EX0=1; //开中断0 } /**************************************/ /* / /* 按键软件处理函数 / /* / /**************************************/ void key() { if(P2_4==0) { delay10ms(); delay10ms(); if(P2_4==0) { // TR0=1; //开定时器0 // ET0=1; //开定时器0中断 // EX0=1; //开外部中断 init(); count=0; //显示清零 BELL=0; P0=0xff; } while(P2_4==0);//等待按键释放,如果键未释放则一直在此等待。不过此处开中断非计数可不写 } } void main() { //P3_2=0; init(); TR0=0; //关定时器0 ET0=0; //关定时器0中断 EX0=0; //P3_6=0; while(1) { key(); } } void int0(void) interrupt 0 { count++; } 蜂鸣器报警电路 数码管显示电路 STC89C51单片机处理电路 震荡电路 复位电路 脉搏传感器电路 黑色线 黄色线 红色线 11.0592MHz晶振 200R电阻 STC89C51单片机 USB电源接口 8550 PNP三极管 8550 PNP三极管 蜂鸣器 红色LED灯 1K电阻 红色LED灯 绿色LED灯 PAGE _1373821403.unknown _1373821431.unknown _1373821334.unknown _1373821375.unknown _1373128557.unknown
/
本文档为【基于C51单片机的脉搏测量仪设计 (1)】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索