基于51单片机的心率计设计报告程序定时60s.docx
《基于51单片机的心率计设计报告程序定时60s.docx》由会员分享,可在线阅读,更多相关《基于51单片机的心率计设计报告程序定时60s.docx(12页珍藏版)》请在冰豆网上搜索。
![基于51单片机的心率计设计报告程序定时60s.docx](https://file1.bdocx.com/fileroot1/2022-12/29/a0023849-390d-4c50-b4a8-15a9666ae44e/a0023849-390d-4c50-b4a8-15a9666ae44e1.gif)
基于51单片机的心率计设计报告程序定时60s
数字心率计设计
摘要:
心率测量是现代日常生活中一个很常见的问题,本论文从生活实际出发,设计出了一个一个基于单片机技术的可以迅速准确测量出心率的数字心率计。
首先,我们把待测信号经过放大整形;然后把信号送入单片机的定时计数器里进行计数,获得频率值;最后把测得的频率数值送入显示电路里进行显示。
本文从心率计的原理出发,介绍了基于单片机的数字心率计的设计方案,选择了实现系统的各种电路元器件,主要对硬件电路进行了仿真。
关键词:
单片机心率计计数器
TheHeartRateMeterDesign
X.Zhang(BME0801)
J.Zheng(BME0801)
Abstract:
Nowadaysitiscommonforpeopletomeasureheartrateindailylife.Thisthesisisasinglechipmicyocoheartratemeasuresystem.Wecanmeasureourheartrateeasilywiththissystem.Theworkingprocedureisasfollowing.First,wesendthesignalcollectedwiththesensortoamplifyingcircuit.Thentothewaveshapingcircuit.ThentheSCMcontrolsthedisplayunittoshowtheheartratemeasuredtous.HardwaredesignpartcontainsSignalExtractionCircuit,SignalAmplificationCircuit,SCMcontrolDisplayCircuit.
Keywords:
SCMHeartRateMeterCounter
1.引言
1.1问题的提出
现代生活中越来越多的人遇到心脏疾病问题,心率的测量在日常生活中也变得很普遍,而如何简单快速的进行心率测量成了我们考虑的课题。
1.2设计目的
本课题从生活实际出发,设计出了基于8051单片机的简易心率测量和显示系统。
2.系统设计与原理
2.1结构设计与分析[1]
图表1整体电路结构
分析:
本设计包括信号提取电路,信号初级放大电路,低通滤波电路,比较整形电路,单片机控制电路,显示电路构成。
采用正弦波作为输入信号来进行仿真测试。
2.2单元设计与分析
图表2信号放大电路和低通滤波电路
分析:
信号放大电路选择NE5532运放做放大器,其中初级放大倍数为R2/R1=10倍,低通滤波电路3db截止频率为4HZ,同时具有将信号放大2倍的作用。
图表3比较整形电路
分析:
比较整形电路选择741做比较器,参考电压为1v。
图表4单片机控制电路
分析:
本系统选用AT89C51单片机作为控制核心。
图表5显示电路
分析:
显示电路采用7SEG-MPX4-CA作为显示器件,P2口输出位选信号,P0口输出字形信号。
2.3接口设计与分析
(1)P2口输出位选信号,因为位选信号需要高电平,故在P2口P2.0-P2.3位后加上7404非门。
(2)P0口输出字形码,因为共阳极显示器低电平输入有效,故在P0口加上下拉电阻。
(3)P3.7/T1口作为整形后信号的输入端,计数器。
3.设计结果与数据
3.1单元电路调试
(1)1.1HZ信号输入电路
图表61.1HZ信号初级放大
图表71.1HZ信号通过低通滤波
图表81.1HZ信号比较整形
图表9显示心率为66
(2)50HZ信号输入
图表10低通滤波器对工频有效抑制
3.2系统联调
图表11系统联调结果
3.3数据分析
仿真时输入信号为1.1HZ,理论显示数据为66,实际显示数据为66,显示正确。
4.结论与心得
4.1设计结论
本设计基于51单片机,信号放大,滤波,整形,显示均到达要求。
4.2心得
本系统在仿真测试中显示正确,是经过多次调试与修改的结果。
由于单片机采用T0定时中断,T1计数,在实际调试时,定时时间越长,延时越长,故实际定时并非60s,经过多次调试,定时45.5s,正好可以显示60s时的计数值。
如果做出实际电路,定时时间也需要做相应的修改
参考文献
[1]康华光.电子技术基础模拟部分[M].5版,北京:
高等教育出版社,2006:
418-419.
[2]胡健.单片机原理及接口技术教程[M].北京:
机械工业出版社,2004:
171-175.
附件(电路图、程序清单、任务分工)
附件一:
电路图
附件二:
程序清单
#include
#include
#defineucharunsignedchar
#defineuintunsignedint
ucharseg_du[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//数码管的段选
uchardbuf[4]={0,0,0,0};//用来装显示数据的空数组
uintcount;
uintcou,cou1;
voiddelay(void)//延时函数用于数码管动态扫描
{
uchari;
for(i=0;i<20;i++);
}
voiddisplay()//数码管显示函数
{
P2=0xfe;
P0=seg_du[dbuf[3]];
delay();
P0=0xff;
P2=0xfd;
P0=seg_du[dbuf[2]];
delay();
P0=0xff;
P2=0xfb;
P0=seg_du[dbuf[1]];
delay();
P0=0xff;
P2=0xf7;
P0=seg_du[dbuf[0]];
delay();
P0=0xff;
}
voidtimer0(void)interrupt1//定时器中断,用与定时计数
{
count++;
if(count==910)//定时45.5s,
{
count=0;//将定时标志清零
TR1=0;//关闭计数器
cou1=TL1-6;//将小于250次脉冲的计数加上
dbuf[3]=(cou*250+cou1)/1000;
dbuf[2]=((cou*250+cou1)%1000)/100;
dbuf[1]=((cou*250+cou1)%100)/10;
dbuf[0]=(cou*250+cou1)%10;//显示处理函数
cou=0;//计数器清零
TL1=6;//打开计数器中断
TR1=1;//开启计数器,使之工作
}
}
voidtime1(void)interrupt3//计数器中断,用于计数
{
cou++;
}
voidtime0_init()//定时器0初始化
{
TMOD=0x61;//设置定时器0,和计数器1的模式
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;//定时器的初值,用于中断一次计时250us
ET0=1;//开定时器0中断
TR0=1;//开定时器0
}
voidtime1_init()//计数器1初始化
{
TH1=6;
TL1=6;//装载计数器的初值
ET1=1;//开计数器1中断
TR1=1;//开计数器1
EA=1;//开总中断
}
voidmain()
{
count=0;
time0_init();
time1_init();
while
(1)
{
display();
}
}