基于单片机的智能药盒设计与实现

摘 要

在社会快速发展的过程中,人们的生活水平在不断提高,同时也在追求越来越高的生活质量。为了方便老年人
吃药,结合当前智能药盒的蓬勃发展,因此设计一款便于使用的智能药盒具有重要的实用价值。
  在本设计中,主要包括的核心模块有STC89C52RC单片机、SIM800L通信模块、WT588D语音芯片以及单片机的定时
/计数器。其次,说明了硬件的模块化设计和软件的编程思想,主要运用C语言进行代码的编写。接着最后对整体系
统进行调试从而得出设计的最终结果。在第一部分对单片机的各个器件的特性参数、内部的结构组成、各个管脚功
能,LCD1602、计数器语音模块以及DS1302的硬件连接电路、显示原理和各项运行指令进行详细说明。
  第二部分说明各模块的工作模式和工作流程。工作模式为:系统在单片机控制下,对各个模块初始化,读取SIM
卡的信息,检测按键设置,记录提醒时间,并通过显示屏显示运行内容。当单片机检测到触发了近时间事件时,两
分钟前通过短信模块发送短信通知,当超时时间到时,同时进行音频广播。检测药箱是否打开。根据具体设计情
况,使用Keiluision4作为开发环境进行功能编程和单片机设计。最后结合硬件电路的制作方法,制作出符合本设计
预期效率的硬件。
关键词:智能药盒;STC89C52RC;语音提醒;GSM模块

1 绪论

1.1 选题目的和意义
  在我们的生活中,随着工作节奏和生活水平的逐步提高,以及生活环境的变化,我们更加关注自己和家人的健
康长寿,以及生活成本。 .在此期间成长。同时,随着生活方式的改变、职业病和老年人常见病在城市中出现,需
要长期治疗,市场呼唤着购买具有实际应用价值的智能药箱。功能和提醒,轻松管理。出现。另外,由于慢性病治
疗周期长,需要长期服药,而老年人的记忆力和视力不断下降,随着年龄的增长,忘记吃药,服用的药量反反复复
再次。服药过量和误服 孩子不能及时得到通知,这种情况经常发生,而且每年都有越来越多的人因用药而错过。
  在现代通信技术和计算机网络技术的飞速发展中,数字网络和信息正逐渐融入人们的生活,智能化在我们的生
活中变得越来越重要和便捷。今天市场上也有智能家居药盒。然而,由于生理和心理的特殊性,老年人在使用信息
和现代数码产品时往往会遇到障碍。这些智能产品真的帮不了老人。具体剂量,药物的作用。
  许多老年人随着年龄的增长而出现痴呆症,这些老年人在生病时甚至在日常生活中都难以服药,如果需要在不
同时间多次服药,几乎是困难的。独立完成,需要外界帮助。本次毕业设计中提到的智能药箱,是为生活不便的老
人设计的。这是一种为方便老年人吞咽而设计的药物容器。它可以更好地处理。还有老人用药问题。根据老人每天
吃药的时间可以确定,可以知道催老人每天吃药3次以上的习惯,提醒用户服用一种或多种药物,以帮助老人们摆脱
掉这种不按时吃药的坏习惯。在科学技术快速发展的时代,子女们减少了对老人的担心,老人们也可以使生活过得
越来越简单和容易,使他们可以享受科技创新的成果。
1.2 国内外研究现状与对比
  目前,国外市场上的药盒主要分为两类,即普通药盒和智能增强型药盒。 大多数普通药盒的优点是有分类,密
封,便携功能,药盒价格相对较低。 缺点是功能比较单一,不能满足大多数老年人的需要,没有智能技术的应用。
  辅助吃药的智能药盒这类产品在国外是一种发展非常成熟的产品,在美国的电子商务网站可以选择数千种不同
的此类产品。与此同时,也有很多公司专门生产该药盒产品,并形成了自己独特的品牌,例如有E-pill。在国外,
通过对老年患者的生理特点、用药特点和现有智能技术的调查,开发出的智能药盒设计有以下几种创新之处:
  节能环保性:智能药盒的设计应遵循节能环保的基本原则。药盒的材料应绿色环保,可回收利用。结构设计也
要简单,方便取出、清洗或更换。智能药盒要做到省电,节约能源。在设计中还要考虑到生命周期的各个环节的环
保要求,如后处理等,并对产品对环境的影响进行全方位的监控,使对环境的破坏污染降到最低。
  用药安全:通过智能技术,鼓励老年人按时服药,确定服药时间,了解服药提醒功能。同时,智能药箱还应具
备防止老人用同一种药的功能,做到用药量控、科学控制。如果药箱在短时间内反复打开,应采用报警设计,避免
重复用药。提醒也可以通过手机、Apple Watch等终端显示。
方便易用:由于老年人的认知能力和操作能力普遍下降,智能药盒的设计应大大降低操作的复杂性,减轻老年人的
记忆负担,减少学习和使用.老人的过程。同时,还应考虑老年人在运动、行为和使用方面的灵活性。它应该易于操作和使用。权威提醒,智能药箱的主要操作也可以通过智能APP从老人手中转移到儿童或监护人手中,从而减少老人
智能药箱的实际操作步骤。 .
  关注情感需求:情感需求在为老年人设计产品中发挥着重要作用。因为老年人的眼睛一般都不是很好,无法区
分药物,很容易误服。并且不能和医生互动,医生开不了多少药还要经常去医院,所以老人的心理需求不能只考虑
产品的外观和颜色。还要考虑产品的功能和用途。
  我国目前的概况才刚刚开始,但随着对这种紧张的市场需求的深入了解,市场必然处于紧张发展的时期。刚出
现时,外形简单、容量小的便携式迷你药盒无法满足人类的需求,严重失灵。因此,开发了一种大而全容量的药
盒。并且随着近几年的逐步更新和细化,开发出许多新的、更人性化的智能电子药盒设计,这些设计更容易操作、
更及时、更高效、更简单。给更多人带来方便。电子药箱不仅用于存放各种药品,还用于存放保健品。这样,扩大
了电子药盒的消耗品,扩大了除老年人以外的消费群体,同时提高了电子药盒的使用成本。
  过去,对于老人来说,家里的药箱可以装好几次药,通常药箱可以存放一个月或一周。由于剂量大,量也大,
不适合外出。适用于需要长期服药(或保健品)并有提醒的老人或长睡者。大多数电子药箱的电路通常是由分散的
数字电路组成,其功能不仅独特,而且体积和重量也很大,尤其是功耗大,增加了成本,使用上也很有限。因此,
智能电子药箱成为了新的需求。
  近年来,单片机技术发展迅速,以单片机为核心控制模块的集成电路越来越多地应用于各种电子产品中。这种
数字电路正是由于其功能灵活、布局简单、功耗低、占位面积小等特点,非常适合智能药盒等产品应用,具有巨大
的市场潜力和发展价值。虽然智能药盒产品问世已有一段时间,但此类产品的研发仍处于起步阶段。最初的研究设
计主要是由外观、结构、色彩组合等引起的。但在提醒、智能药箱、时间管理、用药、存储等方面的研究还很欠
缺。
  如今,在电子药箱选型过程中,单片机产品的定量性能、耐用性等因素被广泛考虑,并朝着微型化、智能化方
向发展。所有技术都旨在为改善人类生活服务。面对如此多的老年人在正确管理和定期使用药物方面苦苦挣扎,智
能药物管理系统正是公众所需要的。
  针对目前为家庭设计智能药盒的现状,本次设计采用STC89C52RC单片机作为主控芯片,集成LCD1602液晶显示屏
的自动报警控制系统具有实用价值,成本低。
1.3 本课题的设计需求分析
  本系统要求采用51系列微控制器STC89C52RC为控制核心进行系统设计。智能药盒能够提醒老人或者小孩按时吃
药,提醒方式可以语音播报也可以蜂鸣器和语音提醒。药盒主人通过按键可以设置定时时间,通过GSM模块监护人也
可以得到监护对象吃药信息。
  整个电路主要由单片机最小系统(包括复位电路和晶振电路)、按键模块(三个按键)、时钟模块DS1302(校
准与计时)、旁路模块、红外屏障(传感器模块)、显示模块(人机交互)、GSM通讯模块(远程提醒)、语音提醒
电路等组成。本系统采用STC89C52RC单片机最小系统作为核心控制电路。通过按键设置定时以及药物搭配信息,完
成定时和提醒吃药功能,同时也可以远程得到吃药信息。下面说明一下设计的工作原理和特点。
  由于存在DS1302模块,时钟只用设置一次即可,以后掉电上电时钟不变。开启电源后系统先读取是否有SIM卡插
入,反插倒插都不能读取,在读取过程中显示屏上显示“GSM INIT”,这是给GSM通信模块初始化等待过程。当读取
到SIM卡信息后进入正常工作状态,直到检测到设置时间信号,设置则由一个按键触发,并通过这一个按键进入下一
步,同时有两个按键来增加或者减少选定的时间位置。由于采用的按键是三个,优化设计可以用一个旋转按键,顺
时针旋转减、逆时针旋转加,设置则需要按一下。最后按一下设置开关退出设置,这样吃药提醒时间就设置好了。
在吃药的前几分钟会发送一条提醒短信到手机上同时显示屏会显示“GSM SEND”,短信内容是英文。在吃药的时刻
到的时候,语音会播报“该吃药了”,在设计过程中提醒先由蜂鸣器代替,在系统整体框架构成后再改为语音播
报。提醒后如果没有吃药会一直播报提醒,直到打开药盒,打开药盒这一动作则用红外避障检测,检测到人手打开
后灯会亮,从而关闭提醒,一次吃药过程结束,直到下一次吃药时间到来。每次吃药过程一样,一天三次,次数可
以改变。
  该系统是基于单片机的定时器和计数器时钟程序进行定时。运用单片机控制技术。电路简单,成本较低,效率
和控制精度高,稳定性很好,显示直观整洁,操作简单方便。解决了老年人日常用药困难的问题,适合家庭和疗养
院使用。对提高老年人的健康生活水平具有重要意义。

2 系统方案设计

2.1 总体方案设计
  本设计采用模块化设计方式,以STC89C52RC主控芯片为核心的单片机和智能家居药盒设计。晶振电路 电源模块
为整体提供稳定的直流电源。设计系统操作系统接受DS1302时钟进行实时设置,LCD1602显示模块负责显示时间、时
序等参数。 SIM800L 发送短信提醒模块避免红外干扰以查找当前药物。箱盖打开。在软件设计中,以单片机的内部
资源为核心,调用存储区的各个模块驱动程序运行,利用主控芯片的管脚进行通信。与系统中的其他组件。模块的
资源被驱动调用,通过主程序中的按键扫描程序刷新LCD1602数据显示程序,将按键模块连接到LCD1602,使信息按
键输入可以显示在屏幕上。 LCD1602 实时液晶,程序调用LCD1602读取一部分数据,判断是否达到报警。进入闹钟
后,将预设时间信息复位到液晶显示屏,并通过微电脑工作管脚发出声音提示,只有一个芯片。在这里插入图片描述

图2-1 系统结构图
  系统主要由STC89C52RC单片机(晶振电路、复位电路)、电源、键盘、LCD功能、短信模块、SIM800L、DS1302
时钟芯片、音频电路等部分组成。 系统结构如图2-1所示。
  在本此设计中,先对系统要实现的功能有明确的认识,其次对各功能的发生顺序结构层次排列,再对各个模块
之间的结合做好准备,这样做可以明确设计目的,从而实现系统功能。接着对各个模块选取合适的电子器件,通过
对比选择最合适,最方便的器件。然后通过单片机对每个器件进行设计论证,再进一步通过仿真连接电路。最后依
据总体的系统设计进行硬件电路的焊接安装,先由最小系统拓展到各个模块,将编译仿真通过且无错误的代码由主
控芯片匹配的烧录软件下载到单片机中,最后查找问题,对系统进行相关的数据测试和硬件功能的验证,从而保证
电路设计的准确性。
2.2 模块方案的设计
2.2.1 核心控制芯片
  控制芯片是本设计的核心部分,是各个模块与控制整个系统运行之间的沟通桥梁。其性能主要体现在计算精度
和工作速度上,对系统的整体运行性能和稳定性有着全面的影响。由此选择一款合适的控制芯片,能够完成设计目
的以及对系统进行拓展使其发挥最大性能是很有必要的。
  通过参考,有三种能够完成本次设计的单片机类型可供使用,需要分析各个类型的优缺点,选择一款最适合的
控制芯片作为系统的核心模块。
  方案一:STM32F103xx微控制器。是32bit系列的单片机,内部资源较8051都要多的多,基本上接近于计算机的
CPU。但是用于本设计,大部分的资源不能够充分利用,而且代码与51比较来说更灵活,但编写端口模块函数比较复
杂。
  方案二:可以采用高性能、低电压的CMOS8位微控制器AT89S52,其具有8K字节的可编程Flash存储器和256字节
的随机数据存储器(RAM),内部有两个16位的T0和T1定时器,性能良好。
  方案 3:STC89C52RC 也是一个 8 位微控制器,性能与 AT89S52 相同,但存储空间为 512 字节。 STC89C52RC
采用经典的MCS-51内核,但经过多次改进,芯片具备了单片机、传统51芯片所不具备的功能,正常工作电压可充至
3~5V。 内部有 16 位定时器,T0、T1 和 T2。
  比较以上三种方案,能够完成本次设计并且没有造成资源大量浪费,8位微控制器即可满足要求。智能药盒控制系统需要多次中断请求,也需要多个定时器,而且AT89S52的烧录程序有一定难度,比较麻烦。虽然方案二和三两者
程序可以相同,但是STC89C52RC存储空间较大,能够快速处理大量数据,其内带EEPROM,可以断电后保存资料,而
且烧录程序非常容易。所以比较而言,本次设计选择STC89C52RC。
2.2.2 显示模块
  LCD1602是一款工业字符型液晶显示器,可同时显示16*02共32个字符(16行、2行)。在我们的日常生活中,我
们对液晶显示器并不陌生。在人机界面中,常见的输出设备有:LED、数字LED、液晶显示器(LCD)。常用LED灯泡
和数码LED灯泡,软硬件电路简单。本设计采用 LCD 作为发射器,具有以下优点:
  LCD屏幕是数字屏幕。单片机的微机与液晶的接口简单可靠,操作也容易,液晶的大部分功耗是由芯片和内部电
极消耗的,所以与其他器件相比。液晶显示器的功耗要低得多,因为液晶显示器的每个亮点都保留了原来的亮度和
颜色,虽然它接收到信号,但它以恒定的功率发光,不像阴极(CRT)显示器那样需要不断更新亮点使液晶显示器不
闪烁的高品质液晶图像,使用屏上电极来控制液晶的分子状态,比同等显示面积的传统显示器更轻。
特征性能说明:
⑴、芯片工作电压:4.5 V~5.5V;
⑵、工作电流:2.0毫安;
⑶、2.95×4.35(W×H)mm;
⑷、最佳工作电压:5.0V。在这里插入图片描述

图2-1 LCD1602液晶显示模块
2.2.3 时钟模块
  时钟芯片用于实时记录当前时间,具有高性能、低功耗、计时准确等特点。它内部有 31 字节的随机存储器,
在与同步微控制器通信时使用三线 SPI 接口。当我们关闭单片机系统电路时,因为时钟模块有一个电子电池,二极
管的单向电流可以保持时钟运行。
功能说明:
⑴、具有时钟计数功能,可对年、日、月、周、时、分、秒进行计数,年计数可达2100年;
⑵、具有31字节的额外暂存数据寄存器;
⑶、工作电流小于320纳安;
⑷、工作的电压范围:+2.0V~+5.5V;
⑸、工作的温度区间:-40℃~+85℃。
⑹、最少输入输出管脚传输,通过三管脚控制。
2.2.4 检测模块
  在设计中考虑到提醒过程中如何停止提醒,可以由单片机检测到一个打开的信号退出提醒中断,有以下两种方
案可供选择:
  方案一: 轻触开关。具有防水、防油污、防静电的功能,而且造价成本很低。使用按键模拟打开药盒这一动
作,也可以将接触点做到药盒盖的卡扣处。
  选项 2:避开红外线屏障。 传感器模块具有强大的环境光适配器。 它有一个红外发射器和一个接收器。 有效
距离为 2 至 30 厘米。 工作电压3.3V~5V。 检测距离可通过电位器调节。 它具有易于组装和使用方便的特点。
  比较上述两种方案,由于如果过频繁的使用轻触开关,会导致它内部的金属弹片由于疲劳失去弹性,从而加速
它的老化,使轻触开关无法正常工作,导致系统检测不到关闭提醒的信号。红外避障精度高、安全、反应速度快,
但抗干扰性差些。综合考虑,为了避免检测不到关闭提醒信号,本设计选择红外避障检测更为可靠。
2.2.5 GSM 通信模块
本设计的无线通信部分使用 SIM800L 模块作为消息模块。 SIM800L 模块是一款功能强大的 4 频段 GSM/GPRS 模
块。插卡后不仅可以接听电话,还可以收发信息。此外,该模块还带有蓝牙,可以远程控制,也可以用手机控制。
功能说明:
⑴、电压范围:3.4V~4.4V;
⑵ 尺寸:15.817.82.4mm;重量 1.35g;
(3)温度范围:工作温度-40℃~+85℃,储存温度-45℃~+90℃;
(4)处理频率为:DCS1800、PCS1900、EGSM900、GSM850,可自动搜索四个频率。
(5)数据传输特性:最大下行传输和上行传输可达85.6kbps。
2.2.6 语音提醒模块
  本设计的提醒模块可以采用蜂鸣器提醒以及语音提醒,但出于人性化考虑,蜂鸣器提醒方式没有语音提醒更让
人接受,所以本设计选择语音提醒,语音模块使用的是WT588D语音芯片,由于语音内容要保存在芯片中,因此需要
配置相应软件来调试内容。WT588D的音质较好,大多数系统都采用这一模块,而且功能多,在工作时性能稳定,应
用范围广,弥补了以往各种语音芯片应用领域狭窄的缺陷。
特征性能说明:
⑴、插入静音时间范围为:10ms~25min;
⑵、工作电压范围:DC 2.8V~5.5V;
⑶、静态休眠电流小于10μA;
⑷、嵌入式DSP高速音频处理器,处理速度快,内置13位DA转换器,12/PWM输出,音质好;
⑸、它支持PWM/DAC两种输出模式,WAV音频格式加载和6k-22khz采样率音频加载;
⑹、芯片复位时间5ms;
⑺、抗干扰能力强,可应用于工业领域等。
在这里插入图片描述

图2-5 语音提醒模块
2.3 本章小结
  本章从设计的各部分器件选择出发,由设计的目的选择合适的电子器件,优先考虑可实现性和节约环保性。从
设计的控制芯片、显示模块、时钟模块、检测模块、GSM通信模块和提醒模块等做全面的比较分析,在多种可实现的
方案中选择出一种最适合本设计,将实现难度降低,为后续设计做足准备,使设计的智能药盒更加环保、便携。

3 硬件电路设计

3.1 单片机最小系统在这里插入图片描述

基于STC89C52RC的最小系统如图3-1所示。
图3-1 最小系统电路图
3.1.1 STC89C52RC单片机简介
  单片机的模拟电路是通过集成内存控制器和I/O接口得到的。这是一台微型计算机。它由CPU、数据存储器、程
序存储器、各种输入和输出以及基本逻辑单元组成。在程序员编写的代码的控制下,单片机可以快速、高效、准确
地完成程序员想要完成的任务。单片机具有成本高、功耗低、可靠性高、可控性和可扩展性高等特点。它是电子控
制系统的一个组成部分。单片机的出现简化了复杂电路的系统设计。大大提高了系统的智能化程度,并且它已经广
泛的应用到人类生活和科技发展的各个领域,正朝着高性能、多品种方向发展,具有广阔的应用前景。
  现在市场上的单片机有很多种,在本次设计中采用的是STC公司生产的51系列高速低功耗的单片机STC89C52RC。
它是一个标准的40管脚双列直插式集成芯片,芯片的管脚图如上图3-1所示,芯片的管脚功能如表3-1所示。
表3-1 STC89C52RC芯片的管脚功能说明
管脚类型 管脚名称 管脚号 管脚功能
主电源
管脚
VCC 40 +5V电压
GND 20 接地
外接晶体
管脚
XTAL1 19 外接晶体
XTAL2 18 外接晶体
RST/VPD 9 复位
控制及
电源复用
  管脚
ALE/PROG 30 地址锁存
PSEN 29 外部程序存储
EA/VPP 31 使能
输入
输出
  管脚
P0 39~32 双向8位I/O口
P1 1~8 准双向8位I/O口
P2 21~28 准双向8位I/O口
P3 10~17 准双向8位I/O口
3.1.2 复位电路
  单片机上电启动后,如果出现异常情况或进入死循环,需要复位。复位电路是在上电时将整个系统的内部电路
恢复到初始状态,并从初始状态重新启动。如果要实现复位,则需要在微控制器 RESET 引脚上有两个或更多机械周
期。当检测到这样的信号时,微控制器将复位并启动系统程序。
  此设计接受电源复位设置。为满足单片机的复位要求,只需要在9脚接一个2μs的高压,还要接一个10μF的电
容和一个10K的电阻。根据复位时间计算公式,单片机的电源为5V,电容需要充电到电源电压的0.7倍(例如3.5
V),此时需要的时间为10μF*10K=0.1 . 。单块电路板的复位时间受复位电路的极性计数器C1的大小影响,所以C1
的电容一般选择10~30μF。
3.1.3 晶振电路
  单片机执行程序过程中,每一条指令的读、写和程序跳转、中断延迟都在晶振频率控制的时钟信号下有序执
行,晶振的频率和时钟信号持续时间有关,时钟信号的脉宽同时也影响到系统处理数据的速度。现在设计的晶体振
荡电路采用内部时钟方式。
  内部时钟是通过控制芯片的18脚(XTAL1)和19脚(XTAL2)的晶振,每个脚后接一个稳压器。这两个电容器也
称为存储电容器。它会影响晶振的输出大小和谐振频率,同时也起到稳定晶振频率的作用。典型容量为20~30pF的
陶瓷贴片电容。
  时间:单片机执行操作指令过程中控制器发出的控制信号的时序。单片机的后续单元包括机器周期、时钟周
期、指令周期和振荡周期。由此可以快速计算出微控制器执行指令所需的时间。例如单片机采用6MHz晶振,振荡时
间为1 / (6MHz) = 1 / 6μs,时钟持续时间为1 / 3μs,机械时间为2μs,因此运行时间为2μs单周期引导。1和
4μs为两个周期引导。
3.2 输出显示电路
  LCD1602可以同时显示提醒内容和定时时间,同时LCD1602应用广泛,大多数系统都选择该显示器作为输出显示
电路。LCD1602可以显示两行数据,每行可以显示16个符号、数字或字母,正好可以满足设计需要,第一行显示当前
运行的程序和提醒内容,第二行显示实时时间和设置时间。LCD1602是一款实用的液晶显示器。 现在解释LCD1602的
16个引脚。 针的说明如表 3-2 所示:
表3-2 LCD1602管脚说明
管脚类型 管脚名称 管脚号 管脚功能
主电源
  管脚
GND 1 接地
VCC 2 5V电源正极
控制背光及对比度管脚
VL 3 调节对比度
BL+ 15 背光正极
BL- 16 背光负极
使能及指令
  操作管脚
RS 4 选择寄存器
RW 5 读写信号端
EN 6 使能
输入输出管脚 D0~D7 7~14 数据双向端口
  LCD1602工作电压为3.5V~5V,内部设计有复位电路,可以移动光标,清除屏幕。显示器上的各个字符亮度可以
通过外部连接的电位器进行调节。LCD1602可以直接与单片机相连,通过单片机来控制液晶显示器。在这里详细说明
一下3管脚和5管脚的作用,3管脚VL是对显示器对比度进行调整,接电源时对比度最弱,接地时最高,当对比度过高
时会产生“鬼影”现象,因此电位器的选择可以选10K,当显示器出现不显示字符的问题时,应当调节电位器使显示
器上的字符变成白色方框,再逐渐减弱直到字符显示出来,。5管脚在高电平时进行读操作,低电平进行写操作,这
个管脚和4管脚一块使用。再者LCD1602的内部存储器可以存放数据,非常便于使用。连线图如图3-8所示。在这里插入图片描述

图3-4 显示电路连接图
3.3 按键电路
  此设计按钮主要用于功能设置。当我们按下 K1 按钮时,我们将进入设置页面,当我们按下 K2 时,我们将输
入要添加的所选参数的值。 K3 减去参数值。关键电路是通过单片微芯片的针来检测高低信号。当按键按下时,可
以检测到单片机IO对应的端口为低电平。单片机会根据信号的高低极性判断程序执行相应的操作。但是按键功能有
一些注意事项在按键按下的时候会产生我们感觉不到的抖动,这会对按键调节产生误差,不是我们想要的,所以还
要写一个按键去抖函数,并且在去抖过程中要有短暂的延迟来判断按键在一个小时间段内是否被松开。按键电路连
接管脚如图3-8所示。在这里插入图片描述

图 3-5 按键电路图
3.4 DS1302时钟电路
  DS1302时钟芯片功耗低、性能好,符合本次设计的环保原则,它内部还有RAM实时时钟电路,而且使用方便,接
线十分简单。时钟芯片可以对年、月、日、分、秒等进行计时,由于该模块上带有一块电子电池,所以掉电仍然走
时,同时还具有闰年补偿功能,可以传输一个字节以上的时钟信号,但DS1302存在时钟精度不高的缺点,当周边环
境对其产生干扰时,会出现始终混乱。
  DS1302有8个引脚,1个VCC2为主电源引脚,8个VCC1为备用电源引脚,电源由大尺寸的VCC1或VCC2提供。当电
压 VCC2 比 VCC1 高 0.2V 时,VCC2 供电。当 VCC2 的电压比 VCC1 低 0.2V 以上时,VCC1 供电。因为这个设计
没有提到备用电源,所以只使用了1个引脚,也就是主电源引脚。 2、3 X1、X2 外接振荡晶振(32.768KHz晶振)
由于DS1302独立工作,需要独立晶振,不与单片机共用时钟源。 4 针接地,5 针 RST/CE 复位/片选。 6针I/O是数
据输入输出端口。当在麦克风控制命令到来后读取时钟脉冲的上升沿时,将要写入的数据写入 DS1302,并从低位
0 开始输入数据。同样,DS1302数据在8位命令后的下一个时钟脉冲的下行读取,数据从低0位到高7位读取。 7脚为
串行时钟输入,DS1302接口电路如图3-7所示:在这里插入图片描述

图3-6 DS1302与单片机连接图
3.5 语音播报电路
  本设计使用 WT588D 声音芯片作为报警模块,定时处理音频和通知。当红外线检测到距离低于安全距离时,发
出信号停止报警,单片机STC89C52RC控制声音芯片播放当前的音频内容。
  下图是WT588D语言芯片电路的管脚图。 P02 是一个复位引脚,可以不插电。只有端口 P03 是数据引脚。单片
机通过数据口控制WT588D音频模块。 PWM 禁止将转换器接地或直接连接输出端,PWM + / DAC 和PWM-端不要断开。
详情请查看WT588D声音芯片按键控制电路程序。 WT588D音频芯片通过外部MIUI下载器下载对应的音频文件,如“欢
迎”,然后我们需要通过MIUI下载器编辑“语音欢迎”。因为这个设计是为了提醒药箱的主人,所以把之前声音的
内容改成“主人吃药的时间”,并在需要单片机播放的时候生成相应的代码并创建一个地址,广播这个声音,它将
向WT588D发送命令进行语音广播。如图 3-7 所示。
在这里插入图片描述

图3-7 WT588D电路图
3.6 SIM800L短信电路
  SIM800L模块的工作电压范围为5~18V,系统电源的5V电压足以满足其电压要求。同时,该模块体积小,价格便
宜,运行稳定。因此,可用于水稻管理。 SIM800L 在本设计中的作用是发送提醒短信。图 3-8 是 SIM800L 的模块
化电路图。从图中可以看出,1脚和5脚接地,外接一个二极管在发送大反向电流SMS击穿芯片后进行保护,2脚接单
片机的TXD脚,3脚接单片机微控制器的 RXD 引脚。当单片机需要传输信息时,单片机通过3.1脚TXD发送给SIM800L
的RXD接收,SIM800L接收到信号后,通过TXD直接发送给手机.
其中,由于 SIM800L 发送短信所需的电流较大,因此增加了 850 的电解电容,如图 3-8 所示。在这里插入图片描述

图3-8 SIM800L电路图
3.7 电源电路
  电源有多种连接方式,本设计采用5V直流电源供电,如图3-9供电电路图所示。 该开关为电源开关,输入为外
接电源的输入端,电源电压为DC 5V。管脚4是电源VCC输出接到STC89C52RC的40管脚(控制芯片VCC)为系统供电,
管脚2是GND,右管脚1是VCC输入到6,当按键按下后,管脚4就可以输出单片机需要的电源电压。在这里插入图片描述

图3-9 电源电路图
3.8 本章小结
  本章说明硬件系统的各部分设计,首先最主要的是最小系统,其次在其基础上拓展其它电路,再是对各部分电
路的核心器件进行详细说明以及说明单片机连接电路,并且指出器件在连接过程中需要注意的部分。最重要的是部
分电路是否能够正常工作,可以借助51单片机进行验证,在保证电路焊接的准确性上再连接整体电路,最后对整个系统进行综合硬件验证,从而达到设计的预期目标。

4 软件系统设计

在设计的软件部分中,所实现的功能是:首先能够将程序流程内容和实时时间显示在LCD1602上,通过单片机检
测按键的输入次数和先后顺序,调节好系统时钟再记录下设置的3次用药时间,接着当检测到设置结束的信号后系统
开始运行,在此过程中,会提前两分钟发送提醒信息,提醒您服药。超时后,音频芯片会播放音频,判断红外避障
模块是否关闭。如果该块表明有人正在服药,则音频广播将被删除。
  本设计使用 C 作为编程语言。 C是一种基本的安装语言,也是一种高级的机器语言,这种编程语言制作的指令
易读、易写、易编辑、易调试,最适合这种设计。
4.1 主程序设计
  在主程序中首先对各个模块进行写命令字初始化并使之能够正常工作,下一步实时进行检测标志位信号,如果
标志位挂起,就进入指定事件。通过设置时间与实时时间进行对比,在设定时间的前两分钟调用通信模块发送短
信,如果相同就进行语音播报,同时避障模块进行检测,如果收到一个距离范围内有障碍物信号就停止播报,直到
下一个定时时刻的到来。主程序模块流程如图 4-1所示。其中部分代码附下。
lcd_init(); //初始化LCD 和定时器
while(1)
{
keyscan(); //按键扫描
if(count20)
{
count=0;
miao++;
if(miao
60)
{
miao=0;
fen++;
if(fen60)
{
fen=0;
shi++;
if(shi
24)
{
shi=0;
}
write_sfm(8,shi);
}
write_sfm(11,fen);
}
在这里插入图片描述

图4-1 主程序模块流程图
4.2 部分程序设计
4.2.1 中断程序
  中断程序首先被单片机中断,将第一个值加载到 TH0 定时器,将第一个值加载到 TL0 定时器,然后将变量数
加 1,中断程序结束。干扰程序是通过使微控制器的定时器 TH0 或 TL0 过载而执行的干扰。泄漏由设置的过量标
志 (TF0) 指示。当微控制器收到噪声请求时,有必要对干扰进行优先级排序。如果没有触发更高优先级的事件,微
控制器将中断,定时器的溢出标志(TF0)将被硬件清除。中断程序流程图如图4-2所示,代码如下。
  void timer0() interrupt 1 //中断的初始化
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
count++;}
4.2.2 按键扫描程序
  按键扫描程序需要单片机端口检测按键产生的高低电平,有三个按键,其中K1为状态设置控制键,并且调节控
制时间设置的位置,K2和K3为时间量的调节按键,开启设置状态后,随着控制键的按下次数不同,控制时间的不同
位置;另外记录调节键的按键次数来改变当前时间的增加和减少。K2、K3在K1没有触发时是没有作用的,也是为了
防止误操作。按键扫描子函数开始后会检测s1的输入后记录输入次数s1sum、判断s1num的值,利用s2调节时间的时
和分,之后检测s3的输入,记录输入次数,最后判断s1num的值,满足则跳出设置。按键扫描流程图如图4-3所示,
此部分代码附下。
void keyscan() //键盘扫描函数
{
16
if(s10)
{
delay(5); //按键消抖
if(s1
0)
{ s1num++;
while(!s1); //等待按键松手
if(s1num1)
{
TR0=0;
lcd_wcmd(0x80+0x40+11); //光标指向位置
lcd_wcmd(0x0f);
}
if(s1num
2)
{
lcd_wcmd(0x80+0x40+8);
}
if(s1num==3)
{
s1num=0;
lcd_wcmd(0x0c);
TR0=1; //关中断
}
}
}在这里插入图片描述

图4-2 中断子程序流程图 图 4-3 按键扫描子函数程序流程图
4.2.3 显示子程序
  LCD1602的子程序比较多,包括测忙、写命令、写数据、读状态、读数据、初始化等子函数。在LCD16个管脚
中,单片机控制RS、RW(管脚号为4和5)的值对它进行读和写指令,如表4-1所示。显示程序流程如4-4所示。部分
代码附下。
BYTE read_status() //读状态 函数
{
P0 = 0xff;
rs = 0;
rw = 1;
ep = 0;
delay(5);
ep = 1;
delay(5);
while(P0 & 0x80);
ep = 0;
return(P0);
}
BYTE lcd_rdat() //从LCD读数据
{
BYTE address;
rs = 1;
rw = 1;
ep = 0;
delay(5);
ep = 1;
delay(5);
address=P0;
ep = 0;
return(address);
}
表4-1 LCD工作状态说明
  
EN RW RS 操作命令
正脉冲 0 0 向LCM写入指令
正脉冲 1 0 读Busy标志,以及读位地址计数器的值
正脉冲 0 1 向LCM写入数据
1 1 1 向LCM读取数据
注:LCM(LCD显示驱动接口)在这里插入图片描述

图 4-4 显示子程序程序流程图
4.3 本章小结
  本章主要说明智能药盒的软件设计方法和实现流程,并对主程序的详细过程做了说明,程序流程设计化方法不可
或缺,从中可以体现出整个系统的设计方法以及运行步骤,对于解读系统工作原理非常有必要。在此章中最重要的
就是按键扫描和中断过程,这两个流程是连接各部分程序的中心环节,本设计的主要功能需要按键触发,提醒在中
断中完成,因此在这一部分详解说明。

5 系统调试与结果分析

5.1 电路仿真
  在硬件电路设计完成后,为了确保电路的准确性和稳定性,还需要进一步思考验证,查找电路中不合理之处,
器件值的选择再次进行计算,并对系统设计进行优化,在保证设计功能不改变的前提下使电路的复杂程度降低。本
次设计使用的是Altium Designer,在该平台能够清楚显示各部分器件,并且器件种类齐全,并由此能够画出电路原
理图。不足的是不能够验证代码的可行性。由于proteus软件找不到所用的器件,因此本次设计没有使用此软件。
5.2 软件调试
  软件调试采用的方法是:分模块编写初始化以及调用代码,在主程序中按照设计逻辑依次引用相应程序文件,
然后编译调试查错,没有问题后下载调试。
  最初的程序要完成读取DS1302的实时准确时间,能够完成对内部的时钟校准功能,然后添加时钟位置定义,使
按键能够选择设置时间位置,实现单片机对各个参数的调节,接着编写LCD1602的初始化以及读写命令字等子函数,
对LCD1602的命令字的编写则在相应的子程序中,最终完成主程序能够直接调用显示内容的子文件,接着完成对3次
提醒时间的定时功能,最后,编写语音提醒调用程序,实现到点提醒吃药功能。
  用编程器写一个时间模块可以分为以下几种:首先用一个简单的时钟代码调用时钟模块来完成时钟的正常运
行,然后在时钟可以正常运行的情况下,添加三个触摸按键打开时钟按钮。 应用程序实现时钟设置功能并将其添加
到主应用程序。,第一个按键为功能开关和位置选择键(记为K1),剩下的两个为数量值加减键(K2+,K3-)。K1键
触发,系统进入设置模式,先设置的是当前时钟是否准确,每按下一次K1键,显示的光标位置就会后移一个量级
(不是位),校准时钟后就是设置定时时间,最后还由K1键退出设置模式,系统接着从刚设置的时钟上继续运行。
  本设计用KEIL作为软件调试,使用的是KeiluVision4英文版,它是非常高效的一款开发应用软件,同时其中也
支持很多和最新的ARM芯片。KEIL软件在电子行业中是使用最多的软件,也是大学期间使用最多的软件。KEIL优点有
很多,例如:
  代码简洁明了,注释、关键词可以用不同颜色标注,编码效率高,多语句代码简洁易懂,在这个平台上能体现
出高级语言的优势,对比相对于汇编语言C,是我们交流过的第一种编程语言,C在结构、功能、维护等方面优势明显。它很容易学习,代码也很容易理解。对于开发人员来说,C 语言的好处更深。 KEIL编译界面如图5-1所示,调
试界面如图5-2所示。在这里插入图片描述

图5-1 KEIL4编译界面在这里插入图片描述

图5-2 KEIL4调试界面
5.3 硬件调试
  在硬件调试过程中,由于单片机的开发板包含了大部分零件开发常用的电路,所以硬件认证是在开发板上调试
的。开发面板使用灵活。不同的模块只需插拔对应的短路盖,然后连接数据线下载对应的代码即可使用。。开发板
上没有的模块只需要外接到相应管脚就能够使用。通过开发板检测代码完整性后进行硬件电路的焊接。
  最初的硬件调试是先完成最小系统的焊接,通过简单的亮灯程序检测各管脚的焊接情况,接着构思电路连接,集成的模块为了避免焊接损坏,要焊接排针或排组接口,尽可能的简化电路连接,优化空间,最后按照模块接口顺
序插入接口,下载代码进行硬件调试。硬件电路如图5-3所示。
图5-3 硬件电路图在这里插入图片描述

从图5-3中可以看出,中间发亮的器件是LCD1602显示屏,左侧即为本系统的控制芯片STC89C52RC,在控制芯片
上侧连线的是红外避障,用来检测药盒口的打开情况,再向左从上往下依次是SIM800L通信模块,WT588D语音芯片,
DS1302时钟芯片,语音芯片外接8欧姆的喇叭用来语音提醒。最左上角为电源连接端口,连接5V的直流电源,蓝色按
键为开关按键,下方有三个黑色按键用来定时,从上往下依次为按键1、2、3,1键为设置键,按下进入定时界面如
图5-4:在这里插入图片描述

图5-4 时间定时界面
时间值由2键加,3键减进行设置,位置选择由1键选取,最后通过1键退出定时,系统进行正常工作。到达设定的时
间时,系统中断,LCD第一行显示“Take Medicine”,同时语音开始提醒,红外开始检测使用者是否打开药盒如图
5-5所示:
在这里插入图片描述

图5-5 红外检测
检测到打开后关闭语音提醒,此时GSM模块会向指定的手机号发送短信“请准时吃药。”。
5.4 调试结果及分析
  焊接硬件电路后,再次检验了电路的完整性,然后上电下载代码,经过调试后系统能够完成的功能为:在读取
到SIM卡后进入正常工作状态,如果发现时钟不准确,K1键能够进行调整,同时利用K1键进入提醒定时,设置完成后
退出。在设置时间到来时,显示器能够显示发送短信名称,持续1s,接着系统能够正常发出语音提醒和光提醒,手
没有接触红外检测之前继续语音提醒,直到手在红外检测范围内才关闭,同时系统继续工作,直到下一个定时过程
的到来。其中的显示界面分为两行,第一行没有事件触发时显示年月日,有事件触发时显示事件名称,第二行显示
时间。提醒界面如图5-7所示。在这里插入图片描述

图5-8 LCD1602提醒界面
5.5 本章小结
  本章主要说明设计的电路仿真以及软硬件测试及其调试结果,在测试中由于在室外窗口环境光线的影响会导致
红外避障有时候长亮,因此需要在一个恒定稍暗的房间内测试,实际情况下该模块是安装在药盒内部,所以药盒的
材料可以选择透光率弱的材料,由光线很亮也想到了为了避免药物发热,药盒材料也要考虑隔热性。做到杜绝使用
者在接触药盒时因药盒本体发热所可能造成的问题。在测试中所得到的结果大致和预期相符,满足设计要求,一切
数据误差都在可控范围内,系统正常运行,可靠性高,实用性很好。

结论

本设计以8位控制器为核心,具有短信提醒、语音提醒、三次吃药定时、开盖自动检测等功能。本设计完成的智
能药盒只需要在系统启动后设置一次,就能在长期的使用中无需其他操作,只需要提醒时刻按时吃药。本设计主要
完成工作有:
1、通过LCD1602显示实时时间,并且显示按键的控制过程,包括位置选择和时间调整,使显示界面更人性化,
2、发送短信远程吃药提醒。
3、语音提醒和光提醒。
4、开盖检测,关闭提醒、
  近年来,人口老龄化加剧,人们越来越重视健康的概念。智能药箱已成为具有实用价值和物有所值的便携式电
子设备。在文章中,您还可以了解以下优化方面:
1、在家庭式药盒的情况下,智能药盒还可以优化系统电路,使外观更简洁,减少设计按钮的数量。本设计三个按键
可采用一个按键旋钮,再配置其它能够减少资源消耗的显示模块,在使用过程中遵循一次性设置而不需其他操作的
思路,从而简化系统外观。
2、整体系统大致完成设计目标,但部分模块可以优化,也可以拓展一些更加智能化、人性化的模块,例如一般存储
的是固态药片,可以添加液态药水;同时为了避免药物过期,可在药盒内部添加温湿度传感器检测药物品质。
3、就程序设计代码而言,由于我水平和能力有限,所设计的程序逻辑和算法还没有优化到更高层次,部分代码占用
资源。该系统还能够进一步优化算法,采用最新,价格低廉的单片机,从而降低成本。
致谢
22
  毕业设计说明书是我们对大学期间所学知识的总结归纳的过程,尤其是我们要时刻加强的内容,例如查找发现
问题并分析能力,查阅参考文献能力,逻辑思维能力和总结经验能力等,这也是对自己能力的证明。在设计电路期
间,我和同学们都得到了朱开宇老师的耐心指导,特别是在这个关键时期,老师也时常网上开会交流,花费了大量
的时间和精力对设计中会出现的各种问题给我们解答,我们从中也体会到了老师的关怀。在这次设计过程中我对单
片机控制系统了解更加深入了,操作水平也得到了提高,并且能够将书上所学的知识理论与实践相结合起来,从而
为将来步入社会解决工作中遇到的问题打下了坚实的基础。在此我要对我的指导老师朱开宇表示衷心的感谢,也非
常感谢在大学四年里的授课教师,同时也对网上参考资料的作者表示感谢, 正是由于你们无私的帮助,才让我的设
计没有走太多弯路,也成就了更优秀的我。
  大学生活即将结束,又到了人生中的一大转折点,在大学四年期间,我非常感谢我的班主任武林俊 老师对我们
学习和生活上的指导和鼓励,也非常感谢王彩红老师、沈献念老师对我学习和专业知识水平的培养。大学的老师们
待我们如同儿女一样,让我们这些远离他乡的学生们也感受到了家的温暖。
同时,我非常感谢华北理工大学给我提供了这么好的学习环境和丰富的学习资源,让我能够在一个积极向上的氛围
中提高进步。在此我还要向大学期间给予我的帮助和陪伴同窗同学表示感谢。
再次对朱开宇老师的悉心指导表示感谢!
由于时间和知识水平有限,设计中不可避免会出现一些错误,恳请各位审阅老师能够悉心指正。

附录
附件A 系统原理图
在这里插入图片描述

附件B 元件清单
  
序号 规格 名称 标号 数量
1 10uF 电解电容 C1 1
2 22pF 陶瓷电容 C2, C3 2
3 850 电解电容 C4 1
4 二极管 D1 1
5 DIODE 二极管 D2 1
6 12MHZ 晶振 J1 1
7 KEY 按键 K1, K2, K3 3
8 喇叭 P1 1
9 3V 电子 P2 1
10 10K 电阻 R1, R110 2
11 10K 电位器 RT1 1
12 ST89C52 单片机 U1 1
13 LCD1602 液晶 U2 1
14 4.7K 排组 U3 1
15 SWITCH 开关 U4 1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值