基于单片机的脉搏计.doc_第1页
基于单片机的脉搏计.doc_第2页
基于单片机的脉搏计.doc_第3页
基于单片机的脉搏计.doc_第4页
基于单片机的脉搏计.doc_第5页
已阅读5页,还剩36页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

目 录1引言21.1 目的和意义21.2 研究概况及发展趋势综述31.3 本系统主要研究内容42. 总体方案论证与设计52.1主控模块的选型和论证52.2显示模块的选型和论证52.3传感器的选型和论证52.4时钟芯片的选型和论证62.5系统整体设计概述63.系统硬件电路设计73.1主控模块73.1.1 STC89C52单片机主要特性73.1.2 STC89C52单片机的中断系统103.1.3 单片机最小系统设计103.2 LCD液晶显示器简介103.2.1 液晶原理介绍103.2.2液晶模块简介113.2.3液晶显示部分与STC89C52的接口123.3键盘模块设计123.4蜂鸣器模块设计133.5信号采集电路设计133.5.1传感器简介133.5.2放大电路143.5.3整形电路143.5时钟模块的设计143.5.1 DS1302概述153.5.2 DS1302内部RTC 和RAM 地址分配173.5.3 DS1302时钟电路设计194.系统软件设计214.1系统软件总体设计214.2程序设计原理225.系统调试235.1硬件调试235.2软件调试235.3调试结果236.结论24附录26系统整体原理图26元件清单26系统源程序2827 基于单片机的脉搏计摘要:人体脉象中富含有关心脏、内外循环和神经等系统的动态信息。而脉搏的病理生理性改变常引发各种心血管事件,脉搏生理性能的改变可以先于疾病临床症状出现,通过对脉搏的检测可以对如高血压和糖尿病等引起的血管病变进行评估。同时脉搏测量还为血压测量,血流测量及其他某些生理检测技术提供了一种生理参考信号。 本文主要介绍了数字式脉搏计的具体实现方法,利用红外传感器产生脉冲信号,经过放大整形后,输入单片机内进行相应的控制,从而测量出一分钟内的脉搏跳动次数,快捷方便。通过观测脉搏信号,可以对人体的健康进行检查,通常被用于保健中心和医院。系统可以供用户测量当时的脉搏次数,同时还可以设定上限次数和下限次数,当测量的范围超过设定的范围则驱动蜂鸣器报警提醒,除此外用户还可以设定每天闹钟提醒测量,时间可以自行设定.系统主控芯片采用STC89C52,可以把采集到的脉搏信号显示在LCD1602上。关键词:STC89C52,独立键盘,LCD显示管,红外传感器。1 引言1.1 目的和意义 脉搏是由心脏搏动而引起, 经动脉和血流传至远端的桡动脉处, 它携带有丰富的人体健康状况信息。早在公元前7世纪脉诊就成为中医的一项独特诊病方法。但自古以来中医独特的诊断方法及治病的疗效总是笼罩着一层神秘的面纱。中医一直是靠手指获取脉搏信息, 这难免存在许多主观臆断因素, 况且这种用手指切脉的技巧很难掌握,因此人们迫切期望尽早实现脉诊的科学化和现代化。随着传感器技术及计算机处理技术的发展,人们希望能够将现代技术应用于中医脉象诊断,以便更科学、更客观地揭示脉象的实质与特征。另一方面从西医的角度看,近年来人们也试图根据脉搏波的变异性来评价和诊断人体心血管系统的病变,以便能找到一个有效的心血管疾病早期无创诊断的方法。因此,对脉搏信号进行无失真的检测、采集和处理是一项重要而很有意义的基础工作,它是对脉搏信号进一步分析并依此对心脏及动脉血管系统疾病进行预报和诊断的前提。本论文的研究主要是基于这方面来进行的,从客观、物理的角度来诠释人体脉搏系统。心率(Heart Rate):用来描述心动周期的专业术语,是指心脏每分钟跳动的次数,以第一声音为准。在正常情况下,脉率和心率是一致的。正常成年人安静时的心率有显著的个体差异,平均在75次/分左右(60100次/分之间)。初生儿的心率很快,可达130次/分以上。在成年人中,女性的心率一般比男性稍快。健康成人的心率为60100次/分,大多数为6080次/分,女性稍快;3岁以下的小儿常在100次/分以上;老年人偏慢。成人每分钟心率超过100次(一般不超过 160次/分)或婴幼儿超过 150次/分者,称为窦性心动过速。如果心率在 160220次/分,常称为阵发性心动过速。心率低于60次/分者(一般在40次/分以上),称为窦性心动过缓。如心率低于40次/分,应考虑有房室传导阻滞。心率过快超过160次/分,或低于40次/分,大多见于心脏病病人,病人常有心悸、胸闷、心前区不适,应及早进行详细检查,以便针对病因进行治疗。对某些阵发性心率过速或过缓,往往在就医时测试出心率正常,以至使医生无法确诊,所以我们设计出这种可以随时进行心率测量的心率计,不仅可以随时地监测一个人的健康状况,而且为医生对这种病症的确诊提供证据。人体心室周期性的收缩和舒张导致主动脉的收缩和舒张,使血流压力以波的形式从主动脉根部开始沿着整个动脉系统传播,这种波称为脉搏波。脉搏波所呈现出的形态、强度、速率和节律等方面的综合信息,很大程度上反映出人体心血管系统中许多生理病理的血流特征。 传统的脉搏测量采用脉诊方式,中医脉象诊断技术就是脉搏测量在中医上卓有成效的应用,但是受人为的影响因素较大,测量精度不高。无创测量(NoninvasiveMeas2urements)又称非侵入式测量或间接测量,其重要特征是测量的探测部分不侵入机体,不造成机体创伤,通常在体外,尤其是在体表间接测量人体的生理和生化参数。 生物医学传感器获取生物信息并将其转换成易于测量和处理信号的一个关键器件。光电式脉搏传感器是根据光电容积法制成的脉搏传感器,通过对手指末端透光度的监测,间接检测出脉搏信号。光电式脉搏传感器具有结构简单、无损伤、可重复好等优点,本文讨论的就是基于光电式脉搏传感器的设计和具体实现。1.2 研究概况及发展趋势综述脉搏系统和脉搏信息的研究包括两大方面: 一是理论分析与计算(即建模方面);二是信号检测与分析。从发表的文献来看, 国外在前一方面做了大量的研究, 也早于国内学者; 而国内在后一方面的研究多于国外。对脉搏信号的分析主要包括以下方面:(1)脉搏信号检测与提取用脉搏记录仪器描绘脉搏波图像已有百余年的历史。1860年法国人研制了杠杆脉搏描记器,成为现代脉象描记的基础。脉象仪的总体构成包括脉象信号检测,信号预处理和信号分析三个环节。我国医务界约从50年代初就开始了用西方传来的脉搏描记技术,使脉象图形化。近十多年来,已经研制出了许多性能各异的脉象仪,各类脉搏描记器最关键和差异较大的部分就是脉象传感器的研制。从测量原理上讲,脉象传感器可分为机械式、压电式、光电容式等多种。(2)脉搏信号处理与特征提取目标信号检测的关键是提取信号的特征。在实际中,目标信号总是淹没在大量的杂波或干扰中,而且目标信号的幅值或功率较杂波或干扰信号可能还低得多,这就需要进行有效的信号处理。时域分析法:目前国内对脉象信号的特征提取方法,多数采用时域分析法,即在时间方向上分析波动信号的动态特征,通过对主波、重搏前波、重搏波的高度、比值、时值、夹角、面积值的参量分析,找出某些特征与脉象变化的内在联系。时域分析法包括直观形态法、多因素识脉法、脉象速率图法、脉图面积法。直观形态法。频域分析法:频域分析主要是通过离散快速傅里叶变换,将时域的脉搏波曲线变换到频域,得到相应的脉搏频谱曲线,通过频谱曲线的特征分析,从中提取与人体生理病理相应的信息,实现脉象分类。与时域分析不同, 脉搏信号的频域特征可分辨性好, 因此80年代以来国内外一些学者开始在频域内对脉搏信号进行分析, 初步取得了有意义的结果。这种从频域和能量的角度来分析脉搏信号的思想是十分正确的。我们从能量角度研究了几种不同疾病脉搏信号的特征频域特征和差异, 利用频域分析的延伸技术倒谱与同态解卷,首次估计出了人体脉搏系统的传递函数, 分析了脉搏系统的频率特性。时频联合分析法:是把一维信号或系统表示成一个时间和频率的二维函数,时频平面能描述出各个时刻的谱成分。常用的时频表示方法有短时傅立叶变换和小波变换(WT) 。短时傅立叶变换(STFT)方法:是一种广义情形,是一种线性时频表示方法,它依赖于被分析信号的线性特性,即信号的频谱与在数据中提供正弦成分的幅度成线性比例。其最主要的优点是容易实现、计算简洁有效,而它主要的缺陷是时间和频率分辨率在整个时频平面上固定不变。另外的限制是对一个特殊的信号,需要一个特殊的窗才能得到最佳分辨率。小波变换(WT):是另外一种重要的线性时频表示,它在时频平面上具有可变的时间和频率分辨率,把FT 中的正弦基函数修改成在整个时频平面上具有可变时频分辨率的基函数,使得它在高频区域能够提供高的时间分辨率,而在低频区域能够提供高的频率分辨率。小波变换这种独特的能力使其成为分析脉搏这种非平稳信号的有力工具。在目前已知的小波函数中,复值调制的Gaussian 函数是使用最高的小波之一。1.3 本系统主要研究内容本系统设计制作一个基于单片机的脉搏计。能实现以下几种功能:(1)键盘扫描,通过单片机检测用户按下的是哪个按键并执行相应的功能。(2)通过红外传感器把信号提取并通过滤波放大把信号整形成方波给单片机计算一分钟内的脉搏次数。(3)用户可以设置脉搏次数的上限和下限,超过上限或上限单片机会驱动蜂鸣器发响。(4)用户可以设置闹钟时间用来提醒用户定时测量脉搏次数。2. 总体方案论证与设计根据所要实现的功能划分,系统一共需要以下几个模块:主控模块、显示模块、信号采集电路,以下就针对这几个模块的选型和论证进行讨论。2.1主控模块的选型和论证方案一:采用MSP430系列单片机,该单片机是TI公司1996年开始推向市场的一种16位超低功耗的混合信号处理器。其内部集成了很多模拟电路、数字电路和微处理器,提供强大的功能。不过该芯片昂贵不适合一般的设计开发。方案二采用51系列的单片机,该单片机是一个高可靠性,超低价,无法解密,高性能的8位单片机,32个IO口,且STC系列的单片机可以在线编程、调试,方便地实现程序的下载与整机的调试。因此选用方案二中的51系列单片机作为主控芯片。2.2显示模块的选型和论证方案一:采用点阵式数码管显示,点阵式数码管是由八行八列的发光二极管组成,对于显示文字比较合适,如采用在显示数字显得太浪费,且价格也相对较高,所以不用此种作为显示。方案二:采用LED数码管动态扫描,LED数码管价格虽适中,对于显示数字也最合适,而且采用动态扫描法与单片机连接时,占用单片机口线少。但是由于数码管动态扫描需要借助74LS164移位寄存器进行移位,该芯片在电路调试时往往有很多障碍,所以不采用LED数码管作为显示。方案三:采用LCD液晶显示屏,液晶显示屏的显示功能强大,可显示大量文字,图形,显示多样,清晰可见,对于本设计而言一个LCD1602的液晶屏即可,价格也还能接受,需要的借口线较多,但会给调试带来诸多方便。所以本设计中方案三中的LCD1602液显示屏作为显示模块。2.3传感器的选型和论证方案一:采用压电传感器用来提取人的脉搏信号,压电传感器是利用某些电介质受力后产生的压电效应制成的传感器。所谓压电效应是指某些电介质在受到某一方向的外力作用而发生形变(包括弯曲和伸缩形变)时,由于内部电荷的极化现象,会在其表面产生电荷的现象。通过此现象可以提取出人的脉搏信号。方案二:采用光电传感器提取人体脉搏信号,授予手指组织可以分成皮肤、肌肉、骨骼等非血液组织和血液组织,其中非血液组织的光吸收量是恒定的,而在血液中,静脉血的搏动相对动脉血是十分微弱的,可以忽略,因此可以认为光透过手指后的变化仅由动脉血的充盈而引起,那么在恒定波长的光源的照射下,通过检测透过手指的光强将可以间接测量到人体的脉搏信号。由于光电传感器较压电传感器容易在一般的地方可以买得到,因此这里选用光电传感器来提取人体脉搏信号。2.4时钟芯片的选型和论证方案一:直接采用单片机定时计数器提供秒信号,使用程序实现时间计数。采用此种方案虽然可以减少时钟芯片的使用,节约成本,但是,实现的时间误差较大。方案二:采用DS1302时钟芯片实现时钟,DS1302是美国DALLAS公司推出的一种高性能、低功耗、带RAM的实时时钟电路,它可以对年、月、日、周、时、分、秒计时,具有闰年补偿功能,工作电压为2.5V5.5V。采用三线接口与单片机进行通信,并可采用突发一次传送多个字节的时钟信号或RAM数据。DS1302内部有一个31*8的用于临时存放数据的RAM存储器。DS1302是DS1202的升级产品,与DS1202兼容,但增加了主电源/后备电源双电源引脚,同时提供了对后备电源进行涓流充电的能力。主要特点是采用串行数据传输,可为掉电保护电源提供可编程的充电功能,并且可以关闭充电功能。采用普通32.768KHZ晶振作为标准时钟。因此本设计中采用方案二中的DS1302作为时钟模块。2.5系统整体设计概述图1 系统结构框图 STC89C52、按键、LCD1602、光电传感器、时钟模块、运放等构成,系统设有四个按键,可以设置上下限脉搏数,当超过范围的时候单片机会驱动蜂鸣器发响,脉搏测量的时候需要人把手轻轻的按在光电传感器上面,由于人脉搏跳动的时候,血液的透光性不一样会导致接收器那边接收的信号强弱不一样,间接的把人脉搏信号传回,通过运放对其进行放大、整形后连接到单片机的IO口,单片机利用外部中断对其进行计数,最终换算成人一分钟脉搏的跳动次数,最终显示在液晶屏上。除此之外系统还带一个定时提醒测量的时钟功能,用户可以设定闹钟时间。3.系统硬件电路设计3.1主控模块主控模块模块在整个系统中起着统筹的作用,需要检测键盘等各种参数,同时驱动液晶显示相关参数,在这里我们选用了51系列单片机中的STC89C52单片机作为系统的主控芯片。51系列单片机最初是由Intel 公司开发设计的,但后来Intel 公司把51 核的设计方案卖给了几家大的电子设计生产商,譬如 SST、Philip、Atmel 等大公司。因此市面上出现了各式各样的均以51 为内核的单片机。这些各大电子生产商推出的单片机都兼容51 指令、并在51 的基础上扩展一些功能而内部结构是与51一致的。STC89C52有40个引脚,4个8位并行I/O口,1个全双工异步串行口,同时内含5个中断源,2个优先级,2个16位定时/计数器。STC89C52的存储器系统由4K的程序存储器(掩膜ROM),和128B的数据存储器(RAM)组成。STC89C52单片机的基本组成框图见图3-1。图3-1 STC89C52单片机结构图 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 位并行IO 接口P0P3,每个口既可以用作输入,也可以用作输出。5. 两个定时器计数器,每个定时器计数器都可以设置成计数方式,用以对外部事件进行计数,也可以设置成定时方式,并可以根据计数或定时的结果实现计算机控制。为方便设计串行通信,目前的52 系列单片机都会提供3 个16 位定时器/计数器。6. 五个中断源的中断控制系统。现在新推出的单片机都不只5 个中断源,例如SST89E58RD 就有9 个中断源。7. 一个全双工UART(通用异步接收发送器)的串行IO 口,用于实现单片机之间或单机与微机之间的串行通信。8. 片内振荡器和时钟产生电路,但石英晶体和微调电容需要外接。最高允许振荡频率为12MHz。SST89V58RD 最高允许振荡频率达40MHz,因而大大的提高了指令的执行速度。图3-2 STC89C52单片机管脚图部分引脚说明:1.时钟电路引脚XTAL1 和XTAL2:XTAL2(18 脚):接外部晶体和微调电容的一端;片内它是振荡电路反相放大器的输出端,振荡电路的频率就是晶体固有频率。若需采用外部时钟电路时,该引脚输入外部时钟脉冲。要检查振荡电路是否正常工作,可用示波器查看XTAL2 端是否有脉冲信号输出。XTAL1(19 脚):接外部晶体和微调电容的另一端;在片内它是振荡电路反相放大器的输入端。在采用外部时钟时,该引脚必须接地。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 端有效,即允许读出EPROMROM 中的指令码。PSEN 端同样可驱动8 个LS 型TTL 负载。要检查一个8051/8031 小系统上电后CPU 能否正常到EPROMROM 中读取指令码,也可用示波器看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固化编程时,作为施加较高编程电压(一般12V21V)的输入端。3.输入/输出端口P0/P1/P2/P3:P0口(P0.0P0.7,3932 脚):P0口是一个漏极开路的8 位准双向I/O口。作为漏极开路的输出端口,每位能驱动8 个LS 型TTL 负载。当P0 口作为输入口使用时,应先向口锁存器(地址80H)写入全1,此时P0 口的全部引脚浮空,可作为高阻抗输入。作输入口使用时要先写1,这就是准双向口的含义。在CPU 访问片外存储器时,P0口分时提供低8 位地址和8 位数据的复用总线。在此期间,P0口内部上拉电阻有效。P1口(P1.0P1.7,18 脚):P1口是一个带内部上拉电阻的8 位准双向I/O口。P1口每位能驱动4 个LS 型TTL 负载。在P1口作为输入口使用时,应先向P1口锁存地址(90H)写入全1,此时P1口引脚由内部上拉电阻拉成高电平。P2口(P2.0P2.7,2128 脚):P2口是一个带内部上拉电阻的8 位准双向I/O口。P口每位能驱动4个LS 型TTL 负载。在访问片外EPROM/RAM 时,它输出高8 位地址。P3口(P3.0P3.7,1017 脚):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还可以作为串行口的波特率发生器。3.1.3 单片机最小系统设计图3-3 单片机最小系统电路图 图3-3为单片机最小系统电路图,单片机最小系统有单片机、时钟电路、复位电路组成,时钟电路选用了12MHZ的晶振提供时钟,根据官网的数据手册,要让晶振起振还要配备2个30PF的电容,时钟电路作用为给单片机提供一个时间基准,其中执行一条基本指令需要的时间为一个机器周期,单片机的复位电路可以对单片机进行复位,按下复位按键之后可以使单片机进入刚上电的起始状态,这里RC电路的作用就是让单片机有个充电的过程,为了保证复位成功电容充放电时间要大于2US,选择了10K和10UF较为常规的值,充放电时间远大于2US。图中10K排阻为P0口的上拉电阻,由于P0口跟其他IO结构不一样为漏极开路的结构,因此要加上拉电阻才能正常使用。3.2 LCD液晶显示器简介由于本设计中要求显示界面显示一些参数,因此这里选用了LCD1602作为界面显示,可以把一些相关的参数进行显示。 3.2.1 液晶原理介绍液晶显示器(LCD)英文全称为Liquid Crystal Display,它一种是采用了液晶控制透光度技术来实现色彩的显示器。和CRT显示器相比,LCD的优点是很明显的。由于通过控制是否透光来控制亮和暗,当色彩不变时,液晶也保持不变,这样就无须考虑刷新率的问题。显示接口用来显示系统的状态,命令或采集的电压数据。本系统显示部分用的是LCD液晶模块,采用一个162的字符型液晶显示模块。 点阵图形式液晶由 M 行N 列个显示单元组成,假设 LCD 显示屏有64行,每行有 128列,每 8列对应 1 个字节的 8 个位,即每行由 16 字节,共 168=128个点组成,屏上 6416 个显示单元和显示 RAM 区 1024 个字节相对应,每一字节的内容和屏上相应位置的亮暗对应。一个字符由 68 或 88点阵组成,即要找到和屏上某几个位置对应的显示 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-4 LCD1602引脚图液晶寄存器选择控制如表3-1。表3-1寄存器选择控制RSR/W操作说明00写入指令寄存器(清除屏等)01读busy flag(DB7),以及读取位址计数器(DB0DB6)值10写入数据寄存器(显示各字型等)11从数据寄存器读取数据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行,字型为57点阵,然后设置为整体显示,取消光标和字体闪烁,最后设置为正向增量方式且不移位。向LCD的显示缓冲区中送字符,程序中采用2个字符数组,一个显示字符,另一个显示电压数据,要显示的字符或数据被送到相应的数组中,完成后再统一显示.首先取一个要显示的字符或数据送到LCD的显示缓冲区,程序延时2.5ms,判断是否够显示的个数,不够则地址加一取下一个要显示的字符或数据。图3-5 LCD1602与STC89C52的接口3.3键盘模块设计本按键模块使用的是多位独立按键,按键一端接IO口,一端接地,由于单片机的IO口都有内部上拉,因此当按键没有按下的时候,IO检测到的时候高电平,当按键按下的时候,相当于IO短接地,因此这时候单片机检测到的电平为低电平,通过检测不同时刻的IO口状态就可以判断按下的是那个按键。键盘模块电路图如图3-6所示。图3-6键盘模块电路图3.4蜂鸣器模块设计本设计还带有脉搏超出设定范围报警的功能,当检测到当前的脉搏跳动次数超出用户所设定的上限或者下限的时候,单片机就可以驱动蜂鸣器发声。由于蜂鸣器的工作电流一般比较大,以致于单片机的I/O口是无法直接驱动的,所以要利用三极管开关电路来驱动。本处选用的是8550三极管,它是一个PNP型的三极管,当基极给低电平的时候三极管导通,这时候蜂鸣器发声,当给高电平的时候,三极管关闭,蜂鸣器不发声。蜂鸣器模块的电路图如图3-7所示。图3-7蜂鸣器驱动电路图3.5信号采集电路设计此部分电路的功能是由传感器将脉搏信号转换为电信号,一般为几十毫伏,必须加以放大,以达到整形电路所需的电压,一般为几伏。放大后的信号波形是不规则的脉冲信号,因此必须加以滤波整形,整形电路的输出电压应满足计数器的要求。选择电路:所选放大整形电路框图如图3-8所示。图3-8放大整形电路框图3.5.1传感器简介传感器采用了红外光电转换器,作用是通过红外光照射人的手指的血脉流动情况,把脉搏跳动转换为电信号,其原理电路如图3-9所示。图3-9传感器信号调节原理电路如图3-9中,红外管VD采用ST188。用+5V电源供电,R1取150,R2取33k,当人把手指放在发光二极管和光电二极管之间的时候,光电二极管接收到的信号会随人脉搏强度的变化而变化。3.5.2放大电路图3-10放大滤波电路图3-10为脉搏计的放大滤波信号,由于脉搏信号输出的信号十分微弱,一般在uV级别,除此外输出的信号一般会伴随很大的噪声干扰,因此在这里用LM358搭建起一个放大和滤波电路,其中C4和R8,C5和R7起到的是高通电路,可以隔绝低频干扰,R4和C3,R2和C2起到的是低通滤波的作用,可以隔绝高频干扰。3.5.3整形电路经过放大滤波后的脉搏信号仍是不规则的脉冲信号,且有低频干扰,仍不满足计数器的要求,必须采用整形电路,这里选用了滞回电压比较器,如图3-11所示,其目的是为了提高抗干扰能力。集成运放采用了74HC14,除此外74HC14还接上了一个LED用作指示脉搏跳动的状态。图3-11波形整形电路3.5时钟模块的设计本系统还附带有一个时钟模块,这里除了可以提供时间信息外,用户还可以设定闹钟,到时间点后可以提醒用户定时测量脉搏,本处选用串行日历时钟芯片DS1302。与采用并行总线与单片机进行数据通信的时钟芯片相比,DS1302与单片机的连线大为减少,极大的节省了单片机的系统资源,单片机通过读取DS1302上面的数据可以得到实时时间。3.5.1 DS1302概述DS1302 是美国DALLAS公司推出的一种高性能、低功耗、带RAM的实时时钟电路,它可以对年、月、日、星期、时、分、秒进行计时,具有闰年补偿功能,工作电压为2.5V5.5V。采用三线接口与CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或RAM数据。DS1302内部有一个318的用于临时性存放数据的RAM寄存器。DS1302是DS1202的升级产品,与DS1202兼容,但增加了主电源/后背电源双电源引脚,同时提供了对后背电源进行涓细电流充电的能力。低功耗时钟芯片DS1302可以对年、月、日、时、分、秒进行计时,且具有闰年补偿等多种功能。DS1302用于数据记录,特别是对某些具有特殊意义的数据点的记录上,能实现数据与出现该数据的时间同时记录。这种记录对长时间的连续测控系统结果的分析以及对异常数据出现的原因的查找有重要意义。采用DS1302作为记录测控系统中的数据记录,其软硬件设计简单,时间记录准确,既避免了连续记录的大工作量,又避免了定时记录的盲目性,给连续长时间的测量、控制系统的正常运行及检查都来了很大的方便,可广泛应用于长时间连续的测控系统中。在测量控制系统中,特别是长时间无人职守的测控系统中,经常需要记录某些具有特殊意义的数据及其出现的时间。记录及分析这些特殊意义的数据,对测控系统的性能分析及正常运行具有重要的意义。传统的数据记录方式是隔时采样或定时采样,没有具体的时间记录,因此只能记录数据而无法准确记录其出现的时间;若采用单片机计时,一方面需要采用计数器,占用硬件资源,另一方面需要设置中断、查询等,同样耗费单片机的资源,而且某些测控系统可能不允许。而在系统中采用DS1302则能很好地解决这个问题。DS1302时钟芯片包括实时时钟/日历和31字节的静态RAM。它经过一个简单的串行接口与微处理器通信。实时时钟/日历提供秒、分、时、日、周、月和年等信息。对于小于31天的月和月末的日期自动进行调整,还包括闰年校正的功能。时钟的运行可以采用24h或带AM(上午)/PM(下午)的12h格式。采用三线接口与CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或RAM数据。DS1302有主电源/后备电源双电源引脚:VCC1 在单电源与电池供电的系统中提供低电源,并提供低功率的电池备份;VCC2在双电源系统中提供主电源,在这种运用方式中,VCC1 连接到备份电源,以便在没有主电源的情况下能保存时间信息以及数据。DS1302由VCC1或VCC2中较大者供电。当VCC2大于VCC1+0.2V时,VCC2给DS1302供电;当VCC2小于VCC1时,DS1302由VCC1供电。DS1302在任何数据传送时必须先初始化,把RST脚置为高电平,然后把8位地址和命令字装入移位寄存器,数据在SCLK的上升沿被输入。无论是读周期还是写周期,开始8位指定40个寄存器中哪个被访问到。在开始8个时钟周期,把命令字节装入移位寄存器之后,另外的时钟周期在读操作时输出数据,在写操作时写入数据。时钟脉冲的个数在单字节方式下为8加8,在多字节方式下为8加字节数,最大可达248字节数。如果在传送过程中置RST为低电平,则会终止本次数据传送,并且I/O引脚变为高阻态。上电运行时,在VCC =2.5V之前,RST脚必须保持低电平。只有在SCLK为低电平时,才能将RST置为高电平。DS1302的内部结构图如图3-8所示。图3-8 DS1302内部结构图DS1302的引脚排列,其中VCC1为后备电源,VCC2为主电源。在主电源关闭的情况下,也能保持时钟的连续运行。DS1302由VCC1或VCC2两者中的较大者供电。当VCC2大于Vcc10.2V时,VCC2 给DS1302供电。当VCC2小于VCC1时,DS1302由VCC1供电。X1和X2是振荡源,外接32.76kHz晶振。RST是复位/片选线,通过把RST输入驱动置高电平来启动所有的数据传送。RST输入有两种功能:首先,RST接通控制逻辑,允许地址/命令序列送入移位寄存器;其次,RST提供终止单字节或多字节数据的传送手段。当RST为高电平时,所有的数据传送被初始化,允许对DS1302进行操作。如果在传送过程中RST置为低电平,则会终止此次数据传送,I/O引脚变为高阻态。上电运行时,在VCC2.5V之前,RST必须保持低电平。只有在SCLK为低电平时,才能将RST置为高电平。I/O为串行数据输入输出端(双向)。SCLK始终是输入端。图3-9为DS1302的引脚示意图。图3-9 DS1302 引脚示意图VCC,GND-直流电源通过这两个引脚提供给该器件,VCC为+5V 输入,当提供的5V 电源在正常范围内器件能充分地被访问,能对器件读写数据。当3V 的电池被连至该器件且VCC 低于1.25VBAT 时,对器件的读写被禁止,而计时功能照常进行,不受低输入电压的影响。当Vcc 降到低于VBAT,则RAM 区和计时器将被切换到外部电源VBAT 来供电(名义上VBAT 为3.0V 直流电源)。VBAT-电池输入引脚。可以是任意标准的3V 锂电池或其它电源。为了器件能够正常工作,电池电压必须限制在2.03.5V 之间。事实上,写保护带电压被内部电路设置为1.25VBAT。表3-2 DS1302引脚功能表引脚号引脚名称功能1VCC2主电源2,3X1,X2振荡源,外接32768HZ晶振4GND地线5RST复位/片选线6I/O串行数据输入/输出端(双向)7SCLK串行数据输入端8VCC1后备电源3.5.2 DS1302内部RTC 和RAM 地址分配DS1302 的RTC 与RAM 寄存器的地址分配如图3-10所示。RTC 寄存器地址位于00H 到07h 处。RAM 寄存器地址位于08h3Fh。在多字节存取中,当地址指针到达3Fh,即RAM 空间的最后一个单元,则下一个操作地址将翻卷到00h,即时钟空间的开头。图3-10 DS1302地址分配图DS1302的控制字如图3-11所示。控制字节的最高有效位(位7)必须是逻辑1;如果它为逻辑0,则不能把数据写入到DS1302中。位6如果为0,则表示存取日历时钟数据;为1表示存取RAM数据。位51(A4A0)指示操作单元的地址。最低有效位(位0)如为0,表示要进行写操作;为1表示进行读操作。控制字节总是从最低位开始输入/输出。图3-11控制字节的含义为了提高对32个地址的寻址能力(地址/命令位15逻辑1),可以把时钟/日历或RAM寄存器规定为多字节(burst)方式。位6规定时钟或RAM,而位0规定读或写。在时钟/日历寄存器中的地址931或RAM寄存器中的地址31不能存储数据。在多字节方式中,读或写从地址0的位0开始。必须按数据传送的次序写最先的8个寄存器。但是,当以多字节方式写RAM时,为了传送数据不必写所有31字节。不管是否写了全部31字节,所写的每一字节都将传送至RAM。数据读写程序如图3-12所示。图3-12 数据读写程序通过读取正确的寄存器字节能获得正确的时钟和日历信息,实时时钟寄存器如表3-3 所示。通过写入正确的寄存器字节能够设置或者初始化时钟和日历。时钟和日历寄存器中的内容均采用BCD 码格式,时钟寄存器00h的位7 是时钟停止位,当该位被设置为1 时,晶振失效,当该位被清零时,晶振使能。所以,在初始化程序中,使能晶振(CH 位=0)是很重要的。DS1302 可以运行在12 小时或24 小时模式,小时寄存器的位7 被定义为作为12 小时或24 小时模式选择位。当该位为高时选择12 小时模式,采用12 小时模式时,位5 是AM/PM 标志位,该位为1 表示PM。当采用24小时模式时,位5 是第二个10 小时位(2023 小时)。当总线开始工作时,当前的时间信息被传送给一串二级寄存器,时间信息然后从这些二级寄存器中读取,而时钟照常运行。当在读过程中,主寄存器内容发生变化时,这样可以避免再次读寄存器的必要性。DS1302共有12个寄存器,其中有7个寄存器与日历、时钟相关,存放的数据位为BCD码形式,其日历、时间寄存器及其控制字见表3-2,其中奇数为读操作,偶数为写操作。表3-3 DS1302的日历、时钟寄存器及其控制字寄存器名命令字取值范围各位内容写操作读操作76543210秒寄存器80H81H00-59CH10SECSEC分钟寄存器82H83H00-59010MINMIN小时寄存器84H85H01-12或00-232/24010APHRHR日期寄存器86H87H01-28,29,30,31010DATEDATE月份寄存器88H89H01-12000IOMMONTH周日寄存器8AH8BH01-0700000DAY年份寄存器8CH8DH00-9910YEARYEAR时钟暂停:秒寄存器的位7定义位时钟暂停位。当它为1时,DS1302停止振荡,进入低功耗的备份方式。通常在对DS1302进行写操作时(如进入时钟调整程序),停止振荡。当它为0时,时钟将开始启动。AM-PM/12-24小时方式:小时寄存器的位7定义为12或24小时方式选择位。它为高电平时,选择12小时方式。在此方式下,位5是AM/PM位,此位是高电平时表示PM,低电平表示AM,在24小时方式下,位5为第二个10小时位(2023h)。DS1302 控制寄存器用来控制SQW/OUT 引脚的操作。OUT:输出控制。当方波输出失效时,该位控制SQW/OUT 引脚的输出。如果SQWE=0,若OUT=1 则SQW/OUT 引脚的逻辑电平为1,而OUT=0 则SQW/OUT 引脚的逻辑电平为0。SQWE:方波使能。当该位被设置为逻辑1 时,使能晶振输出,方波输出的频率由RS1 和RS0 位的值来确定。当方波输出的频率设为1Hz,则时钟寄存器内容将在方波的下降沿更新。 表3-4 方波输出频率 RS1RS0SQW OUTPUTFREQUENCY 001 Hz014.096 KHz108.192 KHz1132.768 KHzRS:速率选择。当方波输出使能时,这些位控制方波输出的频率。表3-5列出了方波频率与RS 位的值的对应关系。3.5.3 DS1302时钟电路设计实时时钟芯片DS1302采用串行数据传输,可为掉电保护电源提供可编程的充电功能,也可以关闭充电功能,芯片采用32.768Hz晶振。单片机通过时序可以读出时钟芯片内部的相关时间信息,DS1302的时钟电路如图3-13所示。图3-13 DS1302时钟电路4.系统软件设计4.1系统软件总体设计图4-1系统流程图主程序流程图如图4-1所示,单片机上电后先进行初始化,清楚一些参数的初值,然后等待用户按下对应的按键并进入对应的功能,如果是则进入设置闹钟和时间以及脉搏上下限等参数,每个循环都会判断用户是否按下测量按键,按下则开启定时器测量脉搏信号,在测量过程中时刻判断用户是否按下停止按键,按下的停止计数,否则继续测量,测量完成后计数出等效一分钟的脉搏次数,并显示出来,然后判断是否超过用户设定的上限次数和下限次数,有则驱动蜂鸣器报警,没有则取消报警.图4-2 LCD1602初始化子函数流程图首先先调用液晶自定义的字库,设置好DDRAM地址后在第一行显示,根据程序中的数据设置显示数据的首地址并设置循环量,在循环过程中不断的取字符代码直到终止,第二行的显示过程同一行的显示过程一样,两行显示完毕后便结束子程序。图4-3 时钟模块子函数流程图时钟模块的流程图如图4-3所示,一开始先让时钟芯片的复位引脚置高进而启动一次数据传送工作,接着写一位命令字节,接着给SCLK发送脉冲信号,一致循环直到发送8个命令字节为止。接着是写数据进时钟芯片,首先先写入一位数据字节,然后给SCLK引脚发送脉冲,一致循环写入8次,这样就可以把数据写入,最终使复位引脚变低,这样就可以完成一次时钟芯片的一次操作。4.2程序设计原理软件任务分析和硬件电路设计结合进行,哪些功能由硬件完成,哪些任务由软件完成,在硬件电路设计基本定型后,也就基本上决定下来

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论