资讯专栏INFORMATION COLUMN

毕业设计 - 题目:基于 stm32 的病房呼叫系统

luffyZh / 2704人阅读

摘要:目前病房呼叫系统主要有两种一种是有线式一种是无线式。而在我国,大多数医院都是采用的传统的有线式病房呼叫系统。主程序设计病房呼叫系统程序设计使用的是本身的固件库。


1 简介

Hi,大家好,这里是丹成学长,今天向大家介绍一个学长做的单片机项目

基于 stm32 的病房呼叫系统

大家可用于 课程设计 或 毕业设计

技术解答、毕设帮助、开题指导print("Q 746876041") 

2 绪论

2.1 课题背景

随着全球老龄化进程的加快,全球生存环境的恶化,以及人类对健康关注的增加,医疗行业正快速膨胀。人们对医疗水平的要求不断提高,特别是突发情况下病人请求值班医生或护士进行及时诊断或护理这一环节,对提高医院的管理服务质量显得尤其重要。因此通过病房呼叫系统完成向医生的求助是一种极为方便有效的手段,相关的应用设计正逐步推出。目前病房呼叫系统主要有两种,一种是有线式,一种是无线式。而在我国,大多数医院都是采用的传统的有线式病房呼叫系统。这种设计很难做到隐蔽和美观,而且安装与维护都不方便,抗电气干扰能力也不强。因此学长采用无线wifi来设计病房呼叫系统。

病房呼叫系统是为了提高医院的服务质量而提出的, 它能使病人及时快捷的进行呼叫, 以方便医院能快速准确的了解病人情况, 并能及时施以救助。 系统是基于无线网络开发的、 以单片机stm32为核心的医院无线病房呼叫系统, 利用无线网传输信号和语音信息, 远程控制部分接收无线网发送来的信号, 由stm32对其进行解码, 解码后由数码管和灯屏显示, 语音信息由话筒传出。

3 系统设计

3.1 系统架构

病房呼叫系统的开发方案是参照国内外相关技术的发展状况,在前人的基础上稍加修改,并借鉴现在一些科研机构的最新研究成果,同时根据我国医院病房监护建设的实际情况,为满足患者的要求,并充分考虑其经济性和可靠性,能真正实现智能化呼叫的要求来确定的。根据系统拟达到的总体功能,将其划分为以下功能模块:显示电路(LED灯屏、数码管)、语音录放电路(手柄)、键盘电路、报警电路、呼叫分机、无线网卡等。系统组成框图如图2-1所示。本设计采用主机和从机相分离的模式。从机安装于各个病房,主机安装于护士站,多个从机处于等待外部呼叫信号的状态,主机则时刻处于等待接受从机呼叫信号的状态,并且从机和主机之间采用无线数据传输通信。

3.2 主程序设计

病房呼叫系统程序设计使用的是 STM32 本身的固件库。 系统开始运行后, 首先检测电源状态, 对 STM32、 数码管和 LED 灯屏等进行初始化, 一切正常后等待中断的发生, 主控制器开始检测是否有呼叫传入, 当呼叫出传入后, 运行子程序。

3.3 语音模块程序设计

语音模块采用的VS1053b,它是通过一个串行输入总线来接收它的输入比特流,数据流被解码后会通过数字音量控制器送到一个高精度DAC,其中的解码器是通过一个串行控制总线来控制的。它控制整个系统完成语音录入,存储,发送,接受,播放等功能。

开机的时候先检测字库,然后初始化VS1053,进行RAM测试和正弦测试,之后,检测SD卡根目录是否存在RECORDER文件夹,如果不存在则创建,如果创建失败,则报错。在找到SD卡的RECORDER文件夹后,即设置VS1053进入录音模式,开始录音,如果有TPAD按下,则开始播放录音。

3.4 显示模块程序设计

数码管动态显示程序包括数字的显示、 小数点的显示、 数码管的闪烁和数码管的消隐等。 显示的字符跟数据对应关系如下表所示: 根据人的视觉暂留现象,一个数码管每秒必须点亮 50 次以上, 才能达到稳定显示数据的目的。

3.5 键盘模块程序设计

键盘模块的程序首先需要进行初始化, 初始化延时函数, 初始化 LED 端口,初始化与按键连接的硬件接口。 然后软件对按键去抖, 写明每个按键的功能。

3.6 无线传输模块程序设计

当数据从 CPU 经过串行端口发送出去时, 字节数据转换为串行的位, 在接收数据时, 串行的位被转换为字节数据。 无线网卡与 stm32 直接就是使用的串口通信。

3.7 部分实现代码

#include "led. h"#include "delay. h"#include "key. h"#include "tpad. h"#include "sys. h"#include "lcd. h"#include "usart. h"#include "flash. h"#include "sram. h"#include "malloc. h"#include "string. h"#include "mmc_sd. h"#include "ff. h"#include "exfuns. h"#include "fontupd. h"#include "text. h"#include "piclib. h"#include "string. h"#include "usmart. h"#include "fattester. h"#include "piclib. h"#include "vs10xx. h"#include "mp3player. h"#include "audiosel. h"#include "recorder. h"int main(void){delay_init() ; //延时函数初始化NVIC_Configuration() ; //设置NVIC中断分组2: 2位抢占优先级, 2位响应优先级uart_init(9600) ; //串口初始化为9600LED_Init() ; //LED端口初始化TPAD_Init() ; //初始化触摸按键LCD_Init() ; //LCD初始化KEY_Init() ; //按键初始化Audiosel_Init() ; //初始化音源选择usmart_dev. init(72) ; //usmart初始化mem_init(SRAMIN) ; //初始化内部内存池VS_Init() ;录音程序#include "recorder. h"#include "delay. h"#include "usart. h"#include "key. h"#include "led. h"#include "lcd. h"#include "vs10xx. h"#include "malloc. h"#include "ff. h"#include "exfuns. h"#include "text. h"#include "tpad. h"//VS1053的WAV录音有bug, 这个plugin可以修正这个问题const u16 wav_plugin[40] =/* Compressed plugin */{0x0007, 0x0001, 0x8010, 0x0006, 0x001c, 0x3e12, 0xb817, 0x3e14, /* 0 */0xf812, 0x3e01, 0xb811, 0x0007, 0x9717, 0x0020, 0xffd2, 0x0030, /* 8 */0x11d1, 0x3111, 0x8024, 0x3704, 0xc024, 0x3b81, 0x8024, 0x3101, /* 10 */0x8024, 0x3b81, 0x8024, 0x3f04, 0xc024, 0x2808, 0x4800, 0x36f1, /* 18 */0x9811, 0x0007, 0x0001, 0x8028, 0x0006, 0x0002, 0x2a00, 0x040e,} ;//激活PCM 录音模式//agc:0, 自动增益. 1024相当于1倍, 512相当于0. 5倍, 最大值65535=64倍void recoder_enter_rec_mode(u16 agc){//如果是IMA ADPCM, 采样率计算公式如下://采样率=CLKI/256*d; //假设d=0, 并2倍频, 外部晶振为12. 288M. 那么Fc=(2*12288000) /256*6=16Khz//如果是线性PCM, 采样率直接就写采样值VS_WR_Cmd(SPI_BASS, 0x0000) ;VS_WR_Cmd(SPI_AICTRL0, 8000) ; //设置采样率, 设置为8KhzVS_WR_Cmd(SPI_AICTRL1, agc) ; //设置增益, 0, 自动增益. 1024相当于1倍, 512相当于0. 5, 最大值65535=64VS_WR_Cmd(SPI_AICTRL2, 0) ; //设置增益最大值, 0, 代表最大值65536=64XVS_WR_Cmd(SPI_AICTRL3, 6) ; //左通道(MIC单声道输入)VS_WR_Cmd(SPI_CLOCKF, 0X2000) ; //设置VS10XX的时钟, MULT:2倍频; ADD: 不允; CLK: 12. 288MhzVS_WR_Cmd(SPI_MODE, 0x1804) ; //MIC, 录音激活delay_ms(5) ; //等待至少1. 35msVS_Load_Patch((u16*) wav_plugin, 40) ;//VS1053的WAV录音需要patch}//初始化WAV头.void recoder_wav_init(__WaveHeader* wavhead) //初始化WAV头{wavhead->riff. ChunkID=0X46464952; //"RIFF"wavhead->riff. ChunkSize=0; //还未确定, 最后需要计算wavhead->riff. Format=0X45564157; //"WAVE"wavhead->fmt. ChunkID=0X20746D66; //"fmt"wavhead->fmt. ChunkSize=16; //大小为16个字节wavhead->fmt. AudioFormat=0X01; //0X01, 表示PCM; 0X01, 表示IMA ADPCMwavhead->fmt. NumOfChannels=1; //单声道wavhead->fmt. SampleRate=8000; //8Khz采样率 采样速率wavhead->fmt. ByteRate=wavhead->fmt. SampleRate*2; //16位, 即2个字节wavhead->fmt. BlockAlign=2; //块大小, 2个字节为一个块wavhead->fmt. BitsPerSample=16; //16位PCMwavhead->data. ChunkID=0X61746164; //"data"wavhead->data. ChunkSize=0; //数据大小, 还需要计算}

作品展示,实现效果:

4 最后

技术解答、毕设帮助、开题指导print("Q 746876041") 

单片机毕设项目大全:
https://blog.csdn.net/huawei123444/article/details/119822845

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/121788.html

相关文章

  • 毕业设计 - 题目基于stm32车牌识别系统设计

    摘要:对于道路交通应用到的技术,车牌识别系统是交通管理的主要技术。所以车牌识别系统目前是一个交通管理必备的技术,因此本文对车牌识别系统进行了研究与实现。车流统计车牌验证和移动车载系统车牌识别系统可以用于对车辆流量统计。 ...

    不知名网友 评论0 收藏0
  • STM32学习笔记 第一章 ARM处理器

    摘要:处理器拥有的寄存器组。主堆栈指针复位后缺省使用的堆栈指针,用于操作系统内核以及异常处理例程包括中断服务例程。进程堆栈指针由用户的应用程序代码使用。堆栈指针的最低两位永远是,这意味着堆栈总是字节对齐的。 ...

    ruicbAndroid 评论0 收藏0
  • 基于单片机智能家居控制系统

    摘要:中控部分采用了单片机,其主要作用是获取输入部分数据,经过内部处理,控制输出部分。 设计简介: 本设计是基于单片机的智能家居控制系统,主要实现以下功能: 可通过DS18B20实时测量环境温度温度具有上下限,自动模式下温度超出限值,GMS发送短信温度上下限通过手机蓝牙设置系统可通过手机蓝牙、红外...

    zacklee 评论0 收藏0
  • 基于STM32平台数字温度显示器系统设计

    摘要:带中文字库的是一种具有位位并行线或线串行多种接口方式,内部含有国标一级二级简体中文字库的点阵图形液晶显示模块其显示分辨率为。贴片按键模块支持标准的协议,完整的协议栈。以最低成本提供最大实用性,为功能嵌入其他系统提供无限可能。 项目简介 开发环境: Keil5.14,CubeMX6.0.1,主...

    villainhr 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<