文章目录

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

1 简介

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

基于 stm32 的病房呼叫系统

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

选题指导,项目分享:
https://gitee.com/yaa-dc/warehouse-1/blob/master/iot/README.md

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; //数据大小, 还需要计算
}

作品展示,实现效果:

选题指导,项目分享:
https://gitee.com/yaa-dc/warehouse-1/blob/master/iot/README.md

物联网毕业设计 基于单片机的病房呼叫系统相关推荐

  1. 单片机毕业设计 基于stm32的病房呼叫系统

    文章目录 1 简介 2 绪论 2.1 课题背景 3 系统设计 3.1 系统架构 3.2 主程序设计 3.3 语音模块程序设计 3.4 显示模块程序设计 3.5 键盘模块程序设计 3.6 无线传输模块程 ...

  2. 物联网毕业设计 - 基于单片机的静脉输液流速流量监测系统

    ⭐️基于单片机的静脉输液流速流量监测系统⭐️ 树莓派 Raspberry Pi 3 或 stm32 FS2012液体流量传感器 LCD显示器 MQTT协议发送至百度云天工IoT平台 PC端,通过登陆网 ...

  3. 毕业设计 基于单片机的智能门禁系统

    文章目录 1 简介 2 课题背景 3 详细设计 3.1 整体设计方案 3.2 功能模块 3.3 软件设计 4 实现效果 5 部分实现代码 6 最后 1 简介 Hi,大家好,学长今天向大家介绍一个学长做 ...

  4. 物联网毕业设计 - 基于单片机的自动写字机器人

    ⭐️基于STM32+AB32VG1单片机的写字机运动控制系统⭐️ STM32F4单片机 AB32VG1单片机 RT-Thread物联网操作系统 SD卡文件读取与发送 速度前馈.折角优化.加速处理等算法 ...

  5. 基于51单片机的病房呼叫系统

    基于51单片机的病房呼叫系统 声明:本系统仅仅是模拟基础功能,包括矩阵按键模块,数码管模块,蜂鸣器模块,独立按键模块,仅供学习使用.首先,考虑到51单片机开发板的矩阵按键只有4*4=16个,数码管显示 ...

  6. 基于STM32单片机医院病房呼叫系统Proteus仿真

    资料编号:184   下面是仿真功能视频演示: 184-基于STM32单片机医院病房呼叫系统Proteus仿真 功能讲解: 采用stm32单片机作为控制CPU,LCD1602显示屏.独立按键.蜂鸣器. ...

  7. 基于单片机锂电池太阳能充电系统电路方案(毕业设计资料)

    以 STC89C52RC单片机微控制器为核心, 针对便携式的小功率产品,设计一个太阳能锂电池充电系统,并对锂电池组的充.放电过程进行保护. 锂电池组的电流.电压.将被系统控制器通过控制AD转换芯片及时 ...

  8. 基于单片机的加油机系统

    设计简介: 本设计是基于单片机的加油机系统,主要实现以下功能: LCD12864显示当前加油机(92和95型号)油量 可通过按键设置当前单价(RMB/L) 可进行加油时计算已加油量以及总价 当前油量小 ...

  9. 基于单片机的自动门系统

    设计简介: 本设计是基于单片机的自动门系统,主要实现以下功能: 可通过LCD1602显示温度最大值和当前体温: 可通过按键调整温度最大值: 可通过非接触式的红外测温测量人体温度: 若检测到人且体温小于 ...

最新文章

  1. SharePoint 2007 Web Content Management 性能优化系列 前言
  2. 2020陕西高考全省理科最高分725、文科最高分700
  3. java groovy jar包_如何将jar包包含在groovy脚本中?
  4. 开源物联网通讯框架ServerSuperIO,成功移植到Windows10 IOT,在物联网和集成系统建设中降低成本。附:“物联网”交流大纲...
  5. Scala学习之特殊符号,及函数
  6. 单例模式(singleton)解析例子
  7. jzoj5230-队伍统计【状压dp】
  8. Java程序员应在2018年学习的3种JVM语言
  9. MySQL InnoDB 存储引擎索引那些事儿
  10. 整型变量 默认输出 java_java数据类型详解
  11. python调用nacos账号密码_python-nacos-sdk
  12. [RK3399][Android7.1] 调试笔记 --- 查看开机上一次kernel log
  13. Linux命令九---Linux进程管理命令---ps-kill-nohup-jobs-fg-bg-top等
  14. 让Microsoft Office2010 新建 Microsoft Office 97-2003 文档
  15. Galaxy+note3+android+5.0,三星NOTE3 SM-N9008S原厂刷机包5.0Rom固件ZCSCQD1线刷包
  16. 蓝牙设备删除失败_十代混动雅阁车载蓝牙连接不上怎么办?
  17. 网络连接正常,浏览器确没有网?
  18. 经济学原理上中国故事2019尔雅满分答案
  19. 如何在Mac os X上搭建本地服务器环境
  20. 书单 | 带你轻松度假的10本好书!

热门文章

  1. 分布式呼叫中心解决方案
  2. 第二次作业—————暴风影音点评(修改版)
  3. 安卓 获取屏幕像素 密度 计算真是高度
  4. Ubuntu 14.04 64位版安装 QQ国际版实测可用
  5. Arduino 读取并数码显示车速传感器数
  6. 【JZOJ5775】农夫约的假期【模拟】
  7. 一阶低通滤波介绍及simulink模型
  8. 3c认证的有效期是多久?过期还能用吗?
  9. 牛刀:2011年房价下跌20%只是臆想
  10. EasyUI tree实现双击展开/折叠