硬件構成:單片機+最小系統+LCD1602液晶顯示模塊+紅外傳感器+運放模塊+蜂鳴器模塊+LED指示燈模塊+按鍵模塊
按鍵可以設置心率的上下限報警值,四個按鍵:復位按鍵、設置、加、減;
1.單片機型號STC89C52。 2.本系統自帶單片機上電復位電路,晶振電路,手動復位電路(即復位按鍵)。 3.可以用按鍵設置,設置心率的上、下限報警值,并具有掉電保存,保存在STC單片機的內部,上電無需重新設置。 4.當實際測到的心率次數超過上限或低于下限時,蜂鳴器報警提示心率不正常。 5.LCD1602液晶第一行顯示當前的心率,單位是心率/分鐘,第二行顯示設定的上、下限報警值。 6.把手指放在光電傳感器上,要輕輕的壓在傳感器上面,盡量要其他手指支撐起要測脈搏的手指頭。 7.手指放上去后5秒左右指示燈會閃爍,說明已經測到您的脈搏了。 8.人脈搏跳動的時候,血液的透光性不一樣會導致接收器那邊接收的信號強弱不一樣,因此可以把變化的信號濾波、放大、整形等系列處理后 ,單片機利用外部中斷對其進行計數,最終換算成人一分鐘脈搏的跳動次數顯示在液晶屏上。
電路原理圖如下:
QQ截圖20190627111110.png (96.27 KB, 下載次數: 71)
下載附件
2019-6-27 11:16 上傳
單片機源程序如下:
- #include<reg52.h>
- #include<stdio.h>
- #include<intrins.h>
- #include"lcd1602.H"
- #define uchar unsigned char
- #define uint unsigned int
- #define ulong unsigned long
- 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++;
- }
- void delay(void) //誤差 0us
- {
- unsigned char a,b,c;
- for(c=123;c>0;c--)
- for(b=116;b>0;b--)
- for(a=9;a>0;a--);
- }
- /////////////////////////////////////////////////////////////////
- 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;
- }
-
- }
- ;
- }
復制代碼
所有資料51hei提供下載:
心率脈搏儀源碼.zip
(60.38 KB, 下載次數: 101)
2019-6-27 11:18 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
原理圖 (2).zip
(14.08 KB, 下載次數: 50)
2019-6-27 11:18 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
原理圖.zip
(71.08 KB, 下載次數: 53)
2019-6-27 11:18 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|