温度心率测量仪在我们的日常生活中已经得到了非常广泛的应用,通过观测温度心率信号,可以对人体的健康进行检查,通常被用于保健中心和医院。为了提高温度心率测量仪的简便性和精确度,本课题设计了一种基于51单片机的温度心率测量仪。系统以STC89C52单片机为核心,以光电传感器利用单片机系统内部定时器来计算时间,由光电传感器感应产生信号,单片机通过对信号累加得到温度心率跳动次数,时间由定时器定时而得。系统运行中可以通过观察指示灯闪烁,若均匀闪烁说明测量值准确。系统停止运行时,能够显示总的温度心率次数,此外我们也加了温度传感器DS18B20来检测人体温。经测试,系统工作正常,达到设计要求。
本设计利用红外光电传感器产生脉冲信号,经过放大整形后,输入单片机内进行相应的控制,从而测量出一分钟内的温度心率跳动次数,快捷方便。系统可以供用户测量当时的温度心率次数,同时还可以设定上限次数和下限次数,当测量的范围超过设定的范围则驱动蜂鸣器报警提醒,当检测的体温超过设置的温度上下限也会蜂鸣器报警提醒,结果最终可以把采集到的温度心率信号显示在LCD1602上。
关键词:STC89C52;温度心率测量仪;LCD显示器;光电传感器;DS18B20
#include <reg52.h> /* 调用单片机头文件 */
#define uchar unsigned char /* 无符号字符型 宏定义 变量范围0~255 */
#define uint unsigned int /* 无符号整型 宏定义 变量范围0~65535 */
#include <DS18N02.h>
#include <intrins.h>
#include "eeprom52.h"
#define DBPort P0
unsigned char i = 0, timecount = 0, displayOK = 0, rate = 0, rate1 = 0, aa = 0, time1 = 0, flat300ms = 0;
unsigned int time[6] = { 0 };
unsigned int oneminte = 0;
unsigned int ReadTempDate;
unsigned char S_temp_H, S_temp_L, S_heart_H, S_heart_L;
unsigned char yemian = 0, biaozhi = 0;
sbit K1 = P1 ^ 0; /* 菜单 */
sbit K2 = P1 ^ 1; /* 加 */
sbit K3 = P1 ^ 2; /* 减 */
sbit Buzzer = P1 ^ 7; /* 控制端 */
sbit rs = P2 ^ 5;
sbit rw = P2 ^ 6;
sbit ep = P2 ^ 7;
bit flag = 1;
/******************把数据保存到单片机内部eeprom中******************/
void write_eeprom()
{
SectorErase( 0x2000 );
byte_write( 0x2000, S_heart_H );
byte_write( 0x2001, S_heart_L );
byte_write( 0x2002, S_temp_H );