蓝桥杯备战——12.PCF8591芯片的使用

目录

    • 1.芯片简介
    • 2.读写时序
    • 3.控制字
    • 4.代码封装库
    • 5.原理图分析
    • 6.使用示例

1.芯片简介

在这里插入图片描述

截取自NXP的PCF8591芯片数据手册,我把重点关注部分划出来了,请务必自行阅读一遍数据手册!

2.读写时序

①器件地址
在这里插入图片描述
Bit0决定是读还是写操作,Bit1~Bit3由外部引脚A0到A2确定。由于A0到A2接地,所有写地址为0X90,读地址为0X91。

②DAC
在这里插入图片描述
由上图我们可以看到,如果要进行D/A转换输出,我们只需写起始信号,地址写,等待应答,写控制字,等待应答,写DAC值(0~255),等待应答,发送停止信号。

③ADC:
在这里插入图片描述
由上图我们可以看到,如果要进行A/D转换,我们只需写起始信号,地址写,等待应答,写控制字,等待应答,写起始信号,地址读,等待应答,读ADC值,发送不应答,发送停止信号。

3.控制字

我就不细讲了,自己翻译一遍就懂了
在这里插入图片描述

在这里插入图片描述

4.代码封装库

#include "pcf8591.h"
#include "iic.h"//****************获取ADC转换值******************
//mode:0~3,analog input programming
//channel:A/D channal number
//return: 0~5V to 0~255 ADC Value
//***********************************************
u8 Get_AdcValue(u8 mode,u8 channel)
{u8 ADC_Value;IIC_Start();	//发送IIC开始信号IIC_Send_Byte(0X90);	//发送写命令IIC_Wait_Ack();IIC_Send_Byte(0x40|(mode<<4)|channel); //写控制字IIC_Wait_Ack();IIC_Start();IIC_Send_Byte(0X91); //发送读命令			   IIC_Wait_Ack();ADC_Value=IIC_Read_Byte(0);	//读入ADC值IIC_Stop();//产生停止信号	    return ADC_Value;
}//输出DAC 0~255 to 0~5V
void Write_DAC(u8 DAC_Value)
{IIC_Start();	//发送IIC开始信号IIC_Send_Byte(0X90);	//发送写命令IIC_Wait_Ack();IIC_Send_Byte(0x40);  //写控制字:使能DAC输出IIC_Wait_Ack();IIC_Send_Byte(DAC_Value);	//写DAC值IIC_Wait_Ack();IIC_Stop();//产生停止信号
}//获取ADC转换值,输出DAC
u8 RAdc_WDac(u8 mode,u8 channel,u8 DAC_Value)
{u8 ADC_Value;IIC_Start();	//发送IIC开始信号IIC_Send_Byte(0X90);	//发送写命令IIC_Wait_Ack();IIC_Send_Byte(0x40|(mode<<4)|channel);  //写控制字:使能DAC输出,配置ADC模式及通道IIC_Wait_Ack();IIC_Send_Byte(DAC_Value);	//写DAC值IIC_Wait_Ack();IIC_Start();IIC_Send_Byte(0X91); //发送读命令			   IIC_Wait_Ack();ADC_Value=IIC_Read_Byte(0);	//读入ADC值IIC_Stop();//产生停止信号	    return ADC_Value;
}

注释即解析,请自行体会!

5.原理图分析

①测量放大电路
在这里插入图片描述
研究过运放的同学一眼就能看出这是个仪表放大电路哈,蓝桥杯运放是必考项目,包括理论部分也会考。所以有不懂的,请自行补上哦!最终的输出AIN2作为了PCF8591的模拟输入2,下图是此电路的计算分析:
在这里插入图片描述
注:此截图来源于B站UP唐老师讲电赛运放大师讲运放系列,若有侵权,请联系删除!

②电阻分压电路
就一滑动变阻器分压之后输出的AIN3作为PCF8591的模拟输入3,
在这里插入图片描述
③光强采集电路
也是一个光明电阻和电阻串联分压输出AIN1作为PCF8591的模拟输入1,
在这里插入图片描述
④外部输入
正好AIN0与OUT挨着,我们可以用跳线帽短接来测试D/A与A/D
在这里插入图片描述

6.使用示例

按键按下之后先输出D/A,然后采集AIN0的ADC值,并通过数码管显示出来。
在这里插入图片描述
在这里插入图片描述
关于上面的函数我前面几节都封装过,请自行查看。

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

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

相关文章

Python 数据分析(PYDA)第三版(七)

原文&#xff1a;wesmckinney.com/book/ 译者&#xff1a;飞龙 协议&#xff1a;CC BY-NC-SA 4.0 附录 附录 A&#xff1a;高级 NumPy 原文&#xff1a;wesmckinney.com/book/advanced-numpy 译者&#xff1a;飞龙 协议&#xff1a;CC BY-NC-SA 4.0 此开放访问网络版本的《Pyt…

【Java】小白友好的SpringMVC开发基础学习笔记

目录 简介 Bean加载控制 设置请求映射路径 5种请求类型参数传递 JSON数据传递请求参数 响应 Jackson库处理JSON响应 REST风格 RESTful快速开发 拦截器 简介 Spring MVC是一个强大而灵活的Web应用程序框架&#xff0c;它通过使用MVC架构模式、注解和配置文件来实现请…

作业2.2

一&#xff0e;选择题 1、编写C程序一般需经过的几个步骤依次是&#xff08; B &#xff09; A. 编辑、调试、编译、连接 B. 编辑、编译、连接、运行 C. 编译、调试、编辑、连接 D. 编译、编辑、连接、运行 2、所谓数据封装就是将一组数据和与这组数据有关操作组装在…

ctfshow web-77

开启环境: 先直接用伪协议获取 flag 位置。 c?><?php $anew DirectoryIterator("glob:///*"); foreach($a as $f) {echo($f->__toString(). );} exit(0); ?> 发现 flag36x.txt 文件。同时根目录下还有 readflag&#xff0c;估计需要调用 readflag 获…

魔改冰蝎 —— 绕过检测,自动生成免杀后门

为什么要魔改工具&#xff1f; 生成的代码很容易被监测 生成的后门很容易被杀软杀掉 了解冰蝎流量特征 开启http代理&#xff0c;数据经过BP抓包进行分析数据 冰蝎数据包分析&#xff1a; 1、三个请求头固定 AcceptAccept-LanguageUser-Agent&#xff08;内部有十个&a…

Web3行业研究逐步加强,“链上数据”缘何成为关注焦点?

据中国电子报报道&#xff0c;近日&#xff0c;由中关村区块链产业联盟指导&#xff0c;中国信息通信研究院牵头&#xff0c;欧科云链控股有限公司参与编写的《全球Web3产业全景与发展趋势研究报告&#xff08;2023年&#xff09;》正式发布。研究报告通过全面追踪国内外Web3产…

给mysql设置时区

每次重启MySQL服务器后&#xff0c;使用IDEA的database navigator连接都会出现这种情况 解决方式就是 命令行登录后 set global time_zone 8:00;嘿嘿把之前自家简书文章 给mysql设置时区 搬运过来了&#xff0c;方便查阅

01-Java基础语法

Java基础语法 1. 注释使用的技巧&#xff1a;注意点 2. 关键字2.1 概念2.2 第一个关键字class 3. 字面量区分技巧&#xff1a;扩展&#xff1a; 制表符&#xff1a; 4. 变量4.1 什么是变量&#xff1f;4.2 变量的定义格式4.2.1 格式详解4.2.2 常用的数据类型4.2.3 变量的注意事…

手册前端在线学习网站

电脑重装了&#xff0c;收藏夹没了&#xff0c;在线上记录一下吧&#xff0c;如果有别的好的地址&#xff0c;欢迎在评论区给我&#xff0c;我确认后会同步更新到这里&#xff1b; 前端进阶之旅_刷题-注意收费项目是作者自己的与本人分享无关 React 技术揭秘 Vue 技术揭秘 ES6 …

斗地主登录界面(JAVA图形化界面)设置

1.实现代码 import CodeUtil.CodeUtil; import domain.User;import javax.swing.*; import java.awt.*; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; import java.util.ArrayList;public class LoginGame extends JFrame implements MouseListen…

MongoDB复制集实战及原理分析

文章目录 MongoDB复制集复制集架构三节点复制集模式PSS模式&#xff08;官方推荐模式&#xff09;PSA模式 典型三节点复制集环境搭建复制集注意事项环境准备配置复制集复制集状态查询使用mtools创建复制集安全认证复制集连接方式 复制集成员角色属性一&#xff1a;Priority 0属…

【数据分享】1929-2023年全球站点的逐月降雪深度数据(Shp\Excel\免费获取)

气象数据是在各项研究中都经常使用的数据&#xff0c;气象指标包括气温、风速、降水、能见度等指标&#xff0c;说到气象数据&#xff0c;最详细的气象数据是具体到气象监测站点的数据&#xff01; 之前我们分享过1929-2023年全球气象站点的逐月平均气温数据、逐月最高气温数据…

一副扑克牌一共54张,平均分成2份,求这2份都有2张A的概率。

这是一道高中数学题&#xff0c;此处介绍2个解法&#xff0c;第1个是我喜欢用的快速解法&#xff0c;第2个是公式解法。 1. 我的快速解法 第1张A随便在哪份&#xff0c; ①如果第2张A和第1张A在同一份(概率是26/53)&#xff0c;此时第3、4张牌必须在另一份&#xff0c;此时的…

力扣刷题-55.跳跃游戏

给你一个非负整数数组 nums &#xff0c;你最初位于数组的 第一个下标 。数组中的每个元素代表你在该位置可以跳跃的最大长度。 判断你是否能够到达最后一个下标&#xff0c;如果可以&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。 class Solution { publ…

C语言入门到精通之练习37:输入3个数a,b,c,按大小顺序输出。

题目&#xff1a;输入3个数a,b,c&#xff0c;按大小顺序输出。 程序分析&#xff1a;利用指针方法。 实例 // Created by www.erdangjiade.com on 15/11/9. //# include<stdio.h>void swap(int *, int *); int main(void) {int a, b, c;int *p1, *p2, *p3;printf(&qu…

【鸿蒙】大模型对话应用(四):页面发起请求实现对话能力

Demo介绍 本demo对接阿里云和百度的大模型API&#xff0c;实现一个简单的对话应用。 DecEco Studio版本&#xff1a;DevEco Studio 3.1.1 Release HarmonyOS SDK版本&#xff1a;API9 关键点&#xff1a;ArkTS、ArkUI、UIAbility、网络http请求、列表布局、层叠布局 定义接…

MongoDB实战 – 创建和删除数据库

MongoDB实战 – 创建和删除数据库 MongoDB In Action - Create and Drop Databases By Jackson@ML 根据前文介绍,MongoDB安装完毕后,可以有不同方法进行访问。 本文简要介绍在Windows操作系统中,如何使用MongoDB Shell进行文档数据库的基本操作,并以实例加以说明。 1.…

C#(C Sharp)学习笔记_前言及Visual Studio Code配置C#运行环境【一】

前言 这可以说是我第一次正式的踏入C#的学习道路&#xff0c;我真没想过我两年前是怎么跳过C#去学Unity3D游戏开发的&#xff08;当然了&#xff0c;游戏开发肯定是没有成功的&#xff0c;都是照搬代码&#xff09;。而现在&#xff0c;我真正地学习一下C#&#xff0c;就和去年…

MySQL 表的增删改查(基础)

1.CRUD 注释:在SQL中可以使用"--空格描述"来表示注释说明 CRUD 即增加(Create).查询(Retrieve).更新(Update).删除(Delete) 2.新增(Create) insert into 表名 values (列,列...); insert into 表名(列名,列名...) values (列,列...); insert into 表名 values(),(),…

【QT+QGIS跨平台编译】之二十七:【librttopo+Qt跨平台编译】(一套代码、一套框架,跨平台编译)

文章目录 一、librttopo介绍二、文件下载三、文件分析四、pro文件五、编译实践一、librttopo介绍 rttopo(Real-Time Topology)是一个用于实时拓扑计算的开源库。它提供了一种高效的方式来管理和处理动态改变的拓扑结构,例如网络、图形、地理空间数据等。 rttopo的主要特点…