基于stm32病房呼叫系统 - 毕业论文 下载本文

内容发布更新时间 : 2024/5/18 7:11:17星期一 下面是文章的全部内容请认真阅读。

本 科 毕 业 设 计

5 病房呼叫系统软件设计

第 20 页 共 33页

病房呼叫系统软件部分采用模块化设计,分为主程序、语音模块、键盘模块、显示模块及无线传输模块。应用C语言编程,在keil μ Vision4环境里运行。编程语言的软件设计采用C语言编写相关程序。

C语音是最常用的编程语言,我们所能接触到的单片机几乎所有都支持C语言的开发。它有很多的优点:语言简单、可移植性好、表达能力强、灵活的表达、可以是结构化编程、生成的代码质量高、可直接操控电脑硬件等。

KEIL MDK软件是一家德国软件公司为ARM公司目前最新推出的多款嵌入式处理器而研发的开发工具。uVision4的开发过程如下:

1)新建一个工程,生成一个新的项目,选择芯片类型并对开发工具进行配置,做好必要的准备。

2)编写C语言源代码即工程项目程序。

3)对已经写好的源代码进行编译调试并生成目标文件,通过系统仿真查看相应寄存器或者指令的调用情况,对程序进行进一步修改。

4)将目标程序通过J-LINK仿真器下载到单片机中,同时设置断点,查看硬件在程序执行每一步的效果,验证程序执行的正确性。

5)综上所述,为了降低系统的开发和维护的难度,缩短开发周期,本课题选择keil编译器为病房呼叫系统软件开发工具。

5.1 主程序设计

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

5.2 语音模块程序设计

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

首先,激活PCM录音模式,加载patch。PCM录音模式是通过设置SPI_MODE位来激活的,激活PCM录音之前,用户应该给SCI_AICTRL0写个SCI_AICTRL0的时钟分频值。采样率是CLKI/256*d,其中CLKI是内部时钟,d是SCI_AICTRL0里面的分频值,如果d是0,并2倍频,外部晶振是12.288m,那么采样率就是16KHz,但是如果是线性的PCM,采样率就是采样值。线性录音的增益由SCI_AICTRL1控制,AGC增益的最大值由SCI_AICTRL2控制。

然后初始化wav头,程序中设置的采样率是8khz,线性PCM格式是16位,

本 科 毕 业 设 计

到录音结束才可以知道。

第 21 页 共 33页

但是因为录音还没有真正开始,文件的大小和数据的大小都是不能确定的,要等

读取PCM数据,经过前面几步的处理,这一步就比较简单了,只需要不停的从SCI_HDAT0中读取数据,然后存入wav文件即可,不过这里我们还需要做文件大小统计,在最后的时候写入wav头里面。

计算整个文件大小,重新保存wav头并关闭文件。在结束录音的时候,我们必须知道本次录音的大小(数据大小和整个文件大小),然后更新wav头,重新写入文件,最后因为FATFS,在文件创建之后,必须调用f_close,文件才会真正体现在文件系统里面,否则是不会写入的!所以最后还需要调用f_close,以保存文件。

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

图5-1 录音流程图

设置VS1053进 入录音模式报错 创建 不存在 初始化 检查字库 5.3 显示模块程序设计

5.3.1 数码管显示

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

本 科 毕 业 设 计

第 22 页 共 33页

首先把段码数据通过串行通道送到端口上,然后位选通一个数码管,让这个数码管显示传输的数据,数据一般要保持1-5ms,然后通过软件关掉全部的数码管,再把下一个数码管的数据通过串行通道送到端口上,选通下一个数码管。当所有的数码管显示一遍后,我们称为一个扫描周期。在程序设计中我们一般采用两种方法:直接延时和定时中断扫描。但是为了提高CPU效率,这次我们最好是使用定时中断扫描的方法。即每1ms显示一个数码管.这样会达到很好的显示效果.

表5-1 显示字符跟数据对应关系

显示的字符 数据 显示的字符 数据

0 00H A 0AH

1 01H B 0BH

2 02H C 0CH

3 03H D 0DH

4 04H E 0EH

5 05H F 0FH

6 06H H 10H

7 07H 全亮 11H

8 08H 全暗 12H

9 09H - 13H

小数点的显示方式有:

1)固定式:小数点的显示位置不能改变,程序设计较简单。

2)特征位式:每位二进制数控制一个小数点的亮暗情况,一个字节同时控制8个。

3)计数式:用数字控制第N位的小数点亮。如:5表示第5位小数点亮,其它暗。

4)ASCII码式:送到显示缓冲区的数是ASCII码数据,在包含“.“时,相应位的小数点亮。

在这里我们使用的是固定式。 5.3.2 LED灯屏显示

LED灯屏显示同样也是采用了扫描的方式。先扫描行,在扫描列,一旦检测到高电平,则相应的LED灯就会点亮。

5.4 键盘模块程序设计

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

5.5 无线传输模块程序设计

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

5.6 软件调试

系统源程序采用 keil μ Vision 4版本软件仿真器进行软件调试,首先依据各功能模块的功能要求和工作过程画出程序的流程图,然后根据流程图和系统的硬件连接写出详细的C语言程序,在调试时可以一个模块一个模块调试,以减

本 科 毕 业 设 计

第 23 页 共 33页

少错误的几率,各个功能模块调试完了,再对整个系统进行调试,一旦有报错信息,可以对功能模块再次仔细检查,直到调试成功为止。

本 科 毕 业 设 计

结 论

第 24 页 共 33页

基于STM32F103的无线病房呼叫系统采用无线传输信号的功能并用数码管和LED灯屏双重显示病房的呼叫,增大了呼叫的成功率、系统的可靠性和灵活性,其设有语音传输功能,在使用的过程中,可以通过通话更及时的了解病患的情况及需求,使呼叫更具人性化,同时系统的无线发射接收模块电路可以增大系统灵活性,避免临时加床时的不能呼叫的情况发生,是病患得到最好的服务。

系统是基于ATSTM32F103单片机设计的,依靠其低功耗、强大的功能和使用方便等优点,使整个系统总体性能更高,其表现出的技术特点如下:

a) 利用两个标准的I2S接口实现语音录音和播放功能,使护士或者医生能及时了解病患需求。

b) 系统采用LED灯屏和数码管双重显示的方法,有力的解决了漏听。 c) 利用系统内部时钟设置时间并显示。

D) 通过软件,对语音芯片不录放音时切换到低功耗省电模式,未用时不选中语音芯片的思想大大降低了功耗。