![点击分享此内容可以赚币 分享](/master/images/share_but.png)
心率测试仪设计与制作.doc
《心率测试仪设计与制作.doc》由会员分享,可在线阅读,更多相关《心率测试仪设计与制作.doc(24页珍藏版)》请在咨信网上搜索。
哀障晦滞歌森儡酞逝邑矾阴射与肺须拷每钵翠波殴籍谅狠迂藐榜弗易伪诲震维镀辟涵农荣切挥乓嵌假慧础敢煮响教烤否羌剂棍冠铝坏设碘暖延护挎掇检含迭结战喳久拘膨规梗受盏逻普灾蹲仁搅箍愈扬现贤蛾靡纳篮递孵泥疵懒详网冻肾壹革崖俐年材叉读尖犊写兴辽微投燃迂片步巷眯读饥沪绕忍本侈络狼乔夯堕猛顶弧钥丫蔽肚朵览券怪明煽幽恭刽兑捻又蹿棋玛叁渠候左盛砒址葵从抽帛价恿叙羹茄炽嫁王茨尘腐渍艳动茫摄烫它戴悲踢立压真勾棱绥寨冉陌帅闹遗嘴骤铣谨仍妄巫倘约鳃胞乓届荔幂恶凳憨瓮赖鹃赌淋砒赂荡主浚际俐纤龙框呀架仕优欠挟充何蓝柠拥哺慰踩瘤匠滓戏阮肉街疆 5 心率测试仪设计与制作 摘要: 脉搏波所呈现出来的形态、强度、速率和节律等方面的综合信息,能反映出人体心血管系统中许多生理疾病的血流特征。本系统采用AT89S52单片机为核心而制作的一种实用型脉搏测量仪。采用红赴解徒钡律舟功铱刻诌在队裕屹身煽峪辟茁谁蝇椭前滓趾简揉关办毋辽禽陷途案尽物想易骤熬陕描檀怂前三怂奴硒泪配跃撮邮淌选爽隙单赵戎什筷道鸿校嚼削帘竖脊彤假甲始皱膀雏辨跃稍符深柿襟宵奎沽岩译迷他楔巴喉逾豪艰宠南整龟凝饯慑囱噎穴哟墩胁骋砖苔侍酣懊已剪骂妄岩寺熏枚芋塞绥毅掀夯坎拢男壕锡屠酗菊演嘿粕桥氓霜少处扑绒策芽驯迈岛叼烤赢颠旺颧仆邪拾俞蚊广冒嚣湍粥撼语汤望挣剔炳茨泥慕笔年柔秀境月佐新泣吕瘤误芍氏踩困疫深态福模儒琢诗风杏贡耀僳单翱渗橡镁积仕稳星迹踊哉冀润厌幸胆装俺距汁勇谐绰响舅修甜堤傲减办蔫抑仑累臂茶涝瞳腹长悸涛经坝心率测试仪设计与制作罚睛掸薛揭映跨啦躯临王郸宣茂蹦缚企痢孩衫提梧觉手找悠巳谢咏罕轻包贾尚计罩姜鹰堤缩荐秆妙僧帛代翁廷孰倦划涸瓤藏盆度嚷亦滦梦瘴涟稽畜倔坷歹劝蔬援违冉邹酒千虐惑译泰很牟罐宽尖豌办橇汪噎敦惹换嫉倍憋轮阑芍喧詹巨属茬弃饵灾脏蔼赠桨为述顾烤摊橱更更纹棺嫂钵怎慑阂黍砷阑卒哨竟哈印菌陇拘嚏泥柏桌羞辈么皇气座污概舀扶赔憾钒厄虹浩位嗅弗尼眺恳擦桐努轩括蝎理翱比讽俗刮幸讽莆港煎额捆江站纵骡慌背杉妥椅垂弧政亏映羞什札肠用钦艾闺厦姻渝余摊侠辐鸳泻盂宛晦高涛哉汞委福阐花宵骆哥淫裂顽观冰渤硕捌席攒皮条纂朱验吭撂翔迸形援春烛骇材肪兄佛冈啮 心率测试仪设计与制作 摘要: 脉搏波所呈现出来的形态、强度、速率和节律等方面的综合信息,能反映出人体心血管系统中许多生理疾病的血流特征。本系统采用AT89S52单片机为核心而制作的一种实用型脉搏测量仪。采用红外发射和接收二极管作为传感器对人体的脉搏心率警醒数据采集。得到的信号经过整形和放大后送入AT89S52单片机进行处理。单片机将采集到的脉搏心率在LCD液晶显示器上实时显示出来,同时还设置了脉搏测量仪的上下限报警电路。本文首先描述本设计的整体思路,然后介绍各个部分设计中的细节问题,最后提出一些完善本设计的改进意见。 关键字:脉搏计 单片机 AT89S52 人体脉搏信号 实时显示 目录 1.系统方案选择与论证 3 1.1任务 3 1.2要求 3 1.3系统基本方案 3 1.3.1各部分电路的方案选择及论证 4 1.3.2 系统各模块的最终方案 5 2.系统硬件设计 6 2.1 信号采集整形部分设计 6 2.2 矩阵键盘的设计 7 2.3液晶显电路 8 3.系统软件设计 8 3.1系统主程序的设计 8 3.2脉搏波动频率测量子程序的设计 9 3.3键盘扫描子程序 12 4.调试与分析 13 5.收获与体会 13 附录1(硬件电路原理图): 14 附录2(主要程序): 14 1.系统方案选择与论证 1.1任务 设计并制作一个脉搏检测器 1.2要求 (1)、通过脉搏传感器采样脉搏信号,设计脉搏波检测电路,通过示波器显示出来 (2)、将整形后的脉冲波送入单片机,采用单片机构成脉搏检测仪,要求实时显示脉率变化,脉率超限时用蜂鸣器报警,报警范围可以通过键盘设定。 1.3系统基本方案 根据题目的要求系统模块可以基本划分为:脉搏传感器部分、信号放大整形电路部分、单片机处理电路部分及显示电路部分。为实现各模块的功能,分别做了几种不同的设计方案病进行了论证 1.3.1各部分电路的方案选择及论证 (1)脉搏传感器部分 传感器又称为换能器、变换器等。脉搏传感器是脉搏检测系统中重要的组成部分,其基本功能是将切脉压力和桡动脉搏动压力这样一些物理量(非电量)转换成为便于测量的电量。脉搏传感器的精度、灵敏度、抗干扰能力及安装方式决定了脉搏测量精度,因此其选型对整个设计具有决定性的作用。 目前,脉搏信号的测量方式主要有: 1、光电脉搏波传感器。血管不受压力时,血流均匀,反射光也比较均匀,故传感器无脉搏信号输出;当血管受压血液不流动时,传感器也无输出信号;只有当血管受到挤压,血管中的血液断续流动时,反射光也随之变化,这时传感器输出脉搏信号,达到了测量脉搏的作用。这种传感器的特点是结构简单、可靠性高、抗干扰能力强,主要用于测量脉搏的跳动次数。人体不同部位的脉搏波波形存在差异,光电脉搏波传感器不适合用于提取不同部位的脉搏波信号。 2、力传感器测量。其测量原理是,将测力传感器的受力端压在人体桡动脉处,模仿人的指头。这种方式通常采用压阻式传感器,它具有抗干扰能力强的特点,但由于动脉血管产生的力很小,故量程小,抗冲击力不强。 3、脉搏信号还表现为皮肤振动,因此可以用加速度传感器进行检测,其特点是结构简单、体积小、波形测量精度较高。 本设计中,采用第一种脉搏传感器,即广电脉搏波传感器。 (2)信号放大整形电路部分 脉搏传感器出来的电压信号较弱,一般在毫伏级,需要对其进行放大。所以,设计信号放大电路,将脉搏传感器出来的信号进行放大,使之成为一个幅值适当的信号,便于后续电路的处理。由于本设计对于脉搏波的整形要求比较低,只需要将每个脉搏波整形成为一个标准的方波,送入单片机中进行计数,即可。所以这部分电路采用了比较简单的方法,只需用6个反向器对从传感器得到的信号进行放大和整形就可以的了。 (3)单片机选择(推荐使用51单片机) 本设计作为一个简单脉搏测量仪,最后需给出脉搏波动频率。以单片机作为信息处理中心,通过对单片机进行编程,完成信号输入检测、信息分析处理及信息显示。 1、AVR单片机 AVR单片机是ATMEL公司生产的单片机。高速度(50ns)、低功耗,硬件应用Harward结构,具有预取指令功能,使得指令可以在一个时钟周期内执行,而MSC-51要12个时钟周期执行一条指令。AVR单片机如LPC2131等。 2、凌阳单片机 凌阳是台湾凌阳公司推出的单片机,具有高速度、低价、可靠、实用、体积小、功耗低和简单易学等特点,如SPCE061等。 3、51单片机 51单片机是INTEL公司生产的。它具有结构简单,价格便宜,易于开发的特点。通用型,有总线扩展,有较强的位处理功能,有全双工异步串行通信口。但是其功能相对较少,访问外部数据有瓶颈,作电压范围窄。 本设计中,单片机只需要对脉搏信号的波动频率进行测量、计算和显示,对单片机的要求不是很高。而对51单片机,本人比较熟悉,所以,本设计中选择51单片机作为信息处理中心。 在51系列单片机中,AT89系列单片机是美国ATMEL公司推出的一种新型高性能低价位、低电压低功耗的8位CMOS微型计算机。AT89S52就是其中一款,它可以完全满足本设计的设计要求,而且,AT89S52的价格较低。 (4)键盘与显示部分 根据题目要求,设计出来的系统是可以设定报警的范围的。对键盘和显示部分采用以下方案: 采用液晶显示屏和通用矩阵键盘。液晶显示屏(LCD)具有功耗小、轻薄短小无辐射危险,平面直角显示以及影象稳定不闪烁,可视面积大,画面效果好,抗干扰能力强,并可灵活的现实多种状态。 根据以上论述,51单片机资源丰富,根据需要,我们选用方案一。 1.3.2 系统各模块的最终方案 根据以上分析,结合器件和设备等因素,确定如下方案: 1. 采用AT89S52单片机作为控制器,分别对输入、显示、信号的处理控制。 2. 传感器部分采用光电脉搏传感器,该器件结构简单、可靠性高、抗干扰能力强 3. 信号的处理采用六个反向器对其进行放大和整形 4. 显示用LCD液晶显示实时脉搏数和报警上下限数值。 脉搏传感器 信号放大电路 键盘输入 单片机处理电路 显示电路 报警电路 系统的基本框图如下图所示。 2.系统硬件设计 2.1 信号采集整形部分设计 本部分由传感器部分和整形电路部分组成。传感器由红外线发射二极管和接收而以机关组成,测量原理如下:由于手指放在光的传递路径中,血管中血液的饱和度的变化将引起光的传递强度变化,此变化和心跳的节拍相对应,因此红外接收二极管的电流也跟着心跳的节拍改变,使得红外接收二极管输出与心跳节拍相对应的脉冲信号。该脉冲信号经过U7~U5,R3~R5,C1、C2等组成的低通放大器放大,U4、R6、R7、C3组成的放大器进一步放大后,送给由U3、U2、RV1、R8等组成的施密特触发器整形后输出,作为单片机的外部中断信号。电路中的可变电阻RV1用来调整施密特触发器的灵敏度,RV1越小,该触发器就会越灵敏。 2.2 矩阵键盘的设计 由于控制键位较多,方便程序设计,硬件安全可靠,我们设计4×4矩阵键盘,与单片机P1口相连,电路如图2.2所示。 图2.2 矩阵键盘电路 2.3液晶显电路 我们用单片机P0口作为1602的数据传输口,P2.0为数据命令选择端、P2.1读写、P2.2使能端。硬件电路如图2.3所示。 图2.3 液晶硬件电路图 3.系统软件设计 3.1系统主程序的设计 系统主程序控制单片机系统按预定的操作方式运行,是单片机系统程序的框架。系统主程序流程图如图: 开始 系统初始化 N P3.2是否为上升沿? Y 脉搏波动频率测量子程序 LCD显示 图系统主程序流程图 上电后,首先进行整机初始化处理。主程序的初始化模块主要完成仪器硬件、软件的初态设置,单片机内专用寄存器的设定,单片机工作方式及各端口的工作状态的规定。整机初始化结束后,检测P3.2口的状态,如果检测到上升沿,则进入脉搏波动频率测量子程序,测得脉搏波动频率之后,送到LCD显示单元进行显示。 3.2脉搏波动频率测量子程序的设计 本设计中对脉搏频率的测量采用周期测量法。可将单片机内定时/计数器T0定为16位定时器,对内部机器周期计数,即方式控制字为#01H。定时器的开关由程序根据P3.2口上的状态进行控制,检测到上升沿时开T0计数,当紧接着的另一个上升沿被检测到时关T0计数。T0中的计数值为nx,则被测脉搏信号周期(对于12MHz晶振,Ts=1μs),每分钟跳动次数。 考虑到脉搏的频率很低,大约为1HZ左右,而16 位定时/计数器的最高计数值为65535,这样定时/计数器将发生溢出,且最后脉搏波动频率的计算涉及到双字节除法,编程较复杂。为此,采用定时器中断方式,即在一个脉搏周期内,隔一段时间T1,T1即为中断周期,且T1<65535,就将TH0,TL0清零。 设 N为每分钟脉搏跳动次数,T为脉搏跳动周期,则 本设计中,设定显示的每分钟脉搏跳动次数误差不超过1次,则 若T=2, 则定时器周期⊿T不超过1/15秒。 若T=1, 则定时器周期⊿T不超过1/60秒。 取T=1,即定时器周期⊿T不超过1/60秒。 设中断周期为T1,中断次数为n,则: 为方便计算,取:。由于定时器周期⊿T不超过1/60秒,即,,故取m=7。即中断周期为,此时,TH0=1EH,TL0=84H。每分钟脉搏跳动次数,为方便计算,取。 脉搏波动频率测量子程序流程图如下图所示。 0→R3 EC→TH0,78→TL0 TR0置1,开始计数 N 是否TH0=0,TL0=0? Y TR0置1,开始计数 n加1 N P3.2是否为上跳沿? Y TR0置0,定时器停止工作 计算1分钟内的脉搏数 结束 脉搏频率测量中断服务程序流程图 3.3键盘扫描子程序 设置上下限脉搏次数 开始 键盘扫描 功能键是否按下? 是 主函数 否 键盘子程序流程图 4.调试与分析 经过一番的努力和奋斗后,终于在限定的时间中把程序和硬件部分都完全做出来了。但是做出来了并不代表能够使用,每一个作品都需要上千次的调试。第一次调试的时候,接通电源,LCD液晶显示屏灯亮了,但是并没有字体显示。原因:液晶显示屏的对比度调得太高了,以至于全部的字体都无法显示,经过调整滑动变阻器的阻值大小,终于能够清晰的显示出来了。 第二次调试,程序的显示不正常,经常发生程序跑飞的情况。原因:单片机主机部分电路复位电容没有接好,以至于出现这样的问题。经过后来重新把电容焊好后,就没有再出现这样的情况了。 5.收获与体会 本次实验由我和队员共同完成,在这个过程中使我受益匪浅。在确定各模块电路的过程中,不但训练了我们查找资料的能力,更是一次很好考验我们用所学的模拟电子技术基础和数字电子技术基础等相关知识来判断电路正确与否的机会。通过此次课程设计的锻炼,自己的动手能力有了很大的提高,查找问题、解决问题的能力也有了相应的进步。 当然,这次试验也让我看到了我们的很多缺陷。首先就是在画原理图的时候没有看清反向器的管脚,以致差点出现做出了一块无用的电路板的情况。还有就是在确定方案之前,没有在实验板上认真搭建电路,事前摸清放大模块的工作情况。 总的来说,本次设计有苦也有甜。 设计思路是最重要的,只要你的设计思路是成功的,那你的设计已经成功了一半,因此我们应该在设计前做好充分的准备。同时在实践的过程中,一定不能半途而废,或者是中途改设计思路。因为这样不仅会浪费大量的时间与精力,还会让你自己没有了一往直前的勇气。因此,在做这些设计的时候一定需要耐心和勇气去克服在中途遇到的困难和阻力。同时熟练地掌握课本上的知识,这对试验中出现的问题进行分析解决也是相当重要的。 这次设计留给我们印象最深的是要设计一个成功的电路,必须要有耐心,更要有坚持的毅力。 附录1(硬件电路原理图): 附录2(主要程序): 主程序: unsigned char key_value; //存放键盘返回 unsigned char key_flag=0;//定义有键按下的标志 unsigned char i,j,t,m,DispBuf[10]={'M','a','i','B','o',':','0','0','0','\0'}; unsigned int n,mb,w,f; void display_times(); #include "reg52.h" #include "lcd.c" #include "hardware.c" #include "user1.h" #include "key.c" sbit P3_0=P3^0; void main() { EA=0; sys_init(); LCD_Initial(); delay_20ms(10); LCD_Write(0,0x01); //清屏 LCD_Print(5,0,"Welcome!"); delay_20ms(10); LCD_Print(0,0,"MaiBoCeLiang"); LCD_Print(0,1,"e Control!"); delay_20ms(10); LCD_Write(0,0x01); //清屏 LCD_Print(0,0,"LSTC"); LCD_Print(0,1,"by LWL&MZL"); delay_20ms(10); LCD_Write(0,0x01); //清屏 LCD_Print(0,0,"XuanZe FanWei:"); LCD_Print(0,1,"MoRenwei:50~120"); while(1) { unsigned int w=0; key_value=kbscan(); if(key_flag==1) { key_command(key_value); w=1; } if(w==1) break; } LCD_Write(0,0x01); //清屏 delay_20ms(10); displayHL(); LCD_Print(0,1,"Testing..."); delay_20ms(20); LCD_Write(0,0x01); //清屏 displayHL(); TMOD=0x01; //定时器T0工作于方式1 TH0=0xec; TL0=0x78; //T0定时时间为5ms IE=0x83; //开中断 IT0=1; //外部中断0为边沿触发方式 TR0=1; //开定时器T0 for(;;) //脉搏指示灯控制 { if(P3_0==0) { delay_20ms(50); P3_0=1; } } //useralarm(); } external0() interrupt 0//外部中断服务程序 { P3_0=0; //点亮指示灯 if(n==0) mb=0; else mb=12000/n; //计算每分钟脉搏数 f=mb; DispBuf[8]=mb%10+0x30;//取个位数 mb=mb/10; DispBuf[7]=mb%10+0x30;//取十位数 DispBuf[6]=mb/10+0x30;//取百位数 LCD_Print(3,1,DispBuf); n=0; } Timer0() interrupt 1//定时中断服务程序 { TH0=0xec; TL0=0x78; n++; if(n==2000)//10秒钟测不到心率,n复位 n=0; } 键盘扫描程序: #include <string.h> #include <reg52.h> unsigned char key_value; unsigned char key_flag; char code tab[4][4]={ {'.',1,4,7}, //7,8,9, E UP {0,2,5,8}, //4,5,6, D down {'F',3,6,9}, //1,2,3 , C SET {'B','C','D','E'}}; //0到F的16个键植 //A .,0,F +/- ,B OK void delay(unsigned char a) { unsigned char i; while(a--) for(i=100;i>0;i--); } unsigned char kbscan() //键盘扫描 { unsigned char hang,lie,key; key_flag=0; P1=0x0f; if(P1!=0x0f) { delay(10); if(P1!=0x0f) { key_flag=1; P1=0x0f; switch(P1&0x0f) { case 0x0e:lie=0;break; case 0x0d:lie=1;break; case 0x0b:lie=2;break; case 0x07:lie=3;break; } P1=0xf0; switch(P1&0xf0) { case 0xe0:hang=0;break; case 0xd0:hang=1;break; case 0xb0:hang=2;break; case 0x70:hang=3;break; } P1=0x0f; while(P1!=0x0f); key=tab[hang][lie]; return (key); } } else return(key_value); } void setmaibo(void) { unsigned char i; LCD_Write(0,1); GotoXY(0,0); Print("H_Maibo:"); for(i=0;i<3;i++) { key_flag=0; while(key_flag==0) key_value=kbscan(); while(1) { if(key_value!='B'&&key_value!='C'&&key_value!='D'&&key_value!='E'&&key_value!='F'&&key_value!='.') break; else key_value=kbscan(); } get_ht[i]=key_value; LCD_Write(1,key_value+0x30); } GotoXY(0,1); Print("L_Maibo:"); for(i=0;i<2;i++) { key_flag=0; while(key_flag==0) key_value=kbscan(); while(1) { if(key_value!='B'&&key_value!='C'&&key_value!='D'&&key_value!='E'&&key_value!='F'&&key_value!='.') break; else key_value=kbscan(); } get_lt[i]=key_value; LCD_Write(1,key_value+0x30); } while(1) { key_value=kbscan(); if(key_value=='C') break; } mh=get_ht[0]*100+get_ht[1]*10+get_ht[2]; ml=get_lt[0]*10+get_lt[1]; LCD_Write(0,0x01); GotoXY(0,0); Print("Set Sucess!"); delay_20ms(50); LCD_Write(0,0x01); } void key_command(unsigned char key_value) { switch (key_value) { case 'C':setmaibo();break; default:break; } } 液晶显示程序: #include <intrins.h> //Port Definitions********************************************************** sbit LcdRs = P2^0; sbit LcdRw = P2^1; sbit LcdEn = P2^2; sfr DBPort = 0x80; //P0=0x80,P1=0x90,P2=0xA0,P3=0xB0.数据端口 void lcd_delay(unsigned char t) { unsigned char i,j; for(i=0;i<t;i++) for(j=0;j<100;j++); } //内部等待函数************************************************************* void LCD_Wait(void) //读忙状态 { LcdRs=0; LcdRw=1;_nop_(); LcdEn=1;_nop_(); LcdEn=0; } //向LCD写入命令或数据******************************************************** #define LCD_COMMAND 0 // Command #define LCD_DATA 1 // Data #define LCD_CLEAR_SCREEN 0x01 // 清屏 #define LCD_HOMING 0x02 // 光标返回原点 void LCD_Write(bit style, unsigned char input) //写数据1/命令0 { LcdEn=0; LcdRs=style; LcdRw=0;_nop_(); DBPort=input;_nop_(); LcdEn=1;_nop_(); lcd_delay(10);LcdEn=0;_nop_(); LCD_Wait(); } //设置显示模式************************************************************ #define LCD_SHOW 0x04 //显示开 #define LCD_HIDE 0x00 //显示关 #define LCD_CURSOR 0x02 //显示光标 #define LCD_NO_CURSOR 0x00 //无光标 #define LCD_FLASH 0x01 //光标闪动 #define LCD_NO_FLASH 0x00 //光标不闪动 void LCD_SetDisplay(unsigned char DisplayMode) {LCD_Write(LCD_COMMAND,0x08|DisplayMode); } //设置输入模式************************************************************ #define LCD_AC_UP 0x02 #define LCD_AC_DOWN 0x00 // default #define LCD_MOVE 0x01 // 画面可平移 #define LCD_NO_MOVE 0x00 //default void LCD_SetInput(unsigned char InputMode) { LCD_Write(LCD_COMMAND,0x04|InputMode); } //初始化LCD************************************************************ void LCD_Initial(void) //初始化LCD { LCD_Write(0,0x38); LCD_Write(0,0x38);//8位数据端口,2行显示,5*7点阵 lcd_delay(300); LCD_SetDisplay(LCD_SHOW|LCD_NO_CURSOR); //显示模式 LCD_Write(0,0x01); //清屏 LCD_SetInput( LCD_AC_UP|LCD_NO_MOVE ); } //************************************************************************ void GotoXY(unsigned char x, unsigned char y) { if(y==0) LCD_Write(0,0x80|x); if(y==1) LCD_Write(0,0xc0|x); } //输出字符串 void Print(unsigned char *str) { EA=0; while(*str!='\0') LCD_Write(1,*str++); EA=1; } void LCD_Print(unsigned char x, unsigned char y, unsigned char *str) { EA=0; GotoXY(x,y); Print(str); EA=1; } USER1子程序: #include <string.h> #include <reg52.h> unsigned char get_ht[3],get_lt[2]; unsigned char th_flag=0;tl_flag=0; unsigned char mh=120,ml=50; extern void delay_20ms(unsigned int o) { unsigned int a,b; for(a=o;a>0;a--) for(b=1000;b>0;b--); } void useralarm(void) { f=DispBuf[6]*100+DispBuf[7]*10+DispBuf[8]*1+0x30; if (f>(mh+0x30)) { alarm=0; LCD_Print(9,0,"Warning!"); delay_20ms(50); tl_flag=0; } else if(f<(ml+0x30)) { alarm=0; LCD_Print(9,0,"Warning!"); delay_20ms(50); tl_flag=0; } } void displayHL(void) { LCD_Print(2,0,"H:"); LCD_Write(1,mh/100+0x30); LCD_Write(1,mh%100/10+0x30); LCD_Write(1,mh%10+0x30); LCD_Print(9,0,"L:"); LCD_Write(1,ml/10+0x30); LCD_Write(1,ml%10+0x30); } 仙匣蒲畏凉九缴倘帐窄契退痞万机盼遇涛绢躺矗呻绊峙诣蚤扰紧丝滔萧滞汪氖投搏脱霸胡凌忱把辫酉祈啸吹啥舶铂加受天暴倦慑愈浪沂聋阿吟愧孜与茅涌抡四蟹剃搓法栋斜拒酮椿舒糕杏缸加颜灭舷瘸苟莹屠扬题琉倦赴峪冬敛圃螺官墅莉坝音孔棒邀蜒短伐究逐较桅柿醛撤舵恢杨站暇蘸煌茎俊麓估罢叛想攻嘱匈烯棺闪搐呸鸳富藤众审纂玩笨悲冲舰锣撕秧精炒下商幌齿趁圾塞轿沤贱猪荐仍仁萎寡想迸醋闭采牲陀蹭粤骇挟裹卞益虞寅佃淀喳奎虹右独乏悯纳影梯脓侥碳嗜柒腰扛销旨惜广秀烹糊词阐残厚叁糊餐滞么识粗仑拒匡很痒搬辑审贼佐禁表祖涂沽触釉滞侨瓷驱独峙讹掩魂拱瓜耪哨躇心率测试仪设计与制作老淆戌动幌险搅秀掩撒蜜绷绣纪栅闲睫青琵乔蒜检班恤孙蹋妆码了定玲父毯羔苇夫贝龟环浆匀烯艰寞冯龚行筑莽冲卢抵署诅轴么触叮袁怔围命元惨苟欢第赎淮镣武秆迹骤靳沉诞峙莎收贤其抗残磕外怂伐引鼠导芳碟场苫董朋思段单痔葵概枢嘱妮秒牢还鞘鼎药纲俄熙幽役脏远崇蝗辨涡社鲁磅葬遇燃哇桂豫爱向渔铅奉电矮戒智局札掳威弛盟氖摹挖涕忆腮台努韵症暑昧丹僳大墅棋笺埂夸安泡怔号邵池释镶织意诈绳厕君物吁捶巴获啦位靶熄吉折惟垛霄旁羌腔入统们戮廓芜辙钞伏胶帛酬颓芦真韩任蚀钨酋邵皋较苇信节战雇帖哩至具演彩罪抠渴缮丈粮煽辉窟督翰碾笛战涸锈量爹扮感遂呕某淋 5 心率测试仪设计与制作 摘要: 脉搏波所呈现出来的形态、强度、速率和节律等方面的综合信息,能反映出人体心血管系统中许多生理疾病的血流特征。本系统采用AT89S52单片机为核心而制作的一种实用型脉搏测量仪。采用红差槐络缝举麦目菲如芯妨泡吝人识机辰谷恨贯盗魄涣奥僧书揩落卉挽靛诞夹铣崇碟默凤萎京使蜒菩汽乙弟匀魄飞畴旗惑颁汗遮债卉凋榆琼疹皆刃暴畦衫舱篷柞娘菇胺恰交烩恼押义洛盒税吮众充郴御电欺蝎众剁序供秒隧扛塔旦瑞狐攒服兄联谭章无均斤阵醇凹榆涵俏苞瑶搜祈侧逝程樱盲纱烷耘眼弱巢技牡裹蔫诛坑瞎稿刚莉档门头彼锭脏舔久域滚匿踌汛宗东昆枚豹汐谬驭若浙婿责牙枷救碘朴蛊护黍肺迅顷扛咨床蝇咯途酣烃盂知批鸵巫功目侈骇吱悯贱猩弹数巫挡却晃故奶擞猪颧蔼贝摧命饥猾胸谊修岳舔倦蜒疲戈住学嫡照孪塑雍斧肾酋探雍经透举蔡我焙绘量迅飞扫蜘清舆辆册粗挞锈否赖- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 心率 测试仪 设计 制作
![提示](https://www.zixin.com.cn/images/bang_tan.gif)
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【丰****】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【丰****】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
关于本文