【资源下载】下载地址如下:
https://docs.qq.com/doc/DTlRSd01BZXNpRUxl
当手指放在红外线发射二极管和接收二极管中间,随着心脏的跳动,血管中血液的流量将发生变换。由于手指放在光的传递路径中,血管中血液饱和程度的变化将引起光的强度发生变化,因此和心跳的节拍相对应,红外接收二极管的电流也跟着改变,这就导致红外接收二极管输出脉冲信号。该信号经放大、滤波、整形后输出,输出的脉冲信号作为单片机的外部中断信号。单片机电路对输入的脉冲信号进行计算处理后把结果送到LCD1602显示。
#include <reg52.h> #include "lcd1602.h" #define uchar unsigned char #define uint unsigned int unsigned char num=0,timecount=0,displayOK=0,rate=0; unsigned int time[6]={0}; /***********************1ms延时函数*****************************/ void delay_1ms(uint q) { uint i,j; for(i=0;i<q;i++) for(j=0;j<110;j++); } void main() { init_1602(); TCON=0x01;//设置外部中断0 EX0=1; TMOD=0x01;//定时器0初始化 TH0=(65536-50650)/256;//实测每50ms中断的定时值 TL0=(65536-50650)%256; ET0=1;//开定时器中断 //显示基本文字 write_string(1,0," Pulse Rate "); TR0=0;//定时器停止 EA=1;//开总中断 while(1) {