当前位置:首页 > 基于单片机的心率设计 - 图文
附 录
参考程序
心率监控智能系统的信号采集、处理、显示的程序 #include
#define TIMER0_HIGHT 0xDC //设置定时器0工作方式1自动装载初值,定时10ms,Fosc=11.059200MHZ #define TIMER0_LOW 0x00 sbit keyin = P3^1;
//按键输入
bit starttest; //启动测心率标志 uint16 cnt10ms; //10ms计数器 uint8 cnt1s; //1秒计数器
uint8 Pulsecnt; //心跳次数,计数器 uint8 Pulsenum; //上次测试的心跳次数
uint8 codeDispCode[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};//共阳数码管段码表 void Init_Extint(void); void TimerInitProc(); void initvar(); void Init_System(void);
void Display(uint8 chose_dat, uint8 dat);
void ShowDisp(uint8 tPulsenum, uint8 tPulsecnt, uint8 tcnt1s); void DelayMs(uint8 Ms); void main() {
Init_System(); //初始化 while(1) {
28
}
}
ShowDisp(Pulsenum, Pulsecnt, cnt1s); //显示
/*******************************************************************************
* 函 数 名: Exti0_interrupt
* 函数功能: /INT0引脚下降沿进入中断 * 入口参数: 无 * 返 回: 无
*******************************************************************************/
void Ext0_interrupt(void) interrupt 0 { }
/******************************************************************** 函数功能:定时器/计数器0中断处理 入口参数:null 返 回:null 备 注:null
********************************************************************/ void Timer0IntProc() interrupt 1 {
TH0 = TIMER0_HIGHT; //设置定时器0高字节初值 TL0 = TIMER0_LOW; //设置定时器0低字节初值 if(++cnt10ms == 100) {
cnt10ms = 0; if(starttest == 1)
//处在测试状态
29
if(starttest == 1) { }
//处在测试状态
Pulsecnt++; //来一次中断心跳计数器加1
//1s计时到
}
}
{ }
//检测按键
if(++cnt1s == 60) { }
starttest = 0; //一次检测完毕,等待下一次检测 Pulsenum = Pulsecnt; //保存测得心跳值
//一分钟时间到
if(keyin == 0) { }
if(starttest == 1) //处在测试状态 { } else { }
starttest = 1; cnt10ms = 0;
//不在测试状态,开始新的一次测试
cnt10ms = 0; cnt1s = 0; Pulsecnt = 0;
//复位测试值,重新开始测试
/////////////////////////End of Timer0IntProc//////////////////////// void Init_Extint(void) {
IT0 = 1; //外部中断1设置为下降沿触发 IE0 = 0; //标志位清0 EX0 = 1; //允许外部中断1 }
/******************************************************************** 函数功能:定时器/计数器初始化
30
入口参数:null 返 回:null 备 注:null
********************************************************************/ void TimerInitProc() {
TMOD &= 0xF0; TMOD |= 0x01;
//设置定时器0,方式1:16位定时器
TH0 = TIMER0_HIGHT; //设置定时器0高字节初值 TL0 = TIMER0_LOW; //设置定时器0低字节初值 TR0 = 1;
//启动定时器0 //开定时器0中断
ET0 = 1; }
EA = 1; //开总中断
/////////////////////////End of TimerInitProc//////////////////////// void initvar() { }
void Init_System(void) {
Init_Extint(); TimerInitProc(); }
/******************************************************************************
* 函 数 名:Display(uchar chose_dat,uchar dat)
initvar(); starttest = 0; cnt10ms = 0; cnt1s = 0; Pulsecnt = 0; Pulsenum = 0;
31
共分享92篇相关文档