聚豐項目 > 大病術后吹氣練習儀
首先,我向各位致歉,因為申請的項目為“液體流量傳感器”類的項目,但最終給我發來了“氣體流量傳感器”。使得原計劃項目不得不更改。但,我要致謝IDT,錯誤的傳感器,確給我帶來了另外一個項目的應用:大病術后吹氣練習儀。
lgx1213
分享lgx1213
團隊成員
劉桄序 組長
劉小軍 軟件設計
羅晨 協調與設備測試
陳相炙 硬件電路
梁雄 軟件美觀設計
由于大病在手術后,都需要進行吹氣練習,以練習肺活量和排除肺中廢物。
為此研究的“大病術后吹氣練習儀”,具備以下功能:
1、儀器便攜方便,吹氣量化精確,為治療提供重要參考數據
2、儀器具備設備顯示和手機APP操作、顯示兩用,并具備數據記憶和查詢功能,方便病人和家屬使用
3、測試數據具有云端功能,方便醫生對病人氣量的掌握,數據科學,避免家屬照顧中數據出現差錯,影響醫治和用藥判斷
4、測試提醒功能:照顧病人家屬可能因為照顧不周,忘記定期測試和測試時間,本功能測試儀具備設置定時提醒功能。
一、整體硬件電路雛形
二、硬件說明:
本硬件由單片機系統和氣體流量傳感器構成。單片機系統采用89c52單片機,具備8位數字顯示功能,通過藍牙模塊與手機端APP進行鏈接,進行設備測試及其他相關操作。電路框圖如下:
1、單片機系統
單片機采用最為常見的89C51系列單片機,對于系統應用和移植都非常方便。單片機系統采用5V供電,與其他模塊電路供電電路一致。
電路系統中,除最小系統應用電路的18、19引腳外接晶體振蕩器外,9腳還必須外接對應的復位電路,必不可少。另外對于功能性引腳引用方面:1、2腳(P1.0、P1.1)接按鍵,對運行模式進行調控。12~15( P3.2~P3.5),及21~28(P2.0~P2.7)為數碼LED顯示的段碼控制端。10、11腳(P3.0\RXD、P3.1\TXD)外接藍牙模塊,39腳P0.0接氣體流量傳感,進行AD模擬信號輸入。
2、氣體流量傳感器
本系統電路中,氣體流量傳感器采用IDT提供的FS2011,本模塊各引腳功能鍵下表。
在數據量化中,可以參考:
以及:
這由于傳感器的高靈敏性,使得在計算之前必須要進行補償,否則數據將不會準確。
3、藍牙模塊
本電路采用市售現成的藍牙模塊與系統相連,以便實施手機APP與硬件系統的數據交互。
4、按鍵電路
本系統中設置了2個按鍵,即K1和K2對應電路。可對運行狀況、各類參數進行設置調控。
5、顯示電路
本處顯示電路采用由74hc595驅動譯碼的八位數字顯示電路。其中,高4位顯示為瞬間氣體流量值,低4位位單次吹氣小計流量值。
三、手機狀態運行截圖
上圖顯示吹氣人的吹氣量比較低,圖片顯示底部為綠色,需要加油練習。
上圖顯示吹氣人的吹氣量比較好,圖片顯示中部為藍色,表示吹氣人的吹氣量較好。
上圖顯示吹氣人的吹氣量比很好,圖片顯示上部為紅色,全部顯示完畢為最好,吹氣量為正常人狀態。
1、單片機應用軟件
#include "reg52.h"
#include"XPT2046.h"
#include "intrins.h"
typedef unsigned int u16;
typedef unsigned char u8;
u8 code smgduan[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
sbit LSA=P2^2;
sbit LSB=P2^3;
sbit LSC=P2^4;
sbit k1=P2^0;
sbit k2=P2^1;
u8 m,moshi=1;
u8 disp[4],disp1[8];
static u16 temp2;
void delay100ms(void) //誤差 -0.000000000023us
{
unsigned char a,b;
for(b=221;b>0;b--)
for(a=207;a>0;a--);
}
void delay(u16 i)
{
while(i--);
}
void delay2ms(void)
{
unsigned char d,e;
for(d=4;d>0;d--)
for(e=248;e>0;e--);
_nop_();
}
void UsartInit()
{
SCON=0X50;
TMOD=0X20;
PCON=0X00;
TH1=0XFd;
TL1=0XFd;
ES=1;
EA=1;
TR1=1;
}
void datapros()
{
u8 temp1;
temp1 = Read_AD_Data(0xE4)/16;
disp[0]=temp1/1000;
disp[1]=temp1%1000/100;
disp[2]=temp1%100/10;
disp[3]=temp1%10;
if(m==4)
{
m=0;
}
}
void DigDisplay()
{
for(m=0;m<4;m++)
{
UsartInit();
SBUF='0'+disp[m];
delay2ms();
TI=0;
}
}
void delay10ms(void)
{
unsigned char a,b;
for(b=249;b>0;b--)
for(a=17;a>0;a--);
}
void datapros1()
{
static u16 temp3;
static u8 i;
if(i==100)
{
i=0;
temp3 = Read_AD_Data(0xE4);
if(temp3>100)
{
temp2=temp3+temp2;
}
else
temp2=temp2;
}
i++;
disp1[0]=smgduan[temp3/1000];
disp1[1]=smgduan[temp3%1000/100];
disp1[2]=smgduan[temp3%1000%100/10];
disp1[3]=smgduan[temp3%1000%100%10];
disp1[4]=smgduan[temp2/10/1000];
disp1[5]=smgduan[temp2/10%1000/100];
disp1[6]=smgduan[temp2/10%1000%100/10];
disp1[7]=smgduan[temp2/10%1000%100%10];
}
void DigDisplay1()
{
u8 i;
for(i=0;i<8;i++)
{
switch(i)
{
case(0):
LSA=0;LSB=0;LSC=0; break;
case(1):
LSA=1;LSB=0;LSC=0; break;
case(2):
LSA=0;LSB=1;LSC=0; break;
case(3):
LSA=1;LSB=1;LSC=0; break;
case(4):
LSA=0;LSB=0;LSC=1; break;
case(5):
LSA=1;LSB=0;LSC=1; break;
case(6):
LSA=0;LSB=1;LSC=1; break;
case(7):
LSA=1;LSB=1;LSC=1; break;
}
P0=disp1[i];
delay(100);
P0=0x00;
}
}
void main()
{
while(1)
{
if(moshi==2)
{ while(1)
{
datapros();
DigDisplay();
delay100ms();
if(k2==0)
{
delay10ms();
if(k2==0)
{
moshi=1;
break;
}
}
}
}
else if(moshi==1)
{
while(1)
{
datapros1();
DigDisplay1();
if(k1==0)
{
delay10ms();
if(k1==0)
{
temp2=0;
}
}
if(k2==0)
{
delay10ms();
if(k2==0)
{
moshi=2;
break;
}
}
}
}
}
}
2、APP手機端應用軟件
見附件運行程序
3、云端數據庫
(略)
(3.44 MB)下載