【毕业设计】基于单片机的智能饮水控制系统 - 物联网 嵌入式 stm32 c51

article/2025/4/8 9:15:29

文章目录

  • 1 简介
  • 2 功能要求
  • 3 相关器件
  • 4 实现效果
  • 5 部分实现代码
  • 6 最后


1 简介

Hi,大家好,这里是丹成学长,今天向大家介绍一个学长做的单片机项目,不过这个项目是帮助企业研发的

基于单片机的智能饮水控制系统

大家可用于 毕业设计


单片机-嵌入式毕设选题大全及项目分享:

https://blog.csdn.net/m0_71572576/article/details/125409052


2 功能要求

  • 出水量达到设定值自动关水

  • 温度、湿度测量

  • 光照强度测量

  • 用水总量统计

  • NTP时间

  • 物联网,可在手机APP上远程查看室内温度、湿度、上电总次数等信息

  • 简洁易懂的UI界面

3 相关器件

在这里插入图片描述
在这里插入图片描述

4 实现效果

在这里插入图片描述
在这里插入图片描述

自己开发的APP

在这里插入图片描述

5 部分实现代码

仅部分代码

void TIM_Config(void)
{GPIO_InitTypeDef GPIO_InitStructure;TIM_TimeBaseInitTypeDef	TIM_TimeBaseInitStruct;TIM_OCInitTypeDef  TIM_OCInitStructure;TIM_BDTRInitTypeDef TIM_BDTRInitStructure;NVIC_InitTypeDef NVIC_InitStructure;// ¿ªÆô¶¨Ê±Æ÷ʱÖÓ,¼´ÄÚ²¿Ê±ÖÓCK_INT=72MRCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB | RCC_APB2Periph_TIM1, ENABLE);// Êä³ö±È½ÏͨµÀ1 GPIO ³õʼ»¯GPIO_InitStructure.GPIO_Pin =  GPIO_Pin_8 | GPIO_Pin_9  ;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOA, &GPIO_InitStructure);GPIO_InitStructure.GPIO_Pin =  GPIO_Pin_13 | GPIO_Pin_14 ;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOB, &GPIO_InitStructure);GPIO_SetBits(GPIOB, GPIO_Pin_13);GPIO_ResetBits(GPIOB, GPIO_Pin_14);TIM_DeInit(TIM1);        //½«ÍâÉèTIM1¼Ä´æÆ÷ÖØÉèΪȱʡֵ  TIM_TimeBaseInitStruct.TIM_ClockDivision = TIM_CKD_DIV1 ;    //ÉèÖÃÁËʱÖÓ·Ö¸î(Tck_tim) TIM_TimeBaseInitStruct.TIM_CounterMode = TIM_CounterMode_Up ;   //Ñ¡ÔñÁ˼ÆÊýÆ÷ģʽ(TIMÏòÉϼÆÊýģʽ)  TIM_TimeBaseInitStruct.TIM_Period = 6005 ;       //É趨¼ÆÊýÆ÷×Ô¶¯ÖØ×°Öµ,È¡Öµ·¶Î§0x0000~0xFFFF   TIM_TimeBaseInitStruct.TIM_Prescaler = 71 ;    //ÉèÖÃÓÃÀ´×÷ΪTIM3ʱÖÓƵÂʳýÊýµÄÔ¤·ÖƵֵΪ(79+1),È¡Öµ·¶Î§0x0000~0xFFFF TIM_TimeBaseInitStruct.TIM_RepetitionCounter = 0;TIM_TimeBaseInit(TIM1, &TIM_TimeBaseInitStruct ) ;       /* ¶¨Ê±Æ÷Êä³öͨµÀ1ģʽÅäÖà */TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;/* ģʽÅäÖãºPWMģʽ1 */TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;	 /* Êä³ö״̬ÉèÖãºÊ¹ÄÜÊä³ö */TIM_OCInitStructure.TIM_OutputNState = TIM_OutputNState_Enable; /* »¥²¹Í¨µÀÊä³ö״̬ÉèÖãºÊ¹ÄÜÊä³ö */TIM_OCInitStructure.TIM_Pulse = 3000;/* ÉèÖÃÌø±äÖµ£¬µ±¼ÆÊýÆ÷¼ÆÊýµ½Õâ¸öֵʱ£¬µçƽ·¢ÉúÌø±ä */TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;/* µ±¶¨Ê±Æ÷¼ÆÊýֵСÓÚCCR1_ValʱΪ¸ßµçƽ */TIM_OCInitStructure.TIM_OCNPolarity= TIM_OCPolarity_High;TIM_OCInitStructure.TIM_OCIdleState = TIM_OCNIdleState_Reset;TIM_OCInitStructure.TIM_OCNIdleState = TIM_OCNIdleState_Reset;TIM_OC1Init(TIM1, &TIM_OCInitStructure);TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;/* ģʽÅäÖãºPWMģʽ1 */TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;	 /* Êä³ö״̬ÉèÖãºÊ¹ÄÜÊä³ö */TIM_OCInitStructure.TIM_OutputNState = TIM_OutputNState_Enable; /* »¥²¹Í¨µÀÊä³ö״̬ÉèÖãºÊ¹ÄÜÊä³ö */TIM_OCInitStructure.TIM_Pulse = 3000;/* ÉèÖÃÌø±äÖµ£¬µ±¼ÆÊýÆ÷¼ÆÊýµ½Õâ¸öֵʱ£¬µçƽ·¢ÉúÌø±ä */TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;/* µ±¶¨Ê±Æ÷¼ÆÊýֵСÓÚCCR1_ValʱΪ¸ßµçƽ */TIM_OCInitStructure.TIM_OCNPolarity= TIM_OCPolarity_High;TIM_OCInitStructure.TIM_OCIdleState = TIM_OCNIdleState_Reset;TIM_OCInitStructure.TIM_OCNIdleState = TIM_OCNIdleState_Reset;TIM_OC2Init(TIM1, &TIM_OCInitStructure);/* Automatic Output enable, Break, dead time and lock configuration*/TIM_BDTRInitStructure.TIM_OSSRState = TIM_OSSRState_Enable;TIM_BDTRInitStructure.TIM_OSSIState = TIM_OSSIState_Enable;TIM_BDTRInitStructure.TIM_LOCKLevel = TIM_LOCKLevel_OFF;TIM_BDTRInitStructure.TIM_DeadTime = 5;TIM_BDTRInitStructure.TIM_Break = TIM_Break_Disable;TIM_BDTRInitStructure.TIM_BreakPolarity = TIM_BreakPolarity_High;TIM_BDTRInitStructure.TIM_AutomaticOutput = TIM_AutomaticOutput_Enable;TIM_BDTRConfig(TIM1, &TIM_BDTRInitStructure);TIM_OC1PreloadConfig(TIM1,TIM_OCPreload_Enable);TIM_OC2PreloadConfig(TIM1,TIM_OCPreload_Enable);TIM_ARRPreloadConfig(TIM1, ENABLE);/* ʹÄܶ¨Ê±Æ÷ÖØÔؼĴæÆ÷ARR */TIM_Cmd(TIM1, ENABLE);/* ʹÄܶ¨Ê±Æ÷ */TIM_CtrlPWMOutputs(TIM1, ENABLE); /* TIMÖ÷Êä³öʹÄÜ */TIM_CCxCmd(TIM1,TIM_Channel_1,TIM_CCx_Enable);TIM_CCxNCmd(TIM1,TIM_Channel_1,TIM_CCxN_Enable);TIM_CCxCmd(TIM1,TIM_Channel_2,TIM_CCx_Enable);TIM_CCxNCmd(TIM1,TIM_Channel_2,TIM_CCxN_Enable);}

单片机-嵌入式毕设选题大全及项目分享:

https://blog.csdn.net/m0_71572576/article/details/125409052


6 最后


http://chatgpt.dhexx.cn/article/pGMBJ03Y.shtml

相关文章

对嵌入式开发方向的一些思考:在物联网方向

学习知识就是为了应用,我们学习了嵌入式硬件和软件、具备一定的基础之后,是不是很想找一些简单的项目练练手?如果你有这种非常强烈的感觉的话,我相信你已经具备一定的嵌入式开发技术基础了。 接下来,你可能要犯愁了&am…

毕业设计 基于stm32的居民小区火灾检测报警系统 - 物联网 嵌入式

基于stm32的居民小区火灾检测报警系统 由 STM32F103C8T6单片机最小系DHT11LCD1602显示模块蜂鸣器MQ-2ESP8266噪声模块按键3个。 系统内可以通过1602来显示温湿度值和烟雾浓度和噪声值和它们的阈值,可以通过按键设置阈值,当任意一个实际值大于阈值时蜂鸣…

物联网嵌入式系统开发应用软件公司怎么选择

软件开发已经不是新鲜词汇,而成为当下智能科技新潮流,对于不同的企业,嵌入式软件开发会有更针对性的需求,纵观整个软件开发行业,做APP小程序网站开发的多如牛毛,而物联网应用嵌入式技术开发公司并不多&…

聊一聊物联网嵌入式芯片的内容结构

摘要:物联网嵌入式芯片,存储是数据核心之一,这个对于编程和设计的人来说又比较陌生,今天来说说MCU中的内存结构。 本文分享自华为云社区《漫谈嵌入式系统的内存》,作者:o0龙龙0o 。 前言 物联网嵌入式芯片…

5G+边缘计算 物联网嵌入式边缘计算平台

伴随着5G的来临,物联网技术的发展趋势让互连机器设备和信息量猛增,调研机构Gartner公司预测,到2025年,75%的企业生成的数据将在边缘计算设施而不是在传统数据中心创建和处理。 为满足市场对高性能边缘计算平台的应用需求&#xff…

嵌入式物联网软件开发实战

一、使用STM32CubeMx 创建物联网项目软件工程 二、STM32CubeMx 配置时钟 三、STM32CubeMx 配置GPIO 及 GPIO 相关接口在软件工程中的形式及使用 四、STM32CubeMx 配置USART 串口 五、USART 串口在物联网项目中的使用之不定长数据接收(DMA空闲中断方式) 六…

视频教程-物联网嵌入式技术应用-物联网技术

物联网嵌入式技术应用 10年计算机网络行业经验,精通计算机网络;孰悉C、C、Java、C#等语言,熟悉tcp/IP协议结构;精通华为产品,思科产品,熟悉Linux操作平台,讲解条理清晰,对知识有自己独到见解,善于发散学生的…

物联网嵌入式STM32资料大全,超100G

物联网嵌入式 STM32资料大全,超100G 本文是提供物联网,嵌入式, stm32等资料大全的,都是各类资料大全,下面图片只是网盘链接的截图,已经是有生之年系列了,别要求那么高了,自己到…

物联网嵌入式开发人员面临的5大挑战

​  开发嵌入式软件并不像以前那样“简单”。对于许多开发团队来说,创建一个独立的设备仍然经常是具有挑战性的。在物联网时代,我们开始将一切都连接起来,系统的复杂性正在飙升,传统的嵌入式开发人员发现,他们面临着…

嵌入式与物联网的特点分析,它们有什么关系?

虽然嵌入式系统已经有30多年的历史,但是原来一直隐藏在背后的,自从物联网上升为国家战略后,嵌入式系统也从后台走到前台。本文主要介绍的是嵌入式与物联网之间的关系,其次介绍了嵌入式及物联网的特点及特征,具体的跟随…

嵌入式物联网系统软硬件基础知识大全

关注、星标公众号,直达精彩内容 来源:网络素材 本文主要介绍嵌入式系统的基础知识,涉及嵌入式软件和硬件的方方面面,希望对各位有帮助。 嵌入式系统基础 1、嵌入式系统的定义 (1)定义:以应用为中…

嵌入式系统与物联网的关系

嵌入式系统与物联网的关系 一、物联网与嵌入式的基本概念物联网定义定义 1定义 2定义 3定义 4 嵌入式定义IEEE 的定义 嵌入式与物联网的区别和联系 二、从构成模型看物联网与嵌入式三、物联网时代嵌入式系统的华丽转身从计算机的历史说起嵌入式应用环境物联应用本质 从单片机到…

PHP反序列化笔记

目录 文章目录 目录private变量与protected变量序列化后的特点序列化后的字段长度前面可以加 题目解题步骤 CVE-2016-7124漏洞介绍演示代码题目解题步骤 PHP Session 反序列化PHP的3种序列化处理器安全问题当 session.auto_start=Off 时测试Demo 题目解题步骤 phar反…

2022/3/28 PHP反序列化

小迪 参考: https://www.bilibili.com/video/BV1JZ4y1c7ro?p36&spm_id_from333.880.my_history.page.click https://blog.csdn.net/Hardworking666/article/details/122373938 https://blog.csdn.net/Hardworking666/article/details/112725423 补充&#xff…

PHP反序列化漏洞-从入门到提升

目录 第一章 PHP序列化基础 1.1 PHP序列化 1.1.1 PHP序列化概述 1.1.2 标准序列化 1.1.3 自定义序列化 1.1.4 序列化存储和转发 1.2 PHP反序列化 1.2.1 标准反序列化 1.2.2 未定义类的反序列化 1.2.3 Protected、Private属性反序列化 1.3 PHP序列化相关magic函数 1…

php反序列化及__toString()

思路&#xff1a; 1./?sdata://text/plain,XXXXXX 2.include …php 3._tostring() echo unserialize(pass) echo file_get_content($this-file&#xff09; 把反序列化属性的值读取并输出 主要两个文件 index.php <?php $user $_GET["user"]; $file $_GET[…

PHP反序列化字符串逃逸

例题可看&#xff1a;https://www.cnblogs.com/v2ish1yan/articles/16118319.html 今天才学的&#xff0c;做个记录。 字符串逃逸分为两种&#xff0c;减少和增多。 主要是通过一个preg_replace()函数来进行字符串的减少和增多。 首先要知道逃逸的原理&#xff0c;就是反序…

浅析php反序列化原生类的利用

浅析php反序列化原生类的利用 如果在代码审计或者ctf中&#xff0c;有反序列化的功能点&#xff0c;但是却不能构造出完整的pop链&#xff0c;那这时我们应该如何破局呢&#xff1f;我们可以尝试一下从php原生类下手&#xff0c;php有些原生类中内置一些魔术方法&#xff0c;如…

CTF php反序列化总结

前言&#xff1a;本⼈⽔平不⾼&#xff0c;只能做⼀些类似收集总结这样的⼯作&#xff0c;本篇文章是我自己在学php反序列化写的一篇姿势收集与总结&#xff0c;有不对的地方欢迎师傅们批评指正~ php反序列化 定义&#xff1a;序列化就是将对象转换成字符串。反序列化相反&am…

PHP反序列化命令执行及防范

PHP反序列化命令执行 1、 序列化与反序列化原理 序列化&#xff08;serialization&#xff09;在计算机科学的数据处理中&#xff0c;是指将数据结构或对象状态转换成可取用格式&#xff08;例如存成文件&#xff0c;存于缓冲&#xff0c;或经由网络中发送&#xff09;&#…