3-基于stm32单片机水位检测测量报警LCD1602显示程序源码原理图元件清单

2023-11-20

功能介绍:采用stm32单片机+电位器+LCD1602显示屏+蜂鸣器+按键,通过电位器来模拟当前的水位高度,通过扭转电位器来改变水位高度,并且显示到屏幕上,通过按键设置上限值和下限值,超过值蜂鸣器进行报警,STM32 ADC是一种高精度、高性能的模拟信号采集器。它能够将外部的模拟信号转换成数字信号,然后进行数字信号处理。STM32 ADC采用的是逐次逼近式转换(SAR)技术,这种技术的采集速度相比其他采样技术更快,动态性能更高。全部资料都经过实物验证,程序有中文注释,新手容易看懂,资料分享下载链接:设计资料合集

3-基于stm32单片机水位检测测量报警LCD1602显示(程序+原理图+元件清单+演示视频)

//程序中文注释,新手容易看懂
void PWM_DAC_Set(u16 vol)
{
	float temp=vol;
	temp/=100;
	temp=temp*256/3.3;
	TIM_SetCompare1(TIM1,temp);
}



 int main(void)
 {	 
	u16 adcx,b,adcx1;

	u8 temperature=20;  	    
	u8 humidity=80;  	
		delay_init();	    	 //延时函数初始化	  
		LED_Init();			     //LED端口初始化
	  TIM3_Int_Init(4999,7199);   
		LCD1602_Init();
	 	KEY_Init();				  //KEY初始化
		Adc_Init();		  		//ADC初始化
	while(1)
	{	
if(KEY0==0)
{
temperature++;
	if(temperature>49) temperature=1;
}
if(KEY1==0)
{
humidity++;
	if(humidity>99) humidity=50;
}
		adcx=Get_Adc_Average(ADC_Channel_8,10);  		//得到ADC转换值	  
		adcx=(float)adcx*(3.3/4096)*33;
if(adcx>100) adcx=100;
		LCD_Write_Command(0x80);//第一行的首地址


			LCD_Write_Date(' ');
			LCD_Write_Date(' ');
			LCD_Write_Date(' ');
			LCD_Write_Date(' ');
			LCD_Write_Date('H');
			LCD_Write_Date('=');
			 LCD_Write_Date(adcx%1000/100+0x30);	//显示水位百位	

			 LCD_Write_Date(adcx%100/10+0x30);    //显示水位十位

			 LCD_Write_Date(adcx%10+0x30);        //显示水位个位

			 LCD_Write_Date('c');
			 LCD_Write_Date('m');

		
		
		
		LCD_Write_Command(0x80+0x40);//显示第二行
		LCD_Write_Date('D');
		LCD_Write_Date(':');
		LCD_Write_Date(temperature%100/10+0x30);
		LCD_Write_Date(temperature%10+0x30);
		LCD_Write_Date('c');
		LCD_Write_Date('m');
		LCD_Write_Date(' ');
		LCD_Write_Date(' ');

		LCD_Write_Date('G');
		LCD_Write_Date(':');
		LCD_Write_Date(humidity%100/10+0x30);
		LCD_Write_Date(humidity%10+0x30);
		LCD_Write_Date('c');
		LCD_Write_Date('m');

if(adcx<temperature||adcx>humidity)
{
	LED0=1;
	BEEP=0;
}
else 
{
	LED0=0;
	BEEP=1;
}

}		
	
 }

//定时器3中断服务程序
void TIM3_IRQHandler(void)   //TIM3中断
{
	if (TIM_GetITStatus(TIM3, TIM_IT_Update) != RESET) //检查指定的TIM中断发生与否:TIM 中断源 
		{
		TIM_ClearITPendingBit(TIM3, TIM_IT_Update  );  //清除TIMx的中断待处理位:TIM 中断源 
		buf++;
			if(buf>2)
			{
				buf=0;
				if(s==0)//1个小时计时
				{
				t++;
				}
				
			if(s==1)//5分钟倒计时
			{
			t--;
			if(t<0) t=0;
			}

stm32单片机最小系统讲解:
电源
电就是MCU要吃的饭,不吃饭,stm32芯片肯定不能工作。
stm32最小系统板需要5v和3.3v两种电压,一般可以直接通过USB提供5v电压,也可以用电源适配器提供5V电压。而3.3v电压可以通过稳压芯片如ASM1117-3.3v等,把5v电压降为3.3v输出。


USB接口,提供的5v电压经过ASM1117-3.3v后降为3v3,(10*10^4pF=0.1u)用于电源滤波,高频滤波用小电容,低频滤波用大电容。D3是一个led用以指示电源工况,其上的510R即510.0Ω用以限流,防止led灯烧坏。
USB接口,提供5v电压,同时它也是一个模拟串口,其D-和D+引脚与ch340相应引脚连接构成一个串口设备。
stm32吃的是3v3将其VDD和VSS引脚分别连接到3v3和GND,就解决了stm32的吃饭问题。

注意:VBAT是stm32芯片的备用3.3v电源输入端,当没有备用电源是也需要将VBAT接到VDD上去。
VDDA和VSSA是模拟电源输入口,用以给stm32芯片内部ADC,复位电路供电因此必须分别接到VDD和VSS上。

复位电路
人工作久了容易自闭、精神恍惚,这时需要睡一觉就以重新焕发活力。stm32工作久了也容易“精神恍惚”————程序跑飞,也需要复位。


stm32的NRST引脚是复位信号接收引脚与RESET相连,芯片低电平复位。如上图所示,当芯片刚上电时,电容充电导通,此时RESET=0,芯片复位;当按下复位按钮时,RESET接地,芯片复位。

晶振电路
晶振是芯片的心跳,每一次脉冲激励芯片执行一条指令,因此晶振的重要性不言而喻。


stm32的晶振电路,8M无源晶振,其中(1M)用于稳定晶振的脉冲波形,(20P)和(20P)一方面构成晶振起振的必要回路,另一方面匹配电容,同时还具有调节晶振电路频率的作用。

注意:OSC32IN是外部32.768K晶振输入口,可以直接接时钟信号,也可以不洁作IO用。OSCIN是外部系统时钟输入信号,可以接时钟信号,也可以不接做IO口用,此时stm32用芯片内部的RC电路起振产生时钟信号。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

3-基于stm32单片机水位检测测量报警LCD1602显示程序源码原理图元件清单 的相关文章

  • Prim算法解决修路问题

    普里姆算法 Prim算法 图论中的一种算法 可在加权连通图里搜索最小生成树 意即由此算法搜索到的边子集所构成的树中 不但包括了连通图里的所有顶点 英语 Vertex graph theory 且其所有边的权值之和亦为最小 普里姆算法和Kru
  • storm集成kafka简单使用示例2

    StormKafkaTopo java package stormUse stormUse import java util Properties import org apache storm Config import org apac
  • 9.2 单片机上下拉电阻

    前边似乎我们很多次提到了上拉电阻 下拉电阻 具体到底什么样的电阻算是上下拉电阻 上下拉电阻都有何作用呢 上拉电阻就是将不确定的信号通过一个电阻拉到高电平 同时此电阻也起到一个限流作用 下拉就是下拉到低电平

随机推荐

  • app id(wildcard ID和explicit ID)

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 最近做ios游戏的平台相关的工作 平台商要求把我们产品的bundle id加上他们的标记 比如我们的bundle id叫 com lc test 如果我上CSDN的平台 就
  • CleanMyMac X4.14.1苹果Mac电脑系统最好用的系统清理工具

    macOS 平台的知名系统清理应用 CleanMyMac 在经历了一段时间的beta测试后 全新设计的 CleanMyMac X 正式上线 与 CleanMyMac3相比 新版本的 UI 设计焕然一新 采用了完全不同的风格 除了设计上的变化
  • gdb attach 方法

    第一步 获得正在运行的进程的进程号 程序编译时要有 g参数 第二步 gdb attach 根据上一步获得进程号 现在attach上去 此处可stop暂停程序 第三步 打断点 gdb有两种打断点的方式 b 行号 如果是当前文件 则直接加上行号
  • 用wordpress编辑网站使页面中的图片全屏展示和全屏轮播展示

    在利用wordpress建立网站中 页面中的bannner图如何使其全屏展示以及如何添加轮播图 一 页面中的图片如何设置为全屏图片展示 操作步骤如下 1 打开网站的后台 点击 页面 选择所有页面 如图所示 2 选择相应的页面 点击 使用El
  • nacos简易实现负载均衡

    目录 一 什么是Nacos 二 Nacos下载和安装 1 使用Windows启动 2 验证nacos是否成功启动 三 Nacos Discovery服务注册 发现 四 简易实现负载均衡 1 注册者配置 2 注册者启动类 3 注册者业务层 4
  • 数组添加进formdata_FormData使用方法详解

    FormData的主要用途有两个 1 将form表单元素的name与value进行组合 实现表单数据的序列化 从而减少表单元素的拼接 提高工作效率 2 异步上传文件 一 创建formData对象 1 创建一个空对象 通过FormData构造
  • Linux命令_sort & 排序、去重

    目录 1 语法 1 1 常用参数 2 常见用法 2 1 按数值排序 2 2 按文件大小排序 2 3 指定某一列排序 2 4 去重后排序 2 5 生成随机数 2 6 同时查看多个文件 2 7 排序后的值写入文件 可直接修改文件 1 语法 so
  • 如何使用区块链技术保护个人隐私和数据安全

    区块链技术是一种分布式账本技术 它具有不可篡改 去中心化 透明度高等特点 区块链技术能够实现数据的可信存证 隐私保护和交易安全 并且能够通过智能合约的自动执行 因此被广泛应用于金融 电商 物流 社交网络等领域 区块链技术的核心是 分布式账本
  • Go语言List的使用与数据结构的选择

    container包下的函数 heap heap包提供了对任意类型 实现了heap Interface接口 的堆操作 list list包实现了双向链表 ring ring实现了环形链表的操作 一 List的使用 List列表是一种非连续存
  • JAVA多线程执行,等待返回结果,再执行

    JAVA多线程执行 等待返回结果 再执行 1 实现callable接口 1 配置线程池 package com neusoft demo server config import org springframework context an
  • 简单了解InnoDB底层原理

    存储引擎 很多文章都是直接开始介绍有哪些存储引擎 并没有去介绍存储引擎本身 那么究竟什么是存储引擎 不知道大家有没有想过 MySQL是如何存储我们丢进去的数据的 其实存储引擎也很简单 我认为就是一种存储解决方案 实现了新增数据 更新数据和建
  • 步进电机与直流电机(有刷无刷)的优缺点,与伺服电机区别

    1 步进 有刷 无刷小型电机的区别 记住这张表 参考 特性 的特点 2 一文看懂有刷 无刷电机 步进电机基础知识 3 步进电机与直流电机的优缺点 与伺服电机区别 伺服与控制 电子发烧友网 4 有刷电机 VS 无刷电机 看看哪个更厉害 5 2
  • Jmeter性能测试1

    性能测试的概述 性能 百度百科定义 器物的性质与效用 生活中 买手机 买电脑 买车 性能好 快 时间短 资源 软件的性能 软件在允许的过程中反应的速度 时间 消耗的资源的情况等等 性能测试 是通过自动化测试工具模拟多种正常 峰值 以及异常负
  • 【数据分析入门】Jupyter Notebook

    目录 一 保存 加载 二 适用多种编程语言 三 编写代码与文本 3 1 编辑单元格 3 2 插入单元格 3 3 运行单元格 3 4 查看单元格 四 Widgets 五 帮助 Jupyter Notebook是基于网页的用于交互计算的应用程序
  • Exception Oracle Error

    Exception Oracle Error SQLCODE Value ACCESS INTO NULL ORA 06530 6530 CASE NOT FOUND ORA 06592 6592 COLLECTION IS NULL OR
  • CRC校验(二)

    CRC校验 二 参考 https blog csdn net liyuanbhu article details 7882789 https www cnblogs com esestt archive 2007 08 09 848856
  • ts 流基础(白话讲解).

    author hjjdebug date 2022年 09月 27日 星期二 ts 流就是188个字节构成的流数据 先来点最简单的 ts 头部 4字节 ts 流是47开头的 以188字节为单位的打包流 由4字节包头及包体构成 4字节第一个4
  • 最长上升子序列模板与优化后的模板

    未优化 include
  • ckpt 转 pb 模型

    tf1 12 checkpoints like we should know our input and output layers name now the code to make the pb is import os os envi
  • 3-基于stm32单片机水位检测测量报警LCD1602显示程序源码原理图元件清单

    功能介绍 采用stm32单片机 电位器 LCD1602显示屏 蜂鸣器 按键 通过电位器来模拟当前的水位高度 通过扭转电位器来改变水位高度 并且显示到屏幕上 通过按键设置上限值和下限值 超过值蜂鸣器进行报警 STM32 ADC是一种高精度 高