基于STM32疫情药品登记处理系统_第1页
基于STM32疫情药品登记处理系统_第2页
基于STM32疫情药品登记处理系统_第3页
基于STM32疫情药品登记处理系统_第4页
基于STM32疫情药品登记处理系统_第5页
已阅读5页,还剩42页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

基于STM32疫情药品登记处理系统摘要自2019年12月起,湖北省不断爆发新型冠状病毒(CARS-CoV-2)病例,为防止病毒的进一步扩散,国家和地方迅速采取行动,发布重要突发公共卫生事件第一反应举措,强化防治管理工作。CARS-CoV-2是一种β属冠状病毒,它可以通过空气、水、食物等多种方式进行传播,对大多数人来说都是一种容易受到影响的病毒。作为医疗机构的重要组成部分,药品库存是确保医疗的关键环节,为了有效地抵御新型冠状病毒肺炎(COVID-19)的影响,我们必须加大对药品的储备和管理,并且在必要的时候提高其可靠性。本课题设计了一套基于STM32疫情药品登记处理系统。本系统的目标是开发一个具有药品数量存取记录、药量播报的各项日常工作,主要包括药品的进、出库等查询。管理人员可以对于每次药品储存的时间完成记录,并且依靠DHT11数字复合型传感器可以完成对药品的监控,监控得到的信息通过显示器完成显示,对于药品房,借助温湿度传感器,可以实现对温湿度的自动调节,如果药品房当前的温湿度偏离正常值,那么会进行自动调控。在系统中还设计了定时消毒装置,在一定的时间间隔内会向药品房喷洒一定的消毒水。关键词:STM32;药品登记;仓库管理

目录第1章绪论 [18]。综上所述,对于药品管理形势要求,开发一款可以运用于医药行业的管理系统,可以极大的提高药品配药效率,增加一定的适用性。1.3主要研究内容本课题设计了一套基于STM32疫情药品登记处理系统。本系统的目标是开发一个具有药品数量存取记录、药品数量播报各种常规操作的系统,包括药品出入库、药品多种条件查询。管理人员可以对于每次药品储存的时间完成记录,并且依靠DHT11数字复合型传感器可以完成对药品的监控,监控得到的信息通过显示器完成显示,对于药品房,借助温湿度传感器,可以实现对温湿度的自动调节,如果药品房当前的温湿度偏离正常值,那么会进行自动调控。在系统中还设计了定时消毒装置,在一定的时间间隔内会向药品房喷洒一定的消毒水。通过此次设计的药品管理系统,药品仓库的管理人员可以对于每次药品储存的时间完成记录,并且依靠传感器可以完成对药品的监控,监控得到的信息通过手机端完成显示,对于药品房,借助温湿度传感器,可以实现对温湿度的自动调节,便于当前所处的药品供不应求的形势下,更好地保存稀缺药品。

第2章系统总体结构2.1设计方案文献研究法。经过深入的研究,我们收集了大量的文献资料,仔细探讨了系统设计中的各种相关内容,并且提出了一个初步的功能和应用技术,以便为系统设计提供有价值的参考。通过功能分析法。我们可以更加深入地了解社会现象,并且可以更加精准地定位和开发软件的功能,以达到更好的效果。这种方法不仅可以帮助我们更好地理解社会,也可以为我们的研究提供有效的指导。通过定性分析法。我们可以深入探索软件和硬件开发的技术,并利用归纳、演绎、分析、综合、抽象和概括等方法,更好地理解系统中各个功能模块之间的联系,更加清晰地把握系统的工作原理,从而更有效地实现开发目标。经验总结法。希望通过已有的每一块功能的结合进行总结,设计出一套优良的系统,并规范的编写程序。2.2功能需求分析2.2.1技术路线硬件部分需要单片机STC32F103C8T6、传感器、蓝牙远程APP模块;软件平台程序用keil5;画原理图用AD;编程语言用C语言;用户信息显示查看;2.2.2预期结果通过对系统的布设和完善,最终完成的基于STM32疫情药品登记处理系统设计预期有如下成果:利用光电转换器扫描条形码,记录存取药品的数量,并且在上位机端进行显示;进行语音提示对目前药品数量进行语音播报防止出错;可以通过存储按键将每种药品的存储时间进行记录;通过输出数字信号的DHT11数字复合型传感器实现对温度的实时监控,显示在液晶显示屏上;检测到温度不在15-25℃内,湿度高于40%,就可以自动控制温湿度控制器调节药品库房的温湿度;预防病毒,每24h喷洒一次消毒水。2.3总体方案设计第一步:在理论知识准备阶段,要深入理解设计课题,仔细研究其中的各项要素,以便更好地完成任务,掌握有关题目的知识;第二步:明确系统的各个组成部分,梳理出它们之间的联系,并搜集有关软硬件的信息;第三步:制订详细的计划,明确系统的整体架构,建立一个宏观的系统模型,以便更好地实现目标,并画出原理框图;第四步:使用软件来实现硬件电路的设计,绘制出每个部分的电路图,并将系统元件连接到相应的接口上;第五步:通过对系统控制流程的深入研究,完善软件设计,并将其转化为可视化的主流程图;第六步:对实物功能进行展示,并检查系统能否按要求完成控制功能并整理论文。2.4单片机型号选择在当今嵌入式系统设计中,选择合适的主控制芯片是至关重要的一步。STMicroelectronics32位ARMCortex-M3内核微控制器STM32F103C8T6因其卓越的低功率、高效能和稳定的可扩展性而被广泛应用于当今的嵌入式操作系统,并获得了业内的一致赞誉。与普通51单片机相比,STM32F103C8T6单片机拥有诸多优势。首先,在相同晶振的情况下,STM32F103C8T6的运行速度是普通51的8~12倍,这意味着STM32F103C8T6单片机可以更快地完成任务和响应外部事件,提高了系统的性能和响应速度。STM32F103C8T6微控制器配备了一款支持8路10位的模拟数字转换器(ADC),能够快速将复杂的模拟信号转换为高精度的数字信号,从而使得系统可以更好地感知和控制外部环境。这在很多应用场景中非常重要,例如智能家居、自动化控制、医疗设备等。第三,STM32F103C8T6单片机集成了多个定时器,同时还具备PWM功能,为用户提供更加智能化的操作体验。定时器可以精确地计时和控制系统事件,而PWM则可以实现精细的电压或电流控制。这使得STM32F103C8T6单片机在控制和驱动电机、LED灯等设备时非常方便。最后,STM32F103C8T6单片机还具有SPI接口,这使得其能够与其他外部器件进行快速而可靠的数据传输,增加了系统的可扩展性和灵活性。STM32F103C8T6单片机具有出色的功能、卓越的性能以及可扩展的特点,使其成为嵌入式AP的理想选择。在本实验中,我们采用了最小系统来实‎现对STM32F103C8T6单片机‎的应用,这包括了一个STM32F103C8T6主控制芯片、一个晶振、若干电容电阻和其他必要的元器件。通过这个最小系统,我们可以实现对STM32F103C8T6单片机的应用。STM32F103C8T6单片机是一种高性价比的主要控制器,它的优势显而易见:它不仅保持晶振不变,而且拥有8路10位AD3,还拥有PWM功能,并且拥有SPI端口,使得它的运行时间大大缩短,其运行时间达到8~12倍,具有8路10位AD3,增加二个定时器,具有PWM能力,同时具有SPI端口。STM32系列单片机具有卓越的性价比,可以满足各种需求,它们不仅具有极佳的功率,而且还具有极佳的可靠性,可以满足对低成本、极佳的可靠性以及极佳的可整合性的需求。因其高效的工具和简洁的结构,再加上强大的功能性,该产品在行业内备受欢迎。在本次设计中,我们所采用的最小系统呈现如下所示的图示。图2-4STM32最小系统原理图第3章系统的硬件部分设计3.1系统总体设计本设计主要以记录药品数量并监测药品库的温湿度为基本依据,通过实时调整药品库的温湿度环境实现智能控制为研究目的。设计了一套实时检测系统,用于记录药品库中的药品数量和温湿度情况。该系统利用温湿度传感器获取仓库相关信号,并通过单片机对其进行分析处理,以控制温湿度继电器的工作,对不适宜药品保存的环境进行调控,并通过蓝牙模块上传至app实现监控。总体原理图如下所示。图3-1总体原理图3.2系统的主要功能模块设计3.2.1温湿度采集模块设计DHT11传感器是一种广泛应用于气象、环境监测、农业、医疗、工业等领域的数字温湿度传感器‎。这款传感器利用先进的数字信号处理技术,可以准确地检测到介质内的温度、湿度,从而实现对环境的实时监控。这种传感器由一个高灵敏度的湿敏元件与一个高精准的NTC温敏元件组成,可以实现对环境的实时监控。感湿元件和NTC温度元件共同构成了一个电容式数字温湿度传感器,通过一个ADC芯片将测量结果转换成数字信号输出。DHT11传感器具有价格低廉、使用方便、精度高等优点。它只需要4个引脚即可连接到单片机上,并且提供了比较准确的温湿度读数。因此,它被广泛应用于家庭气象站、智能家居、智能农业等领域。DHT11传感器的VCC、GND、DATA三个端口被安装在一起,以便与单片机相互配合,实现对设备的控制。这三个端口的安装可以有效地提高系统的性能,并且可以提供更高的可靠性。在连接时,需要注意传感器引脚与单片机引脚的对应关系。采用STM32单片机作为核心,结合先进的软件和硬件技术,我们成功地开发出一种基于DHT11传感器的温湿度传感器,取得了令人满意的效果。在软件设计方面,我们编写了相应的驱动程序,通过读取传感器输出的数字信号,将其转化为温湿度读数。同时,我们还设计了相应的界面,将温湿度读数通过串口传输到上位机,实现了实时监测环境中的温湿度变化。在硬件设计方面,我们通过电路连接实现了DHT11传感器与STM32单片机的连接,并且保证了连接的可靠性和稳定性。经过实验证明,这种传感器的精确度和稳定性都达到了极致,完全能够满足各种实际应用的要求。同时,我们还进行了多次测试,经过实验验证,该传感器在各种环境条件下均表现出了良好的可靠性和稳定性。实验结果表明,该传感器能够实现对温度、湿度等参数的高精度测量,且其输出信号稳定可靠。总的来说,DHT11传感器所基于的温湿度传感器在实际应用中具有广泛的前景,可以为我们提供实时监测环境温湿度的重要数据。温湿度采集模块原理图如图3-2-1所示。图3-2-1温湿度采集模块原理图3.2.2扫码模块设计MH-ETLIVEScannerv3.0是一款功能强大的该模块为扫描识别技术,可广泛应用于多个领域。同时具备高速读写能力,可以适应各种不同类型的图像数据的输入与处理。采用了专业的图像处理芯片,其读码表现在复杂环境下表现出高速、稳定的特性。无论是在纸张、屏幕、塑料等载体上,一维码和二维码的快速准确读取,使其成为一款极具实用价值的识别设备。该产品的体积小巧,配备了USB和UART接口,可以轻松连接到电脑,而且还能够与其他设备结合,拥有极强的灵活性。此外,产品具有低功耗和低发热的特点,使用起来更加安全可靠。这款产品的一大特色就是它的快速开机,不管是冷启动还是热启动,它都能迅速响应。该产品适用于各种场合,例如超市、图书馆、物流中心、仓库、快递配送等领域。在超市里,该设备可以帮助收银员快速、准确地读取商品条形码,提高收银效率,节省时间。在物流中心和仓库里,该设备可以帮助工作人员快速扫描货物上的条形码和二维码,提高工作效率,减少错误率。在快递配送领域,该设备可以帮助快递员快速扫描快递单号,提高送货效率。除了以上应用场景,MH-ETLIVEScannerv3.0还可以应用于一些特殊领域,例如医疗、安防等。在医疗领域,该设备可以帮助医生和护士快速扫描病人的病历,提高工作效率,减少病人等待时间。在安防领域,该设备可以帮助安保人员快速扫描人员证件上的二维码,提高安全性,减少安全隐患。主要特性:1.这一方法的操作简单易行,无需深入研究繁琐的图像识别算法;2.可识别常见一维码和二维码,例如Barcode和QR等的能力;3.这一款平板电脑集成了微型USB和UART串口,可轻松连接到计算机或其他嵌入式设备上,方便快捷;4.借助搭载辅助光源的板载系统,我们得以在一片漆黑的环境中轻松辨识;5.利用扫描设置码,可轻松调整模块参数,从而实现更加灵活的操作。扫码模块原理图如图3-2-2所示。图3-2-2扫码模块原理图3.2.3语音合成模块设计SYN6288是一款具有较高性价比和出色自然音质的中高端语音处理芯片,它采用异步串行总线(UART)技术,可以将文本信息转换为语音(或TTS语音),从而提供更加准确、流畅的语音处理体验。SYN6288的推出,为中高端行业的语音合成技术带来了一次革命性的变革,使其达到了前所未有的水平。SYN6288拥有出众的性能,它的硬件连接、节省电量、声音柔和,使它成为一款卓越的设备。此外,它还具有高度的智能化,可以精确地辨认出文本、数据和字符串。SYN6288的语音处理表现出色,它的自然性和易理解性都超出了其他同类产品。因此,它不仅具有出色的性价比,而且还具有良好的适配性,为不同行业的使用者提供了极佳的体验。SYN6288的优点不仅仅体现在技术上,其最小SSOP28L贴片封装也为使用者提供了更多的便利。使用SYN6288芯片的产品不仅具有更高的性价比,而且可以更加轻便、紧凑。这对于许多应用场合而言,都是非常重要的优势。SYN6288语音合成芯片的推出,不仅对中高端行业应用领域的语音合成技术进行了一次全面升级,同时也为更多的领域提供了更好的技术支持。SYN6288可以被应用于语音播报、智能客服、教育、智能家居、医疗保健等领域,为这些领域提供更加智能、自然、高效的语音合成服务。总而言之,SYN6288是一款令人瞩目的中高端语音处理器。其出现将极大地推动语音合成技术的发展,为更多领域提供更好的技术支持。相信在不久的将来,SYN6288将会成为中高端行业应用领域的重要标配。功能特点:支持多种编码格式,包括但不限于GB2312、GBK、BIG5以及UNICODE等,以满足文本编辑的多样化需求;为了满足特定的需求,每次处理的文本数量上限为200个字节;该系统支持多种控制指令的执行,包括但不限于合成、停止、暂停、继续合成以及波特率的调整等操作;该系统具备休眠机制,可在休眠状态下降低功耗,同时提供多种方式以监测芯片的状态;该设备具有串行数据传输功能,并能够支持三种不同的通信波特率:9600、19200和38400;该装置具备16级音量调节能力,可独立调节文本和背景音乐的音量;利用指定的控制标志进行发送,可实现高于6级的语速调整;在芯片内,您可以欣赏到多首和弦音乐,同时还能够聆听到专为某一特定行业量身定制的语音提示音;这首曲子涵盖了19首歌曲的歌词,23首歌曲的旋律,以及15首歌曲的背景音乐;具有10bit推挽式功率并能独立供电的数模DAC输出能力。语音合成模块原理图如图3-2-3所示。图3-2-3语音合成模块原理图3.2.4蜂鸣器模块设计蜂鸣器是一种可以将电磁波转换成声音的装置,它可以发出各种不同的声音,如按键声、报警声、敲击声、敲击声等。蜂鸣器是一种用来发出警报的装置,它有两种不同的类型:有源蜂鸣器,它具有内置的振荡源,能够发出有力的声音来唤醒人们注意安全。无源蜂鸣器:无论是否具备振荡源,只要通过改变其输入信号的频率,就会产生不同的蜂鸣声。蜂鸣器的两个极性分别是+和+,如果蜂鸣器的引线未被剪断,那么最短的就是最短的,而如果蜂鸣器的引线被切断,那么最短的就是最短的。此外,蜂鸣器的输入信号也会受到NPN型三极管的影响,从而导致蜂鸣器的输入信号变得更强,从而使蜂鸣器的输入信号变得更强。因此,我们可以使用三极管作为电源,其中R1作为限制电容,当单元的电源提供较高的电平时,VCC就会向蜂鸣器提供电源,而当电源提供较低的电平时,PNP型三极管也会相应地,但它们的电平提升时会被激活,而提升时会被关闭。蜂鸣器模块原理图如图3-2-4所示。图3-2-4蜂鸣器模块原理图3.2.5显示模块设计0.96寸4针OLED屏模块是一种常见的嵌入式系统和小型电子设备中使用的显示屏模块。由于其小尺寸和低功耗,它们也广泛用于智能手表、健康追踪器和其他便携式设备中。这种屏幕模块可以显示文本、图像和其他类型的信息,并且可以支持多种分辨率和颜色模式。这使得它们‎在许多不同的应用中非常有用,例如智能穿戴设备、智能家居、智能医疗设备和嵌入式系统等。通常情况下,该设备需要与3.3V或5V的电源相连。该引脚可以包括一个或多个电阻或电容元件。GND是一种用于将模块接地的引脚,其作用在于确保模块的接地稳定。如果没有地线,则会导致电压输出不稳定。所以必须将此引脚与负极电源相连。另外一个引脚用来与主控芯片相连接。SCL作为一种时钟引脚,在数据传输过程中扮演着时钟信号的重要角色。一般而言,时钟引脚必须与主控芯片相连。SDA,作为数据传输的引脚,为数据的传输提供了可靠的支持。一般情况下,两个引脚之间有一个电阻,用来隔离外部电源对内部电路的干扰。一般而言,主控芯片所需的数据引脚连接是必不可少的。若一个引脚损坏,就会导致整个系统不能正常工作。当使用I2C接口时,这个引脚也可被称为串行数据线(SDA),是一种高效的数据传输工具。OLED(OrganicLightEmittingDiode)被认为是一种革命性的显示技术,其利用先进的有机物质来制造出极具视觉冲击力、极强的色彩饱满度、极少的能量消耗,从而达到极致的视觉体验。与传统的LCD(LiquidCrystalDisplay)技术相比,OLED技术具有更高的可靠性和更广的视角。因此,OLED显示屏逐渐成为了新一代显示技术的主流之一。对于嵌入式系统和小型电子设备来说,0.96寸4针OLED屏模块是一种非常有用的显示屏模块。它不仅具有小尺寸、低功耗和高可靠性等优点,还可以显示多种类型的信息,并且支持多种分辨率和颜色模式。这种屏幕模块可以通过SPI或I2C接口进行通信,非常方便使用。因此,如果你正在设计嵌入式系统或小型电子设备,并且需要一个高品质的显示屏模块,那么0.96寸4针OLED屏模块是一个非常不错的选择。液晶显示模块原理图如图3-2-5所示。图3-2-5显示模块原理图3.2.6蓝牙模块设计HC-05蓝牙串口通信模块是一种广泛应用于无线传输的数传模块,具有许多优异的特性。该模块使用BluetoothSpecificationV2.0和EDR蓝牙协议进行传输,能够提供更加稳定的可靠性。另外,其所处的无线通信频段达到了2.4GHzISM,采用了GFSK的调制技术,并且能够实现极强的发射能力。该模块内嵌CSR的BC417芯片,具备执行AT指令的能力,同时用户可以根据自身需求灵活调整角色(主从模式)、串口波特率以及设备名称等参数。‎这种设‎计使得‎该模块‎具有灵‎活性,‎可以根‎据具体‎需求进‎行定制‎,为用‎户带来‎更多的‎选择。除了具备上述优异的功能,本模块更是搭配PCB天线,能够达到10米的远程传输。另外,它内置的LED灯,让您能够清晰的看到蓝牙的连接情况,为您的日常操作提供更多的便利。在实际应用中,HC-05蓝牙串口通信模块被广泛应用于许多领域。通过远程控制,用户可以轻松地操纵各种设备,比如手机、平板电脑、机器人、智能家居等,大大提升了操作的便利性和效率。此外,该模块还可以用于数据采集、数据传输、‎无线通信等方面,具有很大的应用潜力。除了具备上述优异的功能,本模块更是搭配PCB天线,能够达到10米的远程传输。另外,它内置的LED灯,让您能够清晰的看到蓝牙的连接情况,为您的日常操作提供更多的便利。4根引脚,名称与功能如下:VCC:接电源的正极,电压的范围为3.3v到5.0v;GND:地线;TXD:通过使用TTL电平,通过将模块的串行端口与RS232电平进行连接,我们能够实现与单片机的无缝连接;RXD:是一款独特的模块,它拥有TTL电平,虽然无法与RS232电平连接,但它可以与单片机相连,从而实现高效的通信功能。HC-05配备了TX和RX引脚,支持AT命令,因此,用户只需在设备启动时进入特定的命令模式,即可实现无线通信,同时还支持蓝牙模块,如图3-2-6所示。蓝牙模块原理图如图3-2-6所示。图3-2-6蓝牙模块原理图3.2.7执行器模块设计两路5V继电器是一种电子开关设备,通常用于控制低电压电路的开关操作。它由一个电磁线圈和一对触点组成。当电磁线圈中通过电流时,会产生磁场,吸引触点闭合,从而连接或断开电路。两路5V继电器表示该继电器具有两个独立的触点电路。它可以同时控制两个不同的电路或设备。当电磁线圈接收到5V电源时,触点将打开或关闭相应的电路。两路继电器通常具有以下特点:电压要求:它的电磁线圈设计为工作于5V电压,所以需要提供5V电源供电。触点电流和电压:两路继电器的触点能够承受一定的电流和电压。具体的额定电流和电压取决于继电器的规格和型号。稳定性和可靠性:继电器应具有稳定的工作特性和可靠的触点连接。它们通常被设计为长时间稳定工作,以满足不同应用场景的需求。安装和连接:两路继电器通常具有标准的引脚布局,以便于安装和连接到电路板或其他设备中。两路5V继电器在许多电子和控制应用中得到广泛应用。它们可以用于自动化系统、家庭电器控制、工业设备控制、安防系统和机器人等领域。通过控制继电器的触点状态,可以实现对各种电路和设备的开关控制。在本设计中,一路用于除湿,另一路用于通风。图3-2-7两路功能继电器原理图

第4章系统的软件设计4.1系统总体流程图当单片机初始化成功会读取前温湿度传感器、条形码和消毒时间的值,当温度超过预设的阈值时,系统会自动启动降温模式,并启动蜂鸣器以发出警报;反之关闭降温和报警。当湿度高于设定的阈值时,开启除湿模式,反之关闭除湿模式。当扫码成功后,会将数据传输给单片机,通过显示屏显示。自动检测是否到达设定的消毒时间,如果到达时间,开启消毒模式;否则保持消毒模式关闭状态。当系统初始化完成后,开始正常工作并通过蓝牙模块上传至APP实现监控。图4-1系统总体流程图4.2温湿度采集模块软件的设计当单片机初始化成功会读取当前温湿度一旦传感器检测到温度超过预设的阈值,系统将自动启动降温模式,并同时启动蜂鸣器以发出警报;若值低于阈值时,则不开启降温或报警。相反,执行关闭降温措施并发出警报。当湿度高于设定的阈值时,开启除湿模式,反之关闭除湿模式。图4-2温湿度模块子程序流程图4.3扫码模块软件的设计当扫码器初始化完成,单片机就可以开始执行任务,一旦扫码完成,就会将数据传输到显示屏,以便用户查看。图4-3扫码模块子程序流程图4.4消毒模块软件的设计当单片机初始化成功会自动检测是否到达设定的消毒时间,如果到达时间,开启消毒模式;否则保持消毒模式关闭状态。图4-4消毒模块子程序流程图4.5显示模块软件的设计在设计中需要显示当前环境的温湿度、时间、消毒时间和条形码数据信息。该系统采用了OLED屏幕对数据进行显示,在STM32单片机进行初始化之后,显示屏将根据从MCU中得到的数据,将其写入到MCU中,然后进行显示。图4-5显示模块子程序流程图

第5章系统测试5.1系统实物图整个设计主要依记录药品数量,并监测药品库的温湿度为基本依据,通过实时调整药品库的温湿度环境,实现智能控制,为目的。该系统由八个部件组成,包括:显示屏模块,温湿度传感器,STM32单片机最小系统,继电器,扫码模块,语音播报模块,蓝牙模块和蜂鸣器模块。如图所示。图5-1系统实物图5.2测试原理在开展测试之前,必须确定所有必须使用的测试工具,这些工具必须具有良好的准确性,并且具有较强的稳定性。为了确定一组有效的测试,必须使用大量的、有价值的测试数据,并且确定一组有助于检查哪些部分存在缺陷,哪些部分有待改善,这些都必须在使用过程中得到考虑。5.3除湿/降温/报警功能测试首先,将确保温湿度传感器正确地连接到单片机上。确认各传感器管脚与MCU管脚之间的联接情况,并确认供电及地线无误。在测试开始之前,单片机需要对传感器进行初始化。一旦传感器成功初始化,单片机将发送启动采集的命令给传感器。传感器开始测量环境的温度和湿度,并准备将这些值发送给单片机。温湿度传感器实物图如图所示。图5-3-1温湿度传感器实物图当环境温度超过25摄氏度时,温度保护继电器将会触发,并自动启动降温模式以确保温度回归到安全范围内。降温继电器控制降温设备以降低环境温度。此外,为了提醒人们注意高温情况,蜂鸣器也会同时发出报警声。蜂鸣器的报警声能够吸引人们的注意,并提醒他们采取适当的措施以防止温度进一步上升。当环境温度恢复到25摄氏度以下时,温度保护继电器将停止动作,降温模式将被关闭,并且蜂鸣器报警声也将停止。图5-3-2蜂鸣器实物图湿度保护继电器是一种智能设备,旨在帮助调节室内湿度水平,确保药品储存环境的合适湿度环境。当湿度超过50%时,湿度保护继电器开始发挥作用,自动启动除湿模式。这意味着它会与空调或除湿机等设备进行通信,以控制室内湿度。一旦湿度保护继电器检测到湿度低于或等于50%,它会自动关闭除湿模式。这是因为低于50%的湿度水平是药品储存环境合适湿度环境的范围,此时额外的除湿不需要。图5-3-3除湿和降温继电器实物图5.4消毒功能测试当单片机成功初始化后,它会自动进行一系列的操作,其中之一是检测是否已经到达设定的消毒时间。这个过程是非常关键的,因为它确保了消毒操作在预定的时间内进行。一旦单片机检测到已经到达了设定的消毒时间,它会触发开启消毒模式的指令。这意味着单片机将启动相关的消毒程序和功能,以执行消毒操作。LED灯打开,代表消毒。然而,如果单片机检测到当前时间尚未达到设定的消毒时间,它将继续保持消毒模式关闭的状态。这种机制的目的是确保消毒操作不会过早或过晚地进行,而是在设定的时间点上精确执行。通过这种自动检测和操作的方式,单片机能够高效地管理消毒过程,从而保障消毒任务的准确性和可靠性。这种智能化的控制系统使得消毒过程更加自动化和便捷,减少了人为干预的需求,同时提高了整体的效率。如图所示。图5-4消毒灯(LED灯)实物图5.5扫码功能测试扫描药品条形码,在界面显示,点击创建按钮,即可对药品完成创建,再次扫描药品条形码,点击出库或入库按钮并输入数量,即可对药品数量进行存储记录。如图所示。图5-5-1扫码模块实物图图5-5-2显示屏模块实物图在此基础上,根据上述的研究内容和有关的解决方法,提出了具体的解决方法,并对各个模块的工作流程图进行了相应的设计。最后设计需完成整体的实际测试,通过手机APP实时查看测试数据,验证了本设计提出的方案的正确性与合理性。图5-5-3上位机显示界面第6章总结与展望6.1总结系统软件的调试过程并不是一帆风顺,在调试过程中出现了一些错误。但在老师的辅导下,我总算发现了问题,并纠正了设计中的错误和不科学的地方。设计方案中的问题和解决方法主要包含以下几个方面:在功率模块模拟仿真过程中,发现调试输出值一直达不上设计规定。查验基本原理错误后,发现电路板焊接时出现了一些技术问题,于是重新进行了焊接。应用仿真软件,发现了错误代码。然后在调整时,发现在启用程序流程时,单片机没有正常复位,在程序流程中添加复位程序流程后才获得准确的结果。在模拟测试时,一直提醒端口号P0存有逻辑错误。尽管不危害效果的输出,但在具体印刷制版过程中确实会危害电源电路。之后通过调研发现,数据信息发送错误代码表明时,未能分辨忙碌情况。之后在制定中添加忙碌情况分辨后,系统软件工作中一切正常,数据信息口也没有提醒逻辑错误。6.1展望本设计以STM32单片机为核心,分析了基于STM32疫情药品登记处理系统的硬件模块的方案选择、各部分模块的选择和过程安排,采用了STM32最小系统模块、温湿度传感器模块、一维码采集扫描模块,蜂鸣器电路,液晶显示电路和语音播报电路。系统主要是通过扫码模块对药品库存数据进行记录并实时监控和控制药品库温湿度以便更好地保存药品。但本设计还存在着一些不足,随着疫情的爆发,药品的生产和分发变得尤为重要。为了更好地应对未来的疫情,发展基于STM32的疫情药品登记处理系统具有很大的潜力。以下是对这个系统展望的一些想法:自动化药品登记:基于STM32的疫情药品登记处理系统可以实现自动化的药品登记。药品信息可以通过传感器和条码技术进行扫描和识别,并且能够快速准确地记录到系统中。这样可以大大提高药品登记的效率,并减少人为错误的可能性。实时库存管理:该系统可以通过与药品库存数据库的连接实现实时库存管理,当药品被销售或使用时,本系统可以进行存货资料的更新。该系统能向。医院药房对目前的药状况有一个全面的了解,以便在药物短缺的时候能做到及时的进货或补货。药品追溯和溯源:基于STM32的系统可以实现对药品的追溯和溯源。通过与药品生产和分发环节的信息交互,系统可以记录每一批次药品的生产和流向信息。这可以帮助监管机构和医疗机构追踪问题药品,并在必要时进行召回和处理。预警和决策支持:系统可以通过分析疫情数据和药品使用情况,提供预警和决策支持。当疫情爆发或药品需求增加时,系统可以及时发出警报,并推荐相应的措施,如增加药品生产、调配库存等。这有助于提高应对疫情的效率和准确性。数据安全和隐私保护:系统应该加强数据安全和隐私保护措施。医疗数据和药品信息都属于敏感信息,需要采取合适的加密和权限管理措施,确保数据不被非法获取和滥用。扩展性和兼容性:系统应该具备良好的扩展性和兼容性,以适应不同规模和需求的医疗机构。它应该能够与其他医疗设备和信息系统进行无缝集成,以实现更高效的工作流程和数据共享。基于STM32的疫情药品登记处理系统有望提高药品管理和应对疫情的效率。随着技术的不断发展和创新,这个系统还可以进一步完善和扩展,为疫情防控和药品管理领域带来更多的好处。保定理工学院本科毕业设计参考文献[1]宗华;宇应涛;褚代芳;金鹏;王勇昌.基于浏览器与服务器架构的药品管理系统设计与实现[M].中国医学装备.2022.[2]张宇;胡丽娜;游海鸿.药品管理系统升级中的经验与体会[C],中国新通信.2022.[3]刘淼.物料仓库管理中条码扫描技术的应用探析[J].中国物流与采购,2022(18):104-107.[4]戴先任.医院信息化药品管理系统的设计与实现[C],长春日报.2021.[5]尉俊铮;王欣然;王硕;张阳鑫.智能化ICU病房基数药品管理系统的开发与应用[M].护理管理杂志,2021.[6]淮旭鸽;庄未;梁才航;高兴宇.物联网技术在药品管理系统中的应用[P].吉林大学,2021.[7]申大雪.基于RFID的化学药品管理系统设计与实现[M].山东大学,2022.[8]魏菡.基于单片机的仓库温湿度测量系统设计[J].造纸装备及材料,2022,51(02):85-87.[9]吴春;李惠霞;黄雪雅.图像识别技术在药品管理系统中的应用[P].福建电脑,2020. [10]丁安琪.基于单片机的仓库远程监控系统的设计[J].花炮科技与市场,2020(01):222+247.[11]王秀民;张军;袁浩;王泠;刘帆.智能化病房基数药品管理系统的设计与实践[P].中国护理管理,2020.[12]刘嘉富;李研琼.基于Web的药品管理系统的设计与实现[J].电脑知识与技术.2022.[13]王旭.基于J2EE的医院药品管理系统的设计与实现[M].电子科技大学.2022.[14]吴缙峰,龚结龙.一种基于无源RFID的智能仓库物联网关设计[J].物联网技术,2019,9(01):44-45.[15]高明亮.药品仓库智能监控系统的研究[J].沈阳工程学院学报(自然科学版),2019,15(01):93-96.[16]SinJonathanH;FergusonLaurieM.UtilisinganautomatedmedicationinventorymanagementsystemforemergencycrashcartsduringtheCOVID-19pandemic..2021.[17]EshaSaha;;PradipKumarRay.Patientcondition-basedmedicineinventorymanagementinhealthcaresystems[J].IISETransactionsonHealthcareSystemsEngineering.2019.[18]VeroninMichaelA;;SchumakerRobertP.OpioidsandfrequencycountsintheUSFoodandDrugAdministrationAdverseEventReportingSystem(FAERS)database:aquantitativeviewoftheepidemic.2020.[19]GielenAndreaC;;PerryEliseC;;ShieldsWendyC.Changesinsmokealarmcoveragefollowingtwofiredepartmenthomevisitingprograms:whatpredictssuccess?[J].Injuryepidemiology.2020.[20]J.Brender;;J.P.Christensen.DevelopmentandImplementationofaHybridMedicalInformationSystem.Notice.2022.

附录原理图源代码#include<stdint.h>/*definecompilerspecificsymbols*/#ifdefined(__CC_ARM)#define__ASM__asm/*!<asmkeywordforARMCompiler*/#define__INLINE__inline/*!<inlinekeywordforARMCompiler*/#elifdefined(__ICCARM__)#define__ASM__asm/*!<asmkeywordforIARCompiler*/#define__INLINEinline/*!<inlinekeywordforIARCompiler.OnlyavaiableinHighoptimizationmode!*/#elifdefined(__GNUC__)#define__ASM__asm/*!<asmkeywordforGNUCompiler*/#define__INLINEinline/*!<inlinekeywordforGNUCompiler*/#elifdefined(__TASKING__)#define__ASM__asm/*!<asmkeywordforTASKINGCompiler*/#define__INLINEinline/*!<inlinekeywordforTASKINGCompiler*/#endif#ifdefined(__CC_ARM)/*ARMarmccspecificfunctions*//***@briefReturntheProcessStackPointer**@returnProcessStackPointer**Returntheactualprocessstackpointer*/__ASMuint32_t__get_PSP(void){mrsr0,pspbxlr}/***@briefSettheProcessStackPointer**@paramtopOfProcStackProcessStackPointer**AssignthevalueProcessStackPointertotheMSP*(processstackpointer)Cortexprocessorregister*/__ASMvoid__set_PSP(uint32_ttopOfProcStack){msrpsp,r0bxlr}/***@briefReturntheMainStackPointer**@returnMainStackPointer**ReturnthecurrentvalueoftheMSP(mainstackpointer)*Cortexprocessorregister*/__ASMuint32_t__get_MSP(void){mrsr0,mspbxlr}/***@briefSettheMainStackPointer**@paramtopOfMainStackMainStackPointer**AssignthevaluemainStackPointertotheMSP*(mainstackpointer)Cortexprocessorregister*/__ASMvoid__set_MSP(uint32_tmainStackPointer){msrmsp,r0bxlr}/***@briefReversebyteorderinunsignedshortvalue**@paramvaluevaluetoreverse*@returnreversedvalue**Reversebyteorderinunsignedshortvalue*/__ASMuint32_t__REV16(uint16_tvalue){rev16r0,r0bxlr}/***@briefReversebyteorderinsignedshortvaluewithsignextensiontointeger**@paramvaluevaluetoreverse*@returnreversedvalue**Reversebyteorderinsignedshortvaluewithsignextensiontointeger*/__ASMint32_t__REVSH(int16_tvalue){revshr0,r0bxlr}#if(__ARMCC_VERSION<400000)/***@briefRemovetheexclusivelockcreatedbyldrex**Removestheexclusivelockwhichiscreatedbyldrex.*/__ASMvoid__CLREX(void){clrex}/***@briefReturntheBasePriorityvalue**@returnBasePriority**Returnthecontentofthebasepriorityregister*/__ASMuint32_t__get_BASEPRI(void){mrsr0,basepribxlr}/***@briefSettheBasePriorityvalue**@parambasePriBasePriority**Setthebasepriorityregister*/__ASMvoid__set_BASEPRI(uint32_tbasePri){msrbasepri,r0bxlr}/***@briefReturnthePriorityMaskvalue**@returnPriMask**Returnstateoftheprioritymaskbitfromtheprioritymaskregister*/__ASMuint32_t__get_PRIMASK(void){mrsr0,primaskbxlr}/***@briefSetthePriorityMaskvalue**@parampriMaskPriMask**Settheprioritymaskbitintheprioritymaskregister*/__ASMvoid__set_PRIMASK(uint32_tpriMask){msrprimask,r0bxlr}/***@briefReturntheFaultMaskvalue**@returnFaultMask**Returnthecontentofthefaultmaskregister*/__ASMuint32_t__get_FAULTMASK(void){mrsr0,faultmaskbxlr}/***@briefSettheFaultMaskvalue**@paramfaultMaskfaultMaskvalue**Setthefaultmaskregister*/__ASMvoid__set_FAULTMASK(uint32_tfaultMask){msrfaultmask,r0bxlr}/***@briefReturntheControlRegistervalue**@returnControlvalue**Returnthecontentofthecontrolregister*/__ASMuint32_t__get_CONTROL(void){mrsr0,controlbxlr}/***@briefSettheControlRegistervalue**@paramcontrolControlvalue**Setthecontrolregister*/__ASMvoid__set_CONTROL(uint32_tcontrol){msrcontrol,r0bxlr}#endif/*__ARMCC_VERSION*/#elif(defined(__ICCARM__))/*IARiccarmspecificfunctions*/#pragmadiag_suppress=Pe940/***@briefReturntheProcessStackPointer**@returnProcessStackPointer**Returntheactualprocessstackpointer*/uint32_t__get_PSP(void){__ASM("mrsr0,psp");__ASM("bxlr");}/***@briefSettheProcessStackPointer**@paramtopOfProcStackProcessStackPointer**AssignthevalueProcessStackPointertotheMSP*(processstackpointer)Cortexprocessorregister*/void__set_PSP(uint32_ttopOfProcStack){__ASM("msrpsp,r0");__ASM("bxlr");}/***@briefReturntheMainStackPointer**@returnMainStackPointer**ReturnthecurrentvalueoftheMSP(mainstackpointer)*Cortexprocessorregister*/uint32_t__get_MSP(void){__ASM("mrsr0,msp");__ASM("bxlr");}/***@briefSettheMainStackPointer**@paramtopOfMainStackMainStackPointer**AssignthevaluemainStackPointertotheMSP*(mainstackpointer)Cortexprocessorregister*/void__set_MSP(uint32_ttopOfMainStack){__ASM("msrmsp,r0");__ASM("bxlr");}/***@briefReversebyteorderinunsignedshortvalue**@paramvaluevaluetoreverse*@returnreversedvalue**Reversebyteorderinunsignedshortvalue*/uint32_t__REV16(uint16_tvalue){__ASM("rev16r0,r0");__ASM("bxlr");}/***@briefReversebitorderofvalue**@paramvaluevaluetoreverse*@returnreversedvalue**Reversebitorderofvalue*/uint32_t__RBIT(uint32_tvalue){__ASM("rbitr0,r0");__ASM("bxlr");}/***@briefLDRExclusive(8bit)**@param*addraddresspointer*@returnvalueof(*address)**ExclusiveLDRcommandfor8bitvalues)*/uint8_t__LDREXB(uint8_t*addr){__ASM("ldrexbr0,[r0]");__ASM("bxlr");}/***@briefLDRExclusive(16bit)**@param*addraddresspointer*@returnvalueof(*address)**ExclusiveLDRcommandfor16bitvalues*/uint16_t__LDREXH(uint16_t*addr){__ASM("ldrexhr0,[r0]");__ASM("bxlr");}/***@briefLDRExclusive(32bit)**@param*addraddresspointer*@returnvalueof(*address)**ExclusiveLDRcommandfor32bitvalues*/uint32_t__LDREXW(uint32_t*addr){__ASM("ldrexr0,[r0]");__ASM("bxlr");}/***@briefSTRExclusive(8bit)**@paramvaluevaluetostore*@param*addraddresspointer*@returnsuccessful/failed**ExclusiveSTRcommandfor8bitvalues*/uint32_t__STREXB(uint8_tvalue,uint8_t*addr){__ASM("strexbr0,r0,[r1]");__ASM("bxlr");}/***@briefSTRExclusive(16bit)**@paramvaluevaluetostore*@param*addraddresspointer*@returnsuccessful/failed**ExclusiveSTRcommandfor16bitvalues*/uint32_t__STREXH(uint16_tvalue,uint16_t*addr){__ASM("strexhr0,r0,[r1]");__ASM("bxlr");}/***@briefSTRExclusive(32bit)**@paramvaluevaluetostore*@param*addraddresspointer*@returnsuccessful/failed**ExclusiveSTRcommandfor32bitvalues*/uint32_t__STREXW(uint32_tvalue,uint32_t*addr){__ASM("strexr0,r0,[r1]");__ASM("bxlr");}#pragmadiag_default=Pe940#elif(defined(__GNUC__))/*GNUgccspecificfunctions*//***@briefReturntheProcessStackPointer**@returnProcessStackPointer**Returntheactualprocessstackpointer*/uint32_t__get_PSP(void)__attribute__((naked));uint32_t__get_PSP(void){uint32_tresult=0;__ASMvolatile("MRS%0,psp\n\t""MOVr0,%0\n\t""BXlr\n\t":"=r"(result));return(result);}/***@briefSettheProcessStackPointer**@paramtopOfProcStackProcessStackPointer**AssignthevalueProcessStackPointertotheMSP*(processstackpointer)Cortexprocessorregister*/void__set_PSP(uint32_ttopOfProcStack)__attribute__((naked));void__set_PSP(uint32_ttopOfProcStack){__ASMvolatile("MSRpsp,%0\n\t""BXlr\n\t"::"r"(topOfProcStack));}/***@briefReturntheMainStackPointer**@returnMainStackPointer**ReturnthecurrentvalueoftheMSP(mainstackpointer)*Cortexprocessorregister*/uint32_t__get_MSP(void)__attribute__((naked));uint32_t__get_MSP(void){uint32_tresult=0;__ASMvolatile("MRS%0,msp\n\t""MOVr0,%0\n\t""BXlr\n\t":"=r"(result));return(result);}/***@briefSettheMainStackPointer**@paramtopOfMainStackMainStackPointer**AssignthevaluemainStackPointertotheMSP*(mainstackpointer)Cortexprocessorregister*/void__set_MSP(uint32_ttopOfMainStack)__attribute__((naked));void__set_MSP(uint32_ttopOfMainStack){__ASMvolatile("MSRmsp,%0\n\t""BXlr\n\t"::"r"(topOfMainStack));}/***@briefReturntheBasePriorityvalue**@returnBasePriority**Returnthecontentofthebasepriorityregister*/uint32_t__get_BASEPRI(void){uint32_tresult=0;__ASMvolatile("MRS%0,basepri_max":"=r"(result));return(result);}/***@briefSettheBasePriorityvalue**@parambasePriBasePriority**Setthebasepriorityregister*/void__set_BASEPRI(uint32_tvalue){__ASMvolatile("MSRbasepri,%0"::"r"(value));}/***@briefReturnthePriorityMaskvalue**@returnPriMask**Returnstateoftheprioritymaskbitfromtheprioritymaskregister*/uint32_t__get_PRIMASK(void){uint32_tresult=0;__ASMvolatile("MRS%0,primask":"=r"(result));return(result);}/***@briefSetthePriorityMaskvalue**@parampriMaskPriMask**Settheprioritymaskbitintheprioritymaskregister*/void__set_PRIMASK(uint32_tpriMask){__ASMvolatile("MSRprimask,%0"::"r"(priMask));}/***@briefReturntheFaultMaskvalue**@returnFaultMask**Returnthecontentofthefaultmaskregister*/uint32_t__get_FAULTMASK(void){uint32_tresult=0;__ASMvolatile("MRS%0,faultmask":"=r"(result));return(result);}/***@briefSettheFaultMaskvalue**@paramfaultMaskfaultMaskvalue**Setthefaultmaskregister*/void__set_FAULTMASK(uint32_tfaultMask){__ASMvolatile("MSRfaultmask,%0"::"r"(faultMask));}/***@briefReturntheControlRegistervalue**@returnControlvalue**Returnthecontentofthecontrolregister*/uint32_t__get_CONTROL(void){uint32_tresult=0;__ASMvolatile("MRS%0,control":"=r"(result));return(result);}/***@briefSettheControlRegistervalue**@paramcontrolControlvalue**Setthecontrolregister*/void__set_CONTROL(uint32_tcontrol){__ASMvolatile("MSRcontrol,%0"::"r"(control));}/***@briefReversebyteorderinintegervalue**@paramvaluevaluetoreverse*@returnreversedvalue**Reversebyteorderinintegervalue*/uint32_t__REV(uint32_tvalue){uint32_tresult=0;__ASMvolatile("rev%0,%1":"=r"(result):"r"(value));return(result);}/***@briefReversebyteorderinunsignedshortvalue**@paramvaluevaluetoreverse*@returnreversedvalue**Reversebyteorderinunsignedshortvalue*/uint32_t__REV16(uint16_tvalue){uint32_tresult=0;__ASMvolatile("rev16%0,%1":"=r"(result):"r"(value));return(result);}/***@briefReversebyteorderinsignedshortval

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论