引言
脉搏测量在有脉搏时遮挡光线,无脉搏时透光强,所采用的传感器是红外接收二极管和红外发射二极管。通过观测脉搏信号,可以对人体的健康进行检查,通常被用于保健中心和医院。系统可以供用户测量当时的脉搏次数,同时还可以设定上限次数和下限次数,当测量的范围超过设定的范围则驱动蜂鸣器报警提醒,除此外用户还可以设定每天闹钟提醒测量,时间可以自行设定[1]。
从脉搏波中提取人体的生理病理信息作为临床诊断和治疗的依据,历来都受到中外医学界的重视。系统以STC89C52单片机为核心,以光电传感器利用单片机系统内部定时器来计算时间,由光电传感器感应产生信号,单片机通过对信号累加得到脉搏跳动次数,时间由定时器定时而得。系统运行中可以通过观察指示灯闪烁,若均匀闪烁说明测量值准确。几乎世界上所有的民族都用过“摸脉”作为诊断疾病的手段。脉搏波所呈现出的形态(波形)、强度(波幅)、速率(波速)和节律(周期)等方面的综合信息,在很大程度上反映出人体心血管系统中许多生理病理的血流特征,但人体的生物信号多属于强噪声背景下的低频的弱信号,脉搏波信号更是低频微弱的非电生理信号,必需经过放大和后级滤波以满足采集的要求。
第一章概述
1.1选题的背景和意义
脉搏携带有丰富的人体健康状况的信息,自公元三世纪我国最早的脉学专著《脉经》问世以来,脉学理论得到不断的发展和提高。在中医四诊(望、闻、问、切)中,脉诊占有非常重要的位置。脉诊是我国传统医学中最具特色的一项诊断方法,其历史悠久,内容丰富,是中医“整体观念”、“辨证论证”的基本精神的体现与应用。脉诊作为“绿色无创”诊断的手段和方法,得到了中外人士的关注。但由于中医是靠手指获取脉搏信息,虽然脉诊具有简便、无创、无痛的特点易为患者接受,然而在长期的医疗实践中也暴露出一些缺陷。首先,切脉单凭医生手指感觉辨别脉象的特征,受到感觉、经验和表述的限制,并且难免存在许多主观臆断因素,影响了对脉象判断的规范化;其次,这种用手指切脉的技巧很难掌握;再则,感知的脉象无法记录和保存影响了对脉象机理的研究。脉诊的这种定性化和主观性,大大影响了其精度与可行性,成为中医脉诊应用、发展和交流中的制约因素。为了将传统的中医药学发扬光大,促进脉诊的应用和发展,必须与现代科技相结合,实现更科学、客观的诊断[1]。
医院的护士每天都要给住院的病人把脉记录病人每分钟脉搏数,方法是用手按在病人腕部的动脉上,根据脉搏的跳动进行计数。
早在1860年Vierordt创建了第一台杠杆式脉搏描记仪,国内20世纪50年代初朱颜将脉搏仪引用到中医脉诊的客观化研究方面。此后随着机械及电子技术的发展,国内外在研制中医脉象仪方面进展很快,尤其是70年代中期,国内天津、上海、江西等地相继成立了跨学科的脉象研究协作组,多学科共同合作促使中医脉象研究工作进入了一个新的境界。脉象探头式样很多,有单部、三部、单点、多点、刚性接触式、软性接触式、气压式、硅杯式、液态汞、液态水、子母式等组成,脉象探头的主要原件有应变片、压电晶体、单晶硅、光敏元件、PVDF压电薄膜等,其中以单部单点应变片式为最广泛,不过近年来正在向三部多点式方向设计[2]。
目前脉搏测量仪在多个领域被广泛应用,除了应用于医学领域,如无创心血管功能检测、妊高症检测、中医脉象、脉率检测等等,商业应用也不断拓展,如运动、健身器材中的心率测试都用到了技术先进的脉搏测量仪。
1.2脉搏测量仪的发展与应用
随着科学技术的发展,脉搏测量技术也越来越先进,对脉搏的测量精度也越来越高,国内外先后研制了不同类型的脉搏测量仪,而其中关键是对脉搏传感器的研究。起初用于体育测量的脉搏测试集中在对接触式传感器的研究,利用此类传感器所研制的指脉、耳脉等测量仪各有其优缺点。指脉测量比较方便、简单,但因为手指上的汗腺较多,指夹常年使用,污染可能会使测量灵敏度下降:耳脉测量比较干净,传感器使用环境污染少,容易维护。但因耳脉较弱,尤其是当季节变化时,所测信号受环境温度影响明显,造成测量结果不准确。过去在医院临床监护和日常中老年保健中出现的日常监护仪器,如便携式电子血压计,可以完成脉搏的测量,但是这种便携式电子血压计利用微型气泵加压橡胶气囊,每次测量都需要一个加压和减压的过程,存在体积庞大、加减压过程会有不适、脉搏检测的精确度低等缺点。
近年来国内外致力于开发无创非接触式的传感器,这类传感器的重要特征是测量的探测部分不侵入机体,不造成机体创伤,能够自动消除仪表自身系统的误差,测量精度高,通常在体外,尤其是在体表间接测量人体的生理和生化参数。
其中光电式脉搏传感器是根据光电容积法制成的脉搏传感器,通过对手指末端透光度的监测,间接检测出脉搏信号。具有结构简单、无损伤、精度高、可重复使用等优点。通过光电式脉搏传感器所研制的脉搏测量仪已经应用到临床医学等各个方面并收到了理想效果。
人体心室周期性的收缩和舒张导致主动脉的收缩和舒张,是血流压力以波的形式从主动脉根部开始沿着整个动脉系统传播,这种波成为脉搏波。从脉搏波中提取人体的心理病理信息作为临床诊断和治疗的依据,历来都受到中外医学界的重视。脉搏波所呈现出的形态(波形)、强度(波幅)、速率(波速)和节律(周期)等方面的综合信息,在很大程度上反映出人体心血管系统中许多生理病理的血流特征,因此对脉搏波采集和处理具有很高的医学价值和应用前景。但人体的生物信号多属于强噪声背景下的低频的弱信号,脉搏波信号更是低频微弱的非电生理信号,因此必需经过放大和后级滤波以满足采集的要求。
第二章总体方案的论证与设计
2.1主控模块的选型和论证
方案一:
采用MSP430系列单片机,该单片机是TI公司1996年开始推向市场的一种16位超低功耗的混合信号处理器。其内部集成了很多模拟电路、数字电路和微处理器,提供强大的功能。不过该芯片昂贵不适合一般的设计开发[3]。
方案二
采用51系列的单片机,该单片机是一个高可靠性,超低价,无法解密,高性能的8位单片机,32个IO口,且STC系列的单片机可以在线编程、调试,方便地实现程序的下载与整机的调试。
因此选用方案二中的51系列单片机作为主控芯片。
2.2显示模块的选型和论证
方案一:
采用点阵式数码管显示,点阵式数码管是由八行八列的发光二极管组成,对于显示文字比较合适,如采用在显示数字显得太浪费,且价格也相对较高,所以不用此种作为显示。
方案二:
采用LED数码管动态扫描,LED数码管价格虽适中,对于显示数字也最合适,而且采用动态扫描法与单片机连接时,占用单片机口线少。但是由于数码管动态扫描需要借助74LS164移位寄存器进行移位,该芯片在电路调试时往往有很多障碍,所以不采用LED数码管作为显示。
方案三:
采用LCD液晶显示屏,液晶显示屏的显示功能强大,可显示大量文字,图形,显示多样,清晰可见,对于本设计而言一个LCD1602的液晶屏即可,价格也还能接受,需要的接口线较多,但会给调试带来诸多方便。
所以本设计中方案三中的LCD1602液显示屏作为显示模块。
2.3脉搏检测传感器的选型和论证
方案一:
采用压电传感器用来提取人的脉搏信号,压电传感器是利用某些电介质受力后产生的压电效应制成的传感器。所谓压电效应是指某些电介质在受到某一方向的外力作用而发生形变(包括弯曲和伸缩形变)时,由于内部电荷的极化现象,会在其表面产生电荷的现象。通过此现象可以提取出人的脉搏信号。
方案二:
采用光电传感器提取人体脉搏信号,授予手指组织可以分成皮肤、肌肉、骨骼等非血液组织和血液组织,其中非血液组织的光吸收量是恒定的,而在血液中,静脉血的搏动相对动脉血是十分微弱的,可以忽略,因此可以认为光透过手指后的变化仅由动脉血的充盈而引起,那么在恒定波长的光源的照射下,通过检测透过手指的光强将可以间接测量到人体的脉搏信号[4]。
由于光电传感器较压电传感器容易在一般的地方可以买得到,因此这里选用光电传感器来提取人体脉搏信号。
2.4温度传感器的选型
方案一
由于本设计是测温电路,可以使用热敏电阻之类的器件,将随被测温度变化的电压或电流采样,进行A/D转换后就可以用单片机进行数据处理,实现温度显示。这种设计需要用到A/D转换电路,增大了电路的复杂性,而且要做到高精度也比较困难。
方案二
考虑到在单片机属于数字系统,容易想到数字温度传感器,可选用DS18B20数字温度传感器,此传感器为单总线数字温度传感器,起体积小、构成的系统结构简单,它可直接将温度转化成串行数字信号给单片机处理,即可实现温度显示。另外DS18B20具有3引脚的小体积封装,测温范围为-55~+125摄氏度,测温分辨率可达0.0625摄氏度,其测量范围与精度都能符合设计要求。
以上两种方案相比较,第二种方案的电路、软件设计更简单,此方案设计的系统在功耗、测量精度、范围等方面都能很好地达到要求,故本设计采用方案二。
2.5系统整体设计概述
系统总体设计由STC89C52、按键、LCD1602、光电传感器、时钟模块、运放等构成,如图2.1所示,系统设有四个按键,可以设置上下限脉搏数,当超过范围的时候单片机会驱动蜂鸣器发响,脉搏测量的时候需要人把手轻轻的按在光电传感器上面,由于人脉搏跳动的时候,血液的透光性不一样会导致接收器那边接收的信号强弱不一样,间接的把人脉搏信号传回,通过运放对其进行放大、整形后连接到单片机的IO口,单片机利用外部中断对其进行计数,最终换算成人一分钟脉搏的跳动次数,最终显示在液晶屏上。
第三章系统硬件电路设计
3.1主控模块
主控模块模块在整个系统中起着统筹的作用,需要检测键盘等各种参数,同时驱动液晶显示相关参数,在这里我们选用了51系列单片机中的STC89C52单片机作为系统的主控芯片。
51系列单片机最初是由Intel公司开发设计的,但后来Intel公司把51核的设计方案卖给了几家大的电子设计生产商,譬如SST、Philip、Atmel等大公司。因此市面上出现了各式各样的均以51为内核的单片机[6]。这些各大电子生产商推出的单片机都兼容51指令、并在51的基础上扩展一些功能而内部结构是与51一致的。
STC89C52有40个引脚,4个8位并行I/O口,1个全双工异步串行口,同时内含5个中断源,2个优先级,2个16位定时/计数器。STC89C52的存储器系统由4K的程序存储器(掩膜ROM),和128B的数据存储器(RAM)组成。
STC89C52单片机的基本组成框图见图3.1所示。

3.1.1 STC89C52单片机主要特性
1.一个8位的微处理器(CPU)。
2.片内数据存储器RAM(128B),用以存放可以读/写的数据,如运算的中间结果、最终结果以及欲显示的数据等,SST89系列单片机最多提供1K的RAM。
3.片内程序存储器ROM(4KB),用以存放程序、一些原始数据和表格。但也有一些单片机内部不带ROM/EPROM,如8031,8032,80C31等。目前单片机的发展趋势是将RAM和ROM都集成在单片机里面,这样既方便了用户进行设计又提高了系统的抗干扰性。SST公司推出的89系列单片机分别集成了16K、32K、64K Flash存储器,可供用户根据需要选用。
4.四个8位并行I/O接口P0~P3,每个口既可以用作输入,也可以用作输出。
5.两个定时器/计数器,每个定时器/计数器都可以设置成计数方式,用以对外部事件进行计数,也可以设置成定时方式,并可以根据计数或定时的结果实现计算机控制。为方便设计串行通信,目前的52系列单片机都会提供3个16位定时器/计数器。
6.五个中断源的中断控制系统。现在新推出的单片机都不只5个中断源,例如SST89E58RD就有9个中断源。
7.一个全双工UART(通用异步接收发送器)的串行I/O口,用于实现单片机之间或单机与微机之间的串行通信。
8.片内振荡器和时钟产生电路,但石英晶体和微调电容需要外接。最高允许振荡频率为12MHz。SST89V58RD最高允许振荡频率达40MHz,因而大大的提高了指令的执行速度。

STC89C52单片机管脚如图3.2所示,部分引脚说明:
1.时钟电路引脚XTAL1和XTAL2:
XTAL2(18脚):接外部晶体和微调电容的一端;片内它是振荡电路反相放大器的输出端,振荡电路的频率就是晶体固有频率。若需采用外部时钟电路时,该引脚输入外部时钟脉冲。
要检查振荡电路是否正常工作,可用示波器查看XTAL2端是否有脉冲信号输出。
XTAL1(19脚):接外部晶体和微调电容的另一端;在片内它是振荡电路反相放大器的输入端。在采用外部时钟时,该引脚必须接地[7]。
2.控制信号引脚RST,ALE,PSEN和EA:
RST/VPD(9脚):RST是复位信号输入端,高电平有效。当此输入端保持备用电源的输入端。当主电源Vcc发生故障,降低到低电平规定值时,将+5V电源自动两个机器周期(24个时钟振荡周期)的高电平时,就可以完成复位操作。RST引脚的第二功能是VPD,即接入RST端,为RAM提供备用电源,以保证存储在RAM中的信息不丢失,从而合复位后能继续正常运行。
ALE/PROG(30脚):地址锁存允许信号端。当8051上电正常工作后,ALE引脚不断向外输出正脉冲信号,此频率为振荡器频率fOSC的1/6。CPU访问片外存储器时,ALE输出信号作为锁存低8位地址的控制信号。
平时不访问片外存储器时,ALE端也以振荡频率的1/6固定输出正脉冲,因而ALE信号可以用作对外输出时钟或定时信号。如果想确定8051/8031芯片的好坏,可用示波器查看ALE端是否有脉冲信号输出。如有脉冲信号输出,则8051/8031基本上是好的。
ALE端的负载驱动能力为8个LS型TTL(低功耗甚高速TTL)负载。
此引脚的第二功能PROG在对片内带有4KB EPROM的8751编程写入(固化程序)时,作为编程脉冲输入端。
PSEN(29脚):程序存储允许输出信号端。在访问片外程序存储器时,此端定时输出负脉冲作为读片外存储器的选通信号。此引肢接EPROM的OE端(见后面几章任何一个小系统硬件图)。PSEN端有效,即允许读出EPROM/ROM中的指令码。PSEN端同样可驱动8个LS型TTL负载。要检查一个8051/8031小系统上电后CPU能否正常到EPROM/ROM中读取指令码,也可用示波器看PSEN端有无脉冲输出。如有则说明基本上工作正常。
EA/Vpp(31脚):外部程序存储器地址允许输入端/固化编程电压输入端。当EA引脚接高电平时,CPU只访问片内EPROM/ROM并执行内部程序存储器中的指令,但当PC(程序计数器)的值超过0FFFH(对8751/8051为4K)时,将自动转去执行片外程序存储器内的程序。当输入信号EA引脚接低电平(接地)时,CPU只访问外部EPROM/ROM并执行外部程序存储器中的指令,而不管是否有片内程序存储器。对于无片内ROM的8031或8032,需外扩EPROM,此时必须将EA引脚接地。此引脚的第二功能是Vpp是对8751片内EPROM固化编程时,作为施加较高编程电压(一般12V~21V)的输入端[8]。
3.输入/输出端口P0/P1/P2/P3:
P0口(P0.0~P0.7,39~32脚):P0口是一个漏极开路的8位准双向I/O口。作为漏极开路的输出端口,每位能驱动8个LS型TTL负载。当P0口作为输入口使用时,应先向口锁存器(地址80H)写入全1,此时P0口的全部引脚浮空,可作为高阻抗输入。作输入口使用时要先写1,这就是准双向口的含义。在CPU访问片外存储器时,P0口分时提供低8位地址和8位数据的复用总线。在此期间,P0口内部上拉电阻有效。
P1口(P1.0~P1.7,1~8脚):P1口是一个带内部上拉电阻的8位准双向I/O口。P1口每位能驱动4个LS型TTL负载。在P1口作为输入口使用时,应先向P1口锁存地址(90H)写入全1,此时P1口引脚由内部上拉电阻拉成高电平。
P2口(P2.0~P2.7,21~28脚):P2口是一个带内部上拉电阻的8位准双向I/O口。P口每位能驱动4个LS型TTL负载。在访问片外EPROM/RAM时,它输出高8位地址。
P3口(P3.0~P3.7,10~17脚):P3口是一个带内部上拉电阻的8位准双向I/O口。P3口每位能驱动4个LS型TTL负载。P3口与其它I/O端口有很大的区别,它的每个引脚都有第二功能,如下:
P3.0:(RXD)串行数据接收。
P3.1:(RXD)串行数据发送。
P3.2:(INT0#)外部中断0输入。
P3.3:(INT1#)外部中断1输入。
P3.4:(T0)定时/计数器0的外部计数输入。
P3.5:(T1)定时/计数器1的外部计数输入。
P3.6:(WR#)外部数据存储器写选通。
P3.7:(RD#)外部数据存储器读选通。
3.1.2 STC89C52单片机的中断系统
STC89C52系列单片机的中断系统有5个中断源,2个优先级,可以实现二级中断服务嵌套。由片内特殊功能寄存器中的中断允许寄存器IE控制CPU是否响应中断请求;由中断优先级寄存器IP安排各中断源的优先级;同一优先级内各中断同时提出中断请求时,由内部的查询逻辑确定其响应次序。
在单片机应用系统中,常常会有定时控制需求,如定时输出、定时检测、定时扫描等;也经常要对外部事件进行计数。STC89C52单片机内集成有两个可编程的定时/计数器:T0和T1,它们既可以工作于定时模式,也可以工作于外部事件计数模式,此外,T1还可以作为串行口的波特率发生器[9]。
3.1.3单片机最小系统设计

图3.3为单片机最小系统电路图,单片机最小系统有单片机、时钟电路、复位电路组成,时钟电路选用了12MHZ的晶振提供时钟,作用为给单片机提供一个时间基准,其中执行一条基本指令需要的时间为一个机器周期,单片机的复位电路,按下复位按键之后可以使单片机进入刚上电的起始状态。图中10K排阻为P0口的上拉电阻,由于P0口跟其他IO结构不一样为漏极开路的结构,因此要加上拉电阻才能正常使用。
3.2 LCD液晶显示器简介
由于本设计中要求显示界面显示一些参数,因此这里选用了LCD1602作为界面显示,可以把一些相关的参数进行显示。
3.2.1液晶原理介绍
液晶显示器(LCD)英文全称为Liquid Crystal Display,它一种是采用了液晶控制透光度技术来实现色彩的显示器。和CRT显示器相比,LCD的优点是很明显的。由于通过控制是否透光来控制亮和暗,当色彩不变时,液晶也保持不变,这样就无须考虑刷新率的问题。
显示接口用来显示系统的状态,命令或采集的电压数据。本系统显示部分用的是LCD液晶模块,采用一个16×2的字符型液晶显示模块。
点阵图形式液晶由M行×N列个显示单元组成,假设LCD显示屏有64行,每行有128列,每8列对应1个字节的8个位,即每行由16字节,共16×8=128个点组成,屏上64×16个显示单元和显示RAM区1024个字节相对应,每一字节的内容和屏上相应位置的亮暗对应。一个字符由6×8或8×8点阵组成,即要找到和屏上某几个位置对应的显示RAM区的8个字节,并且要使每个字节的不同的位为‘1’,其它的为‘0’,为‘1’的点亮,为‘0’的点暗,这样一来就组成某个字符。但对于内带字符发生器的控制器来说,显示字符就比较简单了,可让控制器工作在文本方式,根据在LCD上开始显示的行列号及每行的列数找出显示RAM对应的地址,设立光标,在此送上该字符对应的代码即可。
3.2.2液晶模块简介
LCD1602液晶模块采用HD44780控制器,hd44780具有简单而功能较强的指令集,可以实现字符移动,闪烁等功能,LM016L与单片机MCU通讯可采用8位或4位并行传输两种方式,hd44780控制器由两个8位寄存器,指令寄存器(IR)和数据寄存器(DR)忙标志(BF),显示数RAM(DDRAM),字符发生器ROMA(CGOROM)字符发生器RAM(CGRAM),地址计数器RAM(AC)。IR用于寄存指令码,只能写入不能读出,DR用于寄存数据,数据由内部操作自动写入DDRAM和CGRAM,或者暂存从DDRAM和CGRAM读出的数据,BF为1时,液晶模块处于内部模式,不响应外部操作指令和接受数据,DDTAM用来存储显示的字符,能存储80个字符码,CGROM由8位字符码生成5*7点阵字符160中和5*10点阵字符32种.8位字符编码和字符的对应关系,CGRAM是为用户编写特殊字符留用的,它的容量仅64字节,可以自定义8个5*7点阵字符或者4个5*10点阵字符,AC可以存储DDRAM和CGRAM的地址,如果地址码随指令写入IR,则IR自动把地址码装入AC,同时选择DDRAM或CGRAM,LCD1602液晶模块的引脚图如图3.4所示。

3.2.3液晶显示部分与STC89C52的接口
如图3.5所示。用STC89C52的P0口作为数据线,用P1.2、P1.1、P1.0分别作为LCD的EN、R/W、RS。其中EN是下降沿触发的片选信号,R/W是读写信号,RS是寄存器选择信号本模块设计要点如下:显示模块初始化:首先清屏,再设置接口数据位为8位,显示行数为1行,字型为5×7点阵,然后设置为整体显示,取消光标和字体闪烁,最后设置为正向增量方式且不移位[10]。向LCD的显示缓冲区中送字符,程序中采用2个字符数组,一个显示字符,另一个显示电压数据,要显示的字符或数据被送到相应的数组中,完成后再统一显示.首先取一个要显示的字符或数据送到LCD的显示缓冲区,程序延时2.5ms,判断是否够显示的个数,不够则地址加一取下一个要显示的字符或数据。

3.3信号采集电路设计
此部分电路的功能是由传感器将脉搏信号转换为电信号,一般为几十毫伏,必须加以放大,以达到整形电路所需的电压,一般为几伏。放大后的信号波形是不规则的脉冲信号,因此必须加以滤波整形,整形电路的输出电压应满足计数器的要求。选择电路:所选放大整形电路框图如图3.8所示。

3.3.1传感器简介
传感器采用了红外光电转换器,作用是通过红外光照射人的手指的血脉流动情况,把脉搏跳动转换为电信号,其原理电路如图3.9所示。

如图3.9中,红外管VD采用ST188。用+5V电源供电,R1取150Ω,R2取33kΩ,当人把手指放在发光二极管和光电二极管之间的时候,光电二极管接收到的信号会随人脉搏强度的变化而变化[11]。
3.3.2滤波电路

图3.10为脉搏计的放大滤波信号,由于脉搏信号输出的信号十分微弱,一般在uV级别,除此外输出的信号一般会伴随很大的噪声干扰,因此在这里用LM358搭建起一个放大和滤波电路。
3.3.3放大整形电路
经过放大滤波后的脉搏信号仍是不规则的脉冲信号,且有低频干扰,仍不满足计数器的要求,必须采用整形电路,这里选用了滞回电压比较器,如图3.11所示,其目的是为了提高抗干扰能力。集成运放采用了LM358,除此外LM358还接上了一个LED用作指示脉搏跳动的状态。

3.4数字温度传感器模块
3.4.1 DS18B20性能
独特的单线接口仅需一个端口引脚进行通信
简单的多点分布应用
无需外部器件
可通过数据线供电
零待机功耗
测温范围-55~+125℃,以0.5℃递增
可编程的分辨率为9~12位,对应的可分辨温度分别为0.5℃、0.25℃、0.125℃和0.0625℃
温度数字量转换时间200ms,12位分辨率时最多在750ms内把温度转换为数字
应用包括温度控制、工业系统、消费品、温度计和任何热感测系统
负压特性:电源极性接反时,传感器不会因发热而烧毁,但不能正常工作
3.4.2 DS18B20外形及引脚说明

GND:地
DQ:单线运用的数据输入/输出引脚
VD:可选的电源引脚
3.4.3 DS18B20接线原理图
单总线通常要求接一个约10K左右的上拉电阻,这样,当总线空闲时,其状态为高电平。

图4 DS18B20接线原理图
3.4.4 DS18B20时序图
主机使用时间隙来读写DS18B20的数据位和写命令字的位。
1.初始化时序如下图:

2.DS18B20读写时序:

3.4.5数据处理
高速暂存存储器由9个字节组成,其分配如表5所示。当温度转换命令发布后,经转换所得的温度值以二字节补码形式存放在高速暂存存储器的第0和第1个字节。单片机可通过单线接口读到该数据,读取时低位在前,高位在后。

下表为12位转化后得到的12位数据,存储在18B20的两个8比特的RAM中,二进制中的前面5位是符号位,如果测得的温度大于0,这5位为0,只要将测到的数值乘于0.0625即可得到实际温度;如果温度小于0,这5位为1,测到的数值需要取反加1再乘于0.0625即可得到实际温度。例如+125℃的数字输出为07D0H,
实际温度=07D0H*0.0625=2000*0.0625=125℃。
例如-55℃的数字输出为FC90H,则应先将11位数据位取反加1得370H(符号位不变,也不作运算),
实际温度=370H*0.0625=880*0.0625=55℃。
可见其中低四位为小数位。

第四章系统软件设计
4.1系统软件总体设计

主程序流程图如图4.1所示,单片机上电后先进行初始化,清楚一些参数的初值,然后等待用户按下对应的按键并进入对应的功能,当用户按下测量按键的时候流程如图4.1(c)所示,单片机通过定时15s测量人体的脉搏次数流程如图4.1(b)所示,然后再换算出对应的真实的脉搏次数再在液晶屏幕上显示流程如图4.1(a)所示,当用户按下设置脉搏范围设定按键后,单片机根据用户按下的按键进行增加或减少范围。
首先先调用液晶自定义的字库,设置好DDRAM地址后在第一行显示,根据程序中的数据设置显示数据的首地址并设置循环量,在循环过程中不断的取字符代码直到终止,第二行的显示过程同一行的显示过程一样,两行显示完毕后便结束子程序,如图4.2所示[15]。

4.2程序设计原理
软件任务分析和硬件电路设计结合进行,哪些功能由硬件完成,哪些任务由软件完成,在硬件电路设计基本定型后,也就基本上决定下来了。
软件任务分析环节是为软件设计做一个总体规划。从软件的功能来看可分为两大类:一类是执行软件,它能完成各种实质性的功能,如测量,计算,显示,打印,输出控制和通信等,另一类是监控软件,它是专门用来协调各执行模块和操作者的关系,在系统软件中充当组织调度角色的软件。这两类软件的设计方法各有特色,执行软件的设计偏重算法效率,与硬件关系密切,千变万化。
软件任务分析时,应将各执行模块一一列出,并为每一个执行模块进行功能定义和接口定义(输入输出定义)。在各执行模块进行定义时,将要牵扯到的数据结构和数据类型问题也一并规划好。
各执行模块规划好后,就可以监控程序了。首先根据系统功能和键盘设置选择一种最适合的监控程序结构。相对来讲,执行模块任务明确单纯,比较容易编程,而监控程序较易出问题。这如同当一名操作工人比较容易,而当一个厂长就比较难了。
软件任务分析的另一个内容是如何安排监控软件和各执行模块。整个系统软件可分为后台程序(背景程序)和前台程序。后台程序指主程序及其调用的子程序,这类程序对实时性要求不是太高,延误几十ms甚至几百ms也没关系,故通常将监控程序(键盘解释程序),显示程序和打印程序等与操作者打交道的程序放在后台程序中执行;而前台程序安排一些实时性要求较高的内容,如定时系统和外部中断(如掉电中断)。也可以将全部程序均安排在前台,后台程序为“使系统进入睡眠状态”,以利于系统节电和抗干扰。
第五章系统调试
5.1软件调试
基于单片机的脉搏计系统是多功能的数字型设计,,所以对于它的程序也较为复杂,所以在编写程序和调试时出现了相对较多的问题。最后经过多次的模块子程序的修改,一步一步的完成,最终解决了软件。在软件的调试过程中主要遇到的问题如下:
问题1:烧入程序后,LCD液晶显示闪动,而且亮度不均匀。
解决:首先对调用的延时进行逐渐修改,可以解决显示闪动问题。其次,由于本作品使作动态扫描方式显示的数字,动态扫描很快,人的肉眼是无法看出,但是调用的显示程序时,如果不在反回时屏蔽掉最后的附值,则会出现很亮的现象,所以在显示的后面加了屏蔽子令,最后解决了此问题。
问题2:当用户按下按键的时候,单片机读取的数值跟设定的数值不对。
解决:重新检查矩阵键盘电路的连接,重新建立一个新的对应关系。
5.2硬件调试
基于单片机的脉搏计系统的电路较大,对于焊接方面更是不可轻视,庞大的电路系统中只要出于一处的错误,则会对检测造成很大的不便,而且电路的交线较多,对于各种锋利的引脚要注意处理,否则会刺破带有包皮的导线,则会对电路造成短路现象[14]。
在本脉搏计的设计调试中遇到了很多的问题。回想这些问题只要认真多思考都是可以避免的,以下为主要的问题:
问题1:最开始的时候以为单片机IO口直接可以驱动蜂鸣器发声,后来调试的时候久久不能出声音(见附录C)。
解决:经过查找相关资料,知道扬声器需要三极管来驱动,后来把三极管放大器加上系统便可以正常工作。
问题2:开始的时候由于没想到脉搏信号十分微弱大概在uV级别,因此没有放大足够的倍数,单片机最后没有检测到脉搏的信号(见附录C)。
解决:经过查找相关资料,确定脉搏信号的幅值范围后,增加放大器的放大倍数就解决问题。
5.3调试结果
1.放大倍数的增加
传感器的输出端经示波器观察有幅度很小的正弦波,但经整形输出后检测到的脉冲还是很弱,在确定电路没有问题的情况下,加强信号的放大倍数,调整电阻R23和R27的阻值。
2.时钟的调试
根据晶体振荡频率计算出内部定时器的基本参数,通过运行一段时间可通过秒表来校正后,看时间误差的量,以这个量为依据改变程序中的内部定时器基本参数,就可使时钟调准确。
3.开机后无显示
首先检查交流电源部分,有无交流,若无则可能保险管或变压器烧坏,如有继续查直流有无,如无则电源已烧坏,可更换解决。
4.显示正常但经适当运动后测量,脉搏次数没有增加
可能是前置放大级有问题,可采用更换的办法判断并排除。
5.进人测量状态,但测量值不稳定
主要是光电传感器受到电磁波等干扰,其次是损坏或有虚焊。
6.开机后显示不正常或按键失灵
可查手指摆放的位置或按键电路,若无故障则是硬件损坏。
经过一系列的问题查找后系统最终能正常工作,并完成所有的功能。
5.4误差分析

表3.1列出了测量值,但存在误差,由于传感器和其他器件本身并非理想线性,实测数据进行了线性补偿。
由均方差公式得:

结论
通过这次毕业设计,我学到了不少课本上没有的知识,也锻炼了自己的动手能力,将以前学过的零散的知识串到一起。经过我长时间的设计及调试,本系统基本能实现基于单片机的脉搏计的所有功能。不足之处有:1.硬件的稳定性有待进一步提高2.系统人性化还不足。
我的综合设计主要涉及硬件和软件两方面的内容,通过这些我的硬件和软件开发能力都获得了提高。首先硬件方面,基本了解了电子产品的开发流程和所要做的工作。基本掌握了Protel99SE原理图的方法,并设计了一个单片机最小系统。通过开发板的设计和硬件搭建的过程,使我对51系单片机的接口有了更深层次的理解,熟悉了一些单片机常用的外围电路引脚和连接方法,如LCD液晶,键盘等。并且我学会了分析问题解决问题的能力,加深了对所学理论知识的理解和运用。我的动手能力得到了很大的提高,创新意识得到了锻炼。
参考文献
[1]陈权昌.李兴富.单片机原理及应用[M].广州:华南理工大学出版社,2007.8.
[2]李庆亮.C语言程序设计实用教程[M].北京:机械工业出版社,2005.3.
[3]杨志忠.数字电子技术[M].北京:高等教育出版社,2003.12.
[4]及力.Protel 99 SE原理图与PCB设计教程[M].北京:电子工业出版社,2007.8.
[5]徐江海.单片机实用教程[M].北京:机械工业出版社,2006.12
[6]胡宴如.模拟电子技术[M].北京:高等教育出版社,2008.6.
[7]刘宁.单片机多功能时钟的设计[M].浙江:浙江海洋学院,2009.
[8]汪文.陈林.单片机原理及应用[M].湖北:华中科技大学出版社,2007.
[9]康华光.电子技术基础数字部分[M].北京:高等教育出版社,2008.
[10]邓奕、马双宝、谢龙汉,Protel 99 SE原理图与PCB设计[M],北京:人民邮电出版社,2010.
[11]金伟正,单线数字温度传感器的原理及应用[J],电子技术应用,2000.
[12]华成英、童诗白,模拟电子技术基础(第四版)[M],北京:高等教育出版社,2006.
[13]陈凯,液晶显示万年历、时间、星期及温度[D],湖南:湖南理工学院,2009.
[14]张军,AVR单片机应用系统开发典型实例[M],北京:中国电力出版社,2005.
[15]王新颖,单片机原理及应用[M],北京:北京大学出版社,2008.
[16]李华,MCS-51系列单片机实用接口技术[M],北京:北京航空航天大学出版社,1993.
[17]赵广林,新型语音芯片应用手册[M],北京:电子工业出版社,2008.
[18]吴建平,传感器原理及应用[M],北京:机械工业出版社,200
下载提示:
1、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“文章版权申述”(推荐),也可以打举报电话:18735597641(电话支持时间:9:00-18:30)。
2、网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
3、本站所有内容均由合作方或网友投稿,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务。
原创文章,作者:写文章小能手,如若转载,请注明出处:https://www.447766.cn/chachong/16109.html,