脉搏计数器的程序(用C语言编写程序)

脉搏计数器的程序(用C语言编写程序),第1张

#include <reg51.h>

unsigned char i,j,t,m,DelayTime,DispBuf[3]

unsigned int n,mb

unsigned char code

BitTab[3]={0xf7,0xef,0xdf}//位驱动码

unsigned char code

DispTab[10]={0x81,0xcf,0x92,0x86,0xcc,0xa4,0xa0,0x8f,0x80,0x84}//字形码

sbit P3_0=P3^0

void delay(DelayTime)

main() //主程序

{

TMOD=0x01//定时器T0工作于方式1

TH0=0xec

TL0=0x78//T0定时时间为5ms

IE=0X83 //开中断

IT0=1 //外部中断0为边沿触发方式

TR0=1 //开定时器T0

for() //脉搏指示灯控制

{

if(P3_0==0)

{

delay(200)

P3_0=1

}

}

}

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

{

P3_0=0 //点亮指示灯

if(n==0)

mb=0

else

mb=12000/n //计算每分钟脉搏数

DispBuf[2]=mb%10//取个位数

mb=mb/10

DispBuf[1]=mb%10//取十位数

DispBuf[0]=mb/10//取百位数

n=0

}

Timer0() interrupt 1//定时中断服务程序

{

TH0=0xec

TL0=0x78

t=BitTab[j]//取位值

P3=P3|0x38//P3.3-P3.5送1

P3=P3&t //P3.3-P3.5输出取出的位值

t=DispBuf[j]//取出待显示的数

t=DispTab[t]//取字形码

P1=t//字型码由P3输出显示

j++ //j作为数码管的计数器,取值0-2,显示程序通过它确认显示哪个数码管

if(j==3)

j=0

n++

if(n==2000)//10秒钟测不到心率,n复位

n=0

}

void delay(DelayTime)//延时子程序

{

for(DelayTime>0DelayTime--)

{

for(i=0i<250i++)

}

}

外部电路我不了解,看程序应该是外部中断检测的脉冲,当有外部中断的时候进入处理函数,

定时器是50ms产生时机的,那个当两次检测时间小于400ms应该是滤出干扰的,当大于400ms小于900ms进入<=18的处理函数中,进行显示,先弄懂脉搏测量仪的原理,再看程序,希望对你有帮助,有什么问题还可以问我?


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/8080650.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-13
下一篇2023-04-13

发表评论

登录后才能评论

评论列表(0条)

    保存