資源簡(jiǎn)介
基于51單片機(jī)的人體心率采集設(shè)計(jì),包含源代碼,仿真圖和設(shè)計(jì)報(bào)告。

代碼片段和文件信息
#include?
#include? ?// ?包含頭文件
#define?uint????????????unsigned?int
#define?uchar???????????unsigned?char
#define?ulong???????????unsigned?long ?//宏定義
#define?LCD_DATA????????P0 ?//定義P0口為L(zhǎng)CD_DATA
sbit?LCD_RS?=P2^5;
sbit?LCD_RW?=P2^6;
sbit?LCD_E??=P2^7; ?//定義LCD控制引腳
sbit?Xintiao?=P1^0?; ?//脈搏檢測(cè)輸入端定義
sbit?speaker?=P2^4; ?//蜂鳴器引腳定義
void?delay5ms(void);???//誤差?0us
void?LCD_WriteData(uchar?LCD_1602_DATA); ?/********LCD1602數(shù)據(jù)寫入***********/
void?LCD_WriteCom(uchar?LCD_1602_COM); ?/********LCD1602命令寫入***********/
void?lcd_1602_word(uchar?Adress_Comuchar?Num_Adatuchar?*Adress_Data);?/*1602字符顯示函數(shù),變量依次為字符顯示首地址,顯示字符長(zhǎng)度,所顯示的字符*/
void?InitLcd();//液晶初始化函數(shù)
void?Tim_Init();
uchar?Xintiao_Change=0; ???//
uint??Xintiao_Jishu;
uchar?stop;
uchar?View_Data[3];
uchar?View_L[3];
uchar?View_H[3];
uchar?Xintiao_H=100; //脈搏上限
uchar?Xintiao_L=40; //脈搏下限
uchar?Key_Change;
uchar?Key_Value; //按鍵鍵值
uchar?View_Con; //設(shè)置的位(0正常工作,1設(shè)置上限,2設(shè)置下限)
uchar?View_Change;
void?main() ??//主函數(shù)
{
?InitLcd();
?Tim_Init();
?lcd_1602_word(0x8016“Heart?Rate:?????“); ??//初始化顯示
?TR0=1;
?TR1=1; ??//打開定時(shí)器
?while(1) ??//進(jìn)入循環(huán)
??{
???if(Key_Change) ??//有按鍵按下并已經(jīng)得出鍵值
????{
?Key_Change=0; ??//將按鍵使能變量清零,等待下次按鍵按下
?View_Change=1;
?switch(Key_Value) //判斷鍵值
??{
???case?1: //設(shè)置鍵按下
?????????{
??View_Con++; //設(shè)置的位加
??if(View_Con==3) //都設(shè)置好后將此變量清零
???View_Con=0;
??break; //跳出,下同
?}
???case?2: //加鍵按下
?????????{
??if(View_Con==2) //判斷是設(shè)置上限
???{
??? if(Xintiao_H<150) //上限數(shù)值小于150
?Xintiao_H++; //上限+
???}
??if(View_Con==1) //如果是設(shè)置下限
???{
??? if(Xintiao_L ?Xintiao_L++; //下限值加
???}
??break;
?}
???case?3: //減鍵按下
?????????{
??if(View_Con==2) //設(shè)置上限
???{
??? if(Xintiao_H>Xintiao_L+1)//上限數(shù)據(jù)大于下限+1(同樣上限值不能小于下限)
?Xintiao_H--; //上限數(shù)據(jù)減
???}
??if(View_Con==1) //設(shè)置下限
???{
??? if(Xintiao_L>30) //下限數(shù)據(jù)大于30時(shí)
?Xintiao_L--; //下限數(shù)據(jù)減
???}
??break;
?}?
?}
}
???if(View_Change)//開始顯示變量
????{
?View_Change=0;//變量清零
?if(stop==0) ??//心率正常時(shí)
??{
???if(View_Data[0]==0x30)?//最高位為0時(shí)不顯示
????View_Data[0]=‘?‘;
??}
?else ??//心率不正常(計(jì)數(shù)超過(guò)5000,也就是兩次信號(hào)時(shí)間超過(guò)5s)不顯示數(shù)據(jù)
??{
???View_Data[0]=‘?‘;
???View_Data[1]=‘?‘;
???View_Data[2]=‘?‘;
??}
?switch(View_Con)
??{
???case?0:?//正常顯示
??????????{
???lcd_1602_word(0x8016“Heart?Rate:?????“);//顯示一行數(shù)據(jù)
???lcd_1602_word(0xc016“????????????????“);//顯示第二行數(shù)據(jù)
???lcd_1602_word(0xcd3View_Data); ?//第二行顯示心率
???break;
??}
???case?1:?//設(shè)置下限時(shí)顯示
??????????{
???lcd_1602_word(0x8016“Heart?Rate:?????“);//第一行顯示心率
???lcd_1602_word(0x8d3View_Data);
???
???View_L[0]=Xintiao_L/100+0x30; //將下限數(shù)據(jù)拆字
???View_L[1]=Xintiao_L%100/10+0x30;
???View_L[2]=Xintiao_L%10+0x30;
???if(View_L[0]==0x30) //最高位為0時(shí),不顯示
????View_L[0]=‘?‘;
?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----
?????文件???????4951??2016-12-26?21:38??心率計(jì)\新建文件夾\1-程序注釋\程序
?????文件???????9722??2016-12-26?21:46??心率計(jì)\新建文件夾\1-程序注釋\程序.c
?????文件???????4701??2016-12-26?21:38??心率計(jì)\新建文件夾\1-程序注釋\程序.hex
?????文件?????????40??2016-12-26?21:38??心率計(jì)\新建文件夾\1-程序注釋\程序.lnp
?????文件??????21170??2016-12-26?21:38??心率計(jì)\新建文件夾\1-程序注釋\程序.LST
?????文件??????18655??2016-12-26?21:38??心率計(jì)\新建文件夾\1-程序注釋\程序.M51
?????文件???????7014??2016-12-26?21:38??心率計(jì)\新建文件夾\1-程序注釋\程序.OBJ
?????文件????????829??2013-09-05?23:41??心率計(jì)\新建文件夾\1-程序注釋\程序.opt.bak
?????文件????????531??2016-12-26?21:47??心率計(jì)\新建文件夾\1-程序注釋\程序.plg
?????文件???????2100??2013-09-05?23:36??心率計(jì)\新建文件夾\1-程序注釋\程序.Uv2.bak
?????文件??????55329??2016-12-26?21:47??心率計(jì)\新建文件夾\1-程序注釋\程序.uvopt
?????文件??????13202??2013-09-06?19:59??心率計(jì)\新建文件夾\1-程序注釋\程序.uvproj
?????文件????????825??2013-09-05?23:36??心率計(jì)\新建文件夾\1-程序注釋\程序_Opt.Bak
?????文件???????1662??2011-04-09?18:58??心率計(jì)\新建文件夾\1-程序注釋\程序_Uv2.Bak
?????文件??????55329??2016-12-26?21:46??心率計(jì)\新建文件夾\1-程序注釋\程序_uvopt.bak
?????文件??????16594??2015-06-17?01:26??心率計(jì)\新建文件夾\1-程序注釋\程序流程圖.docx
?????文件??????37376??2014-09-09?21:55??心率計(jì)\新建文件夾\10-開題報(bào)告\開題報(bào)告.doc
?????文件?????447802??2014-11-14?11:31??心率計(jì)\新建文件夾\12-pcb\pcb圖.jpg
????..A.SH.?????33280??2014-11-19?12:52??心率計(jì)\新建文件夾\12-pcb\Thumbs.db
?????文件??????71275??2014-08-18?17:11??心率計(jì)\新建文件夾\12-pcb\焊接圖.JPG
?????文件??????34154??2014-08-18?17:11??心率計(jì)\新建文件夾\12-pcb\焊接圖.pdf
?????文件??????13908??2014-11-14?11:28??心率計(jì)\新建文件夾\13-使用說(shuō)明及功能介紹\主要功能.docx
?????文件?????????47??2014-11-12?14:54??心率計(jì)\新建文件夾\13-使用說(shuō)明及功能介紹\演示視頻.txt
?????文件????????283??2014-09-21?11:16??心率計(jì)\新建文件夾\4-相關(guān)軟件下載和教程\串口下載程序軟件stc.txt
?????文件????????339??2014-09-21?11:09??心率計(jì)\新建文件夾\4-相關(guān)軟件下載和教程\仿真軟件proteus7.8.txt
?????文件????????120??2014-09-21?11:15??心率計(jì)\新建文件夾\4-相關(guān)軟件下載和教程\單片機(jī)十天征服你視頻教程及課件.txt
?????文件????????584??2014-09-21?11:13??心率計(jì)\新建文件夾\4-相關(guān)軟件下載和教程\畫圖軟件protel99se.txt
?????文件????????664??2014-09-21?11:18??心率計(jì)\新建文件夾\4-相關(guān)軟件下載和教程\編寫c程序軟件keil4.txt
?????文件?????120848??2014-07-21?20:24??心率計(jì)\新建文件夾\5-仿真\Last?Loaded?心率計(jì).DBK
?????文件??????22528??2014-07-21?19:16??心率計(jì)\新建文件夾\5-仿真\仿真說(shuō)明.doc
............此處省略15個(gè)文件信息
評(píng)論
共有 條評(píng)論