单片机心率脉搏计检测系统电路IC解密
心率检测处理电路
IC解密此电路采用两级运算放大电路,一级放大倍数为可调,二级放大倍数固定为2。当红外反射式传感器ST188感应到一个完整的脉搏,便产生一个脉冲,单片机通过对脉冲累加得到脉搏心率跳动次数,并使用定时器计数脉搏的频率。系统运行中能显示脉搏心率次数和时间,系统停止运行时,能够显示总的脉搏心率次数和时间。
(3)其他硬件电路
除了主要的心率检测电路外,还包括单片机最小系统、LCD1602显示屏电路、蜂鸣器报警电路。因为这几个电路比较常用,就省略不介绍了。
IC解密
(1)LCD1602驱动程序
sbit RS = P2^5;//Pin4
sbit RW = P2^6; //Pin5
sbit E = P2^7;//Pin6
#define uchar unsigned char
#define uint unsigned int
#define ulong unsigned long
uchar data TimeNum[]=" ";
uchar data Test1[]=" ";
void DelayUs(unsigned char us)//delay us
{
unsigned char uscnt;
uscnt=us>>1;/* Crystal frequency in 12MHz*/
while(--uscnt);
}
/******************************************************************/
void DelayMs(unsigned char ms)//delay Ms
{
while(--ms)
{
DelayUs(250);
DelayUs(250);
DelayUs(250);
DelayUs(250);
}
}
void WriteCommand(unsigned char c)
{
DelayMs(5);//short delay before operation
E=0;
RS=0;
RW=0;
_nop_();
E=1;
P1=c;
E=0;
}
/****************************************************************/
void WriteData(unsigned char c)
{
DelayMs(5); //short delay before operation
E=0;
RS=1;
RW=0;
_nop_();
E=1;
P1=c;
E=0;
RS=0;
}
/*********************************************************************/
void ShowChar(unsigned char pos,unsigned char c)
{
unsigned char p;
if (pos>=0x10)
p=pos+0xb0; //是第二行则命令代码高4位为0xc
else
p=pos+0x80; //是第二行则命令代码高4位为0x8
WriteCommand (p);//write command
WriteData (c); //write data
}
/*************************************************************************/
void ShowString (unsigned char line,char *ptr)
{
unsigned char l,i;
l=line<<4;
for (i=0;i<16;i++)
ShowChar (l++,*(ptr+i));//循环显示16个字符
}
/*********************************************************************/
void InitLcd()
{
DelayMs(15);
WriteCommand(0x38); //display mode
WriteCommand(0x38); //display mode
WriteCommand(0x38); //display mode
WriteCommand(0x06); //显示光标移动位置
WriteCommand(0x0c); //显示开及光标设置
WriteCommand(0x01); //显示清屏
}

芯片解密