【毕业设计】8-基于STM32的水质/浊度检测仪设计与实现(原理图+源码+实物照片+答辩论文)

文章目录

  • 【毕业设计】8-基于STM32的水质/浊度检测仪设计与实现(原理图+源码+实物照片+答辩论文)
    • 任务书
    • 设计说明书
      • 摘要
      • 设计框架架构
      • 设计说明书及设计文件
      • 源码展示

任务书

主要内容:
1.以STM32单片机为核心,配合水质模块;
2.主要完成系统的 功能控制、状态显示、信息检测以及报警硬件组建所需要的单片机和传感器等元器件的选择;
3.完成系统控制的软件设计编程;
4.实现对水质检测、温度检查、预警的功能。
方法和要求:
系统的方案及总体设计:设计的主要内容是完成模块电路图和电路板的绘制,完成对应程序的编写,实现远程数据的传输,并完成控制软件设计和电路图纸的绘制与设计。包含:
1.总体方案的确定;2.硬件的选择;3.各个模块电路的设计;4.软件部分的设计;5.调试运行;
资料链接

原理图工程文件
PCB工程文件
源码工程文件
实物照片
答辩论文低重复率,23035字

设计说明书

摘要

质检测技术与开发应用都涉及到传感器技术,电气控制技术以及智能化控制技术。智能化控制技术是一门综合性的技术性学科,在当代的研究控制领域中也变得越发广泛。在本次设计一款水质检测设备。本设计需要实现主要完成系统的能控制、状态显示、信息检测以及报警硬件组建所需要的单片机和传感器等元器件的选择;完成系统控制的软件设计编程;实现对水质检测、温度检测、预警的功能。需要对系统功能规划系统设计完成系统的硬件电路部分、软件编程部分、焊接组装部分、调试测试部分,最终完成本次论文的研究与设计。
本次系统主要有硬件和软件两个部分组成。硬件部分由STM32单片机最小系统单元,温度检测电路单元,水质检测单元报警单元,人机交互单元,电源单元,液晶显示器单元组成,在设计上硬件需要考虑到系统的稳定性以及可靠性。软件部分通过对系统软件总流程图绘制,并绘制各个子控制驱动再对驱动程序编写完成系统程序的设计。在硬件与软件的设计上选择按照功能性分区设计,使设计有条理运行可靠。系统设计制作实物调试完成。后完成了温度检测和水浊度检测,并可以调节阈值实现对系统的报警自定义设置防止误报。
系统在设计时充分考虑到了系统的整体性价比已经功能性,在完成了功能的条件下预留了功能接口可以对系统功能拓展。并且此设计紧跟社会发展趋势,与健康医疗行业关联 具有推广意义。

设计框架架构


前 言 1
第一章 绪论 2
第一节 研究背景 2
第二节 研究意义 3
第三节 国家水质标准 3
第四节 传感器发展介绍 4
第五节 本文的主要研究内容 7
第六节 本章小结 8
第二章 水质检测系统方案 9
第一节 系统实现功能分析 9
第二节 系统设计思路 9
第三节 主控制器选型 10
第四节 主要元器件介绍 10
一、水质检测模块 11
二、温度传感器 13
第五节 本章小结 15
第三章 水质检测硬件电路设计 16
第一节 STM32最小系统板介绍 16
第二节 电源电路设计 17
第三节 水质检测电路设计 18
第四节 温度传感器电路设计 19
第五节 OLED显示电路设计 20
第六节 系统总电路图 21
第七节 本章小结 22
第四章 水质检测软件设计 23
第一节 Keil MDK软件介绍 23
第二节 软件主程序设计 24
一、主程序设计流程 24
二、主程序源码 25
第三节 OLED显示程序设计 26
一、OLED显示程序流程 26
二、OLED显示程序源码 28
第四节 水质检测程序设计 29
一、水质检测程序程序流程 29
二、水质检测程序程序源码 31
第五节 温度检测程序设计 32
一、温度检测程序流程 32
二、温度检测程序源码 33
第六节 本章小结 34
第五章 水质检测系统实现 35
第一节 实物焊接与调试 35
第二节 系统功能测试 37
一、水质检测功能测试 37
二、温度检测测试 38
第三节 本章小结 40
总 结 41
致 谢 42
参考文献 43
附 录 45
一、英文原文 45
二、英文翻译 48
三、工程图纸 51
四、源代码 52

设计说明书及设计文件


字数:23035字

源码展示

#include "delay.h"
#include "sys.h"
#include "oled.h"
#include "led.h"
#include "usart.h"
#include "adc.h"
#include "ds18b20.h"
#include "temp.h"
#include "timer.h"
#define ARRY_LENGTH 10
#define median_filtering_length 3
float num[2];16 median_filtering(void);int main(void){  float temperature;      //温度值                                 float hui;         //H2采集的数字量delay_init();             //延时函数初始化   NVIC_Configuration();//设置NVIC中断分组2:2位抢占优先级,2位响应优先级          Adc_Init();          //AD初始化   uart_init(9600);    //串口初始化Timer4_Init(4999,7199);       OLED_Init();               //初始化OLED  OLED_Clear();          //Clear screenLED_Init();while(DS18B20_Init()) //DS18B20初始化    {OLED_ShowString(0,0,"DS18B20 Error",16); //初始化失败,检查连线delay_ms(200);                                                       //延时等待数据稳定} OLED_Clear();                                                   //清屏while(1){   OLED_ShowString(0,0,"temperature:",16);temperature=DS18B20_Get_Temp();                       //采集温度  temperature=temperature/10;OLED_ShowNum(0,2,temperature,4,16);             //显示温度printf("温度:%d  \r\n",(int)temperature);if(temperature>25){LED2=0;}else LED2=1;       hui=median_filtering();hui=hui*(3.3/4096);hui = hui*100/3.3;if(hui > 100) hui = 100;hui=100-hui;OLED_ShowString(0,4,"median:",16);OLED_ShowNum(0,6,hui,4,16);            //显示浑浊度printf("浑浊度:%d  \r\n",(int)hui);if(hui>41)LED3=0;else LED3=1;  }
}
u16 median_filtering(){int senseV[median_filtering_length];int i,k; for(i = 0; i < median_filtering_length; i++){senseV[i] = Get_Adc_Average(6,5);delay_ms(3);}for(i = 0; i < median_filtering_length; i++ ){for(k = i; k <median_filtering_length; k++ ){if(senseV[i] > senseV[k]){int tmp = senseV[i];senseV[i] = senseV[k];senseV[k] = tmp;}}  }return senseV[median_filtering_length/2];
}
#include "ds18b20.h"
#include "delay.h"
//复位DS18B20
void DS18B20_Rst(void)
{                 DS18B20_IO_OUT(); //SET PA0 OUTPUTDS18B20_DQ_OUT=0; //拉低DQdelay_us(750);    //拉低750usDS18B20_DQ_OUT=1; //DQ=1 delay_us(15);     //15US
}
//等待DS18B20的回应
//返回1:未检测到DS18B20的存在
//返回0:存在
u8 DS18B20_Check(void)
{   u8 retry=0;DS18B20_IO_IN();//SET PA0 INPUT  while (DS18B20_DQ_IN&&retry<200){retry++;delay_us(1);};    if(retry>=200)return 1;else retry=0;while (!DS18B20_DQ_IN&&retry<240){retry++;delay_us(1);};if(retry>=240)return 1;      return 0;
}
//从DS18B20读取一个位
//返回值:1/0
u8 DS18B20_Read_Bit(void)            // read one bit
{u8 data;DS18B20_IO_OUT();//SET PA0 OUTPUTDS18B20_DQ_OUT=0; delay_us(2);DS18B20_DQ_OUT=1; DS18B20_IO_IN();//SET PA0 INPUTdelay_us(12);if(DS18B20_DQ_IN)data=1;else data=0;   delay_us(50);           return data;
}
//从DS18B20读取一个字节
//返回值:读到的数据
u8 DS18B20_Read_Byte(void)    // read one byte
{        u8 i,j,dat;dat=0;for (i=1;i<=8;i++) {j=DS18B20_Read_Bit();dat=(j<<7)|(dat>>1);}                          return dat;
}
//写一个字节到DS18B20
//dat:要写入的字节
void DS18B20_Write_Byte(u8 dat)     {             u8 j;u8 testb;DS18B20_IO_OUT();//SET PA0 OUTPUT;for (j=1;j<=8;j++) {testb=dat&0x01;dat=dat>>1;if (testb) {DS18B20_DQ_OUT=0;// Write 1delay_us(2);                            DS18B20_DQ_OUT=1;delay_us(60);             }else {DS18B20_DQ_OUT=0;// Write 0delay_us(60);             DS18B20_DQ_OUT=1;delay_us(2);                          }}
}
//开始温度转换
void DS18B20_Start(void)// ds1820 start convert
{                                          DS18B20_Rst();      DS18B20_Check();  DS18B20_Write_Byte(0xcc);// skip romDS18B20_Write_Byte(0x44);// convert
}
//初始化DS18B20的IO口 DQ 同时检测DS的存在
//返回1:不存在
//返回0:存在
u8 DS18B20_Init(void)
{GPIO_InitTypeDef  GPIO_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);  //使能PORTG口时钟 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;                //PORTG.11 推挽输出GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;          GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOA, &GPIO_InitStructure);GPIO_SetBits(GPIOA,GPIO_Pin_0);    //输出1DS18B20_Rst();return DS18B20_Check();
}
//从ds18b20得到温度值
//精度:0.1C
//返回值:温度值 (-550~1250)
short DS18B20_Get_Temp(void)
{u8 temp;u8 TL,TH;short tem;DS18B20_Start ();                    // ds1820 start convertDS18B20_Rst();DS18B20_Check();   DS18B20_Write_Byte(0xcc);// skip romDS18B20_Write_Byte(0xbe);// convert        TL=DS18B20_Read_Byte(); // LSB   TH=DS18B20_Read_Byte(); // MSB             if(TH>7){TH=~TH;TL=~TL; temp=0;//温度为负  }else temp=1;//温度为正       tem=TH; //获得高八位tem<<=8;    tem+=TL;//获得底八位tem=(float)tem*0.625;//转换     if(temp)return tem; //返回温度值else return -tem;
} 

【毕业设计】8-基于STM32的水质_浊度检测仪设计与实现(原理图+源码+实物照片+答辩论文)相关推荐

  1. 计算机毕业设计springboot基于大数据的疫情追踪系统的设计和实现rva1s源码+系统+程序+lw文档+部署

    计算机毕业设计springboot基于大数据的疫情追踪系统的设计和实现rva1s源码+系统+程序+lw文档+部署 计算机毕业设计springboot基于大数据的疫情追踪系统的设计和实现rva1s源码+ ...

  2. 计算机毕业设计JAVA基于微服务架构的设备管理系统的设计与实现mybatis+源码+调试部署+系统+数据库+lw

    计算机毕业设计JAVA基于微服务架构的设备管理系统的设计与实现mybatis+源码+调试部署+系统+数据库+lw 计算机毕业设计JAVA基于微服务架构的设备管理系统的设计与实现mybatis+源码+调 ...

  3. 【毕业设计】27-基于单片机的家庭监控及防盗报警_热释电报警_人体系统工程设计(原理图+源代码+仿真+实物照片+答辩论文)

    [毕业设计]27-基于单片机的家庭监控及防盗报警/热释电报警/人体系统工程设计(原理图+源代码+仿真+实物照片+论文) 文章目录 [毕业设计]27-基于单片机的家庭监控及防盗报警/热释电报警/人体系统 ...

  4. 毕业设计之 - 基于java的CRM客户关系管理系统的设计与实现【源码+论文】

    文章目录 前言 一.项目设计 1. 模块设计 数据库设计 2. 实现效果 二.部分源码 项目源码 前言 今天学长向大家分享一个 java web 毕业设计 项目: 基于java web 的CRM客户关 ...

  5. 计算机毕业设计springboot基于疫情背景下的新型点餐送餐系统bpe1s源码+系统+程序+lw文档+部署

    计算机毕业设计springboot基于疫情背景下的新型点餐送餐系统bpe1s源码+系统+程序+lw文档+部署 本源码技术栈: 项目架构:B/S架构 开发语言:Java语言 开发软件:idea ecli ...

  6. java计算机毕业设计ssm基于Vue的校园电脑租赁系统设计与开发19xy6(附源码、数据库)

    java计算机毕业设计ssm基于Vue的校园电脑租赁系统设计与开发19xy6(附源码.数据库) 项目运行 环境配置: Jdk1.8 + Tomcat8.5 + Mysql + HBuilderX(We ...

  7. 1-基于单片机的城市轨道交通列车超速防护系统_里程表设计(原理图+PCB+源码+仿真工程+答辩论文)

    1-基于单片机的城市轨道交通列车超速防护系统_里程表设计(原理图+PCB+源码+仿真工程+答辩论文) 文章目录 1-基于单片机的城市轨道交通列车超速防护系统_里程表设计(原理图+PCB+源码+仿真工程 ...

  8. 17-基于单片机的矿井提升机_步进电机控制装置设计(原理图+仿真+源代码+实物图+答辩论文+答辩PPT)

    17-基于单片机的矿井提升机_步进电机控制装置设计(原理图+仿真+源代码+实物图+答辩论文+答辩PPT) 文章目录 17-基于单片机的矿井提升机_步进电机控制装置设计(原理图+仿真+源代码+实物图+答 ...

  9. 【php毕业设计】基于php+mysql的成绩查询系统设计与实现(毕业论文+程序源码)——成绩查询系统

    基于php+mysql的成绩查询系统设计与实现(毕业论文+程序源码) 大家好,今天给大家介绍基于php+mysql的成绩查询系统设计与实现,文章末尾附有本毕业设计的论文和源码下载地址哦. 需要下载开题 ...

最新文章

  1. 【分块】#6277. 数列分块入门 1(区间修改、单点查询)
  2. php趣味小程序,php常用小程序
  3. 1毛钱的CDN你家的网站会用吗?
  4. ReplaceForm.cs
  5. python有道翻译-使用python2爬取有道翻译
  6. vysor原理以及Android同屏方案
  7. 2019中韩版权研讨会举行 网络成版权保护主战场
  8. 《美团编程题》丢失的三个数
  9. 施密特触发器(Schmitt Trigger)?
  10. 机器人砖机视频_全自动透水砖机生产线需严格遵守的标准工艺流程
  11. Pomelo:网易开源基于 Node.js 的游戏服务端框架
  12. ajax=1,ajax专栏1
  13. JAVA过滤器的使用(Filter)
  14. 墨者学院——密码学加解密实训(Base64转义)
  15. cgroup: Control Group 分析 转载
  16. 项目管理课程体系——世纪德本PMCD品牌课程
  17. 删库跑路大全 删库跑路
  18. MapReduce实现倒排索引(Inverted Index)
  19. CSDN自动展开全文的插件
  20. 足球一代又一代得青春

热门文章

  1. 云帆加速扶凯:坚守本源 做技术流的CDN
  2. 阿里,淘宝,天猫,京东2012年的大概销售额
  3. Redis学习笔记(数据结构篇)String
  4. 数据库:一条sql语句查询每门课程都大于80分的学生姓名
  5. Milvus 群星闪耀时|又一个小目标达成 :社区正式突破 15,000 星!
  6. VirtualBox 安装增强功能失败 解决方法
  7. android 5.0 pie,Android各版本份额占比出炉:Android Pie仍未知
  8. 03-stable diffusion国风小姐姐
  9. 遍历文件夹打印所有文件名
  10. 技术人才的出路在哪里,5种选择和2种思路