找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 8383|回复: 6
打印 上一主题 下一主题
收起左侧

51单片机心率脉搏计设计源代码和Proteus仿真

[复制链接]
跳转到指定楼层
楼主
给大伙分享一个测试成功的基于51单片机的心率脉搏计仿真及源程序

心率计仿真原理图如下(proteus仿真工程到附件中下载):


资料压缩包:


单片机源程序如下:
  1. #include <reg52.h>
  2. #include "lcd1602.h"

  3. #define uchar unsigned char
  4. #define uint  unsigned int
  5. sbit SPK =P1^7;

  6. sbit lcdrs=P2^7;
  7. sbit lcdrw=P2^6 ;
  8. sbit lcden=P2^5 ;

  9. unsigned char num=0,timecount=0,displayOK=0,rate=0;
  10. unsigned int time[6]={0};

  11. /***********************1ms延时函数*****************************/
  12. void delay_1ms(uint q)
  13. {
  14.         uint i,j;
  15.         for(i=0;i<q;i++)
  16.                 for(j=0;j<110;j++);
  17. }

  18. void main()
  19. {       
  20.         init_1602();
  21.         TCON=0x01;//设置外部中断0
  22.                 EX0=1;
  23.                 TMOD=0x01;//定时器0初始化
  24.                 TH0=(65536-50650)/256;//实测每50ms中断的定时值
  25.                 TL0=(65536-50650)%256;
  26.                 ET0=1;//开定时器中断
  27.                 //显示基本文字
  28.                 write_string(1,0,"   Heart Rate   ");
  29.                 write_string(2,0,"        /min    ");
  30.                 TR0=0;//定时器停止
  31.                 EA=1;//开总中断                    
  32.            while(1)
  33.            {
  34.                
  35.                    if(displayOK==1)
  36.                    {
  37.                         rate=60000/(time[1]/5+time[2]/5+time[3]/5+time[4]/5+time[5]/5);
  38.                         write_sfm3_18B20(2,5,rate);

  39.                       }       
  40.                         else
  41.                         {
  42.                                      write_string(2,5,"   ");
  43.                         }
  44.                    delay_1ms(300);
  45.                                                                   
  46.        
  47.         }
  48. }

  49. void ex0() interrupt 0
  50. {
  51.                 EX0=0;//暂时关外部中断
  52.                 if(timecount<8)   //当连续两次检测时间间隔小于8*50ms=400ms不处理
  53.                 {
  54.                                 TR0=1;//开定时器
  55.                 }
  56.                 else
  57.                 {
  58.                                 time[num]=timecount*50+TH0*0.256+TL0/1000;//算出间隔时间
  59.                                 TL0=(65536-50650)%256;//重新设置定时器
  60.                                 TH0=(65536-50650)/256;
  61.                                 timecount=0;//50ms计数清零
  62.                                 num++;
  63.                                 if(num==6)//记录到超过等于6次时间
  64.                                 {
  65.                                                 num=1;//计数从1开始
  66.                                                 displayOK=1;    //测得5次开始显示
  67.                                 }       
  68.                                
  69.                 }
  70.                 EX0=1;
  71. }
  72. void et0() interrupt 1
  73. {
  74.                 TL0=(65536-50650)%256;
  75.                 TH0=(65536-50650)/256;
  76. ……………………

  77. …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码

所有资料51hei提供下载:
基于51单片机的心率脉搏计仿真及源程序.zip (92.05 KB, 下载次数: 283)




分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏4 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:243803 发表于 2017-10-28 23:36 来自手机 | 只看该作者
好东西呀,支持
回复

使用道具 举报

板凳
ID:427851 发表于 2018-11-22 20:21 | 只看该作者
正在做课程设计,刚好可以参考一下,很有用!!
回复

使用道具 举报

地板
ID:438476 发表于 2020-3-24 16:24 | 只看该作者
你好,请问下为啥仿真没有显示脉搏值啊?
回复

使用道具 举报

5#
ID:438476 发表于 2020-3-24 16:26 | 只看该作者
你好,请问下为啥仿真里面没有显示脉搏值啊?
回复

使用道具 举报

6#
ID:438476 发表于 2020-3-25 12:23 | 只看该作者
为啥放我评论出来也不回复下?
回复

使用道具 举报

7#
ID:723065 发表于 2020-4-10 21:50 | 只看该作者
xiao'bao 发表于 2020-3-25 12:23
为啥放我评论出来也不回复下?

仿真好像不能出脉搏,只能做单片机的IO口检测脉冲信号,用个方波信号模拟
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表