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

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 10699|回復(fù): 7
打印 上一主題 下一主題
收起左側(cè)

51單片機(jī)心率脈搏計(jì)檢測(cè)系統(tǒng)電路+程序設(shè)計(jì)

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
1.功能原理
       脈搏傳感器采樣脈搏信號(hào),采用STC89C51單片機(jī)作為控制器,脈搏傳感器輸出方波傳入單片機(jī),觸發(fā)單片機(jī)進(jìn)去外部中斷函數(shù),每接收一個(gè)脈沖波形,顯示屏就計(jì)數(shù)一次。如果脈搏次數(shù)超過(guò)設(shè)定值是,用蜂鳴器報(bào)警提示


2.硬件設(shè)計(jì)
(1)總體硬件框圖


(2)心率檢測(cè)電路原理
      心率檢測(cè)電路是以紅外反射式傳感器ST188為檢測(cè)原件,并利用單片機(jī)系統(tǒng)內(nèi)部定時(shí)器來(lái)計(jì)算時(shí)間。

心率檢測(cè)處理電路
    此電路采用兩級(jí)運(yùn)算放大電路,一級(jí)放大倍數(shù)為可調(diào),二級(jí)放大倍數(shù)固定為2。當(dāng)紅外反射式傳感器ST188感應(yīng)到一個(gè)完整的脈搏,便產(chǎn)生一個(gè)脈沖,單片機(jī)通過(guò)對(duì)脈沖累加得到脈搏心率跳動(dòng)次數(shù),并使用定時(shí)器計(jì)數(shù)脈搏的頻率。系統(tǒng)運(yùn)行中能顯示脈搏心率次數(shù)和時(shí)間,系統(tǒng)停止運(yùn)行時(shí),能夠顯示總的脈搏心率次數(shù)和時(shí)間。
(3)其他硬件電路
       除了主要的心率檢測(cè)電路外,還包括單片機(jī)最小系統(tǒng)、LCD1602顯示屏電路、蜂鳴器報(bào)警電路。因?yàn)檫@幾個(gè)電路比較常用,就省略不介紹了。

3.程序設(shè)計(jì)
(1)LCD1602驅(qū)動(dòng)程序

sbit RS = P2^5;//Pin4
sbit RW = P2^6; //Pin5
sbit E  = P2^7;//Pin6

#define uchar unsigned char
#define uint unsigned int
#define ulong unsigned long

uchar data TimeNum[]="                ";
uchar data Test1[]="                  ";
void DelayUs(unsigned char us)//delay us
{
     unsigned char uscnt;
     uscnt=us>>1;/* Crystal frequency in 12MHz*/
     while(--uscnt);
}
  

/******************************************************************/
void DelayMs(unsigned char ms)//delay Ms
{
    while(--ms)
   {
         DelayUs(250);
         DelayUs(250);
         DelayUs(250);
         DelayUs(250);
   }
}
void WriteCommand(unsigned char c)
{
     DelayMs(5);//short delay before operation
     E=0;
     RS=0;
     RW=0;
     _nop_();
     E=1;
     P1=c;
     E=0;
}
/****************************************************************/
void WriteData(unsigned char c)
{
    DelayMs(5);   //short delay before operation
    E=0;
    RS=1;
    RW=0;
    _nop_();
    E=1;
    P1=c;
    E=0;
    RS=0;
}
/*********************************************************************/
void ShowChar(unsigned char pos,unsigned char c)
{
    unsigned char p;
    if (pos>=0x10)
        p=pos+0xb0; //是第二行則命令代碼高4位為0xc
    else
        p=pos+0x80; //是第二行則命令代碼高4位為0x8
    WriteCommand (p);//write command
    WriteData (c);   //write data
}
/*************************************************************************/
void ShowString (unsigned char line,char *ptr)
{
   unsigned char l,i;
   l=line<<4;
   for (i=0;i<16;i++)
       ShowChar (l++,*(ptr+i));//循環(huán)顯示16個(gè)字符
}
/*********************************************************************/
void InitLcd()
{
    DelayMs(15);
    WriteCommand(0x38); //display mode
    WriteCommand(0x38); //display mode
    WriteCommand(0x38); //display mode
    WriteCommand(0x06); //顯示光標(biāo)移動(dòng)位置
    WriteCommand(0x0c); //顯示開(kāi)及光標(biāo)設(shè)置
    WriteCommand(0x01); //顯示清屏

}


(2)脈搏檢測(cè)處理程序

unsigned int i,n,ci,dd[11],jj,j,k,tmp;
bit w=0;
uchar bh;
ulong time;
sbit spd = P2^0;

external0() interrupt 0//外部中斷服務(wù)程序
{
          w=~w;
        if(w==0)
        {
              EX0=0;
              ET0=1;
              TH0=0x0;
              TL0=0x0;
              n=0;
        }
        else
        {
                time=n*65536+TH0*256+TL0;
                dd[jj]=30000000/time;        //計(jì)算脈搏時(shí)間
                jj++;
                if(jj>10)
                {
                   jj=0;
                   for(j=0;j<11;j++)
                      for(k=0;k<11-j;k++)
                      {
                            if(dd[k]>dd[k+1])
                            {
                                 tmp=dd[k];
                                 dd[k]=dd[k+1];
                                 dd[k+1]=tmp;
                            }                        
                      }
                      if(dd[5]>50&&dd[5]<200)ci=((dd[4]+dd[5]+dd[6])/3)+11;
                  }
                 TH0=0x0;
                 TL0=0x0;
                 n=0;
           }
}
void timer0(void) interrupt 1
{
     n++;
}

(3)主函數(shù)


void main(void)
{
        InitLcd();//
        DelayMs(15);
        IT0=1;     //INT0下降沿中斷
        EX0=1;     //允許INT1中斷
        TMOD=0x1;
        TH0=0x0;
        TL0=0x0;
        TR0=1;
        ET0=1;
        EA=1;

        while(1)
        {
                 if(n>10)
                 {
                         n=0;         
                         jj=0;
                         ci=0;
                                         TimeNum[0]='N';
                                         TimeNum[1]='O' ;
                                 TimeNum[2]=' ' ;
                                 TimeNum[3]='I' ;        
                                 TimeNum[4]='N' ;
                         TimeNum[5]='P' ;
                         TimeNum[6]='U' ;
                         TimeNum[7]='T' ;
                         TimeNum[8]=' ' ;
                         ShowString(0,TimeNum);
                                 ShowString(1,Test1);
                        }
                        else        
                        {
                                if(w==0&&EX0==0)
                                {
                                        delay();
                                        EX0=1;
                                }  

                                TimeNum[0]=' ';
                                TimeNum[1]=' ' ;
                                TimeNum[2]=' ' ;
                                TimeNum[3]=' ' ;        
                                TimeNum[4]=' ' ;         
                                TimeNum[5]=' ' ;
                                if(ci/100>0)TimeNum[6]=ci/100+'0' ; else TimeNum[6]=' ' ;
                                if(ci/100==0&&ci%100/10>0)TimeNum[7]=ci%100/10+'0' ; else TimeNum[7]=' ' ;
                                TimeNum[8]=ci%10+'0' ;
                                ShowString(0,TimeNum);
                                ShowString(1,Test1);
                                if(ci>100)spd=0;else spd=1;
                        }
                }
        ;
}


源碼+AD電路圖 下載:
心率脈搏儀.rar (127.54 KB, 下載次數(shù): 265)

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏9 分享淘帖 頂2 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:529245 發(fā)表于 2019-5-7 09:43 | 只看該作者
不錯(cuò),謝謝啊
回復(fù)

使用道具 舉報(bào)

板凳
ID:531957 發(fā)表于 2019-5-9 21:23 | 只看該作者
感謝分享,謝謝樓主。
回復(fù)

使用道具 舉報(bào)

地板
ID:531957 發(fā)表于 2019-5-9 21:46 | 只看該作者
謝謝樓主分享,正好能用到。
回復(fù)

使用道具 舉報(bào)

5#
ID:786036 發(fā)表于 2020-6-21 20:27 | 只看該作者
樓樓,這個(gè)文件夾打開(kāi)好多文件,有的類(lèi)型我識(shí)別不了,想請(qǐng)教一下該如何用。拜托了感謝
回復(fù)

使用道具 舉報(bào)

6#
ID:375637 發(fā)表于 2021-4-8 11:46 | 只看該作者
這個(gè)運(yùn)放器用的是什么型號(hào)?
回復(fù)

使用道具 舉報(bào)

7#
ID:538517 發(fā)表于 2021-4-10 00:58 來(lái)自觸屏版 | 只看該作者
謝謝樓主,正好可以好好學(xué)習(xí)一下。
回復(fù)

使用道具 舉報(bào)

8#
ID:907958 發(fā)表于 2021-4-20 11:14 | 只看該作者
如果把LCD1602換成LCD12864如何改變他的源碼,求教大佬
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 91综合在线观看 | 久久精品综合 | 老司机精品福利视频 | 日韩欧美中文 | 久久y| 国产午夜精品一区二区三区四区 | 久久久亚洲一区 | 亚洲欧美网站 | 夜色www国产精品资源站 | 欧美一区二区免费 | 久久综合色综合 | 国产精品久久久久久久久久三级 | 91传媒在线观看 | 日韩av福利在线观看 | 欧美激情精品久久久久 | www.激情.com | 日本精品视频 | 亚洲在线一区二区 | 日本视频中文字幕 | 日韩av高清 | 一区二区三区四区国产 | 精品一区二区久久 | 欧美日韩国产一区二区三区 | 成人在线观看中文字幕 | 青青草原综合久久大伊人精品 | 激情欧美一区二区三区中文字幕 | 97精品国产 | 免费99视频 | 中文字幕亚洲精品 | 亚洲国产精品日韩av不卡在线 | 日韩一区在线视频 | 看毛片网站 | 色噜噜亚洲男人的天堂 | 日韩欧美视频免费在线观看 | 特级做a爰片毛片免费看108 | 日本粉嫩一区二区三区视频 | 国产欧美在线视频 | 国产福利资源在线 | 日韩精品亚洲专区在线观看 | 91国内精品久久 | 91av在线影院|