IIC通信

IIC总线是双向、二线制、同步串行总线,是一种多向控制总线,即多个芯片可以连接到同一个总线结构下,每个芯片都可以作为实时数据传输的控制源。

PCF8591芯片:

PCF8591:模数/数模转换芯片,是一个单片集成、单独供电、低功耗、8-bit CMOS数据获取器件,具有4个模拟输入、1个模拟输出和一个串行IIC总线接口。原理图如下:

1个模拟输出:AOUT引脚,接在外部排针OUT上(比赛没有涉及过DA输出);
4个模拟输入:AIN0接在外部排针(可以由外部输入模拟信号),AIN1接在光敏电阻,AIN2接在LM324放大器,AIN3接在滑动变阻器Rb2,比赛没有使用过AIN0和AIN2。光敏电阻和滑动变阻器原理图如下:

如何确定使用的是IIC总线系统的PCF8591芯片——发送PCF8591的有效地址到器件(发送的第一个字节)

IIC_SendByte(0x90);      //写
或
IIC_SendByte(0x91);     //读

紧接着发送控制字到PCF8591 将被存储在控制寄存器,用于控制器件功能。(发送的第二个字节)

控制寄存器的高半字节用于允许模拟输出,和将模拟输入编程为单端或差分输入。低半字节选择一个由高半字节定义的模拟输入通道。(见芯片手册)通道3捕获模拟信号输入:0X03;允许模拟信号输出:0X40。

读模式的总线协议,A/D转换:

uchar AD_Read(uchar add)
{uchar temp;//IIC写IIC_Start();IIC_SendByte(0X90);IIC_WaitAck();IIC_SendByte(add);IIC_WaitAck();IIC_Stop();//IIC读IIC_Start();IIC_SendByte(0X91);IIC_WaitAck();temp=IIC_AckByte();IIC_Stop();//返回temp值return temp;
}

写模式的总线协议,D/A转换:

void AD_Write(uchar dat)
{IIC_Start();IIC_SendByte(0X90);IIC_WaitAck();IIC_SendByte(0X40);IIC_WainAck();IIC_SendByte(dat);IIC_WaitAck();IIC_Stop();
}

综上读写程序,我们可以总结出,使用PCF8591芯片的步骤:
1.开启IIC;2.发送PCF8591的写有效地址;3.发送控制字确定输入或输出地址;4.如果需要写入数据,则控制字确定的是模拟输出模式,紧接着写入数据;如果需要读出数据,则控制字确定的是从通道0~3之一捕获模拟信号输入,关闭并重新开启IIC,发送PCF8591的读有效地址,通过IIC获取数据。5.关闭IIC,如果是读取数据则需返回值。

19.IIC通信:PCF8591:数模/模数转换芯片相关推荐

  1. IIC通信——PCF8591的D/A转换

    PCF8591具有数模信号转换的功能,可以将单片机UART引脚发送的数字信号转换为模拟信号,单片机的P1.6引脚连接SDA数据线,负责在上面写字节和传送字节,P1.7引脚连接SCL时钟线,相当于节拍器 ...

  2. 2019.9.19年华为杯数模

    六月份,同老乡聊天聊到数模,抱着比赛加分的心态想要尝试一下,两人以前都没有任何数模经验,我连对应比较常用的软件都不清楚,只知道要用到matlab,巧了的是,自己也不会:可以说是真的数模零基础.第二步, ...

  3. 国二、美H、省一、美O:起落落起,我的数模之路

    国二.美H.省一.美O:起落落起,我的数模之路 前言 1 运气偏爱,小白参赛得国二 1.1 磕磕碰碰的踏入 1.2 突如其来的惊喜 2 不够重视,美赛当头一棒 3队伍矛盾,数模生涯滑铁卢 4破釜沉舟, ...

  4. PCF8591 ---AD\DA转换器的使用(IIC通信的软件模拟与应用) (by 51单片机)

    依旧是借着蓝桥杯的机会,来学习一些模块,和软件模拟一些通信方式. 今天学习的模块是PCF8591,一款AD\DA转换器,使用IIC通信方式. 芯片的内部框图如下所示: 各引脚作用如下表所示: 仍旧和之 ...

  5. 模数转换实验中断方式c语言,《数模和模数转换》PPT课件.ppt

    <<数模和模数转换>PPT课件.ppt>由会员分享,可在线阅读,更多相关<<数模和模数转换>PPT课件.ppt(35页珍藏版)>请在装配图网上搜索. 1 ...

  6. 模拟信号与数字信号以及数模隔离简介

    什么是模拟信号?什么叫数字信号? 什么是叫模拟信号? 信号在时间和数值上都是连续变化的信号称为模拟信号.模拟信号是指用连续变化的物理量表示的信息,其信号的幅度,或频率,或相位随时间作连续变化,如目前广 ...

  7. 电路基础知识 -- 数模信号

    一.数模信号介绍 参看:什么是模拟信号?什么叫数字信号? 什么是叫模拟信号? 信号在时间和数值上都是连续变化的信号称为模拟信号.模拟信号是指用连续变化的物理量表示的信息,其信号的幅度,或频率,或相位随 ...

  8. 数模国赛要点与注意事项全分享!

    暑假咻地一下就过去了,转眼数学建模国赛快到了. 为了给大家最最直接的帮助,超模君特邀请到周老师为参加国赛的模友们准备了一场干货满满的赛前冲刺直播课.全天候直播,助大家一臂之力,全力冲刺数模国赛! 周老 ...

  9. Python数模笔记-NetworkX(4)最小生成树

    1.生成树和最小生成树 1.1 生成树 连通的无圈图称为树,就是不包含循环的回路的连通图. 对于无向连通图,生成树(Spanning tree)是原图的极小连通子图,它包含原图中的所有 n 个顶点,并 ...

  10. Python数模笔记-NetworkX(3)条件最短路径

    1.带有条件约束的最短路径问题 最短路径问题是图论中求两个顶点之间的最短路径问题,通常是求最短加权路径. 条件最短路径,指带有约束条件.限制条件的最短路径.例如,顶点约束,包括必经点或禁止点的限制:边 ...

最新文章

  1. 47. Permutations II
  2. 请使用frameset/frameset完成以下功能
  3. 玩客云刷windows做服务器_精选 | 搭建一个私人服务器如何?
  4. Android stduio之Plugin with id ‘com.android.application‘ not found解决办法
  5. Shiro 身份验证
  6. 用Netty解析Redis网络协议
  7. FlexSIM.ED v4.0 1CD(生产排程,虚拟管理,能力平衡软件)
  8. mysql的驱动jar包_各版本MySQL数据库驱动程序jar包大全(java连接mysql驱动jar包)
  9. 顶级分区软件Acronis Disk Director 11最新版官方下载
  10. nbu备份软件异机恢复需要注意问题
  11. adb 命令大全(简洁明了)adb命令启动应用
  12. 论文的中期报告怎么写?
  13. 包名前面的org.apache和com.是什么意思
  14. qt项目转Xcode项目(Xcode开发qt)
  15. 电源高性能和平衡区别 文件服务器,win10电源高性能和平衡区别具体有哪些细节...
  16. Tengine + BabaSSL ,让国密更易用!
  17. Linux电源管理(2)_Generic PM之基本概念和软件架构(蜗窝科技,www.wowotech.net)
  18. mysql2005编辑器用法,文本编辑器 - Visual Studio的隐藏功能(2005-2010)?
  19. 使用 docker 对容器资源进行限制
  20. Dubbo封装异常处理Filter报AppResponse represents an concrete business response解决方案

热门文章

  1. spyder 更改默认工作目录的最优方法
  2. 第二章 复杂的HTML解析(上)
  3. ROBOTSTUDIO学习
  4. 微信网页/微信小程序内实现长按识别二维码
  5. 计算机保研个人简介,保研个人简历模板
  6. opencv学习系列:实例练习(含多个实例)
  7. 通过阅读饥荒代码理解树人机制
  8. Binarized Neural Network : BNN二值神经网络代码实例
  9. matlab信道容量函数,一般信道容量迭代算法1
  10. mysql超市管理系统怎么写_java+mysql超市进销存管理系统设计+源代码