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

单片机基础模块学习——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.kler.cn/a/521501.html

相关文章:

  • Mac m1,m2,m3芯片使用nvm安装node14报错
  • Excel制作合同到期自动提醒!
  • ESP32服务器和PC客户端的Wi-Fi通信
  • 海浪波高预测(背景调研)
  • Linux——rzsz工具
  • 反向代理模块。。
  • Unity——从共享文件夹拉取资源到本地
  • 1_相向双指针_leetcode_15_2
  • inception_v3
  • 61.异步编程1 C#例子 WPF例子
  • 架构基础常识
  • Go 程序开发的注意事项
  • 安装 Prometheus、Grafana 和 Alertmanager
  • c++的容器和适配器究竟有什么差别?
  • 统计安卓手机一段时间内进程中每个线程的平均CPU使用率
  • mysql 学习6 DQL语句,对数据库中的表进行 查询 操作
  • http跳转https
  • Prism--对话服务
  • 如何使用DDD 的思想规划对应的模块
  • arcgis短整型变为长整型的处理方式