当前位置: 首页 > news >正文

单片机基础模块学习——PCF8591芯片

一、A/D、D/A模块

  • A——Analog 模拟信号:连续变化的信号(很多传感器原始输出的信号都为此类信号)
  • D——Digital  数字信号:只有高电平和低电平两种变化(单片机芯片、微控制芯片所能处理的都是数字信号)

 下面是模拟信号和连续信号的区别


为什么需要进行模拟信号和数字信号之间的转换呢?

 例如,传感器的模拟信号需要给单片机进行处理,但是单片机没法直接读取模拟信号此时需要进行A/D转换(模拟信号——>数字信号);另外需要产生一个电压的时候,而单片机只能输出数字信号,那么就需要进行D/A转换(数字信号——>模拟信号)。

PCF8591芯片可以同时进行A/D、D/A的转换。

二、开发板原理图

RD1为光敏电阻,随着光照强度的变化,阻值也会变化。从而通过测量RD1和R31之间的电压,通过两个电阻之间的分压关系,就可以计算出光敏电阻的阻值,进而计算出光照强度。


 RB2为电位器(滑动变阻器),调节电位器的阻值,AIN3所测电压值变化。


 AIN1和AIN3分别连接到 PCF8591芯片的两个输入引脚

三、 PCF8591芯片原理图

  1. 以A(模拟信号)开头的四个引脚为模拟输入端口,也就是可以连接四路进行测量,而此单片机主要使用的是AIN1和AIN3两个引脚。
  2. A0~A2不是模拟输入端口,这三位共同决定地址,全部接到了GND,所以这三位都是0
  3. VSS也接地,和GND相同。VDD是供电源,连接到5v的VCC
  4. AOUT是模拟输出端口,用于输出模拟电压
  5. VREF是参考电压,连接到vcc,因此满量程的时候是5v 
  6. AGND是模拟地,连接到地
  7. 下面的是EXT和OSC,不做说明
  8. SCL和SDA是IIC总线协议的连接端口

 

 四、IIC总线协议简介

1.写模式流程图

  • s——start,代表开始
  • ADDRESS 芯片地址
  • 0代表处在写模式
  • A应答信号,若没有收到应答信号,代表外设没有接收到,需要再次发送,保证通信的稳定性
  • CONTROL BYTE控制芯片行为的一个位,发送之后同样需要等待应答信号
  • DATA BYTE 传递数据位,每传递一个字节,就要有一个应答信号,不断的循环

 2.读模式流程图

  •  s——start,代表开始
  • ADDRESS 芯片地址
  • 1代表处在读模式
  • A应答信号,若没有收到应答信号,代表外设没有接收到,需要再次发送,保证通信的稳定性
  • DATA BYTE读取数据,此时的应答信号来自master(主机,控制机)
  • LAST DATA BYTE发送完最后一个字节,不需要应答
  • P——pause,暂停就结束了

3. ADDRESS声明

  •  高四位 fixed part 固定部分,一定是1001
  • 低四位 R代表read,高电平有效 W代表write上面有-,代表低电平有效
  • A0~A2连接到地,都为0
  • 写入地址为0x90,读取地址为0x91

4.CONTROL BYTE声明

 

  • 最低两位A/D CHANNEL NUMBER  选择可以读取哪一路的A/D,光敏电阻连接AIN1对应01,电位器连接AIN3对应11
  • AUTO-INCREMENT FLAG自动增益控制位,如果是1就激活它,不需要时设置为0
  • ANALOGUE INPUT PROGRAMMIG 可以控制模拟信号输入的模式,00——4个单端输入模式(彼此之间没有关联);01——差分输入(可以比较两路之间的电压差);10——单端输入和差分输入的组合;11——两个差分输入  本次使用00模式
  • ANALOGUE OUTPUT ENABLE FLAG 是否允许进行模拟输出,允许置1

因此,光敏电阻:0x41 可调电阻:0x43 

 

http://www.lryc.cn/news/527495.html

相关文章:

  • 深入探索 HTML5 拖拽效果 API:打造流畅交互体验
  • 【Healpix】python一种用于将球面划分为均匀区域的技术
  • Go:基于Go实现一个压测工具
  • 算法-加油站问题
  • UART ,IIC 和SPI三种总线协议
  • Padas进行MongoDB数据库CRUD
  • 动手学图神经网络(6):利用图神经网络进行点云分类
  • C语言从入门到进阶
  • Python中容器类型的数据(下)
  • MySQL 用户相关的操作详解
  • 如何删除hugging face dowloaded的llm model?
  • Vue 封装http 请求
  • 恒源云云GPU服务器训练模型指南
  • Spring Boot应用中实现基于JWT的登录拦截器,以保证未登录用户无法访问指定的页面
  • MySQL 基础学习(1):数据类型与操作数据库和数据表
  • zyNo.19
  • Kafka生产者ACK参数与同步复制
  • IPhone14 Pro 设备详情
  • 【Linux】磁盘
  • Shell编程(for循环+并发问题+while循环+流程控制语句+函数传参+函数变量+函数返回值+反向破解MD5)
  • 强化学习数学原理(三)——值迭代
  • Day27-【13003】短文,什么是栈?栈为何用在递归调用中?顺序栈和链式栈是什么?
  • [JMCTF 2021]UploadHub
  • C++学习——认识和与C的区别
  • 为AI聊天工具添加一个知识系统 之63 详细设计 之4:AI操作系统 之2 智能合约
  • 基于SpringBoot的网上摄影工作室开发与实现 | 含论文、任务书、选题表
  • Flutter子页面向父组件传递数据方法
  • 回顾Maven
  • 除了layui.js还有什么比较好的纯JS组件WEB UI?在谷歌浏览上显示
  • 力扣111二叉树的最小深度(DFS)