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

標題: 51單片機心率脈搏計檢測系統電路+程序設計 [打印本頁]

作者: 13125378297    時間: 2019-3-24 11:53
標題: 51單片機心率脈搏計檢測系統電路+程序設計
1.功能原理
       脈搏傳感器采樣脈搏信號,采用STC89C51單片機作為控制器,脈搏傳感器輸出方波傳入單片機,觸發單片機進去外部中斷函數,每接收一個脈沖波形,顯示屏就計數一次。如果脈搏次數超過設定值是,用蜂鳴器報警提示


2.硬件設計
(1)總體硬件框圖


(2)心率檢測電路原理
      心率檢測電路是以紅外反射式傳感器ST188為檢測原件,并利用單片機系統內部定時器來計算時間。

心率檢測處理電路
    此電路采用兩級運算放大電路,一級放大倍數為可調,二級放大倍數固定為2。當紅外反射式傳感器ST188感應到一個完整的脈搏,便產生一個脈沖,單片機通過對脈沖累加得到脈搏心率跳動次數,并使用定時器計數脈搏的頻率。系統運行中能顯示脈搏心率次數和時間,系統停止運行時,能夠顯示總的脈搏心率次數和時間。
(3)其他硬件電路
       除了主要的心率檢測電路外,還包括單片機最小系統、LCD1602顯示屏電路、蜂鳴器報警電路。因為這幾個電路比較常用,就省略不介紹了。

3.程序設計
(1)LCD1602驅動程序

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));//循環顯示16個字符
}
/*********************************************************************/
void InitLcd()
{
    DelayMs(15);
    WriteCommand(0x38); //display mode
    WriteCommand(0x38); //display mode
    WriteCommand(0x38); //display mode
    WriteCommand(0x06); //顯示光標移動位置
    WriteCommand(0x0c); //顯示開及光標設置
    WriteCommand(0x01); //顯示清屏

}


(2)脈搏檢測處理程序

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;
        if(w==0)
        {
              EX0=0;
              ET0=1;
              TH0=0x0;
              TL0=0x0;
              n=0;
        }
        else
        {
                time=n*65536+TH0*256+TL0;
                dd[jj]=30000000/time;        //計算脈搏時間
                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)主函數


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, 下載次數: 265)


作者: 670605832    時間: 2019-5-7 09:43
不錯,謝謝啊
作者: 1589451038    時間: 2019-5-9 21:23
感謝分享,謝謝樓主。
作者: 1589451038    時間: 2019-5-9 21:46
謝謝樓主分享,正好能用到。
作者: Florencerose    時間: 2020-6-21 20:27
樓樓,這個文件夾打開好多文件,有的類型我識別不了,想請教一下該如何用。拜托了感謝
作者: 斤斤計較2    時間: 2021-4-8 11:46
這個運放器用的是什么型號?

作者: 蝦兵0蟹將    時間: 2021-4-10 00:58
謝謝樓主,正好可以好好學習一下。
作者: 被罰站的樹    時間: 2021-4-20 11:14
如果把LCD1602換成LCD12864如何改變他的源碼,求教大佬




歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 99精品视频免费观看 | 国产一级成人 | 日本韩国欧美在线观看 | 成人国产在线视频 | 伊人二区 | 欧美a级成人淫片免费看 | 欧美中文一区 | 天天玩天天干天天操 | 国产综合精品一区二区三区 | 亚洲男人的天堂网站 | 91亚洲精华国产 | 免费日韩av| 久久久久亚洲精品 | 男人午夜视频 | 91超碰caoporn97人人 | 国产精品久久久久久妇女6080 | 欧美日韩国产不卡 | 久久久性色精品国产免费观看 | 国产99久久精品一区二区永久免费 | 国产精品成人一区二区 | 亚洲性在线 | 久草色视频| 国产精品免费av | 亚洲第一免费播放区 | 欧美日韩精品专区 | 91国语清晰打电话对白 | 精品国产免费一区二区三区五区 | 国产成人综合av | 91色啪| 日韩精品久久 | avhd101在线成人播放 | 免费黄网站在线观看 | 不卡在线一区 | 国产高清久久 | 91看片在线 | 国产在线a视频 | 麻豆精品国产免费 | 亚洲精品一区久久久久久 | 九九九视频 | 国产欧美在线视频 | 91原创视频在线观看 |