基于51单片机跑步机脉搏心率检测霍尔测速设计

1、系统功能介绍

  • 系统构成:
    • 本设计由STC89C52单片机电路+脉搏/心率传感器电路+LM393比较器电路+霍尔测速电路+电机控制电路+LCD1602显示电路+电源电路组成。
  • 系统功能:
    • 1、使用LCD1602实时显示脉搏/心率值和速度值。
    • 2、通过脉搏/心率传感器检测脉搏/心率值。
    • 3、通过霍尔传感器检测电机转速。
    • 4、可以通过电位器调节电机转速,模拟跑步机调速。

2、资料下载

3、系统电路介绍

3.1、51单片机最小系统电路设计

  • STC89C52RC是STC公司生产的一种低功耗、高性能CMOS8位微控制器,具有8K字节系统可编程Flash存储器。STC89C52使用经典的MCS-51内核,但是做了很多的改进使得芯片具有传统51单片机不具备的功能。在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。具有以下标准功能:8k字节Flash,512字节RAM, 32 位I/O 口线,看门狗定时器,内置4KB EEPROM,MAX810复位电路,3个16 位定时器/计数器,4个外部中断,一个7向量4级中断结构(兼容传统51的5向量2级中断结构),全双工串行口。另外 STC89C52 可降至0Hz 静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU 停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。最高运作频率35MHz,6T/12T可选。

  • 单片机最小系统电路图如下图所示

  • 实物图:

3.2、LCD1602液晶显示模块电路设计

  • LCD显示器分为字段显示和字符显示两种。其中字段显示与LED显示相似,只要送对应的信号到相应的管脚就能显示。字符显示是根据需要显示基本字符。本设计采用的是字符型显示。系统中采用LCD1602作为显示器件输出信息。与传统的LED数码管显示器件相比,液晶显示模块具有体积小、功耗低、显示内容丰富等优点,而且不需要外加驱动电路,现在液晶显示模块已经是单片机应用设计中最常用的显示器件了。LCD1602可以显示2行16个汉字。

LCD1602采用标准的14脚,其接口的引脚说明如下:

  • (1)第1脚:VSS为地电源。
  • (2)第2脚:VDD接5V正电源。
  • (3)第3脚:V0为液晶显示器对比度调整端。
  • (4)第4脚:RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。
  • (5)第5脚:RW为读写信号线,高电平时进行读操作,低电平时进行写操作。当RS和RW共同为低电平时可以写入指令或者显示地址,当RS为低电平RW为高电平时可以读忙信号,当RS为高电平RW为低电平时可以写入数据。
  • (6)第6脚:E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。
  • (7)第7~14脚:D0~D7为8位双向数据线。
  • (8)第15~16脚:空脚

电路原理图:


  • 实物图:

3.3、A3144霍尔传感器模块电路设计

*本霍尔传感器模块是基于霍尔元件A3144设计制作的模块,A3144芯片是一种磁传感器,其应用霍尔效应原理,采用半导体集成技术制造的磁敏电路,它是由电压调整器、霍尔电压发生器、差分放大器、史密特触发器,温度补偿电路和集电极开路的输出级组成的磁敏传感电路,其输入为磁感应强度,输出是一个数字电压信号,用它可以检测磁场及其变化,可在各种磁场相关的场合中使用,霍尔器件具有很多优点,它的结构牢固、体积小、重量轻、寿命长、安装方便、功耗低、频率高、耐振动、不怕灰尘、油污、水汽、盐雾等的污染或腐蚀。使用LM393宽电压比较器,通过对霍尔传感器传过来的值和电位器的分压值比较,可以直接输出高低电平,信号干净,波形好,驱动能力强。A3144霍尔传感器模块体积小,灵敏度高,响应速度快,温度性能好,精确度高,可靠性高。

电路原理图:

  • 实物图

3.4、Pulsesensor脉搏心率传感器模块电路设计

  • 脉搏心率传感器是用来测试心跳速率的传感器,实质是一款集成了放大电路和噪声消除电路的光学心率传感器。可以通过此传感器开发出和心率有关的互动作品。传感器可以戴在手指或者耳垂上。光电传感器将脉搏信号转换为电信号,此装置需要把手指放在传感器表盘上,光电传感器,此传感器是集成了放大电路和噪声消除电路的光学心率传感器,光电传感器一侧的发光二极管发光,当脉搏跳动时,指尖或者耳垂的动脉血管血容量发生周期性变化,透过指尖的光强度同时发生变化。另一侧的光电三极管将接收到的红外光信号转化为电信号。

电路原理图:

实物图:

4、程序设计

4.1、霍尔测速程序

void Timer1Interrupt(void) interrupt 3
{
    TH1 = 0x4C;
    TL1 = 0x00;
	time_50ms++;

	if(time_50ms%2==0)	//定时100ms
	{
		update_flag=1;	   //更新数据标志置位
	}
	if(time_50ms%40==0)	//定时2S
	{
		Run_num=Run_ts*15;//   处理转速
		Run_ts=0;
	}
	if(time_50ms%20==0)	//定时1S
	{
		Tiem_S++;				//秒时间++
	}
}

4.2、LCD1602显示字符串数据

/***********************************************
函数名称:DispStr
功    能:让液晶从某个位置起连续显示一个字符串
参    数:x--位置的列坐标
          y--位置的行坐标
          ptr--指向字符串存放位置的指针
返回值  :无
***********************************************/
void DispStr(uchar x,uchar y,uchar *ptr) 
{
    uchar *temp;
    uchar i,n = 0;
    
    temp = ptr;
    while(*ptr++ != '\0')   n++;    //计算字符串有效字符的个数
    
    for (i=0;i<n;i++)
    {
        Disp1Char(x++,y,temp[i]);
        if (x == 0x10)
        {
            break;
        }
    }
}

4.2、Pulsesensor传感器脉搏心率数据采集

void int0() interrupt 0
{
		EX0=0;//暂时关外部中断
		if(timecount<8)   //当连续两次检测时间间隔小于8*50ms=400ms不处理
		{
				TR0=1;//开定时器
		}
		else
		{
			time[i_i]=timecount*50+TH0*0.256+TL0/1000;//算出间隔时间
			TH0 = 0x3c;
			TL0 = 0xb0;     // 50ms	 12M
			timecount=0;//50ms计数清零
			i_i++;
			if(i_i==6)//记录到超过等于6次时间
			{
				i_i=1;//计数从1开始
				displayOK=1;    //测得5次开始显示?
			}								
		}
		EX0=1;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

点灯师

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

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

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

打赏作者

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

抵扣说明:

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

余额充值