脉搏测试报警系统设计

目录

一、方案流程及技术规格书设计

二、系统硬件电路设计

三、软件编写及调试

四、系统调试测试与分析

前言

       人体脉搏信号中包含丰富的生理信息,脉诊在我国已具有2600多年临床实践,是我国传统中医的精髓,但祖国传统医学采用“望、闻、问、切”的手段进行病情诊断,受人为的影响因素较大,测量精度不高。随着科技发展的不断提高,生命科学和信息科学的结合越来越紧密,出现了各种新颖的脉搏测量仪器,使脉搏测量变得非常方便和精确。

       随着我国社会老龄化的到来,城市中大量独居老人的健康监护问题越来越突出。心血管疾病作为老年人疾病中比例较高的病症,许多病情较轻的病人由于未及时进行检查,错过了宝贵的诊治机会,导致病情加重,严重者可能引起中风甚至危及生命。通过分析官方报道出的数据,心血管疾病每年导致全世界1500万人死亡,成为导致死亡的主要原因。即使当前国内医疗设备已较为先进完善的前提下,心血管发病率仍然逐年提高,并且事实上,该病的发病人群也呈现年轻化的趋势。

       脉搏远程监测报警系统的实现,可以避免患者的时间和金钱上的浪费,提高治疗效率;另一方面可以让患者在日常中更熟悉自身身体状况,即促进医务人员与患者之间的交流合作,提高病院服务水准的同时也降低了医患矛盾产生的概率。

软件工具准备

软件:

电路设计:protel99 se(up主使用版本) 或者其他版本,或者其他电路设计软件;

单片机开发:Keil5;

调试测试:串口调试助手,逻辑分析仪等;

工具:

电路焊接:电烙铁,SMT(有条件的);

调试:

万用表、示波器(基础入门即可,可以白嫖学校或者公司)USB转串口工具、仿真器;

一、方案流程及技术规格书设计

1.1 方案流程设计

62e7567169274aa1b333fd9ae183b5a5.png

1.2 技术规格书设计

1. 脉搏信号由光电脉搏传感器模块进行采集;采集后的信号经过放大(滤除50HZ信号的干扰),进行整形后,得到幅值在0~5v的脉冲信号。

2.脉冲信号输入单片机,单片机处理相关数据并在LCD液晶显示。

3.有报警信息,报警信息通过GSM模块发送给指定手机。

4、按键可以设置报警值。

776243d1c7a044649a5cd3db1866a141.png

二、原理图和PCBA版图设计及解析2581c394a9e24bf49fc6742f403f83f6.png

2.1微处理控制电路

      单片机是系统的核心,单片机电路一般有复位电路、晶振时钟电路等,本设计采用宏晶公司IAP15F2K61S2单片机芯片,其内部有上电复位电路和内部时钟电路,所以设计省去外部复位电路和外部晶振。设计采用LQFP32封装,电路图如图3.1所示:

e005e9e1c6f24724897b1324ccfe78a2.png

                                                              图3.1 微控制器电路

2.2脉搏传感器电路

       脉搏传感器以一体化模块方式,其模块自身有信号采集、放大和处理电路,所以和单片机接口比较简单。设计采用一个3脚插座形式连接传感器。1脚是脉搏模拟信号输出脚,连接单片机AD转换口,2脚是传感器供电脚,连接VCC5V电压,3脚接地。手指未接触传感器时,输出固定电压2.5V,当手指接触传感器时,由于脉搏跳动,手指血液浓度不同,光电传感器输出高低感应信号,经放大处理后,在传感器模块1脚输出类似三角波的波形。模块输出模拟信号,电路如图3-2:

                                

b4cf4c93d8e946319caac06bc8bf8368.png

                                                               图3.2 脉搏传感器电路        

2.3 LCD显示电路

       液晶显示是LCD1602A模块,LCD1602A模块自身有LCD驱动集成电路(HD44780液晶芯片)电源电路等,与LCD模块接口是16脚插座,电路如图3.3:

1cc2f6ae833a428e89102bfbef18784c.png

                                                         图3.3 LCD1602A显示电路图

        R2电位器10K起分压作用,电位器采用3296多圈电位器,调节精度高,接口2脚是提供液晶显示偏压,电压大小调节显示对比度。C15是液晶供电滤波电容,接VCC和GND之间。15、16脚是背光源供电,15脚接正,R21是背光限流电阻,其大小可以调节背光亮度。其他是和单片机连接的数据和控制脚,RS脚是选择命令还是数据。RW是读写选择。E是片选信号。D0-D7是数据线。

2.4按键电路

   非自锁机械按键按下时2个脚导通,松开按键,2个脚断开。本设计4个按键,没有按下按键时,由于上拉电阻作用,对应IO口是高电平,按键按下,按键导通,对应IO口接地,是低电平。单片机检测各个按键IO口电平,判断按键状态。按键功能是设置脉搏报警高限和低限。电路如图3.4:

f5977b1b34784d459bddfc2cf83525b5.png

                                                                    图3.4按键电路图 

2.5  LED指示报警电路

      LED指示报警电路连接单片机P32,正常工作时,P32输出高电平,点亮LED。当报警时,P32输出1HZ方波,使单片机闪烁显示。电路如图3.5。

45e0734a54404cfa99daddc6ad00c268.png

                                                                 图3.5 LED灯电路图

2.6蜂鸣器驱动电路

       蜂鸣器连接单片机P33口,单片机IO口驱动能力有限,所以加三极管驱动电路,R3是限流电阻。采用无源蜂鸣器,蜂鸣器不响时,P33口输出低电平,Q1不导通,没有电流流过蜂鸣器,P33口输出4KHz方波时,Q1在P33高电平时导通,低电平时不导通。蜂鸣器流过电流也是4KHz,所以蜂鸣器响。R10可以调节流过蜂鸣器电流大小,即调节蜂鸣器声音大小。电路如图3.6。

bf5ac45ffb9a4ae291007de787e83640.png

                                                            图3.6 蜂鸣器驱动电路图

2.7 GSM电路

        设计采用GA6-B通信模块,模块已经集成了射频天线、SIM卡,GSM模块和单片机接口只是串口。由于GSM模块的IO口是3.3V,不能直接和单片机5V的IO口连接,需要电平转换电路。TXD2、RXD2连接单片机串口,U_RXD、U_TXD连接模块串口。接口电路如图3.7:

2f0e3af458334e93932d5d2c204811a0.png

                                                  图3.7 GSM通讯模块和电平转换电路

2.8电源电路

        系统采用外部9V电源适配器供电,单片机和液晶等需要5V稳定的电压供电,9V降压到5V采用常见的7805三端稳压集成电路。7805三端稳压电路的优点有:1、纹波抑制比高。2、内部有过热、短路保护。安全可靠。3、价格便宜。4、所需的外围元件极少,外部元件只需输入滤波电容和输出滤波电容。

        三端稳压集成电路7805只有3个脚,1脚输入、2脚接地、3脚输出。直流经过7805稳压输出5V,C3输入滤波电容、C6输出滤波电容。电路如图3.8。

9041e76ab0114125bfabacac0e2152f8.png

                                                               图3.8 7805稳压电路

GSM模块接口电平是3.3V,所以需要3.3V电源。设计采用AMS1117稳压电路,电路如图3.9。

0c4fc7c4262f4be1bf5522151560e429.png

                                                         图3.9  AMS1117稳压电路

三、软件编写及调试

 3.1 主程序设计

       脉搏测试和报警系统完成的功能有:1、脉搏传感器输入模拟信号进行AD转换,得到数字化的脉搏数据,对转换得到的数据进行分析和计算,得到脉搏值。2、脉搏值和设置的上下限比较,超过正常值就声光报警。3、液晶显示脉搏值和报警信息。4、报警时,GSM模块发送短信到指定的手机。5、按键设置报警上下限。

       软件设计就是编写计算机程序,常用的单片机编程语言有汇编语言和C语言,汇编语言是底层机器语言,适合于编写简单功能程序。目前已经很少使用汇编语言设计应用程序。本设计使用C语言,C语言是高级语言一种,它不但有高级语言的设计容易,易读懂,可移植性还有它能对底层寄存器操作,兼顾了汇编语言的功能,所以非常适合单片机编程。

        系统上电后,首先关闭总中断,然后对芯片内部AD初始化,定时器初始化,LCD显示初始化,通信模块初始化,完成初始化后,打开总中断。后面循环执行LCD显示程序,AD转换程序,计算程序,按键扫描和处理程序,蜂鸣器报警程序,LED报警程序,GSM模块发送程序。图4-1主程序流程图。

cfd59d0580cd408b83e83f9aed26561e.png

                                                                 图4.1  主程序

3.2 脉搏AD转换程序和计算程序设计

       脉搏数就是一分钟心跳次数,脉搏一般是在60-120之间。也就是每分钟跳动60次到120次,脉搏传感器输出就是跳动周期的脉冲波,二个波峰之间的时间就是脉搏跳动时间,按1分钟60次计算,1秒钟一次,也就是每1秒会出现峰值,按20毫秒采样一次AD值,采样50个值进行比较,就可以得到脉搏峰值,计算2次峰值时间差,然后60000除以时间差,就计算出脉搏值。

       STC15F2K61S2内部集成了AD转换器,所以直接使用内部AD转换器。图4-2是AD转换内部框图。

ed19d0ffa51f4370a4445ca962cf37d9.png

                                                         图4.2  AD转换内部框图

        AD转换共有8个输入通道,模拟开关切换通道,配置ADC_CONTR寄存器的CHS2-CHS0选择通道,本设计采用通道3。STC15F2K61S2的ADC是逐次比较型ADC,逐次比较型ADC由比较器和DAC构成。置位ADC_START位启动AD转换,转换结束硬件置位ADC_FLAG,程序读取ADC_RES和ADC_RESL转换结果寄存器值。完成一次AD转换。ADC必须经过初始化才能使用。图4.3是ADC初始化流程图。

26496de4e98c41cd8895fd92e4e00740.png

                                                       图4.3  AD转换初始化流程图

        图4.4是AD转换和脉搏计算流程图。

95cc8397ebc94ad0a54813cbd7e1e6b9.png

                                                    图4.4  AD转换脉搏计算流程图

程序代码:

/***************************

*AD初始化

****************************/

void ADC_init(void)

{

ADC_CONTR = 0x00;

    P1ASF |= (1<<3);

ADC_CONTR |= 0x80; //开启ADC电源

ADC_CONTR |= 0x40; //配置转换时间180时钟周期

    ADC_CONTR |= 0x03; //选择ADC通道3

    CLK_DIV = 0;      //配置ADC结果寄存器ADC_RES + ADC_RESL(2BIT)

}

/***************************

*AD转换和脉搏计算

****************************/

void Task_Pulse(void)

{

      u8 adcFlag;

u16 adcVal;

EA = 0;

      adcVal = 0;

AdcCount = 0;

    while(AdcCount < 5)

    {

        ADC_CONTR = 0xcb; //启动

        adcFlag = ADC_CONTR;

        adcFlag &= (1<<4);

        while(adcFlag == 0)

        {

            adcFlag = ADC_CONTR;

            adcFlag &= (1<<4);

        }

        ADC_CONTR = 0xc3; //关闭AD

        adcVal = ADC_RES;

        adcVal <<= 2;

        adcVal += (ADC_RES&0x03);

        //AdcRes[AdcCount++] = adcVal;

    }

EA = 1;

    SortSmallToBig(AdcRes, 5);

    AdcResOk = CalAvg(AdcRes, 5);

    Plus(adcVal);

}

3.3 液晶显示驱动及显示程序设计

       LCD1602A液晶模块使用HD44780液晶芯片。HD44780内置了DDRAM、CGROM 和CGRAM。DDRAM就是显示数据RAM,用来寄存待显示的字符代码。共80个字节,其地址和屏幕的对应关系如下表:

显示位置

1

2

3

4

5

6

40

DDRAM

地址

第一行

00H

01H

02H

03H

04H

05H

27H

第二行

40H

41H

42H

43H

44H

45H

67H

       1602A液晶第一行16个字符,地址使用了00H-0FH,第二行16个字符,地址是40H-4FH。如果要在第二行第三列显示1,就在42H写入ASKII字符‘1’就可以。

        那么,怎么去控制在第二行第三列显示1?,HD44780是提供了11条指令集。

        下面举一条清屏指令为例:

指令功能

RS

RW

D7

D6

D5

D4

D3

D2

D1

D0

清屏

0

0

0

0

0

0

0

0

0

1

       RS控制线是区分命令和数据,RS低电平时,是控制命令,RS高电平时,是显示数据。清屏是控制命令,所以RS低。

       RW是读写控制,RW低电平,是写入液晶模块,RW高电平时,是读液晶模块数据。清屏是写入液晶模块,所以RW低。

       D7-D0是数据线数据,清屏是0x01。

       常用的指令有控制显示模式指令0x06,显示开关0x04,功能设置0x38等。

       与LCD控制器通信,首先要实现写命令和写数据功能,图4-5是写LCD命令和数据流程图。

c6d99a25475f4060b9ea0aeef09903ee.png

                                        图4.5  写命令(RS=0)和写数据(RS=1)流程图

程序代码:

/***写命令***/

void cmd_w(uchar cmd)

{

  RW=0;

  RS=0;

  E=1;

  P2=cmd;

  delay(1);

  E=0;

}

/***写数据***/

void dat_w(uchar dat)

{

  RW=0;

  RS=1;

  E=1;

  P2=dat;

  delay(1);

  E=0;

}

1602A液晶模块显示前需要初始化,初始化主要是设置LCD的工作状态。图4-6是LCD初始化流程。

58d1ed5b072649f295e25498976f8028.png

                                                     图4.6  LCD1602初始化流程图

LCD1602A初始化和其他程序代码:

/***初始化**/

void Lcd1602_init(void)

{

  cmd_w(0x38);

  cmd_w(0x0c);

  cmd_w(0x06);

  cmd_w(0x01);

  cmd_w(0x80);    

}

/***光标定位****/

void gotoxy(uchar x,uchar y) //x是行数,y是列数

{

 if(x==1)

 {cmd_w(0x80+y);}

 else

 {cmd_w(0xc0+y);}

}

void dsp_ch(uchar _ch) //显示字符

{

dat_w(_ch);

}

3.4 串口通信和GSM发送程序设计

      单片机用串口AT指令控制GSM模块,所以GSM发送程序主要是串口通信程序设计。STC15F2K61S2有2个串口,UART1和UART2。串口1用于程序下载和仿真,所以本设计用串口2和GSM模块通信。

       串口2和GSM模块通信首先需要初始化串口,串口初始化主要是配置工作模式、设置波特率等。图4-7是串口初始化流程图。

26d00040543149c5abdce0291b727a38.png

                                                         图4.7  串口初始化流程图

串口初始化和通信代码:

#define BAUD      9600  //波特率

#define SYSTEMCLOCK  11059200L  //系统时钟频率

static u8  *phone_num = "AT+CMGS=\"15815522222\""; //拨打电话,修改这里可以修改拨打的电话。

/*************  本地变量声明 **************/

u8 Rx_Buf[32];

u8 RxCount = 0;

u16 count_Delay;

void Uart2Init(void) //9600bps@11.05926MHz

{

    S2CON = 0x10;

    T2L = (65536 - (SYSTEMCLOCK/4/BAUD));   //

    T2H = (65536 - (SYSTEMCLOCK/4/BAUD))>>8;

    AUXR &= (1<<3);//timer

    AUXR |= (1<<2);//fosc

    AUXR |= (1<<4);//TR2

    IE2 |= 1; //ES2 = 1

}

/********************* UART2中断函数************************/

void UART2_ISR (void) interrupt 8

{

if (S2CON&0x01)

{

RI = 0;                       //清除RI位

Rx_Buf[RxCount] = SBUF;     //将接收到的字符串存到缓存中

RxCount++;                   //缓存指针向后移动

if(RxCount >= 32)          //如果缓存满,将缓存指针指向缓存的首地址

{

RxCount = 0;

}

}

if (S2CON&0x02)

{

TI = 0;                          //清除TI位

}

}

/*----------------------------

UART1 发送串口数据

-----------------------------*/

void UART1_SendData(u8 dat)

{

ES=0; //关串口中断

SBUF=dat;

while(TI!=1); //等待发送成功

TI=0; //清除发送中断标志

ES=1; //开串口中断

}

/*----------------------------

UART1 发送字符串

-----------------------------*/

void UART1_SendString(char *s)

{

while(*s)//检测字符串结束符

{

UART1_SendData(*s++);//发送当前字符

}

}

/*********************************************************************

* 函数名 : Second_AT_Command

* 描述   : 发送AT指令函数

* 输入   : 发送数据的指针、希望收到的应答、发送等待时间(单位:interval_time*20 ms)

*********************************************************************/

u8 UART1_Send_AT_Command(u8 *b,u8 *a,u8 wait_time,u16 interval_time)         

{

u8 i;

CLR_Buf();

i = 0;

while(i < wait_time)                    

{

UART1_Send_Command(b);

delay_ms(interval_time);

if(Find(a))            //查找需要应答的字符

{

return 1;

}

i++;

}

return 0;

}

3.5 蜂鸣器驱动及报警程序设计

        报警时,蜂鸣器鸣响,单片机P33脚输出4kHz方波。不报警时,P33脚输出低电平。有2种方式可以输出4KHz方波,1、采用单片机PWM输出功能。2、采用定时器定时翻转IO口电平。其效果是一样的。本设计采用定时器定时翻转方式。图4-8是蜂鸣器报警功能流程图。

a91231d7494d4012a0ebf2616054e1f0.png

                                                           图4.8 蜂鸣器报警流程图

四、系统调试测试与分析

4.1电路仿真

        电路仿真使用Proteus软件,Proteus是一款电路设计和仿真软件。因为Proteus库里面没有脉搏传感器和GSM通讯模块,所以用脉冲发生器代替,GSM通讯模块用串口代替。

        脉搏在正常范围内的仿真如图5-1,显示脉搏:60,报警:无。

654c4df751be4b64a29f8b478a81729b.png

                                                         图5-1  脉搏正常时,仿真图

        脉搏在低时的仿真如图5-3,显示脉搏:24,报警:Low。

c0fe731fbd324d7d96cce3b242a06077.png

                                                                 图5-3  脉搏低时,仿真图

          脉搏在高时的仿真如图5-5,显示脉搏:133,报警:High。

67cc6ac1a61540d68dfffbfd611e192b.png

                                                          图5-5  脉搏高时,仿真图

             脉搏高时的串口接收仿真如图5-6,接收脉搏:133,报警:High。

581eff32ea1d45e9bd7bc642fc0adc33.png

                                                 图5-6  脉搏高时,串口接收仿真图

4.2硬件电路焊接

       先将单片机STC15F2K61S2、贴片电容、贴片电阻、贴片按键、贴片MOS管等元件焊接到线路板,在将直插电容、稳压集成电路、LED灯、插座、插针等直插元件焊接到线路板。实物如图所示。

a54ab7d40d13463c915581b3ef6f2d40.png

4.3系统调试

       连接电脑,用USB串口线连接程序下载口,将编译好的HEX文件下载到单片机。上电运行程序。显示如图。

4cb28608067d46b0a5000f90f537182e.png

        手指贴住传感器,用固定带固定,注意不要太紧,进入脉搏测试。显示如图。

71e70ec64de94aeeac70493f6d9f01e9.png

1e0f0f42a3604c34ae30f406dded22f0.png

  • 1
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
系统是一款基于STC89C52的GSM智能家居报警系统,能够实现烟雾报警、温度报警、防盗报警,并采用GSM发送警报信息。 1.GSM手机模块TC35 1.1 TC35特点 TC35是Siemeils公司推出的新-代无线通信GSM模块。自带RS232通讯接口,可以方便地与PC机、单片机连机通讯。可以快速、安全、可靠地实现系统方案中的数据、语音传输、短消息服务(Short Message Service)和传真。TC35模块的工作电压为3.3—5.5V,可以工作在900MHz和1800MHz两个频段,所在频段功耗分别为2w(900M)和1w(1800M)。 模块有AT命令集接口,支持文本和PDU模式的短消息、第三组的二类传真、以及2.4k,4.8k,9.6k的非透明模式。此外,该模块还具有电话簿功能、多方通话,漫游检测功能,常用工作模式有省电模式、IDLE、TALK等模式。通过独特的40引脚的ZIF连接器,实现电源连接、指令、数据、语音信号、及控制信号的双向传输。通过ZIF连接器及50Ω天线连接器,可分别连接SIM卡支架和天线。 TC35模块主要由GSM基带处理器、GSM射频模块、供电模块(ASIC)、闪存、ZIF连接器、天线接口六部分组成。作为TC35的核心,基带处理器主要处理GSM终端内的语音、数据信号,并涵盖了蜂窝射频设备中的所有的模拟和数字功能。在不需要额外硬件电路的前提下,可支持FR、HR和EFR语音信道编码。 1.2使用方法 1)TC35的连机方法 任何一个TC35模块首次使用时,必须要测试其工作是否正常,由于其自带RS232接口,所以我们可以用PC机的串口调试软件进行调试。 a)启动串口调试软件 串口调试软件有许多,可以使用任意一款软件,也可以使用WINDOWS自带的“超级终端"。设置波特率19.2k,这是TC35的默认波特率,首次连机可以从2400~57.6k不断测试,直到TC35有应答。 b)发送“AT” AT 回车 c)改变波特率“AT+IPS=XXXX" TC35的默认波特率是19.2k,实际使用时,可以改成9600或38.4K,方法如下: AT+IPR=9600 回车 d)短信模式的设置 (GSM模块的短信模式有2种。第1种是:TEXT模式;第2种是:PDU模式。PDU模式可以采用unicode编码发送英文、汉字。但合成PDU码比较复杂,而TEXT模式只能发送英文,但无须编码。实际使用可以采用TEXT模式。 设置如下: AT+CMFG=1 回车 e)短信模式简介 SMS是由Etsi所制定的一个规范(GSM 03.40和GSM 03.38)。当使用7-bits编码的时候它可以发送最多160个字符;8-bit编码(最多140个字符)。通常无法直接通过手机显示;通常被用来作为数据消息,例如:smart messaging中的图片和铃声和OTA WAP设置。16-bit信息(最多70个字符)被用来显示Unicode(UCS2)文本信息,可以被大多数的手机所显示。一个以class 0开头的16-bit的文本信息将在某些手机上作为Flash SMS显示(闪烁的SMS和警告SMS)。 有两种方式来发送和接收SMS信息:使用文本模式或者使用PDU(protocol description unit)模式。文本模式(可能某些手机不支持)实际上也是一种PDU编码的一种表现形式。在显示SMS信息,可能使用不同的字符集和不同的编码方式。 f)短信读取方法 AT+CMGR=X回车 如果有短信息,TC35回应: AT+CMGR=1 +CMGR:"REC UNREAD","13307496548",,"04/08/17,22:24:32+02 testOK OK 短信息分析: “test OK"就是短信息内容。 短信息的存储容量与Ic卡有关,序号从1-N。 REC UNREAD":代表短信息未读过。 REC READ" :已读过。 13307496548" :接收的手机号码。 04/08/17,22:24:32+02":短信息发送的时间。 无短信息,TC35回应: AT+CMGR=3 +CMGR:0,,0 g)短信的删除方法 AT+CMGD=1回车 h)短信的发送方法 短信息的发送分成两步: i.发送接收的手机号码,等待应答:“>" AT+CMGS="13307496548"回车(目的地址) TC35回应: AT+CMGS="13307496548" > ii.输入短信息的内容(只能是英文):Test 回车 2)单片机控制TC35的方法 上面介绍了用PC机控制TC35的方法,我们只需设计一个TTL转RS232电平电路,连接到MCU的UART口,另一端直接连接到TC35,并将PC机输出的控制命令转化成单片机输出的指令即可。 2.烟雾报警

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

cc ²ᶜ

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

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

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

打赏作者

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

抵扣说明:

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

余额充值