0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于单片机的可语音播报的脉搏检测仪设计

白茶茶668 来源:白茶茶668 作者:白茶茶668 2023-08-01 00:54 次阅读

设计功能:

1.ST188光电传感器检测脉搏信号,并有脉搏信号指示灯;

2.具有温度检测功能,可检测人体温度,温度传感器为DS18B20;

3.脉搏和温度检测完成后,LCD1602会显示当前温度和脉搏数值;

4.增加语音播报功能,显示完成后可语音播报脉搏和温度数值;

5.按键可设置脉搏检测的安全范围;

6.超出所设安全范围时,蜂鸣器报警;

wKgZomTH5y-AOrPLAASYOv82_XA059.png

部分程序:

#include //调用单片机头文件

#define uchar unsigned char //无符号字符型 宏定义 变量范围0~255

#define uint unsigned int //无符号整型 宏定义 变量范围0~65535

#include


bit flag_300ms ;

bit q;


uchar menu_1=0; //菜单设计的变量

sbit beep = P3^7; //蜂鸣器IO口定义

uchar flag_200ms ;

/***********************语音模块控制IO口的定义************************/

sbit VRST = P2^4;

sbit VBUSY= P2^0;

sbit VSDA = P2^1;

sbit VCS = P2^2;

sbit VSCL = P2^3;

uchar yujing[3];


uchar code table_num[]="0123456789abcdefg";


sbit rs=P1^0; //寄存器选择信号 H:数据寄存器 L:指令寄存器

sbit rw=P1^1; //寄存器选择信号 H:数据寄存器 L:指令寄存器

sbit e =P1^2; //片选信号 下降沿触发


unsigned char i=0,timecount=0,displayOK=0,rate=0,aa=0;

unsigned int time[6]={0};

uchar rate_l=50,rate_h=120; //心跳报警值


sbit dq = P3^3; //18b20 IO口的定义


uint temperature ; //


/***********************1ms延时函数*****************************/

void delay_1ms(uint q)

{

uint i,j;

for(i=0;i

for(j=0;j<110;j++);

}


void delay_uint(uint q)

{

while(q--);

}


void write_com(uchar com)

{

delay_uint(25);

e=0;

rs=0;

rw=0;

delay_uint(25);

e=1;

P0=com;

delay_uint(100);

e=0;

}


void write_data(uchar dat)

{

delay_uint(25);

e=0;

rs=1;

rw=0;

delay_uint(25);

e=1;

P0=dat;

delay_uint(100);

e=0;

rs=0;

}


void write_string(uchar hang,uchar add,uchar *p)

{

if(hang==1)

write_com(0x80+add);

else

write_com(0x80+0x40+add);

while(1)

{

if(*p == '�') break;

write_data(*p);

p++;

}

}



/*****************控制光标函数********************/

void write_guangbiao(uchar hang,uchar add,uchar date)

{

if(hang == 1)

write_com(0x80+add);

else

write_com(0x80+0x40+add);

if(date == 1)

{

write_com(0x0f); //显示光标并且闪烁

}

else

write_com(0x0c); //关闭光标

}



/***********************lcd1602上显示两位十进制数************************/

void write_sfm3(uchar hang,uchar add,uint date)

{

if(hang==1)

write_com(0x80+add);

else

write_com(0x80+0x40+add);

write_data(0x30+date/100%10);

write_data(0x30+date/10%10);

write_data(0x30+date%10);

}


void write_sfm4(uchar hang,uchar add,uint date)

{

if(hang==1)

write_com(0x80+add);

else

write_com(0x80+0x40+add);

write_data(0x30+date/100);

write_data(0x30+date%100/10);

write_data('.');

//write_data(0x30+(date%100)/10);

write_data(0x30+(date%100)%10);

}

/***********************lcd1602初始化设置************************/

void init_1602()

{

write_com(0x38);

write_com(0x0c);

write_com(0x06);

delay_uint(1000);

write_string(1,0," 000/min 00. ");

write_string(2,0," H:000 L:000 ");

write_sfm3(2,4,rate_h);

write_sfm3(2,11,rate_l);

}



/***********************18b20初始化函数*****************************/

void init_18b20()

{

//bit q;

dq = 1; //把总线拿高

delay_uint(2); //15us

dq = 0; //给复位脉冲

delay_uint(80); //750us

dq = 1; //把总线拿高 等待

delay_uint(10); //110us

q = dq; //读取18b20初始化信号

delay_uint(40); //200us

dq = 1; //把总线拿高 释放总线

}


/*************写18b20内的数据***************/

void write_18b20(uchar dat)

{

uchar i;

for(i=0;i<8;i++)

{ //写数据是低位开始

dq = 0; //把总线拿低写时间隙开始

dq = dat & 0x01; //向18b20总线写数据了

delay_uint(5); // 60us

dq = 1; //释放总线

dat >>= 1;

}

}


/*************读取18b20内的数据***************/

uchar read_18b20()

{

uchar i,value=0;

for(i=0;i<8;i++)

{

dq = 0; //把总线拿低读时间隙开始

value >>= 1; //读数据是低位开始

delay_uint(1);

dq = 1; //释放总线

if(dq == 1) //开始读写数据

value |= 0x80;

delay_uint(5); //60us 读一个时间隙最少要保持60us的时间

}

return value; //返回数据

}


/*************读取温度的值 读出来的是小数***************/

uint read_temp( )

{

float tt=0;

uint value;

wKgaomTH5zCATF7vAAPzyAmAXAU417.png

wKgaomTH5zGAL6VrAASnmKpesy8188.png

审核编辑:汤梓红
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 传感器
    +关注

    关注

    2526

    文章

    48110

    浏览量

    740121
  • 51单片机
    +关注

    关注

    269

    文章

    5649

    浏览量

    120702
  • 检测仪
    +关注

    关注

    5

    文章

    3902

    浏览量

    41488
收藏 人收藏

    评论

    相关推荐

    基于51单片机的带语音播报的温度检测仪的设计与实现任务书

    基于51单片机的带语音播报的温度检测仪的设计与实现任务书
    发表于 08-17 15:26

    人体生物信息检测仪

    启动下一次测量。 (4)检测仪必须采用电池供电,并应留有电池供电电流测试点,以便评测时测量功耗,且尽量降低待机电流与工作电流。 2、发挥部分 (1)预置脉搏次数和体温上下告警门限,超限告警。 (2
    发表于 09-09 20:00

    跪求基于单片机的SYN6288的车速语音播报系统设计的C语音程序

    跪求基于单片机的SYN6288的车速语音播报系统设计的C语音程序
    发表于 04-06 21:05

    跪求基于单片机的SYN6288的车速语音播报系统设计的C语音程序

    跪求基于单片机的SYN6288的车速语音播报系统设计的C语音程序
    发表于 04-11 22:12

    51单片机控制蜂鸣器语音播报

    我想用51单片机控制蜂鸣器语音播报,可以吗?如果不行那应该怎么实现?
    发表于 05-19 22:39

    【Seeeduino XIAO申请】脉搏体温检测仪

    项目名称:脉搏体温检测仪试用计划:脉搏体温检测仪开发过程中会用到可以带替代手机
    发表于 06-08 18:44

    请问基于51单片机温湿度检测仪该如何去设计?  

    基于51单片机温湿度检测仪该如何去设计? 基于51单片机温湿度检测+数字钟该如何去设计?
    发表于 07-15 11:54

    怎样去设计一种基于51单片机最小系统的跑步霍尔测速脉搏心率检测仪

    基于51单片机最小系统的跑步霍尔测速脉搏心率检测仪有哪些功能?怎样去设计一种基于51单片机最小系统的跑步
    发表于 08-03 07:52

    怎样去设计一种基于51单片机的温湿度检测仪

    基于51单片机的温湿度检测仪是由哪些部分组成的?基于51单片机的温湿度检测仪有哪些具体功能?怎样去设计一种基于51单片机的温湿度
    发表于 10-18 06:37

    如何去实现一种基于51单片机酒精浓度检测仪的设计

    基于51单片机的酒精浓度检测仪是由哪些部分组成?如何去实现一种基于51单片机酒精浓度检测仪的设计?
    发表于 10-18 09:34

    如何利用STM32单片机实现颜色检测仪设计

    9、基于STM32单片机的颜色检测仪设计文章目录9、基于STM32单片机的颜色检测仪设计引言1、系统概述1.1、设计任务1.2、设计要求2、方案设计与论证2.1、芯片选择方案2.2 、
    发表于 11-30 06:34

    单片机如何实现语音播报温度?

    单片机通过温度传感器采集到温度后,怎样通过语音模块播报出来,用什么语音模块比较好。温度不是固定的,要怎样去实现语音
    发表于 09-27 06:18

    基于单片机语音播报万用表设计

    基于单片机语音播报万用表设计
    发表于 01-14 12:28 75次下载

    如何使用单片机进行可语音播报脉搏检测仪的设计资料说明

    ; 增加语音播报功能,显示完成后可语音播报脉搏和温度数值; 按键可设置脉搏
    的头像 发表于 05-12 09:35 5100次阅读

    怎样设计一种基于单片机的可语音播报脉搏检测仪

    ST188光电传感器检测脉搏信号,并有脉搏信号指示灯;
    发表于 08-21 14:37 363次阅读
    怎样设计一种基于<b class='flag-5'>单片机</b>的可<b class='flag-5'>语音</b><b class='flag-5'>播报</b>的<b class='flag-5'>脉搏</b><b class='flag-5'>检测仪</b>?