功能:
本实例是基于51单片机的脉搏体温测量仪,主要硬件由51单片机最小系统,LCD1602液晶屏电路,红外传感器,脉搏信号处理电路,温度传感器电路和蜂鸣器报警电路构成。
1.采用LCD1602液晶显示当前的心率和当前体温,第一行用于显示心率,单位是心率/分钟;第二行用于显示温度,单位为摄氏度;
2.用户手指放到红外对管中,当检测到心率信号后,测量系统进入测量状态,并在2秒内读出心率;温度测量是将温度传感器握在手中,即可测量出当前体温;
3.共有四个按键,单独的按键为系统复位按键;其他三个并排的按键功能分别为:设置键,加键,减键;通过按键可以调整心率、体温报警的上下限;
4.当检测的心率或者体温值超过报警值时,蜂鸣器报警;在报警范围内,蜂鸣器不报警。
原理图:
Protues仿真:
程序:
/****************主函数***************/
void main()
{
ReadTemperature();
show1();//显示问候语和其他信息
time_init(); //初始化定时器
init_int0(); //外部中断0初始化程序
init_eeprom(); //读eeprom数据
while(1)
{
key(); //按键扫描
if(flat300ms>=4) //200ms
{
flat300ms=0;
//==================主界面===================
if(yemian==0)
{
if(biaozhi==0)
{
biaozhi=1;
lcd_init();// 初始化
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,':');
}
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();
}
}
}
}
关注公众号-电子应用学习馆,首页回复脉搏心率获取。