找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 669|回复: 1
打印 上一主题 下一主题
收起左侧

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

[复制链接]
跳转到指定楼层
楼主
一、系统方案
1、本设计采用51单片机作为主控器。
2、DS1302采集年月日时分秒送到液晶1602显示。
3、按键年月日时分秒,心率报警上下限。
4、红外对接管传感器采集心率送到液晶1602显示。
5、心率低于下限或高于上限,蜂鸣器报警。


二、硬件设计
原理图如下:
三、单片机软件设计
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、液晶显示程序
/***********************延时函数************************/
void delay_uint(uint q)
{
        while(q--);
}

/***********************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;        
}
3、按键程序
uchar key_can;         //按键值

void key()         //独立按键程序
{
        static uchar key_new;
        key_can = 20;                   //按键值还原
        P3 |= 0x78;                     //对应的按键IO口输出为1
        if((P3 & 0x78) != 0x78)                //按键按下
        {
                delay_1ms(1);                     //按键消抖动
                if(((P3 & 0x78) != 0x78) && (key_new == 1))
                {                                                //确认是按键按下
                        key_new = 0;
                        switch(P3 & 0x78)
                        {
                                case 0x70:  key_can = 4;  break;         //得到按键值
                                case 0x68:  key_can = 3;  break;         //得到按键值
                                case 0x58:  key_can = 2;  break;         //得到按键值
                                case 0x38:  key_can = 1;  break;         //得到按键值
                        }
                }                        
        }
        else
                key_new = 1;        
}
4、核心算法程序
        void ex0() interrupt 0
{
                EX0=0;//暂时关外部中断
                if(timecount<8)   //当连续两次检测时间间隔小于8*50ms=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仿真软件就很好的解决这个问题,我们在设计之初,就使用该软件进行模拟仿真,测试,选择满足我们设计的最优方案。最后根据测试没问题的仿真图纸,焊接实物,调试,最终完成本设计的作品。

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:432633 发表于 2023-11-11 07:53 | 只看该作者
程序不全,仿真文件又没有。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表