功能:
0.本项目采用STM32F103C8T6作为单片机系统的控制MCU
1.该设计具备四个功能按键可设置时钟和用药时间
2.系统具备三组用药时间,可通过按键设置某时间对应多少药片
3.一旦时间达到,系统会驱动继电器打开药盒,本设计采用的是5V的电磁铁来模拟演示药盒打开的过程
4.采用DC002作为电源接口可直接输入5V给整个系统供电
5.本系统同时具备了WiFi模块,可通过手机端监测该系统的运行情况

原理图:

PCB :

主程序:

#define __MIAN_C
#include "main.h"// 局部变量,用于保存转换计算后的电压值
CreatByte Flag;
enum _MODE_DF_ dispMode;char dis[16];
volatile u8 setIndex = 0;
volatile u8 dosage[3][3] = {{1,1,1},{2,2,2},{3,3,3}}; //用药量
volatile u8 timeLimit[3][2] = {{9,0},{12,0},{18,0}};
volatile u8 medicineFlag = 0;int main(void)
{relayFlag1 = 0; //开锁标志1relayFlag2 = 0; //开锁标志2// 使用HSI,SYSCLK = 4M * RCC_PLLMul_x, x:[2,3,...16],最高是64MHHSI_SetSysClock(RCC_PLLMul_2); //使用内部8MHz晶振,并设置PLL输出为8MHz// 端口初始化GPIO_Config();GENERAL_TIM_Init();USART1_Config();USART3_Config();DelayMs(1000);Usart_SendString(DEBUG_USART3, "AT+CIPMUX=1\r\n");//打开多连接DelayMs(1000);Usart_SendString(DEBUG_USART3, "AT+CIPSERVER=1,8080\r\n");//建立服务 端口号为8080DelayMs(1000);Key_GPIO_Config();DelayMs(200);DS1302_Init();DelayMs(200);LCD_GPIO_Init();LCD12864_Init();LCD12864_Clear();DelayMs(200);while (1){if (refreshFlag == 1){refreshFlag = 0;if (dispMode == NORMAL){DS1302_ReadTime();RelayCtrl();DispNormal(medicineFlag);}}KeyProcess();}
}void RelayCtrl(void)
{if ((timeBufDec[4] == timeLimit[0][0]) && (timeBufDec[5] == timeLimit[0][1]) && timeBufDec[6] == 0) //用药时间0到{relayFlag1 = 1;medicineFlag = 1;}else if ((timeBufDec[4] == timeLimit[1][0]) && (timeBufDec[5] == timeLimit[1][1]) && timeBufDec[6] == 0) //用药时间1到{relayFlag1 = 1;medicineFlag = 2;}else if ((timeBufDec[4] == timeLimit[2][0]) && (timeBufDec[5] == timeLimit[2][1]) && timeBufDec[6] == 0) //用药时间2到{relayFlag1 = 1;medicineFlag = 3;}// else// {//     // relayFlag1 = 0;//     medicineFlag = 0;// }if (relayFlag1 == 1 || relayFlag2 == 1) // relay打开{RELAY_ON;relayFlag1 = 0;relayFlag2 = 0;}else{RELAY_OFF;}
}void DispNormal(u8 i)
{static unsigned int cnt = 0;if (i != 0) //吃药时间到{LCD12864_DrawHz(0, 0, "该吃药了!      ");LCD12864_DrawHz(0, 1, "药物一: ");sprintf(dis, "%2d", dosage[i-1][0]);LCD12864_DrawNum(4, 1, dis);LCD12864_DrawHz(5, 1, "片    ");LCD12864_DrawHz(0, 2, "药物二: ");sprintf(dis, "%2d", dosage[i-1][1]);LCD12864_DrawNum(4, 2, dis);LCD12864_DrawHz(5, 2, "片    ");LCD12864_DrawHz(0, 3, "药物三: ");sprintf(dis, "%2d", dosage[i-1][2]);LCD12864_DrawNum(4, 3, dis);LCD12864_DrawHz(5, 3, "片    ");cnt++;if (cnt > 60){medicineFlag = 0;cnt = 0;}else if (cnt == 1 || cnt == 20 || cnt == 40){printf("该吃药了   药物一   %d 片   药物二   %d 片   药物三   %d 片", dosage[i-1][0], dosage[i-1][1], dosage[i-1][2]); //语言播报}}else{LCD12864_DrawHz(0, 0, "    当前时间    ");sprintf(dis, "  20%02d/ %02d/ %02d  ", timeBufDec[1], timeBufDec[2], timeBufDec[3]);LCD12864_DrawNum(0, 1, dis);sprintf(dis, "    %02d: %02d: %02d  ", timeBufDec[4], timeBufDec[5], timeBufDec[6]);LCD12864_DrawNum(0, 2, dis);LCD12864_DrawHz(0, 3, "                ");}
}void DispSetRealTime(u8 setIndex)
{LCD12864_DrawHz(0, 0, "    更改时间    ");sprintf(dis, "  20%02d/ %02d/ %02d  ", timeBufDec[1], timeBufDec[2], timeBufDec[3]);LCD12864_DrawNum(0, 1, dis);sprintf(dis, "    %02d: %02d: %02d  ", timeBufDec[4], timeBufDec[5], timeBufDec[6]);LCD12864_DrawNum(0, 2, dis);LCD12864_DrawHz(0, 3, "                ");if (setIndex == 0){LCD12864_Cursor(0);}else{LCD12864_Cursor(1);}switch (setIndex){case 1: LCD12864_SetXY(2, 1); break;case 2: LCD12864_SetXY(4, 1); break;case 3: LCD12864_SetXY(6, 1); break;case 4: LCD12864_SetXY(2, 2); break;case 5: LCD12864_SetXY(4, 2); break;case 6: LCD12864_SetXY(6, 2); break;default: ;}
}void DispSetMedicationTime(u8 i, u8 setIndex)
{LCD12864_DrawHz(0, 0, "用药时间:");sprintf(dis, "%02d: %02d", timeLimit[i-1][0], timeLimit[i-1][1]);LCD12864_DrawNum(5, 0, dis);LCD12864_DrawHz(0, 1, "药物一: ");sprintf(dis, "%2d", dosage[i-1][0]);LCD12864_DrawNum(4, 1, dis);LCD12864_DrawHz(5, 1, "片");LCD12864_DrawHz(0, 2, "药物二: ");sprintf(dis, "%2d", dosage[i-1][1]);LCD12864_DrawNum(4, 2, dis);LCD12864_DrawHz(5, 2, "片");LCD12864_DrawHz(0, 3, "药物三: ");sprintf(dis, "%2d", dosage[i-1][2]);LCD12864_DrawNum(4, 3, dis);LCD12864_DrawHz(5, 3, "片");if (setIndex == 0){LCD12864_Cursor(0);}else{LCD12864_Cursor(1);}switch (setIndex){case 1: LCD12864_SetXY(5 , 0); break;case 2: LCD12864_SetXY(7 , 0); break;case 3: LCD12864_SetXY(4 , 1); break;case 4: LCD12864_SetXY(4,  2); break;case 5: LCD12864_SetXY(4 , 3); break;default: ;}
}/*********************************************END OF FILE**********************/

实物演示视频:
https://www.bilibili.com/video/BV1kT4y1z7S6/

基于STM32单片机的智能药盒带语音播报原理图程序相关推荐

  1. 基于stm32单片机的智能鱼缸设计(实物+原理图+源码)

    资料编号:059     功能如下: 1.采用stm32单片机作为控制CPU,OLED显示万年历和温度 2.智能加热.加氧.加二氧化碳 3.采用智能自动开灯 具体功能请看下方演示视频 59-基于stm ...

  2. 基于STM32单片机水质PH值电导率TDS检测原理图程序

    功能: 0.本项目采用STM32F103C8T6作为单片机系统的控制MCU 1.本系统具备PH值测量.TDS电导率测量,两部分的测量模块均是我们自己设计的,测量精度经实际测试反馈不错. 2.系统采用的 ...

  3. 基于STM32单片机的智能停车场车位管理系统设计

    摘  要 通过调查发现,现有的许多公共场所的停车位管理落后,智能化程度不高.为顺应现代自动化狂潮的发展趋势,本项目以STM32单片机为主控芯片,基于RFID智能识别技术,设计了一个具有IC识别的智能停 ...

  4. 基于STM32单片机的智能家居测量系统设计

    当今的家庭生活面临着各种环境和健康问题,周围的生活参数存在潜在的隐患,包括室温.气体中有害物质的浓度等.在新时代,人们越来越关注健康及其相关因素.随着微电子技术的应用,电器的普及,以及单片机和传感器性 ...

  5. 基于STM32单片机的智能手环设计(OLED显示)(Proteus仿真+程序+报告)

    编号8 基于STM32单片机的智能手环设计(OLED显示) 功能描述: 由 STM32单片机+按键模拟计步+RTC时钟模块+DS18B20温度传感器模块+心率采集模块+串口模块+OLED显示模块+键盘 ...

  6. 基于STM32单片机的智能加湿器(Proteus仿真+程序)

    标号:11 基于STM32单片机的智能加湿器 功能描述: 11.基于STM32单片机的智能加湿器 本设计由STM32F103单片机最小系统+DHT11温湿度传感器+1602液晶显示模块+声光报警模块+ ...

  7. 基于单片机串口远程多路温湿度采集仿真-基于单片机ADC0809八路电压采集系统设计-基于单片机16x32点阵多模式显示仿真设计-基于单片机餐厅呼叫控制系统仿真设计-基于STM32单片机的智能水杯设计

    1220基于单片机ADC0809八路电压采集系统设计-毕设课设资料 数码管显示,测量八路电压表. #define addo (5.0/255.0) #define zero 0.005 //用于校准A ...

  8. 基于STM32单片机的智能家居烟雾温度火灾防盗报警的设计与实现

    功能介绍 以STM32单片机作为主控系统: LCD1602液晶显示屏来显示显示测得的值: SR501人体红外感应是否有人进行防盗: 通过烟雾传感器MQ-2获取前的烟雾值: 通过DHT11温湿度传感器来 ...

  9. 基于STM32物联网WiFi智能家居控制系统设计(原理图+源代码+系统资料)

    基于STM32物联网WiFi智能家居控制系统设计(原理图+源代码+系统资料) 原理图:Altium Designer 程序编译器:keil 5 编程语言:C语言 设计编号:C0053 主要功能: 1. ...

  10. 基于51单片机的智能鱼缸设计。 有原理图,程序,原文,可代做实物。 才用STC12C5A60S2,最新款国产51单片机

    基于51单片机的智能鱼缸设计. 有原理图,程序,原文,可代做实物. 才用STC12C5A60S2,最新款国产51单片机. 本系统设计的主要是基于单片机为核心,设计一款集温度检测.恒温控制.步进电机控制 ...

最新文章

  1. mysql+dump+选项_详解MySQL数据备份之mysqldump使用方法
  2. MySQL 优化实战记录
  3. 美团点评数据产品专家冷戈:如何利用数据提高用户体验
  4. python 九宫重排_[蓝桥杯][历届试题]九宫重排 (Python代码)(bfs+集合)
  5. hello-world
  6. python代码加密cython_python通过cython实现加密
  7. access做mysql前端,ASP+ACCESS留言板制作详细教程
  8. 矩阵分析及应用(1-2章)
  9. IEEE 1588-PTP简介
  10. java基本数据类型存放在哪?
  11. android apk参数错误,Android adb安装apk时出现报错Invalid APK file如何解决
  12. 火狐浏览器找不到书签了
  13. 笔耕不辍 elementUI el-tree实现懒加载和直接查询实现
  14. SuperMap webgl 中使用的gltf模型制作方法
  15. 仿京东图片放大镜动效
  16. [XCTF-Reverse] 入门1-6
  17. 阿里云ECS服务器+WordPress快速搭建个人博客
  18. [Error] iostream.h: No such file or directory解决办法
  19. 蜜罐诱捕——KFSensor
  20. WebSocket和socket介绍

热门文章

  1. LG化学成为海水淡化领域膜领导品牌后,大举进军苦咸水反渗透膜市场
  2. gis环境设置在哪_怎样解决GIS长距离母线筒的位移问题?
  3. 淘宝数据分析实战篇(附源码)
  4. Oracle基础梳理之TO_CHAR()-No5
  5. 如何在xshell中导入xsh
  6. 人体工程学枕头行业调研报告 - 市场现状分析与发展前景预测
  7. 画fits图像上的极小值点
  8. 服务器装win7找不到硬盘驱动,Windows 7安装问题时找不到硬盘驱动器怎么办
  9. JRE瘦身 制作小工具
  10. 哒哒租车系统(慕课网学习)