由于仿真中没有红外,手指也模拟不了,其实就是单片机的IO口检测脉冲信号,那样用个方波信号模拟就ok
部分源码:完整见附件
- switch (Xintiao_Con)//此处与上面按键的检测类似
- {
- case 0: //默认Xintiao_Con是为0的
- {
- if(!Xintiao)//每10ms(上面的定时器)检测一次脉搏是否有信号
- {
- Xintiao_Con++;//如果有信号,变量加一,程序就会往下走了
- }
- break;
- }
- case 1:
- {
- if(!Xintiao) //每过10ms检测一下信号是否还存在
- {
- Xintiao_Con++;//存在就加一
- }
- else
- {
- Xintiao_Con=0;//如果不存在了,检测时间很短,说明检测到的不是脉搏信号,可能是其他干扰,将变量清零,跳出此次检测
- }
- break;
- }
- case 2:
- {
- if(!Xintiao)
- {
- Xintiao_Con++;//存在就加一
- }
- else
- {
- Xintiao_Con=0;//如果不存在了,检测时间很短,说明检测到的不是脉搏信号,可能是其他干扰,将变量清零,跳出此次检测
- }
- break;
- }
- case 3:
- {
- if(!Xintiao)
- {
- Xintiao_Con++;//存在就加一
- }
- else
- {
- Xintiao_Con=0;//如果不存在了,检测时间很短,说明检测到的不是脉搏信号,可能是其他干扰,将变量清零,跳出此次检测
- }
- break;
- }
- case 4:
- {
- if(Xintiao)//超过30ms一直有信号,判定此次是脉搏信号,执行以下程序
- {
- if(Xintiao_Change==1)//心率计原理为检测两次脉冲间隔时间计算心率,变量Xintiao_Change第一次脉冲时为0的,所有走下面的else,第二次走这里
- {
- View_Data[0]=(60000/Xintiao_Jishu)/100+0x30;
- View_Data[1]=(60000/Xintiao_Jishu)%100/10+0x30;
- View_Data[2]=(60000/Xintiao_Jishu)%10+0x30;
- if(((60000/Xintiao_Jishu)>=Xintiao_H)||((60000/Xintiao_Jishu)<=Xintiao_L))//心率不在范围内报警
- speaker=0; //蜂鸣器响
- else
- speaker=1; //不响
- View_Change=1; //计算出心率后启动显示
- Xintiao_Jishu=0; //心跳计数清零
- Xintiao_Change=0; //计算出心率后该变量清零,准备下次检测心率
- stop=0; //计算出心率后stop清零
- }
- else//第一次脉冲时Xintiao_Change为0
- {
- Xintiao_Jishu=0; //脉冲计时变量清零,开始计时
- Xintiao_Change=1;//Xintiao_Change置1,准备第二次检测到脉冲时计算心率
- }
- Xintiao_Con=0; //清零,准备检测下一次脉冲
- break;
- }
- }
- }
复制代码
心率计程序源码.rar
(31.15 KB, 售价: 2 E币)
心率计protues仿真文件.rar
(69.36 KB, 售价: 2 E币)
【必读】版权免责声明
1、本主题所有言论和内容纯属会员个人意见,与本论坛立场无关。2、本站对所发内容真实性、客观性、可用性不做任何保证也不负任何责任,网友之间仅出于学习目的进行交流。3、对提供的数字内容不拥有任何权利,其版权归原著者拥有。请勿将该数字内容进行商业交易、转载等行为,该内容只为学习所提供,使用后发生的一切问题与本站无关。 4、本网站不保证本站提供的下载资源的准确性、安全性和完整性;同时本网站也不承担用户因使用这些下载资源对自己和他人造成任何形式的损失或伤害。 5、本网站所有软件和资料均为网友推荐收集整理而来,仅供学习用途使用,请务必下载后两小时内删除,禁止商用。6、如有侵犯你版权的,请及时联系我们(电子邮箱1370723259@qq.com)指出,本站将立即改正。
|