文章目录

  • 1 简介
  • 2 绪论
    • 2.1 课题背景
  • 3 系统设计
    • 3.1 系统架构
    • 3.2 主程序设计
    • 3.3 语音模块程序设计
    • 3.4 显示模块程序设计
    • 3.5 键盘模块程序设计
    • 3.6 无线传输模块程序设计
    • 3.7 部分实现代码
  • 4 最后

1 简介

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

基于 stm32 的病房呼叫系统

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

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) ; //串口初始化为9600
LED_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) ; //设置采样率, 设置为8Khz
VS_WR_Cmd(SPI_AICTRL1, agc) ; //设置增益, 0, 自动增益. 1024相当于1倍, 512相当于
0. 5倍, 最大值65535=64倍
VS_WR_Cmd(SPI_AICTRL2, 0) ; //设置增益最大值, 0, 代表最大值65536=64X
VS_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. 35ms
VS_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 ADPCM
wavhead->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位PCM
wavhead->data. ChunkID=0X61746164; //"data"
wavhead->data. ChunkSize=0; //数据大小, 还需要计算
}

作品展示,实现效果:

4 最后

毕业设计 stm32病房呼叫系统设计与实现相关推荐

  1. 毕业设计 stm32智能语音垃圾分类系统(项目开源)

    文章目录 1 简介 2 绪论 2.1 课题背景与目的 3 系统设计 3.1 系统架构 3.2 硬件部分 3.2.1 传感器模块 3.2.2 语音模块 3.2.3 电机及其驱动模块 3.2.4 稳压模块 ...

  2. JAVA毕业设计酒店管理系统设计与实现计算机源码+lw文档+系统+调试部署+数据库

    JAVA毕业设计酒店管理系统设计与实现计算机源码+lw文档+系统+调试部署+数据库 JAVA毕业设计酒店管理系统设计与实现计算机源码+lw文档+系统+调试部署+数据库 本源码技术栈: 项目架构:B/S ...

  3. java毕业论文云笔记_《毕业设计指导的系统设计与实现》论文笔记(八)

    一.基本信息 标题:毕业设计指导的系统设计与实现 时间:2019 来源:浙江理工大学信息学院 研究方向:基于 UML 的毕业设计管理系统的研究与设计 关键词: UML ,面向对象,毕业设计管理系统,软 ...

  4. JAVA毕业设计装修设计管理系统设计与实现计算机源码+lw文档+系统+调试部署+数据库

    JAVA毕业设计装修设计管理系统设计与实现计算机源码+lw文档+系统+调试部署+数据库 JAVA毕业设计装修设计管理系统设计与实现计算机源码+lw文档+系统+调试部署+数据库 本源码技术栈: 项目架构 ...

  5. java毕业设计校园招聘系统设计mybatis+源码+调试部署+系统+数据库+lw

    java毕业设计校园招聘系统设计mybatis+源码+调试部署+系统+数据库+lw java毕业设计校园招聘系统设计mybatis+源码+调试部署+系统+数据库+lw 本源码技术栈: 项目架构:B/S ...

  6. java计算机毕业设计酒店管理系统设计与实现源码+mysql数据库+系统+lw文档+部署

    java计算机毕业设计酒店管理系统设计与实现源码+mysql数据库+系统+lw文档+部署 java计算机毕业设计酒店管理系统设计与实现源码+mysql数据库+系统+lw文档+部署 本源码技术栈: 项目 ...

  7. java计算机毕业设计宠物店管理系统设计与实现源码+mysql数据库+系统+lw文档+部署

    java计算机毕业设计宠物店管理系统设计与实现源码+mysql数据库+系统+lw文档+部署 java计算机毕业设计宠物店管理系统设计与实现源码+mysql数据库+系统+lw文档+部署 本源码技术栈: ...

  8. 计算机专业毕业设计—JAVA语言系统设计(共80套打包)

    JAVA SMART系统-系统框架设计与开发(源代码+论文).rar java Smart系统-题库及试卷管理模块的设计与开发(源代码+论文) java Smart系统-题库及试卷管理模块的设计与开发 ...

  9. Java计算机毕业设计电影网站系统设计源码+系统+数据库+lw文档

    Java计算机毕业设计电影网站系统设计源码+系统+数据库+lw文档 Java计算机毕业设计电影网站系统设计源码+系统+数据库+lw文档 本源码技术栈: 项目架构:B/S架构 开发语言:Java语言 开 ...

最新文章

  1. RecyclerView smoothScrollToPosition 和 scrollToPosition 的区别
  2. python使用matplotlib可视化条形图、使用barh函数可视化条形图(使用barh函数可视化多分类的并行条形图、side by side)
  3. Python使用sklearn和statsmodels构建多元线性回归模型(Multiple Linear Regression)并解读
  4. ROW_NUMBER 函数
  5. 如何完全卸载VMware
  6. Linux内核源码中使用宏定义的若干技巧
  7. 计算机网络实验第一周,新学期计算机网络实训报告范文
  8. when I enter ZSOCIAL role FM RH_STRUC_GET to get organization units that a given user belongs to
  9. search engine php,用php简单实现search engine friendly的url_php技巧
  10. C语言嵌入系统编程修炼-性能优化
  11. ASV2011英文绿色版
  12. ps6—如何安装笔刷
  13. 贪吃蛇项目难还是2048难c语言,贪吃蛇大战2048好玩吗 贪吃蛇大战2048玩法简介
  14. 2015中国国内元器件分销商10亿俱乐部20强榜单
  15. 从零开始的MySQL数据库三部曲(二、MySQL数据库的创库创表增删改查篇)
  16. B端产品的筛选场景调研与设计优化实践
  17. cocos2dx中的颜色混合
  18. LVTTL、LVCOMS、SSTL和HSTL接口简单介绍
  19. 【NOIP2013】华容道 最短路优化搜索(spfa)
  20. 沈阳中小学教材2022春季版

热门文章

  1. 学习C语言前应储备的知识
  2. 微软发布Windows Phone 8.1 Update 和中文版Cortana“小娜”
  3. 时尚模特商务PPT模板
  4. [66 量化交易]下载股东人数
  5. PostgreSQL的基础操作
  6. JavaIO BufferedReader和BufferedWriter介绍和实例
  7. 什么是农业大数据,农业大数据的作用
  8. SpringBoot2+Netty+WebSocket(netty实现websocket)
  9. html5多屏互动游戏,多屏互动与游戏功能_高清技术应用-中关村在线
  10. Ubuntu ASN1C实例分析