基于单片机的脉搏测量仪论文 - 图文(8)

2019-05-17 18:33

附 录A

参考程序

脉搏测量仪的信号采集、处理、显示的程序 #include #include #include #include\#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 = P1^2;//蜂鸣器端口

/****************************************************************/ /*************************外部中断***************************************/

/****************************************************************/ external0() interrupt 0//外部中断服务程序 {

w=~w; // 取反

if(w==0) {

EX0=0; // 清除计算相关寄存器 ET0=1; TH0=0x0;

TL0=0x0;

32

n=0; } else {

time=n*65536+TH0*256+TL0; //计算两次脉搏跳动的时间间隔(单片机定

时计数器计数值)

}

dd[jj]=30000000/time; //计算出1分钟,即60s的脉搏跳动次数 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;

33

TL0=0x0; }

/****************************************************************/ /*************************定时器中断***************************************/

/****************************************************************/ void timer0(void) interrupt 1 {

n++; // 加1 }

/****************************************************************/ /*************************延时函数***************************************/

/****************************************************************/ 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--); }

/****************************************************************/ /*************************主函数

***************************************/

/****************************************************************/

34

}

n=0; // 计数器清零

///////////////////////////////////////////////////////////////// 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]='H'; TimeNum[1]='e' ;

TimeNum[2]='a' ; TimeNum[3]='r' ; TimeNum[4]='t' ;

TimeNum[5]=' ' ;

TimeNum[6]='r' ; TimeNum[7]='a' ;

35

TimeNum[8]='t' ; TimeNum[9]='e' ;

TimeNum[10]=' ' ; // 显示英文字符 ShowString(0,TimeNum);

ShowString(1,Test1); } else {

if(w==0&&EX0==0) {

delay(); EX0=1; }

TimeNum[10]=':' ; ShowString(0,TimeNum );

WriteCommand (0x80+0x40+5);//write command 第二行显示

WriteData (LCD1602_Table[ci/100]); //write data 显示测量结果

WriteData (LCD1602_Table[ci0/10]); //write data WriteData (LCD1602_Table[ci]); //write data

WriteData ('/'); //write data

WriteData ('m'); //write data WriteData ('i'); //write data WriteData ('n'); //write data

if(ci>100)spd=0;else spd=1;

//测量数值超过100,蜂鸣器报警

} } ; }

36


基于单片机的脉搏测量仪论文 - 图文(8).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:教师熟悉国家语言文字方针政策和法律法规,自觉规范使用语言文字

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: