1. 系统总体设计
点击链接下载protues仿真设计资料:https://download.csdn.net/download/m0_51061483/92081546
1.1 设计背景
随着人口老龄化趋势的不断加剧以及慢性疾病患者数量的逐年增加,日常用药管理逐渐成为家庭医疗的重要组成部分。尤其对于老年人或长期服药人群来说,存在记忆力下降、用药时间不规律以及误服、漏服等问题,严重影响治疗效果。因此,设计一款基于单片机的智能药物盒系统,通过定时提醒、药物管理及状态显示等功能,实现对药物的智能化管理,具有重要的现实意义。
传统药盒仅具备简单的存储功能,缺乏智能提醒与管理能力。本设计通过单片机控制,结合时钟模块、存储模块及显示模块,实现药物服用时间提醒、药物信息管理以及掉电数据保护等功能,能够显著提高用药的规范性与安全性。
1.2 系统功能设计
本系统基于单片机实现智能药物盒的多功能管理,主要功能如下:
- 定时提醒功能:用户可设置服药时间,到达设定时间后系统自动发出声光提醒;
- 药物管理功能:支持多种药物类型设置及数量管理,便于用户分类使用;
- 掉电保护功能:通过外部存储器保存关键参数,断电后仍能恢复设置;
- 信息显示功能:通过LCD显示当前时间、药物状态及提醒信息;
- 人机交互功能:通过按键实现时间设置、药物设置及系统控制;
- 系统具有良好的稳定性和可靠性,适用于家庭及医疗辅助场景。
2. 系统电路设计
2.1 单片机最小系统电路设计
本系统采用AT89C52单片机作为核心控制单元。
最小系统包括:
- 晶振电路:采用11.0592MHz晶振,为系统提供稳定时钟;
- 复位电路:采用RC复位电路,实现上电自动复位;
- 电源电路:提供稳定5V电压,确保系统可靠运行。
该模块为整个系统提供基础运行环境。
2.2 时钟模块电路设计
系统采用DS1302实时时钟芯片实现时间管理。
设计特点:
- 支持秒、分、时、日、月、年计时;
- 内置备用电池接口,实现掉电后时间持续运行;
- 通过三线串行接口与单片机通信;
- 具有较高的计时精度。
该模块用于提供定时提醒的时间基准。
2.3 存储器电路设计
为了实现掉电保护功能,系统采用外部EEPROM(如AT24C02)存储用户设置参数。
设计要点:
-
通过I2C总线与单片机通信;
-
存储内容包括:
- 服药时间;
- 药物种类;
- 药物数量;
-
断电后数据不丢失,提高系统可靠性。
2.4 LCD显示电路设计
系统采用LCD1602显示模块。
显示内容包括:
- 当前时间;
- 药物名称及数量;
- 提醒信息。
设计要点:
- 采用4位数据传输模式;
- 控制引脚包括RS、RW、EN;
- 显示清晰直观,便于用户查看。
2.5 按键输入电路设计
系统设置多个按键用于操作:
- 设置键:进入参数设置模式;
- 加键:增加时间或药物数量;
- 减键:减少参数;
- 确认键:保存设置。
设计要点:
- 使用上拉电阻;
- 连接单片机IO口;
- 软件实现消抖处理。
2.6 蜂鸣器与报警电路设计
蜂鸣器用于定时提醒。
设计方法:
- 单片机IO口控制蜂鸣器;
- 通过三极管驱动;
- 到达设定时间时发出报警信号。
同时可配合LED实现声光提示。
2.7 电源与掉电保护电路设计
系统采用双电源设计:
- 主电源为5V供电;
- RTC模块配备纽扣电池备用供电;
- EEPROM实现参数掉电保存。
该设计确保系统在断电情况下仍能保持时间与参数。
3. 系统程序设计
3.1 程序总体结构设计
系统程序采用模块化设计,主要包括时间管理、按键处理、显示控制、数据存储及报警模块。
主程序如下:
c
void main()
{
System_Init();
while(1)
{
Read_Time();
Key_Scan();
Check_Alarm();
LCD_Display();
}
}
3.2 时钟读取程序设计
c
void Read_Time()
{
DS1302_Read(&hour, &min, &sec);
}
用于获取当前时间。
3.3 定时提醒程序设计
c
void Check_Alarm()
{
if(hour == set_hour && min == set_min)
{
Buzzer = 1;
LED = 1;
}
else
{
Buzzer = 0;
LED = 0;
}
}
实现定时提醒功能。
3.4 按键处理程序设计
c
void Key_Scan()
{
if(KEY_SET == 0)
{
delay_ms(10);
if(KEY_SET == 0)
mode = !mode;
}
if(KEY_ADD == 0)
{
delay_ms(10);
if(KEY_ADD == 0)
set_hour++;
}
}
实现参数设置功能。
3.5 EEPROM存储程序设计
c
void Save_Data()
{
EEPROM_Write(0x00, set_hour);
EEPROM_Write(0x01, set_min);
}
实现掉电保护。
3.6 EEPROM读取程序设计
c
void Load_Data()
{
set_hour = EEPROM_Read(0x00);
set_min = EEPROM_Read(0x01);
}
系统启动时恢复数据。
3.7 LCD显示程序设计
c
void LCD_Display()
{
LCD_ShowString(0,0,"Time:");
LCD_ShowNum(5,0,hour,2);
LCD_ShowNum(8,0,min,2);
LCD_ShowString(0,1,"Med:");
LCD_ShowNum(5,1,drug_num,2);
}
显示时间与药物信息。
3.8 药物管理程序设计
c
void Drug_Manage()
{
if(take_flag)
{
if(drug_num > 0)
drug_num--;
}
}
用于药物数量管理。
4. 系统总结
本系统基于51单片机设计,实现了智能药物盒的多功能管理。通过时钟模块实现定时提醒,通过EEPROM实现掉电保护,通过LCD显示实现信息交互,使系统具备较高的实用性与可靠性。
在电路设计方面,各模块结构清晰,功能独立;在程序设计方面,采用模块化设计思想,使系统逻辑清晰、扩展性强。
系统能够有效解决用户漏服、误服问题,提高用药规范性,具有良好的应用前景。