本设计的硬件构成:
由51单片机,LCD1602液晶显示,红外对管采集(检测心率),温度传感器,按键,蜂鸣器组成;
功能介绍:
1、基于STC89C51/52(与AT89S51/52、AT89C51/52通用)单片机。
2、LCD1602液晶显示当前的心率和当前体温,心率单位是心率/分钟,温度单位为摄氏度。
3、按键可以设置报警的上下限心率,并可设置报警的上下限体温值;
4、三个按键:一个设置,一个加,一个减。设置键按下,设置心率值,再按下,设置温度值;
5、可通过蓝牙实时监控是否有手指按下、测量到的脉搏和体温数据;
主要物料清单及型号:
显示屏:LCD1602-5V;
单片机:51单片机;
心率传感器:ST188;
蓝牙模块:JDY-31-SPP;
温度传感器:DS18B20;
部分程序源码:
/****************主函数***************/
void main()
{
ReadTemperature();
show1();//显示问候语和其他信息
UartInit();
time_init(); //初始化定时器
init_int0(); //外部中断0初始化程序
init_eeprom(); //读eeprom数据
while(1)
{
key(); //按键扫描
if(flat300ms%4==0) //200ms
{
if(flat300ms%20==0)
{
if(state==1)
Send_string("未检测到手指\r\n");
else if(state==2)
Send_string("测量中。。。\r\n");
else if(state==3)
{
Send_string("当前心率:");
Send_Data(rate1/100+'0');
Send_Data(rate1%100/10+'0');
Send_Data(rate1%100%10+'0');
Send_string("/min\r\n");
Send_string("当前体温:");
Send_Data(ReadTempDate/100+'0');
Send_Data(ReadTempDate%100/10+'0');
Send_Data('.');
Send_Data(ReadTempDate%100%10+'0');
Send_string("C\r\n");
state=4;
}
}
ReadTempDate=ReadTemperature();
//==================主界面===================
if(yemian==0)
{
if(biaozhi==0)
{
biaozhi=1;
lcd_init();// 初始化
EA=0;
display(0x00,'H');
display(0x01,'e');
display(0x02,'a');
display(0x03,'r');
display(0x04,'t');
display(0x05,':');
display(0x40,'T');
display(0x41,'e');
display(0x42,'m');
display(0x43,'p');
display(0x44,':');
EA=1;
}
wendumaibo();
baojin();
}
//==================脉搏报警上限 设置===================
if(yemian==1)
{
if(biaozhi==1)
{
biaozhi=2;
Buzzer=1;
lcd_init();// 初始化
display(0x04,'H');
display(0x05,'e');
display(0x06,'a');
display(0x07,'r');
display(0x08,'t');
display(0x09,'-');
display(0x0a,'H');
display(0x46,S_heart_H/100+'0');
display(0x47,S_heart_H%100/10+'0');
display(0x48,S_heart_H%100%10+'0');
}
shezhi();
}
//==================脉搏报警下限 设置===================
if(yemian==2)
{
if(biaozhi==2)
{
biaozhi=3;
Buzzer=1;
lcd_init();// 初始化
display(0x04,'H');
display(0x05,'e');
display(0x06,'a');
display(0x07,'r');
display(0x08,'t');
display(0x09,'-');
display(0x0a,'L');
display(0x46,S_heart_L/100+'0');
display(0x47,S_heart_L%100/10+'0');
display(0x48,S_heart_L%100%10+'0');
}
shezhi();
}
//==================温度报警 上限设置===================
if(yemian==3)
{
if(biaozhi==3)
{
biaozhi=4;
Buzzer=1;
lcd_init();// 初始化
display(0x05,'T');
display(0x06,'e');
display(0x07,'m');
display(0x08,'p');
display(0x09,'-');
display(0x0a,'H');
display(0x46,S_temp_H/100+'0');
display(0x47,S_temp_H%100/10+'0');
display(0x48,S_temp_H%100%10+'0');
}
shezhi();
}
//==================温度报警 下限设置===================
if(yemian==4)
{
if(biaozhi==4)
{
biaozhi=0;
Buzzer=1;
lcd_init();// 初始化
display(0x05,'T');
display(0x06,'e');
display(0x07,'m');
display(0x08,'p');
display(0x09,'-');
display(0x0a,'L');
display(0x46,S_temp_L/100+'0');
display(0x47,S_temp_L%100/10+'0');
display(0x48,S_temp_L%100%10+'0');
}
shezhi();
}
}
}
}