导航: 老古网老古论坛XMOS公共讨论区XMOS开源项目区单片机程序设计嵌入式系统广告区域
→发表看法:[阿水]基于89C2051单片机技术的心率计



No.86139
作者:阿水
邮件:e03921217@cga.com.cn
ID:43878
登陆:1次
文章数:1篇
最后登陆IP:221.7.150.20
最后登陆:2005/11/27 14:26:32
注册:2005/11/25 0:28:28
财富:105
发帖时间:2005/11/25 0:39:50
发贴者IP:221.7.150.20
标题:阿水:基于89C2051单片机技术的心率计
摘要:No.86139基于89C2051单片机技术的心率计 请各大侠帮看看行得通吗?

基于89C2051单片机技术的心率计    看不到图请下载附件!!!!

                  

本使用方便,只需将手指端轻轻放在传感器上,即可实时显示出你的每分钟脉搏次数.
本心率计采用红外光学检测法,摒弃了不便于运动状态下测量脉搏的听诊器和吸附在人体上的电极等老式测量方法。检测的基本原理是:随着心脏的搏动,人体组织半透明度随之改变:当血液送到人体组织时,组织的半透明度减小;当血液流回心脏,组织则半透明度增大。这种现象在人体组织较薄的手指尖、耳垂等部位最为明显。因此,本心率计将红外发光二极管产生的红外线照射到人体的上述部位,并用装在该部位另一侧或旁边的红外光电管来检测机体组织的透明程度并把它转换成电信号。由于此信号的频率与人体每分钟的脉搏次数成正比,故只要把它转换成脉沖并进行整形、计数和显示,即可实时地测出脉搏的次数。

本心率计的取样整形电路图 
如上图所示,D1和Q1组成红外发射和接受装置,该传感器输出的低频信号,经无极性隔直流电容C6、C7加到线性放大端输入端。因为传感器输出信号的频率很低,如当脉搏为50次/分钟时,只有0.78Hz,200次/分钟时也只有3.33Hz,因此信号首先经R14、C8滤波以滤除高频干扰。当传感器与K2断开或检测到较强的干扰光线时,K2输入端C的直流电压会出现很大变化,为了使它不致泄漏到IC1a输入端而造成错误指示,用C6、C7背靠背串联组成的双极性耦合电容把它隔断。运放IC1a将信号放大200倍,并与R11、C5组成截止频率为10Hz左右的低通滤波器以进一步滤除残留的干扰。
   IC1a输出的信号是叠加有噪声的脉动正弦波,此信号由比较器IC1d转换成方波。该比较器的阈值可用P2调定在正弦波的幅值范围之内,但对P2的调定要求并不严格,因为IC1d   的输出信号经C4、C7的微分后总是将正、负相间的尖脉冲加到单稳多谐振荡器IC1c的反相输入端,不会造成很大的触发误差。
  当有输入信号时,IC1c在比较器输入信号的每个后沿到来时输出高电平,使C3通过R6充电。大约持续20ms之后,因C3充电电流减小而使IC1c同相输入端的电位降低到低于反相输入端的电位(尖脉冲已过去很久),于是IC1c改变状态并再次输出低电平。这长的脉冲是与脉搏同步的,并由红色发光二极管D14的闪亮指示出来。同时,该脉冲电平通过R17送到单片机P3.3脚,进行对心率的计算和显示。
9v电源电压由R3、R4分压成4.5v,再经IC1b缓冲后用作IC1 a、IC1d、 IC1c的参考电压,这样即使电池电电压降低到6v本电路也能正常工作。
(注:取样整形电路图以及其原理参考自:1、 1996年《电子报》第31期,江明编译.《脉搏测试器》;2、1994年《电子报》第43期,周安.《便携式快速心率计》 )

单片机处理与显示部分的电路图
电路图如下:
 
如图,本部分运用了ATMEL公司的89C2051单片机作核心元件,在这里运用了单片机能更快更准确地对数据进行运算,而且可根据实际情况进行编程,所用外围元件少,轻巧省电,故障率低。ULN2003为内置达林顿管集成电路,作动态扫描时的选通驱动用。220Ω排阻作限流用,维持数码管正常显示。本部分电源电压为+5V稳压。
来自传感和整形输出电路的脉冲电平输入单片机89C2051的P3.3脚,单片机设为负跳变中断触发模式,故每次脉冲下降沿到达时触发单片机产生中断并进行计时;当下一次脉冲的下降沿到达时,单片机对两次脉冲间的时间进行运算得出心率,通过P1口把结果送到数码管显示出来。同时,对每次脉冲的到来均响铃,与脉搏同步。这样,就可以通过声光的形式形象地把脉搏的快慢显示出来。
为避免干扰的影响,单片机对两个脉冲之间的时间间距进行检测,若发现有干扰则忽略该干扰而不显示。本测试器的有效测量范围为50次-199次/分钟。

单片机程序流程图如下图所示:

主程序流程图: 定时器中断程序:

 

INT中断程序: 显示程序:

本测试器使用方法:
心率计通电后,数码管应显示0。把手指轻轻置于右下角的传感器中,以稍微有压迫感为宜。很快红色发光二极管会伴随你的脉搏而闪烁,并伴有蜂鸣器响,同时数码管显示出你的心率, 非常方便。如果偶尔出现显示不稳的情况,请按复位键对系统进行复位。本测试器适用于7~9V直流电压,正常工作电流约为100mA。

程序代码:


ORG  0000H
AJMP START
ORG  000BH
AJMP TIME
ORG  0013H
AJMP INT_1

TIMES    EQU 30H
MORE_200 EQU 31H
MORE200  EQU 32H
BELL     EQU 33H

ORG 00e0H
START:

         MOV SP,#50H
     MOV TMOD,#01H   ;方式1,定时时间为6ms
  MOV TH0,#0E8H   ;
  MOV TL0,#90H


  SETB EA           ;开总中断
  SETB IT1   ;INT1 负跳变触发
  SETB EX1   ;INT1 开中断
         SETB ET0
  ;SETB IE1

  MOV R1,#00H
  MOV R2,#00H
  MOV R3,#02H

         setb tr0
org 0100h
         mov r3,#06h
  ajmp main
  org 0110h

MAIN:    ACALL SHOW
      AJMP MAIN

;*************************************************************
ORG 0200H
TIME:    clr ex1
         PUSH ACC
  push psw
         MOV TH0,#0E8H
  MOV TL0,#90H
  CLR C
  MOV A,R6   ;大于200既是小于50次每分,清r6,并置标志位MORE200为1
  SUBB A,#0c8H
  JC   T_TEMP1
  MOV R6,#00H
  MOV MORE200,#01H
  AJMP T_TEMP2

T_TEMP1:INC R6
T_TEMP2:CLR C
  MOV A,BELL
  SUBB A,#01H   ;响铃18ms,与脉搏脉冲同步
  JC STOPBELL
  ;SETB P3.7
  AJMP SSSS
STOPBELL:;CLR P3.7
SSSS:  setb ex1
         pop psw
         POP ACC
  RETI

  nop
  nop
  ljmp 0100h

;*************************************************************
ORG 0300H

INT_1:   PUSH PSW                        ;
         PUSH ACC
         MOV TIMES,R6   ;保存r6的时间
  MOV R6,#00H   ;令r6为0,重新计时
  MOV MORE_200,MORE200  ;保存MORE200标志位
  MOV MORE200,#00H  ;令MORE200为0

  MOV BELL,#03H   ;设响铃

         MOV A,MORE_200   ;判断是否大于200,即是否小于50次
    CJNE A,#00H,TOKEEP  ;大于200,即小于50次,保持原来 ......

>>返回讨论的主题



  发表回复
用户名   *您没有注册?
密码   *
验证码   * .
标题   *
心情
随便说说    我回答你    最新发现    得意的笑   
气死我了    真是没劲    坚决同意    表示反对   
大家过来    好奇怪哟    懒得理它    大家小心   
文件上传
内容


字体:      字体大小:    颜色:
粗体 斜体 下划线 居中 超级连接 Email连接 图片 Flash图片 Shockwave文件 realplay视频文件 Media Player视频文件 QuickTime视频文件 引用 飞行字 移动字 发光字 阴影字 查看更多的心情图标 背景音乐
点击加入表情
                         
选项
有回复时用短消息通知您?

   




老古网执行:31毫秒 最大:78531毫秒 查询6次