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次,保持原来 ......
>>返回讨论的主题
|