历史上的今天
今天是:2024年10月13日(星期日)
2021年10月13日 | 基于51单片机的脉搏体温监测仪
2021-10-13 来源:eefocus
一.硬件方案
系统以STC89C52单片机为核心,以光电传感器利用单片机系统内部定时器来计算时间,由光电传感器感应产生信号,单片机通过对信号累加得到脉搏跳动次数,时间由定时器定时而得。系统运行中可以通过观察指示灯闪烁,若均匀闪烁说明测量值准确。系统停止运行时,能够显示总的脉搏次数,此外我们也加了温度传感器DS18B20来检测人体温。
主要由51单片机+1602液晶显示+红外对管采集+按键+蜂鸣组成;如图:

二.设计功能
(1)本设计基于STC89C51/52(与AT89S51/52、AT89C51/52通用)单片机。
(2)LCD1602液晶显示当前的心率和当前体温,心率单位是心率/分钟,温度单位为摄氏度。
(3)手指放到红外对管中,2秒内读出心率;将温度传感器握在手中,即可测量出当前体温。
(4)按键可以设置报警的上下限心率,并可设置报警的上下限体温值。
(5)三个按键:一个设置,一个加,一个减。设置键按下,设置心率值,再按下,设置温度值;
三.设计原理图
(1)原理图主要采用AD软件进行设计,如图:

(2)Protues仿真图如下:

(3)PCB图如下:

四.软件设计
主程序源码
/****************主函数***************/
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();
}
}
}
}
史海拾趣
|
请问大家哈,我用74LS47驱动两个4位数码管,数码管亮度很微弱,我更改为双电源,单独给数码管提供5V电压,但是情况仍没有改变。我一时找不到原因!大家有什么看法没?感谢!!感谢!!感谢!!!… 查看全部问答> |
|
来源:http://pic16.com/bbs/dispbbs.asp?boardID=8&ID=41595&page=4 这里一分钟就让你学会使用PROTEUS(完整版) 近期流感爆发 由于小弟天天沉醉在电脑前忘乎所以 被染病多日随入院治疗 忽有客户来寻 手头一无开发工具 二无相关软件 只有笔记本 ...… 查看全部问答> |
|
一、开关元件 开关、干簧管和霍耳元件都是用来控制线路的通断的器件。不同的是开关一般是人工手动操作的,而干簧管和霍克元件则是通过磁信号来控制线路的通和断。 1.开关 在手机中使用的开关通常是薄膜按键开关,它由触点和触片组成。按键的两个 ...… 查看全部问答> |
|
我是青岛的目前原来是从事应用程序开发的,想转型做WinCE BSP开发,现在已经辞职在家专心学习WinCE BSP开发,现在实验用的板子是飞凌的OK2440III。由于在青岛没有找到这方面的朋友,所以许多问题只能靠自己研究或是到网上查资料。现在我有下面的一 ...… 查看全部问答> |
|
replyreload += \',\' + 813951;实现功能:创建12-29.txt,写入EEWORD GOOD!,然后在读出来 主代码: int main(void){ //系统时钟 SysCtlClockSet(SYSCTL_SYSDIV_1|SYSCTL_USE_OSC| SYSCTL_OSC_MAIN | &n ...… 查看全部问答> |
|
IBUFG + BUFG的使用方法:IBUFG后面连接BUFG的方法是最基本的全局时钟资源使用方法,由于IBUFG组合BUFG相当于BUFGP,所以在这种使用方法也称为BUFGP方法。 IBUFGDS + BUFG的使用方法:当输入时钟信号为差分信号时,需要使用IBUFGDS代替IBUFG。 ...… 查看全部问答> |
|
小弟手上的开放板的外部晶振是25M,串口通信,波特率为115200时,BRR是0x0135. 想问下0x0135是怎么算出来的?看了STM32的数据手册,没看懂。… 查看全部问答> |




