标题:
基于51单片机的心率脉搏计仿真及源程序
[打印本页]
作者:
kaola
时间:
2017-4-28 14:18
标题:
基于51单片机的心率脉搏计仿真及源程序
心率脉搏计的仿真原理图:
0.png
(34.21 KB, 下载次数: 42)
下载附件
2017-4-30 02:03 上传
#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," Heart Rate ");
write_string(2,0," /min ");
TR0=0;//定时器停止
EA=1;//开总中断
while(1)
{
if(displayOK==1)
{
rate=60000/(time[1]/5+time[2]/5+time[3]/5+time[4]/5+time[5]/5);
write_sfm3_18B20(2,5,rate);
}
else
{
write_string(2,5," ");
}
delay_1ms(300);
}
}
void ex0() interrupt 0
{
EX0=0;//暂时关外部中断
if(timecount<8) //当连续两次检测时间间隔小于8*50ms=400ms不处理
{
TR0=1;//开定时器
}
else
{
time[num]=timecount*50+TH0*0.256+TL0/1000;//算出间隔时间
TL0=(65536-50650)%256;//重新设置定时器
TH0=(65536-50650)/256;
timecount=0;//50ms计数清零
num++;
if(num==6)//记录到超过等于6次时间
{
num=1;//计数从1开始
displayOK=1; //测得5次开始显示
}
}
EX0=1;
}
void et0() interrupt 1
{
TL0=(65536-50650)%256;
TH0=(65536-50650)/256;
timecount++;//每50ms一次计数
if(timecount>25) //当超过25*50ms=1.5s没有检测到信号停止显示
{
num=0;//数据个数清零
…………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码
0.png
(51.75 KB, 下载次数: 42)
下载附件
2017-4-30 02:04 上传
下载:
心率脉搏检测系统仿真图.zip
(93.4 KB, 下载次数: 92)
2017-4-28 14:17 上传
点击文件名下载附件
仿真图
下载积分: 黑币 -5
作者:
fefen0
时间:
2017-4-28 16:21
只有仿真 ,没有源程序啊?
作者:
w110365154
时间:
2019-12-18 11:06
感谢分享,可以下载下来学习学习
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1