【第十四届蓝桥杯单片机组】学习笔记(5):PCF8591( AD/DA芯片)

news2024/11/24 1:15:47

目录

  • 概述
  • 功能字
    • 芯片寻址
    • 控制字
    • A/D转换
      • 单通道读取
      • 多通道读取

概述

在这里插入图片描述

  • 芯片通信方式:IIC
  • AIN0,AIN1,AIN2,AIN3:(Analog signal In) 模拟信号输入
  • AOUT:模拟信号输出

功能字

芯片寻址

这是在比赛提供的PCF8591芯片手册里的,描述了这个芯片的IIC地址

在这里插入图片描述

  • fixed part:固定的部分,即高四位是不变的,说明改芯片的地址是根据其他引脚去确认的
  • programmable part:可编程的部分,可以从电路原理图里看到A0,A1,A2是可以接受外部信号的,所以这部分是根据我们电路连接来确定0/1的
  • R/W:即为常规的IIC通讯的读写地址,读为1,写为0;三大通信协议(二):IIC通信协议

所以综上我们可以得到,蓝桥杯板子里芯片的地址是:(1001 000X);写地址:0x90;读地址:0x91

控制字

芯片手册上的介绍:

The second byte sent to a PCF8591 device will be stored
in its control register and is required to control the device
function.

在这里插入图片描述
就是说,这个控制字是要写在芯片寄存器中的去设置芯片的功能;

  • 高四位:用于使能模拟输出,并将模拟输入编程为单端或差分输入。
  • 低四位:选择读取高四位所确定的通道,若将自动读取的flag置1,则通道号会自动递增

A/D转换

单通道读取

uint8_t AdcRead()//读取一次ADC的数值
{
	uint8_t _data;
	_data = IIC_RecByte();//IIC读一个字节,官方驱动会给出
	IIC_SendAck(0);//PCF8591读取一次就要给个回应,这样芯片才会采集下一个的值
	return _data;
}

void main(void)
{
	uint8_t adc=0;
	UartInit();
	if(Pcf8591_Adc_Init(0x03)==1)
	{
		printf("adc init success\r\n");
	}
	while (1)
    {
		adc=AdcRead();
		printf("%bu\r\n",adc);
    }
}

在这里插入图片描述

多通道读取

在读取模拟信号的时候,我们可以看到第一次读出来的数据是128,那么我们就可以用这个标志去区分自动读取多通道时切换不同通道。

  • 初始化的控制字:0000 01xx,即0x04也可
void main(void)
{
	uint8_t adc=0,channel=0;
	UartInit();
	while(Pcf8591_Adc_Init(0x04)!=1)
	{
		printf("adc init eeror\r\n");
		Delay100ms();
	}
	while (1)
    {
		adc=AdcRead();
		if(adc==128) 	channel=-1;
		else			channel=(channel+1)%4;
		printf("channel is %bu,data is %bu\r\n",channel,adc);
		Delay500ms();
    }
}

在这里插入图片描述
PCF8591详解(蓝桥杯单片机模块(IIC总线))

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

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

相关文章

考虑源荷不确定性的热电联供微网优化(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

华为云云耀云服务器L实例评测|云耀云服务器L实例部署Gogs服务器

华为云云耀云服务器L实例评测|云耀云服务器L实例部署Gogs服务器 一、云耀云服务器L实例介绍1.1 云耀云服务器L实例简介1.2 云耀云服务器L实例特点 二、Gogs介绍2.1 Gogs简介2.2 Gogs特点 三、本次实践介绍3.1 本次实践简介3.2 本次环境规划 四、远程登录华为云云耀云…

【Spring】IoC 与 DI

IoC 与 DI 1. IoC2. DI 1. IoC IoC (Inversion of Control): 控制反转控制反转: 表示应用程序的控制权(对象的生命周期)由应用程序自身的代码反转到容器或框架中。应用程序的组件不再直接控制其依赖项的创建和生命周期管理,而是委托给容器。…

微服务moleculer03

1. Moleculer 目前支持SQLite,MySQL,MariaDB,PostgreSQL,MSSQL等数据库,这里以mysql为例 2. package.json 增加mysql依赖 "mysql2": "^2.3.3", "sequelize": "^6.21.3", &q…

Windows下载AOSP

关于repo repo只是谷歌做的,方便下载安卓源码的工具,本质上是对下载清单进行批量处理,然后使用git克隆。 在windows上下载源码只需要自己处理即可。 具体做法 首先使用git克隆安卓源码清单 git clone https://mirrors.tuna.tsinghua.edu.…

1.Tensor For Beginner - Motivation

为何要研究张量? --主要原因是几何。 Tensors Geometry 了解张量后,可深入了解几何的工作原理 几何的一个例子:爱因斯坦广义相对论中的时空几何 时空是如何弯曲的,宇宙是如何膨胀的。 要从数学上理解这两个问题&am…

归并排序及其非递归实现

个人主页:Lei宝啊 愿所有美好如期而遇 目录 归并排序递归实现 归并排序非递归实现 归并排序递归实现 图示: 代码: 先分再归并,像是后序一般。 //归并排序 void MergeSort(int* arr, int left, int right) {int* temp (int…

Pikachu靶场——越权访问漏洞(over permission)

文章目录 1. over permission1.1 水平越权1.1.1 源代码分析1.1.2 漏洞防御 1.2 垂直提权1.2.1 源代码分析1.2.2 漏洞防御 1.3 越权访问漏洞防御 1. over permission 漏洞描述 越权访问(Broken Access Control,BAC),指应用在检查…

用python表格初级尝试

Excel,我的野心 当我输入3,2 就表示在第3行第2列。的单元格输入数据input输入表头 (input内除了/,空格 回车 标点符号等 全部作为单元格分隔符)由我设置input输入的是行or列 给选项 1. 行 2. 列默认回车或没输入值是列由我设置起…

SEO效果又慢又差,为什么还会有SEO从业者?

“SEO效果又慢又差,这么还会有SEO从业者?”这句话是我今天在某Q群里看到的,其实这个问题我之前也有写过一篇《你问我,为什么还有人做SEO?》。我文中提到过因为搜索无处不在,有搜索后,搜索引擎就…

JavaScript:从入门到进阶的旅程

JavaScript是一种广泛使用的编程语言,为网页和应用程序提供了交互性和动态性。从初学者到资深开发者,JavaScript都是一项值得掌握的技能。在本文中,我们将探讨JavaScript的基础知识,以及一些进阶的概念和技巧。 一、JavaScript简…

Linux系统编程系列之线程

一、什么是线程 线程(Thread)是计算机中的基本执行单元,是操作系统调度的最小单位。线程是进程内的一个独立执行流程,一个进程可以包含多个线程,这些线程共享进程的资源,但每个线程都有自己的独立栈空间以及…

基于SSM的学生事务处理系统设计与实现

末尾获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:SSM 前端:采用JSP技术开发 数据库:MySQL5.7和Navicat管理工具结合 服务器:Tomcat8.5 开发软件:IDEA / Eclipse 是否Maven项目&#x…

matplotlib从起点出发(9)_Tutorial_9_cycler

0 需求 绘图时有时需要指定几种颜色,或者线型,我们统称为样式,让绘制出的内容在这些样式中循环配置。这时就需要使用到本文所提到的技巧,即cycler. 1 进入教程 本文是自定义属性循环(cycler)设置的演示,用于控制多线…

travel总结:

1、前期准备: 对于项目的大体构成做了一定的了解,然后主要是做后端的数据处理,前期的准备的话创建项目的大体结构,servlet、service、domain、dao、utils的项目结构。以及一些基础的代码的生成,我觉得最主要的是一些基…

leetCode 55.跳跃游戏 贪心算法

给你一个非负整数数组 nums ,你最初位于数组的 第一个下标 。数组中的每个元素代表你在该位置可以跳跃的最大长度。判断你是否能够到达最后一个下标,如果可以,返回 true ;否则,返回 false 。 示例 1: 输入…

MySQL的卸载与安装(Linux)

MySQL 前言1. 卸载MySQL1.1 查询与关闭对应MySQL服务1.2 卸载对应安装包 2. 安装MySQL2.1 配置MySQL官方yum源2.2 开始安装MySQL 前言 在这里演示的卸载与安装MySQL都是在Linux的Centos 7.6 环境下,不同环境会有所出入。 为了避免安装和卸载MySQL过程中受到权限的…

CF505B Mr. Kitayuta‘s Colorful Graph

Mr. Kitayuta’s Colorful Graph 题面翻译 给出一个 n n n 个点, m m m 条边的无向图,每条边上是有颜色的。有 q q q 组询问 对于第 i i i 组询问,给出点对 u i , v i u_i,v_i ui​,vi​。求有多少种颜色 c c c 满足:有至…

算法-动态规划/trie树-单词拆分

算法-动态规划/trie树-单词拆分 1 题目概述 1.1 题目出处 https://leetcode.cn/problems/word-break/description/?envTypestudy-plan-v2&envIdtop-interview-150 1.2 题目描述 2 动态规划 2.1 解题思路 dp[i]表示[0, i)字符串可否构建那么dp[i]可构建的条件是&…

基于ssm的互联网废品回收/基于web的废品资源利用系统

摘 要 本毕业设计的内容是设计并且实现一个基于SSM框架的互联网废品回收。它是在Windows下,以MYSQL为数据库开发平台,Tomcat网络信息服务作为应用服务器。互联网废品回收的功能已基本实现,主要包括用户、回收员、物品分类、回收物品、用户下单…