基于51单片机的万年历-心率脉搏计仿真及源程序-保存心率记录

基于51单片机的万年历-心率脉搏计仿真及源程序-保存心率记录
一、系统方案
1、本设计采用51单片机作为主控器。
2、液晶1602显示。
3、DS1302万年历,测心率,按键设置万年历、心率上下限,不在范围蜂鸣器报警。
4、心率测量值保存3组数据。
二、硬件设计
原理图如下:
在这里插入图片描述

三、单片机软件设计
1、首先是系统初始化
TCON=0x01;//设置外部中断0
EX0=1;
TMOD=0x01;//定时器0初始化
TH0=(65536-50000)/256;//实测每50ms中断的定时值
TL0=(65536-50000)%256;
ET0=1;//开定时器中断
TR0=0;//定时器停止
EA=1;//开总中断
init_1602(); //lcd1602初始化
init_1602_dis_csf(); //lcd1602初始化显示
2、液晶显示程序
/lcd1602写命令函数*/
void write_com(uchar com)
{
e=0;
rs=0;
rw=0;
P0=com;
delay_uint(3);
e=1;
delay_uint(25);
e=0;
}

/lcd1602写数据函数*/
void write_data(uchar dat)
{
e=0;
rs=1;
rw=0;
P0=dat;
delay_uint(3);
e=1;
delay_uint(25);
e=0;
}

/lcd1602初始化设置*/
void init_1602() //lcd1602初始化设置
{
write_com(0x38); //
write_com(0x0c);
write_com(0x06);
}
3、按键程序

void key() //独立按键程序
{
static uchar key_new;
key_can = 20; //按键值还原
P3 |= 0xf8; //对应的按键IO口输出为1
if((P3 & 0xf8) != 0xf8) //按键按下
{
delay_1ms(1); //按键消抖动
if(((P3 & 0xf8) != 0xf8) && (key_new == 1))
{ //确认是按键按下
key_new = 0;
switch(P3 & 0xf8)
{
case 0xf0: key_can = 4; break; //得到按键值
case 0xe8: key_can = 3; break; //得到按键值
case 0xd8: key_can = 2; break; //得到按键值
case 0xb8: key_can = 1; break; //得到按键值
case 0x78: key_can = 5; break; //得到按键值
}
}
}
else
key_new = 1;
}
4、核心算法
void ex0() interrupt 0
{
EX0=0;//暂时关外部中断
if(timecount<8) //当连续两次检测时间间隔小于850ms=400ms不处理
{
TR0=1;//开定时器
}
else
{
time[num]=timecount
50+TH0*0.256+TL0/1000;//算出间隔时间
TL0=(65536-50000)%256;//重新设置定时器
TH0=(65536-50000)/256;
timecount=0;//50ms计数清零
num++;
if(num==6)//记录到超过等于6次
{
num=1;//计数从1开始
displayOK=1; //测得5次
}

	}
	EX0=1;

}
四、 proteus仿真设计
Proteus软件是一款应用比较广泛的工具,它可以在没有硬件平台的基础上通过自身的软件仿真出硬件平台的运行情况,这样就可以通过软件仿真来验证我们设计的方案有没有问题,如果有问题,可以重新选择器件,连接器件,直到达到我们设定的目的,避免我们搭建实物的时候,如果当初选择的方案有问题,我们器件都已经焊接好了,再去卸载下去,再去焊接新的方案的器件,测试,这样会浪费人力和物力,也给开发者带来一定困惑,Proteus仿真软件就很好的解决这个问题,我们在设计之初,就使用该软件进行模拟仿真,测试,选择满足我们设计的最优方案。最后根据测试没问题的仿真图纸,焊接实物,调试,最终完成本设计的作品。
在这里插入图片描述

  • 21
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

bbxyliyang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值