久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4318|回復: 3
打印 上一主題 下一主題
收起左側

基于51單片機的心率計

[復制鏈接]
跳轉到指定樓層
樓主

人體的健康與心率息息相關。在中醫史上,把脈即是對心率的一種測量。為了提高測量的精準度,科學家們不斷的對心率計進行開拓。基于了解了該心率計的要求后,設計了以AT89C51單片機為核心芯片的心率計。該心率計由單片機模塊、反射式紅外光電傳感器模塊、液晶顯示模塊等構成,并進行相應的軟件設計和硬件調試。利用反射式紅外光電傳感器將心跳引起的血液濃度的變化轉變為電壓信號,將電壓信號處理后傳給單片機,由單片機實現定時計數得出心率,并由液晶顯示模塊顯示心率。經過一系列的調試,該心率計實現了對心率的準確測量,達到了本設計所預期的效果,具有一定的實際意義和應用前景。

原理圖如下:
心率脈搏計-51-1602.pdf (192.9 KB, 下載次數: 41)
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:1 發表于 2017-10-19 02:27 | 只看該作者
樓主能分享一下圖片和源碼嗎?
回復

使用道具 舉報

板凳
ID:240466 發表于 2017-11-8 17:05 | 只看該作者
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit rs=P1^0;                             //數據與命令選擇控制引腳
sbit rw=P1^1;                                 //讀與寫選擇控制引腳
sbit en=P1^2;                                 //使能擇控制引腳
sbit bf=P0^7;                                 //忙標志位

sbit P32=P3^2;

unsigned char i=0,timecount=0,displayOK=0,rate=0,aa=0;
unsigned int time[6]={0};

/************ 延時函數  *****************/
void delay(uint z)
{
   while(z--);
}
/************ 忙檢測函數  *****************/
void jiance()
{
  P0=0xff;
  rs=0;rw=1;en=1;
  while(bf);                        //如果BF==1表示液晶在忙
  en=0;
}
/************ 寫命令函數  *****************/
void write_com(uchar com)
{
   jiance();
   P0=com;
   rs=0;rw=0;en=1;
   delay(2);
   en=0;
}
/************ 寫數據函數  *****************/
void write_dat(uchar dat)
{
   jiance();
   P0=dat;
   rs=1;rw=0;en=1;
   delay(2);
   en=0;
}
/************ 1602液晶初始化函數  *****************/
void init_lcd()
{
   write_com(0x38);           // 設置16*2顯示,5*7點陣,8位數據接口
   write_com(0x0c);           // 開顯示,不顯示光標
   write_com(0x06);           // 地址加1,當寫入數據的時候光標右移
   write_com(0x01);           //清屏
}

/******************************************************************/
/*                   在指定位置寫字符                                 */
/******************************************************************/
void LCD_write_char(unsigned char x,unsigned char y,unsigned char Data)
{     
    if (y == 0)  
    write_com(0x80 + x);     
    else     
    write_com(0xC0 + x);            
    write_dat(Data);  
}
void DelayMs(unsigned int z)
{
   unsigned int x;
   for(;z>0;z--)
     for(x=110;x>0;x--);
}         
void main()
{
                P32=1;
                init_lcd();//lcd初始化
                TCON=0x01;//設置外部中斷0
                EX0=1;
                TMOD=0x01;//定時器0初始化
                TH0=(65536-50000)/256;//實測每50ms中斷的定時值
                TL0=(65536-50000)%256;
                ET0=1;//開定時器中斷
                //顯示基本文字
                LCD_write_char(3,0,'H');
                LCD_write_char(4,0,'e');
                LCD_write_char(5,0,'a');
                LCD_write_char(6,0,'r');
                LCD_write_char(7,0,'t');
                LCD_write_char(8,0,' ');
                LCD_write_char(9,0,'R');
                LCD_write_char(10,0,'a');
                LCD_write_char(11,0,'t');
                LCD_write_char(12,0,'e');

                LCD_write_char(8,1,'/');
                LCD_write_char(9,1,'m');
                LCD_write_char(10,1,'i');
                LCD_write_char(11,1,'n');
                TR0=0;//定時器停止
                EA=1;//開總中斷
                while(1)
                {
                               
                                if(displayOK==1)
                                {
                                                rate=60000/(time[1]/5+time[2]/5+time[3]/5+time[4]/5+time[5]/5);
                                                LCD_write_char(5,1,rate/100+48);
                                                LCD_write_char(6,1,(rate%100)/10+48);
                                                LCD_write_char(7,1,rate%10+48);
                                }
                                DelayMs(300);
                }
}

void ex0() interrupt 0
{
                EX0=0;//暫時關外部中斷
                if(timecount<8)   //當連續兩次檢測時間間隔小于8*50ms=400ms不處理
                {
                                TR0=1;//開定時器
                }
                else
                {
                                time[i]=timecount*50+TH0*0.256+TL0/1000;//算出間隔時間
                                TL0=(65536-50000)%256;//重新設置定時器
                                TH0=(65536-50000)/256;
                                timecount=0;//50ms計數清零
                                i++;
                                if(i==6)//記錄到超過等于6次時間
                                {
                                                i=1;//計數從1開始
                                                displayOK=1;    //測得5次開始顯示
                                }       
                               
                }
                EX0=1;
}
void et0() interrupt 1
{
                TL0=(65536-50000)%256;
                TH0=(65536-50000)/256;
                       
                timecount++;//每50ms一次計數
                if(timecount>25)     //當超過25*50ms=1.25s沒有檢測到信號停止顯示
                {
                                i=0;//數據個數清零
                                timecount=0;//50ms計數清零
                                displayOK=0;//顯示關
                                TR0=0;//定時器關
                                TH0=(65536-50000)/256;
                                TL0=(65536-50000)%256;
                }
}

IMG_20160430_184524.jpg (3.68 MB, 下載次數: 88)

IMG_20160430_184524.jpg
回復

使用道具 舉報

地板
ID:587714 發表于 2019-7-28 14:40 | 只看該作者
學習了,謝謝樓主
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 狠狠的干狠狠的操 | 国产福利在线 | 一级片在线观看 | 不卡av电影在线播放 | 在线毛片网 | 日韩免费在线 | 华人黄网站大全 | 天天干夜夜操 | 欧洲精品一区 | 欧美一级片久久 | 99精品一区 | 国产精品久久久久久久久久免费看 | 欧美精品一区三区 | 欧美一区二区综合 | 污视频免费在线观看 | 久久最新精品 | 国产一区二区在线免费观看 | 91porn成人精品 | 日韩中文字幕 | 国产1区2区在线观看 | 一级久久久久久 | 亚洲激情av | 久久一区二区三区四区 | 亚洲精品一区中文字幕乱码 | 国产91久久精品一区二区 | 99视频久| japanhdxxxx裸体 | 99久久久国产精品 | 午夜视频一区二区 | 成人在线影视 | 成人午夜影院 | 日韩中文字幕网 | 精品在线播放 | 精品1区2区| 日本人做爰大片免费观看一老师 | 精品久久99 | www.一区二区三区 | 国产日韩欧美综合 | av中文字幕在线 | 天堂网中文 | 99热首页|