50、基于51单片机的心率计(上下限报警+蓝牙)(全套资料)

编号:50

基于51单片机的心率计(上下限报警+蓝牙)

功能描述:

50、基于51单片机的心率计(上下限报警+蓝牙)
        由 51单片机最小系统+心率模块 +LCD1602显示模块+独立按键+声光报警模块+串口模拟蓝牙模块组成
1、采用51单片机为主控制器
2、采用心率传感器PulseSensor测量心率。
3、LCD1602显示测得的心率值。
4、三个独立按键可设定心率上下限值。
5、当测得心率超出范围时,声光报警。
6、通过串口蓝牙模块将心率发送至串口。

视频演示链接:

50、基于51单片机的心率计(上下限报警+蓝牙)

仿真图:

PCB图:

实物图:

程序源码:

/***********************************************

***********************************************/
#include "reg52.h"
#include "lcd1602.h"
#include "delay.h"
#include "KEY.h"
#include "lcd1602.h"
#include "pulsesensor.h"
#include "uart.h"

sbit beep = P2^3;				//蜂鸣器控制脚

sfr T2MOD = 0xc9;          	 	//timer2 mode register

bit flag_beep = 0;				//报警标志位
bit flag_timer = 0;				//600ms定时时间到标志位

short Htup = 150,Htdw = 50;		//心率上限 默认150  下限默认50


/************************************************************************
* 函数: void Timer2Init(void)
* 描述: 定时器1初始化函数
* 参数: none.
* 返回: none.
* 备注:定时50ms 11.0592MHz
************************************************************************/  
void Timer2Init(void)	//50毫秒@11.0592MHz
{
	T2MOD = 0;			//初始化模式寄存器
	T2CON = 0;			//初始化控制寄存器
	TL2 = 0x00;			//设置定时初值
	TH2 = 0x4C;			//设置定时初值
	RCAP2L = 0x00;		//设置定时重载值
	RCAP2H = 0x4C;		//设置定时重载值
	TR2 = 1;			//定时器2开始计时
	ET2 = 1;			//开始计数
	EA = 1;				//开总中断
}


void main(void)
{
	
	unsigned char keyvalue = 0;		//键值 
	unsigned char Dis_mode = 0;		//显示状态标志 0:显示传感器数据  1:显示日期时间
	short heart = 0;				//定义心率变量
	Lcd1602_Init();		  			//LCD1602液晶初始化
	EXIT0_Init();					//外部中断初始化
 	Timer0Init();					//10毫秒@11.0592MHz
	Timer2Init();					//50毫秒@11.0592MHz
	UartInit();						//9600bps@11.0592MHz
	Lcd1602_String(0,0,"Heart Rate:     ");		//从第11行第0列开始显示	
	Lcd1602_String(0,1,"        ---r/min");
	while(1)
	{	
		heart =Pulsesensor_Read(); 		//获取心率值			
		if(heart==0)		 			//未检测到心率信号  		
		{
			Lcd1602_Write_Com(0xc0+8);	//设定显示位置第二行 第13列
			Lcd1602_Write_Data('-');
			Lcd1602_Write_Data('-');
			Lcd1602_Write_Data('-');
			Lcd1602_Write_Data('r');
			Lcd1602_Write_Data('/');
			Lcd1602_Write_Data('m');
			Lcd1602_Write_Data('i');
			Lcd1602_Write_Data('n');
			flag_beep = 0;				//关报警标志位
		}
		else	 						//检测到心率信号
		{
		 	Lcd1602_Write_Com(0xc0+8);	//设定显示位置第二行 第13列
			Lcd1602_Write_Data(heart/100+0X30);
			Lcd1602_Write_Data(heart%100/10+0X30);
			Lcd1602_Write_Data(heart%100%10+0X30);
			Lcd1602_Write_Data('r');
			Lcd1602_Write_Data('/');
			Lcd1602_Write_Data('m');
			Lcd1602_Write_Data('i');
			Lcd1602_Write_Data('n');
			if(heart>(Htup)
			||heart<(Htdw))				//当前超过上下限  
			{
				flag_beep = 1;			//开报警标志 执行报警程序在定时器中断	
			}
			else
			{
				flag_beep = 0;			//关报警标志位	
			}
	
		}
		KEY_Set();
		if(flag_timer==1)				//1s到
		{
			flag_timer = 0;				//清除标志位
			if(heart==0)		 		//未检测到心率信号  发送---\r\n 		
			{
				Uart_SendChar('T');		//发送到串口 通过蓝牙透传出去  字母T开头  可以自己定义
				Uart_SendChar('-');
				Uart_SendChar('-');
				Uart_SendChar('-');
				Uart_SendChar('\r');
				Uart_SendChar('\n');	
			}
			else						//检测到心跳     发送 xxx\r\\n
			{
				Uart_SendChar('T');		//发送到串口 通过蓝牙透传出去  字母T开头  可以自己定义
				Uart_SendChar(heart/100+0X30);
				Uart_SendChar(heart%100/10+0X30);
				Uart_SendChar(heart%100%10+0X30);
				Uart_SendChar('\r');
				Uart_SendChar('\n');
			}
		}

	}
}
//定时器2中断服务函数	 50ms
void tm2_isr() interrupt 5 using 1
{
	static unsigned int cnt=0;
	static unsigned int cnt1=0;						  
 	TF2 = 0;
	cnt++;
	cnt1++;
	if(cnt1%8==0)			//50ms*8 =400ms				
	{
		cnt1 = 0;
		if(flag_beep==1) 	//报警标志位打开
			beep = ~ beep; 	//蜂鸣器控制脚取反 400ms取反一次 产生滴滴滴 响声 而不是一直长鸣
		else 
			beep = 1;  		//高电平关闭报警
	}

	if(cnt%20==0)    		//50ms*20 =1000ms
	{
		cnt = 0;
		flag_timer = 1;	 	//1000ms到 赋值标志为1  1000ms赋一次 1000ms不是必须的  可以自己修改	
	}

	
}

软件免费下载地址:

1、Proteus仿真软件
文件内容:Proteus7.8安装包、Proteus8.6安装包、Proteus.8.10安装包、Proteus Professional 8.11 SP0安装包

链接:https://pan.baidu.com/s/11LNUZ9BJXWvXf1C4dPc3_w 
提取码:2756 

2、KEIL4 C51软件安装包

链接:https://pan.baidu.com/s/1CTZBqDsPsyIbjCIjI_birA 
提取码:sy2a 

文件下载:

链接:https://pan.baidu.com/s/1OWXRtBQYMKJ_2-jqFjfL4A?pwd=fhwk 
提取码:fhwk

  • 1
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
从头开始设一个基于51单片机的温湿度报警器的lcd1602液晶仿真控制系统,需要以下全套资料: 1.硬件设资料: - 51单片机选型和Datasheet:选择适合的51单片机型号,并收集该型号的Datasheet,以查看引脚定义和使用说明。 - 温湿度传感器选型和Datasheet:选择适合的温湿度传感器以测量温度和湿度,并收集传感器的Datasheet,了解工作原理和使用方法。 - LCD1602液晶屏选型和Datasheet:选择适合的LCD1602液晶屏,并收集液晶屏的Datasheet,以了解液晶屏的接口定义和使用方法。 - 报警器设和Datasheet:设报警器电路,用于报警显示。 - 电路图和PCB设:绘制硬件电路图,并设Printed Circuit Board(PCB)。 2.软件设资料: - Keil C编译器:下载和安装Keil C编译器,用于编写和调试单片机程序。 - 汇编语言和C语言参考手册:学习51单片机的汇编语言和C语言编程,以编写程序。 - 温湿度传感器驱动程序:编写温湿度传感器的驱动程序,以读取传感器数据。 - LCD1602液晶屏驱动程序:编写LCD1602液晶屏的驱动程序,以显示温湿度数据和报警信息。 - 报警器控制程序:编写报警器的控制程序,以触发报警操作。 - 系统整合程序:将以上所有程序整合到一个单片机程序中,实现完整的温湿度报警器功能。 3.测试和调试资料: - 电源电压和电流要求:记录温湿度报警器系统的电源需求,包括电压和电流。 - 仿真软件和工具:选择合适的仿真软件和工具,用于测试和调试单片机程序。 以上是设一个基于51单片机的温湿度报警器lcd1602液晶仿真控制系统时所需的全套资料。这些资料将帮助你完成硬件设、软件设、测试和调试,最终实现一个功能完备的温湿度报警器系统。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

单片机技能设计

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值