K_A11_006 基于STM32等单片机采集雨水模块 串口与OLED0.96双显示

news2024/11/19 3:48:29

K_A11_006 基于STM32等单片机采集雨水模块 串口与OLED0.96双显示

  • 一、资源说明
  • 二、基本参数
    • 参数
    • 引脚说明
  • 三、驱动说明
    • IIC地址/采集通道选择/时序
    • 对应程序:
  • 四、部分代码说明
    • 1、接线说明
      • 1.1、STC89C52RC+雨水模块
      • 1.2、STM32F103C8T6+雨水模块
  • 五、基础知识学习与相关资料下载
  • 六、视频效果展示与程序资料获取
  • 七、注意事项
  • 八、接线说明
    • STC89C52RC
    • STM32F103C8T6

请添加图片描述

一、资源说明

单片机型号测试条件模块名称代码功能
STC89C52RC晶振11.0592M雨水模块STC89C52RC采集雨水模块参数 串口与OLED0.96双显示
STM32F103C8T6晶振8M/系统时钟72M雨水模块STM32F103C8T6采集雨水模块参数 串口与OLED0.96双显示

其他资料目录 直戳跳转

二、基本参数

参数

1、传感器采用高品质 FR-04 双面材料,超大面积 5.0*4.0CM,并用镀镍 处理表面,具有对抗氧化,导电性,及寿命方面更优越的性能;
2、比较器输出,信号干净,波形好,驱动能力强,超过 15mA;
3、配电位器调节灵敏度;
4、工作电压 3.3V-5V
5、输出形式 :数字开关量输出(0 和 1)和模拟量 AO 电压输出;
6、设有固定螺栓孔,方便安装
7、小板 PCB 尺寸:3.2cm x 1.4cm
8、使用宽电压 LM393 比较器

引脚说明

雨水模块引脚说明
VCC正极 3.3/5V供电
GND负极 接GND
DO数字量输出
AO模拟量输出

三、驱动说明

STC89C52RC无ADC所以需要借助外部ADC模块 此处用PCF8591模块进行采集

IIC地址/采集通道选择/时序

请添加图片描述
请添加图片描述
请添加图片描述

对应程序:

以51为例

/*******************************************************************
                     起动总线函数               
函数原型: void  Start_I2c();  
功能:     启动I2C总线,即发送I2C起始条件.  
********************************************************************/
void Start_I2c()
{
  PCF8591_SDA=1;         /*发送起始条件的数据信号*/
  PCF8591_SCL=1;
  IIC_Delay();
  PCF8591_SDA=0;         /*发送起始信号*/
  IIC_Delay();      
  PCF8591_SCL=0;       /*钳住I2C总线,准备发送或接收数据 */
  IIC_Delay();
}

/*******************************************************************
                      结束总线函数               
函数原型: void  Stop_I2c();  
功能:     结束I2C总线,即发送I2C结束条件.  
********************************************************************/
void Stop_I2c()
{
  PCF8591_SDA=0;      /*发送结束条件的数据信号*/
  PCF8591_SCL=1;      /*结束条件建立时间大于4μs*/
  IIC_Delay();
  PCF8591_SDA=1;      /*发送I2C总线结束信号*/
  IIC_Delay();
}

/*******************************************************************
                 字节数据发送函数               
函数原型: void  SendByte(UCHAR c);
功能:     将数据c发送出去,可以是地址,也可以是数据,发完后等待应答,并对
          此状态位进行操作.(不应答或非应答都使ack=0)     
           发送数据正常,ack=1; ack=0表示被控器无应答或损坏。
********************************************************************/
void SendByte(uint8_t  c)
{
 uint8_t  BitCnt;
 
 for(BitCnt=0;BitCnt<8;BitCnt++)  /*要传送的数据长度为8位*/
    {
	     if((c<<BitCnt)&0x80)PCF8591_SDA=1;   /*判断发送位*/
	     else  PCF8591_SDA=0;                
	
	     PCF8591_SCL=1;               /*置时钟线为高,通知被控器开始接收数据位*/
		 IIC_Delay();       
	     PCF8591_SCL=0; 
    }
    
    IIC_Delay();
    PCF8591_SDA=1;                /*8位发送完后释放数据线,准备接收应答位*/
    IIC_Delay();  
    PCF8591_SCL=1;
    IIC_Delay();
    if(PCF8591_SDA==1)ack=0;     
       else ack=1;        /*判断是否接收到应答信号*/
    PCF8591_SCL=0;
  IIC_Delay();
}

/*******************************************************************
                 字节数据接收函数               
函数原型: UCHAR  RcvByte();
功能:        用来接收从器件传来的数据,并判断总线错误(不发应答信号),
          发完后请用应答函数应答从机。  
********************************************************************/    
uint8_t RcvByte()
{
  uint8_t  retc;
  uint8_t  BitCnt;
  
  retc=0; 
  PCF8591_SDA=1;                     /*置数据线为输入方式*/
  for(BitCnt=0;BitCnt<8;BitCnt++)
  {
      
      PCF8591_SCL=0;                  /*置时钟线为低,准备接收数据位*/
	  IIC_Delay();
      PCF8591_SCL=1;                  /*置时钟线为高使数据线上数据有效*/
	  IIC_Delay();
      retc=retc<<1;
      if(PCF8591_SDA==1)retc=retc+1;  /*读数据位,接收的数据位放入retc中 */
		IIC_Delay();
    }
  		PCF8591_SCL=0;    
  		IIC_Delay();
  		return(retc);
}

/********************************************************************
                     应答子函数
函数原型:  void Ack_I2c(bit a);
功能:      主控器进行应答信号(可以是应答或非应答信号,由位参数a决定)
********************************************************************/
void Ack_I2c(uint8_t a)
{
  
  if(a==0)PCF8591_SDA=0;              /*在此发出应答或非应答信号 */
  else PCF8591_SDA=1;
  IIC_Delay();    
  PCF8591_SCL=1;
  IIC_Delay();
  PCF8591_SCL=0;                     /*清时钟线,钳住I2C总线以便继续接收*/
  IIC_Delay();  
}

采集通道选择:
ISendByte(PCF8591,0x42);

地址:
#define  PCF8591 0x90    //PCF8591 地址

四、部分代码说明

1、接线说明

需要自定义引脚可在此处更改,STM32要自定义引脚的话也要注意引脚时钟使能的更改

1.1、STC89C52RC+雨水模块

//雨水模块+PCF8591模块引脚定义
雨水模块---------------------------PCF8591
AO--------------------------------AIN2

sbit  PCF8591_SCL=P1^0;       //I2C  时钟 
sbit  PCF8591_SDA=P1^1;       //I2C  数据 
//OLED0.96模块引脚定义
sbit SCL=P1^2; //串行时钟
sbit SDA=P1^3; //串行数据

1.2、STM32F103C8T6+雨水模块

//雨水模块引脚定义 GPIOA_0  ADC1通道0
#define    ADC_GPIO_APBxClock_FUN        RCC_APB2PeriphClockCmd
#define    ADC_GPIO_CLK                  RCC_APB2Periph_GPIOA  
#define    ADC_PORT                      GPIOA
#define    ADC_PIN                       GPIO_Pin_0
//OLED0.96模块引脚定义					
//-----------------OLED IIC端口定义----------------  					   

#define OLED_SCLK_Clr() GPIO_ResetBits(GPIOB,GPIO_Pin_8)//SCL
#define OLED_SCLK_Set() GPIO_SetBits(GPIOB,GPIO_Pin_8)

#define OLED_SDIN_Clr() GPIO_ResetBits(GPIOB,GPIO_Pin_9)//SDA
#define OLED_SDIN_Set() GPIO_SetBits(GPIOB,GPIO_Pin_9)

五、基础知识学习与相关资料下载

1、STC89C52RC程序下载 直戳跳转

2、STM32F103C8T6程序下载
(1)串口下载 直戳跳转
(2)ST-LINK下载 直戳跳转
(3)J-LINK下载 直戳跳转
(4)DAP-LINK下载 直戳跳转

3、OLED0.96程序说明 直戳跳转

4、串口助手下载与使用
(1)安信可调试助手使用 直戳跳转
(2) sscom33串口调试助手使用 直戳跳转
(3)STC-ISP串口调试助手使用 直戳跳转

六、视频效果展示与程序资料获取

视频连接 直戳跳转
资料获取 直戳跳转

七、注意事项

1、VCC GND请勿接反,接反易烧
2、OLED显示异常时,排除接线接触不良

八、接线说明

STC89C52RC

/************************************************************************************
//  生成日期   : 2021-6-21
//  最近修改   : 2021-11-21
//  功能描述   : 雨水模块测试程序
//  测试条件   : STC89C52RC   晶振11.0592
接线
雨水模块-------------------------------STC89C52RC
VCC------------------------------------5V
GND------------------------------------GND
雨水模块---------=====------------------PCF8591
AO-------------------------------------AIN2

PCF8591--------------------------------STC89C52RC
VCC-- ---------------------------------5V
GND- ----------------------------------GND
SCL- ----------------------------------P1.0 //SCL
SDA- ----------------------------------P1.1 //SDA

OLED0.96(IIC) -------------------------STC89C52RC
VCC------------------------------------5V
GND------------------------------------GND
SCL------------------------------------P1^2
SDA------------------------------------P1^3
*************************************************************************************/

STM32F103C8T6

/************************************************************************************
//  生成日期   : 2021-6-21
//  最近修改   : 2021-11-21
//  功能描述   : 雨水模块测试程序
//  测试条件   : STM32F103C8T6   晶振8M  系统时钟 72M
接线
雨水模块--------------------------------STM32F103C8T6
VCC-------------------------------------3.3V
GND-------------------------------------GND
AO--------------------------------------PA_0 

OLED0.96
VCC-- -----------------------------------3.3V
GND- ------------------------------------GND
SCL- ------------------------------------PB_8 //SCL
SDA- ------------------------------------PB_9 //SDA	
*****************************************************************************************/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/163552.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

电脑开机找不到启动设备怎么办?

如果你的电脑弹出错误消息并提示“找不到启动的设备”&#xff0c;不用担心&#xff0c;本文将告诉你5种不同的方法&#xff0c;可以轻松修复无可引导的设备的问题&#xff01;“找不到启动设备”是什么意思&#xff1f;可引导设备&#xff08;又称启动设备&#xff09;是一种存…

Vue.js学习笔记

vue.js学习笔记 Vue.js 是一款流行的 JavaScript 前端框架&#xff0c;Vue 所关注的核心是 MVC 模式中的视图层&#xff0c;它也方便地获取数据更新&#xff0c;实现视图与模型的交互。 1.创建代码片段 声明式渲染&#xff1a;Vue.js 的核心是一个允许采用简洁的模板语法来声…

kafka开kerberos认证报错the client is being asked for a password

Kafka kerberos认证错误记录TOC kafka开发调试 kerberos认证错误记录 背景 kafka 开发调试&#xff0c;开 kerberos情况下遇到的错误。 错误日志 Could not login: the client is being asked for a password, but the Kafka client code does not currently support obta…

隐私计算主流技术

隐私计算目前主流的技术路线有三种:多方安全计算、联邦学习和TEE。 1. MPC多方安全计算 百万富翁问题: 两个富翁,分别为张三和李四,他们自己都清楚自己有几千万财产即他们心里清楚 1~10中的一个数(代表自己千万级的财富)。他们想知道到底谁的数更大一些。 1.1 MPC定义 …

【博学谷学习记录】大数据课程-学习第三周总结

1. 大数据课程导论 数据分析的前提是有数据&#xff0c;数据存储的目的是支撑数据分析。究竟怎么去存储庞大的数据量&#xff0c;是开展数据分析的企业在当下面临的一个问题。传统的数据存储模式存储容量是有大小限制或者空间局限限制的&#xff0c;怎么去设计出一个可以支撑大…

【UE4 第一人称射击游戏】49-僵尸攻击动画

上一篇&#xff1a;【UE4 第一人称射击游戏】48-僵尸死亡设置本篇效果&#xff1a;可以看到僵尸在移动到玩家面前会从移动状态转为攻击状态&#xff0c;播放相应的攻击动画。步骤&#xff1a;打开“SimpleAI”&#xff0c;删除所有和“Character看见pawn时”、“AI随机移动”的…

动态规划算法刷题笔记【背包问题】

01背包问题 dp[i-1][j]指没纳入当前物品&#xff0c;dp[i-1][j-ci]wi指纳入当前物品&#xff0c;并且是和j-ci体积下的价值作和 滚动数组优化空间复杂度 [NOIP2005 普及组] 采药 辰辰是个天资聪颖的孩子&#xff0c;他的梦想是成为世界上最伟大的医师。为此&#xff0c;他想拜…

基于jsp+mysql+Spring的Springboot旅游网站管理系统设计和实现

基于jspmysqlSpring的Springboot旅游网站管理系统设计和实现 博主介绍&#xff1a;5年java开发经验&#xff0c;专注Java开发、定制、远程、文档编写指导等,csdn特邀作者、专注于Java技术领域 作者主页 超级帅帅吴 Java毕设项目精品实战案例《500套》 欢迎点赞 收藏 ⭐留言 文末…

数据库操作——redis

数据库操作——redisredis介绍Redis、Mamcache/MongoDB对比分布式数据库的CAP原理redis的下载和安装安装之后的操作key操作数据类型字符串命令 string列表 list集合set哈希hashZset 有序集合持久化RDB相关的配置AOF相关的配置开启AOF共存AOF 相关的配置总结事务定义和执行事务的…

【Linux杂篇】Cron是什么?利用Cron Job自动执行定时任务

Cron Cron是一个实用程序&#xff0c;用于在特定的时间自动执行重复任务。在Linux中&#xff0c;常用 cron 服务器来完成这项工作&#xff0c;以下是Cron的工作原理&#xff1a; 如果想稍后执行特定任务一次&#xff0c;可以使用其他命令。但是&#xff0c;对于重复性任务&am…

模电视频笔记:详解直接耦合放大电路p146,3.1.1

一个图一个图的分析下来&#xff1a; 初始的电路原型 &#xff0c;这是把两个基本的共射放大电路组合了起来。 补充几个很重要的知识点&#xff0c;否则字都认识&#xff0c;但是完全看不懂在说什么&#xff1a; a、图中的晶体管是npn型晶体管。 b、这个电路是共射放大电路 c、…

产品经理如何更好的适应工作呢?

先来了解一下和产品经理相关的数据 大厂职能需求占比变化 岗位薪酬水平&岗位要求 产品经理市场需求现状 大厂喜欢招聘什么样的人&#xff1f; 无论是通过什么途径成为了一名产品经理&#xff0c;对于该岗位所需要的技能其实都是类似的&#xff0c;把产品经理需要具备的能力…

236. 二叉树的最近公共祖先

236. 二叉树的最近公共祖先 难度中等 给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为&#xff1a;“对于有根树 T 的两个节点 p、q&#xff0c;最近公共祖先表示为一个节点 x&#xff0c;满足 x 是 p、q 的祖先且 x 的深度尽可能大…

【算法数据结构初阶篇】:随机函数

随即函数的用处非常大&#xff0c;比如可能用来用做对数器&#xff0c;生成大量随机的测试数据&#xff0c;用来验证我们写的程序是否有误&#xff0c;可以帮助我们快速定位存在错误的测试用例&#xff0c;进行debug。这里注意Java中的随机函数Math.random()是等概率的返回[0,1…

TCP/IP网络编程(4)——基于 TCP 的服务端/客户端(1)

文章目录第 4 章 基于 TCP 的服务端/客户端&#xff08;1&#xff09;4.1 理解 TCP 和 UDP4.1.1 TCP/IP 协议栈4.1.2 链路层4.1.3 IP 层4.1.4 TCP/UDP 层4.1.5 应用层4.1.6 生活小例子4.2 实现基于 TCP 的服务器/客户端4.2.1 TCP 服务端的默认函数的调用程序4.2.2 进入等待连接…

微信小程序原生开发功能合集一:微信小程序开发介绍

一、专栏介绍 本专栏主要内容为微信小程序常用功能开发过程的介绍说明&#xff0c;包括开发微信小程序常用组件的封装、常用功能的开发等&#xff0c;提供源代码、开发过程讲解视频、完整的课程等。 组件封装&#xff1a; 下拉选择组件、图片上传组件、视频上传组件、富文本组件…

C# Dictionary(字典)各种属性的用法

C# Dictionary(字典&#xff09;各种属性的用法 要使用Dictionary集合&#xff0c;需要导入C#泛型命名空间&#xff01; ​System.Collections.Generic​&#xff08;程序集&#xff1a;mscorlib&#xff09; Dictionary的描述 1、从一组键&#xff08;Key&#xff09;到一组值…

seo关键词排名下降怎么办(SEO网站关键词排名不稳定)

关键词优化网站排名突然下降是什么原因 一般来讲&#xff0c;网站的排名不会大幅度的下降&#xff0c;除非搜索引擎的流量特别小&#xff0c;而这也不是偶然发生的。网站一旦获得对应的权重或者排名&#xff0c;就不要轻易的更改板块和文章&#xff0c;甚至是文章标题之类的&a…

Allegro如何导出和导入层叠操作指导

Allegro如何导出和导入层叠操作指导 在做PCB设计的时候,需要导出或者导入层叠,Allegro升级到了172以后,支持单独导出和导入层叠,如下图 具体操作如下 导出层叠,选择setup选择Cross-section

《图机器学习》-Message Passing and Node Classification

Message Passing and Node Classification一、前言二、How do we leverage node correlation in network&#xff1f;三、Relational Classification四、Iterative classification五、Loopy Belief Propagation一、前言 现在的主要问题是&#xff1a; 给定一个网络&#xff0c…