蓝桥杯备战——13.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.mfbz.cn/a/369115.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

python打造光斑处理系统7:沿割线的像素灰度分布

文章目录 单角度切割多角度切割绘图 光斑处理&#xff1a;python处理高斯光束的图像 光斑处理系统&#xff1a; 程序框架&#x1f31f;打开图像&#x1f31f;参数对话框/伪彩映射&#x1f31f;裁切ROI光强分布&#x1f31f;高斯拟合 单角度切割 在查看光斑分布时&#xff0c…

【C生万物】初始C语言

&#x1f4da;博客主页&#xff1a;爱敲代码的小杨. ✨专栏&#xff1a;《Java SE语法》 | 《数据结构与算法》 | 《C生万物》 ❤️感谢大家点赞&#x1f44d;&#x1f3fb;收藏⭐评论✍&#x1f3fb;&#xff0c;您的三连就是我持续更新的动力❤️ &#x1f64f;小杨水平有…

合并分支rebase和merge的区别

文章目录 一、前言1.1、master分支1.2、dev分支 二、合并2.1、git merge2.2、git rebase 三、总结四、最后 一、前言 实际开发工作的时候&#xff0c;我们都是在自己的分支开发&#xff0c;然后将自己的分合并到主分支&#xff0c;那合并分支用2种操作&#xff0c;这2种操作有…

maven项目管理工具安装和配置

文章目录 1.1 软件下载安装1.1.2 软件安装 1.2 软件配置1.2.1 软件环境配置1.2.2 软件版本测试1.2.3 maven 配置1.2.3.1 仓库配置1.2.3.2 镜像配置1.2.3.3 配置 JDK 1.3 IDEA 结合 Maven 使用 1.1 软件下载安装 首先我们需要去 Maven 官方下载安装软件&#xff0c;本文使用的是…

【深度测试】看到技术方案后,该怎么进行分析和测试

测试左移的思想&#xff0c;讲究尽早测试&#xff0c;测试是一系列的行为&#xff0c;并不一定要等代码运行起来才能测&#xff0c;下面会分享一些经验&#xff0c;提供大家参考。 一、静态分析 1.1 分析方法调用链 目标&#xff1a;梳理结构&#xff0c;化繁为简 原理&#…

Qt多语言翻译

Qt多语言翻译概述 Qt提供了非常简单易用的多语言翻译机制&#xff0c;其核心类为QTranslator.概括来说就是利用Qt的lupdate工具将项目中所有tr函数包裹的字符串提取到.ts文件中&#xff0c;然后使用Qt Linguist由专门的翻译人员对提取的.ts文件进行逐个单词短语的翻译工作. 翻译…

springboot153相亲网站

简介 【毕设源码推荐 javaweb 项目】基于springbootvue 的 适用于计算机类毕业设计&#xff0c;课程设计参考与学习用途。仅供学习参考&#xff0c; 不得用于商业或者非法用途&#xff0c;否则&#xff0c;一切后果请用户自负。 看运行截图看 第五章 第四章 获取资料方式 **项…

在WORD中设置公式居中编号右对齐设置方式

1 软件环境 Office Microsoft Office LTSC 专业增强版2021 2 最终效果 3 操作步骤 编辑公式&#xff1b;光标定位到公式的最后&#xff08;不是行的最后&#xff09;&#xff1b;输入#编号光标定位在公式最后&#xff08;不是行的最后&#xff09;&#xff0c;按Enter键回车…

【Linux系统 01】Vim工具

目录 一、Vim概述 1. 文件打开方式 2. 模式切换 二、命令模式 1. 移动与跳转 2. 复制与粘贴 3. 剪切与撤销 三、编辑模式 1. 插入 2. 替换 四、末行模式 1. 保存与退出 2. 查找与替换 3. 分屏显示 4. 命令执行 一、Vim概述 1. 文件打开方式 vim 文件路径&#…

【CSS】css获取子元素的父元素,即通过子元素选择父元素(使用CSS伪类 :has() :not() )

这里写目录标题 一、:has获取第一个div获取包含 a.active 的 li获取第二个div 二、:not除了类名为active 的 a,其他的a的字体都为18px <div><h1>标题</h1></div><div><ul><li><a href"#" class"active">测…

Filter与Listener(Java Web)

Filter与Listener(Java Web) 概念&#xff1a;Filter表示过滤器&#xff0c;是JavaWeb三大组件(Servlet、Filter、Listener)之一。过滤器可以把对资源的请求拦截下来&#xff0c;从而实现一些特殊的功能。过滤器一般完成一些通用的操作&#xff0c;比如&#xff1a;权限控制、…

mysql按周统计数据简述

概述 业务中经常会遇到按年月日统计的场景&#xff1b; 但有时会有按周统计的情况&#xff1b; 我一般是用2中方法去解决&#xff1a; 利用mysql的weekday函数。计算出当前日期是一周中的第几天&#xff0c;然后当前日期 - 这个数值&#xff0c;就可以得到当前周的周一的日期…

Python—数据可视化Seaborn大全:参数详解与实战案例全解析【第52篇—python:Seaborn大全】

文章目录 Seaborn库常用绘图详解与实战引言安装与导入一、散点图参数说明实战案例 二、直方图参数说明实战案例 三、线性关系图参数说明实战案例 四、热力图参数说明实战案例 五、分布图参数说明实战案例 六、箱线图参数说明实战案例 七、联合分布图参数说明实战案例 八、小提琴…

钓鱼攻击:深度解析与防范策略

一、引言 在当今的网络世界中&#xff0c;钓鱼攻击已经成为一种日益猖獗的威胁。这种攻击方式利用电子邮件、社交媒体或其他在线平台&#xff0c;伪装成可信赖的来源&#xff0c;诱导受害者点击恶意链接或下载恶意附件&#xff0c;进而窃取个人信息或实施其他恶意行为。本文将…

[SWPUCTF 2021 新生赛]easyupload2.0

一开始我通过cobaltstrike写一个文件上传的木马它不允许上传php文件 我这边写了一句话木马通过burp拦截修改后缀为phtml然后通过蚁剑找flag

centos7安装oracle

1 安装虚拟机 设置4G内存&#xff0c;硬盘40G 2 配置网络环境 2.1配置主机名 # vi /etc/hostname 修改为 oracle2.2 配置IP地址 # vi /etc/sysconfig/network-scripts/ifcfg-ens33 修改 BOOTPROTO"static" ONBOOT"yes" IPADDR192.168.109.110 NETMAS…

政安晨:示例演绎Python的函数与获取帮助的方法

调用函数和定义我们自己的函数&#xff0c;并使用Python内置的文档&#xff0c;是成为一位Pythoner的开始。 通过我的上篇文章&#xff0c;相信您已经看过并使用了print和abs等函数。但是Python还有许多其他函数&#xff0c;并且定义自己的函数是Python编程的重要部分。 在本…

027 方法的定义及调用

方法的定义 方法调用 设计方法的原则 使用场景 想象一下有个场景需要我们不断频繁地去使用某部分特定的代码&#xff0c;我们自然可以通过复制粘贴去完成&#xff0c;但是这样会导致代码又臭又长&#xff0c;大部分是重复的代码&#xff0c;这不利于我们后续的维护&#xff0c;…

一键转换MOV至MP3:轻松删除原视频,释放存储空间!

你是否曾经有一个MOV格式的视频文件&#xff0c;想要提取其中的音频却苦于没有合适的工具&#xff1f;现在&#xff0c;有了我们的全新视频剪辑工具&#xff0c;这个烦恼全部消失&#xff01;我们为你提供一键式解决方案&#xff0c;将MOV视频文件快速转换为MP3音频格式。 首先…

tidb节点重启后,服务无法重连

大家好&#xff0c;我是烤鸭&#xff1a; 前几天遇到tidb节点重启后服务无法重连&#xff0c;确切地说是两个服务&#xff0c;一个可以正常重连&#xff0c;一个不行。 问题复现 由于线上执行慢SQL&#xff0c;导致TiDB 单个节点宕机重启。 其中A服务的3个节点和B服务的1个节…