基于单片机的人体脉搏检测系统设计 - 图文(8)

2019-05-18 17:18

附录A 原理图

第 32 页 共 40 页

附录B 主程序

#include #include \

//定义周期测频法测式的周期数,这个值越大,结果越精确,但也需 //要更多的时间。 #define TF_TIMES 3 //频率暂存字

unsigned long g_Ftmp; unsigned long g_Ftmp_All;

//单周期信号结束标志 0未测试完成 1初始化 2测试完成 unsigned int g_flag; //定时器T0溢出次数统计 unsigned long g_T0count; //每分钟心跳次数 unsigned int g_CountMinu;

unsigned char code string1[]=\

void INT0ISR( void ) interrupt 0 // 外部中断0中断服务函数 {

//IE0 = 0; //外部中断0标志位清0 在边沿触发模式下 //会由硬件清零 TR0 = 0; //停止计数 if(1 != g_flag) {

g_Ftmp = g_T0count * 65535;

第 33 页 共 40 页

}

}

g_Ftmp += (unsigned int)(TH0<<8)+TL0; g_flag = 2;

else { } TH0 = 0; TL0 = 0; g_T0count = 0;

TR0 = 1; //启动定时器进行下一周期测频

g_flag = 0;

void T0ISR( void ) interrupt 1 //定时器0溢出中断服务函数 { TH0 = 0; }

void TFInit( void ) //初始化函数 {

EX0 = 1; //使能外部中断0

IT0 = 1; //外部中断0触发方式为边沿触发 高-->低 ET0 = 1; //使能T0溢出中断 PX0 = 1; //外部中断0为高优先级 PT0 = 0;

//定时器0溢出中断为低优先级

第 34 页 共 40 页

TL0 = 0; g_T0count++;

TMOD = 0x01; //屏蔽T1,GATE = 0: 软件控制TR0启动定时器 // C/T = 0: T0工作在定时器方式

// M1\\M0= 01:T0工作方式为16位定时器 TF0 = 0;

//清零标志位,T0溢出中断请求

IE0 = 0; //清零标志位,外部中断标志位 TH0 = 0; TL0 = 0;

g_T0count = 0;//定时器溢出次数初始化 g_Ftmp = 0; g_CountMinu = 0; g_Ftmp_All = 0;

g_flag = 1; //标志位初始化 EA = 1;

//充许全局中断

}

void GetFreq( void ) //求频率 { unsigned char i; g_Ftmp_All = 0; EA = 1;

for(i=0; i

之和

{ while(2 != g_flag || 1 == g_flag); g_flag = 0;

LCD_Showchar(31, i+49);

g_Ftmp_All += g_Ftmp; //每个时钟周期为1us } EA = 0;

第 35 页 共 40 页

//统计TF_TIMES次T

}

g_flag = 1;

g_Ftmp = g_Ftmp_All/TF_TIMES;

g_CountMinu = (60*1000000)/g_Ftmp; void main() { }

TFInit(); LCD_init();

LCD_Showstring(0 , string1); GetFreq();

TS1602DisInt(22, g_CountMinu);

第 36 页 共 40 页


基于单片机的人体脉搏检测系统设计 - 图文(8).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:基于单片机的智能玩具车设计

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: