一.硬件设计
本设计硬件主要由51单片机最小系统、LCD1602液晶显示屏、红外对管、心率信号采集电路、DS18B20温度传感器、按键、蜂鸣器组成。硬件框图如下:
二.设计功能
- LCD1602液晶显示当前的心率和当前体温,心率单位是心率/分钟,温度单位为摄氏度;
- 手指放到红外对管中,2秒内读出心率;将温度传感器握在手中,即可测量出当前体温;
- 按键可以设置报警的上下限心率,并可设置报警的上下限体温值;
- 三个按键:一个设置,一个加,一个减。设置键按下,设置心率值,再按下,设置温度值;
三.心率采集原理
心率传感器采用红外对射管ST188,测量心率的时候需要人把手轻轻的按在光电传感器上面,由于人脉搏跳动的时候,血液的透光性不一样会导致接收器那边接收的信号强弱不一样,间接的把人脉搏信号传回,通过运放对其进行放大、整形后连接到单片机的IO口,单片机利用外部中断对其进行计数,最终换算成人一分钟脉搏的跳动次数,最终显示在液晶屏上。心率采集电路如下:
四.原理图设计
原理图及仿真图如下:
五.程序设计
/****************主函数***************/
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();} }}}
资料