功能描述
1.基于STC89C51/52(與AT89S51/52、AT89C51/52通用)單片機。
2.數位管顯示目前的心率,機關是心率/分鐘。
3.手指放到紅外對管中,2秒内讀出心率。
工作原理
由于人脈搏跳動的時候,血液的透光性不一樣會導緻接收器那邊接收的信号強弱不一樣,間接的把人脈搏信号傳回,通過運放對其進行放大、整形後連接配接到單片機的IO口,單片機利用外部中斷對其進行計數,最終換算成人一分鐘脈搏的跳動次數,最終顯示。
使用時把右手食指指肚放在st188反射式紅外傳感器上,放置合适時會看到訓示燈随心跳同時閃動,如果沒有閃爍請适當調節手指壓力,調節完後在測試過程中手指壓力不要變,保持穩定,當訓示燈有規律閃爍時表示信号正确。當單片機檢測到大約第五次信号時開始顯示這五次信号算出的平均心率。當超過大約1.5秒沒有檢測到信号,清除心率。如果手指抖動或者不穩定會看到訓示燈亂閃,這樣測得的資料不準,在測試過程中保持穩定!
電路設計
采用Altium Designer作為電路設計工具。Altium Designer通過把原理圖設計、PCB繪制編輯、拓撲邏輯自動布線、信号完整性分析和設計輸出等技術的完美融合,為設計者提供了全新的設計解決方案,使設計者可以輕松進行設計,熟練使用這一軟體必将使電路設計的品質和效率大大提高。

單片機管腳說明:
P0端口(P0.0-P0.7):P0口為一個8位漏極開路雙向I/O口,每個引腳可吸收8TTL門電流。當P1口的管腳第一次寫1時,被定義為高阻輸入。P0能夠用于外部程式資料存儲器,它可以被定義為資料/位址的第八位。在FIASH程式設計時,P0 口作為原碼輸入口,當FIASH進行校驗時,P0輸出原碼,此時P0外部必須被拉高。
P1端口(P1.0-P1.7):P1口是一個内部提供上拉電阻的8位雙向I/O口,P1口緩沖器能接收輸出4TTL門電流。P1口管腳寫入1後,被内部上拉為高電平,可用作輸入,P1口被外部下拉為低電平時,将輸出電流,這是由于内部上拉的緣故。在FLASH程式設計和校驗時,P1口作為第八位位址接收。
P2端口(P2.0-P2.7):P2口為一個内部上拉電阻的8位雙向I/O口,P2口緩沖器可接收,輸出4個TTL門電流,當P2口被寫“1”時,其管腳被内部上拉電阻拉高,且作為輸入。并是以作為輸入時,P2口的管腳被外部拉低,将輸出電流。這是由于内部上拉的緣故。P2口,用于外部程式存儲器或16位位址外部資料存儲器進行存取時,P2口輸出位址的高八位。在給出位址“1”時,它利用内部上拉優勢,當對外部八位位址資料存儲器進行讀寫時,P2口輸出其特殊功能寄存器的内容。P2口在FLASH程式設計和校驗時接收高八位位址信号和控制信号。
P3端口(P3.0-P3.7):P3口管腳是一個帶有内部上拉電阻的8位的雙向I/O端口,可接收輸出4個TTL門電流。當P3口寫入“1”後,它們被内部上拉為高電平,并用作輸入。作為輸入端時,由于外部下拉為低電平,P3口将輸出電流(ILL)。P3口同時為閃爍程式設計和程式設計校驗接收一些控制信号。
程式流程
1、初始化定時器;
2、檢測外部中斷,并記錄中斷時間間隔;
3、當有超過5個符合要求的時間記錄,算出5個時間的平均值和對應的60s的心率并顯示;
4、當超過1.5s沒有檢測到中斷發生停止顯示;
5、2-3-4循環;
主程式設計
void main()
{
static uint value;
time_init(); //初始化定時器
init_int0(); //外部中斷0初始化程式
while(1)
{
value ++;
if(value >= 300) //300ms
{
value = 0;
if(displayOK==0)//如果顯示關
{
rate = 0;
}
else//如果顯示開
{
rate=60000/(time[1]+time[2]+time[3]+time[4]+time[5])/5;
}
dis_smg[0] = smg_du[rate % 10]; //顯示
dis_smg[1] = smg_du[rate / 10 % 10];
dis_smg[2] = smg_du[rate / 100 % 10];
}
display(); //數位管顯示函數
delay_1ms(1);
}
}
源檔案擷取
關注公衆号【電子開發圈】,首頁回複 “心率” 擷取;