例说单片机数据通信之模拟IIC通信

发布者:人妙果华最新更新时间:2015-04-02 来源: eechina关键字:单片机  数据通信  模拟IIC通信 手机看文章 扫描二维码
随时随地手机看文章
  IIC 即Inter-Integrated Circuit(集成电路总线),这种总线类型是由飞利浦半导体公司在八十年代初设计出来的,主要是用来连接整体电路(ICS) ,IIC是一种多向控制总线,也就是说多个芯片可以连接到同一总线结构下,同时每个芯片都可以作为实时数据传输的控制源。这种方式简化了信号传输总线。

  I2C串行总线一般有两根信号线,一根是双向的数据线SDA,另一根是时钟线SCL。所有接到I2C总线设备上的串行数据SDA都接到总线的SDA上,各设备的时钟线SCL接到总线的SCL上。以51单片机和AT24C02介绍IO模拟IIC通信。

  启始与停止

1.gif 

  启始条件:必须在所有命令之前发送,时钟线保持高电平期间,数据线电平从高到低的跳变作为IIC总线的启动信号。

  停止条件:时钟线保持高电平期间,数据线电平从低到高的跳变作为IIC总线的停止信号。操作结束时必须发送停止条件。

  void startbit()

  {

  clrSCL();

  setSDA();

  setSCL(); //时钟为高时

  clrSDA(); //SDA下降沿

  clrSCL();

  }

  void stopbit()

  {

  clrSCL();

  clrSDA();

  setSCL(); //时钟为高时

  setSDA(); //SDA上升沿

  clrSCL();

  }

  应答信号

2.gif 

  每次数据传送成功后,从设备发送一个应答信号。当第九个时钟信号产生时,产生应答信号的器件将SDA下拉为低,通知已经接收到8位数据。

  void respond()

  {

  unsigned char i = 0;

  setSDA(); //释放总线

  setSCL(); //时钟

  while(SDA != 0)

  {

  i++;

  if(i > 200) break;

  }

  clrSCL();

  }

  读写字节操作

3.gif 

  IIC总线协议定义如下:

  1. 只有在总线非忙时才被允许进行数据传输。[page]

  2. 在数据传输时,当时钟线为高电平,数据线必须为固定状态,不允许跳变,时钟线为高电平时数据线的任何电平变化都会被当做总线的启动或停止条件

  void writeByte(unsigned char dat)

  {

  unsigned char i = 0;

  for(i = 0;i < 8;i++)

  {

  clrSCL(); //拉低时钟线,改变SDA线的电平

  if(dat & 0x80) setSDA();

  else clrSDA();

  setSCL(); //SDA电平稳定后,拉高时钟线

  dat <<= 1;

  }

  clrSCL();

  }

  unsigned char readByte()

  {

  unsigned char i = 0,tmp = 0;

  for(i = 0;i < 8;i++)

  {

  clrSCL(); //拉低时钟线

  tmp <<= 1; //准备读取数据

  setSCL(); //拉高时钟线

  if(SDA) tmp |= 0x01;

  }

  clrSCL();

  return tmp;

  }

  AT24C02读写操作

4.gif 

  void writeAT24XX(unsigned char addr,unsigned char dat)

  {

  startbit(); //起始信号

  writeByte(0xa0); //器件地址

  respond();

  writeByte(addr); //器件内部地址

  respond();

  writeByte(dat); //数据

  respond();

  stopbit(); //停止

  }

5.gif 

  unsigned char readAT24XX(unsigned char addr)

  {

  unsigned char dat;

  startbit(); //起始信号

  writeByte(0xa0); //器件地址

  respond();

  writeByte(addr); //器件内部地址

  respond();

  startbit(); //起始信号

  writeByte(0xa1); //器件地址

  respond();

  dat = readByte(); //数据

  stopbit(); //停止

  return dat;

  }

  主函数部分内容以及程序运行效果:

  void main()

  {

  unsigned char dat;

  initUart();

  sendString("UART INIT OK!!! "); //串口通信初始化

  sendString("write 0x05 --> addr 0x00 ");//写入5到期间内部地址0

  writeAT24XX(0x00,0x05); //写入数据

  sendString("read dat <-- addr 0x00 "); //读出写入数据

  dat = readAT24XX(0x00); //读出数据

  sendString("dat-->"); //打印

  sendByte(dat + '0');

  while(1);

  }

6.jpg 
关键字:单片机  数据通信  模拟IIC通信 引用地址:例说单片机数据通信之模拟IIC通信

上一篇:单片机数据通信之单总线数据传输分析
下一篇:例说单片机数据通信之模拟SPI数据传输

推荐阅读最新更新时间:2024-03-16 13:56

使用单片机制作多路输入电压表
单片机在工业控制和智能化仪表中,常由单片机进行实时控制及实时数据处理。单片机所加工的信息都是数字量,而被控制或测量对象的有关参量往往是连续变化的模拟量,如温度、速度、压力等等,与此对应的电信号是模拟电信号。单片机要处理这种信号,首先必须将模拟量转换成数字量,这一转换过程就是模 数转换,实现模/数转换的设备称为A/D转换器或ADC。 AD转换器是单片机应用中常见的接口,从事单片机开发的人员通常都会遇到使用AD的要求,本文通过一个典型的例子来学习一种常用AD转换器的用法。 一、模数转换简介 A/D转换电路种类很多,在选择模/数转换器时,主要考虑以下的一些技术指标:转换时间和转换频率、量化误差与分辨率、转换精度、接口形式等。目前
[单片机]
使用<font color='red'>单片机</font>制作多路输入电压表
MCS-51单片机最小系统的组成部分及电路图介绍
  MCS-51单片机概述   MCS-51单片机是一种集成的电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计时器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的计算机系统。   51系列单片机的特点   -8位cpu   -片内带振荡器,频率范围为1.2MHz~12MHz   -片内带128B的数据存储器   -片内带4KB的程序存储器   -程序存储器的寻址空间为64KB   -片外数据存储器的寻址空间为64KB   -128个用户位寻址空间   -21个字节特殊功
[单片机]
MCS-51<font color='red'>单片机</font>最小系统的组成部分及电路图介绍
PIC16F72单片机---LED灯控制程序
/*************PIC16F72单片机程序******************************/ /*************************************************************/ /*****File Function : LED测试程序 *****/ /*****Program Author : ZhengWen(ClimberWin) *****/ /*****MCU : PIC16F72 外部晶振6MHZ *****/ /*****Compile Date : 2010/11/9 ***
[单片机]
基于MSP430单片机的PID参数整定义
  PID控制是最常的控制策略,在工业过程控制中90%以上的控制回路具有PID结构。PID控制之所以被广泛应用主要是因为它算法简单,在实际中容易被理解和实现,而且许多高级控制都以PID控制为基础。但是由于环境的变化,使被控对象具有时变性,参数经过一段时间以后会出现性能欠佳、适应性变差、控制效果下降等情况。因此,寻求参数自动整定技术,以适应复杂工况及高性能指标的控制要求,是实现节能优化控制的重要手段,具有重大的工程实践意义。   1 自整定过程原理   本文主要研究了一种手持式的PID参数整定仪器,此整定仪具有整定单变量和双变量的双重功能,控制系统主要采用低能耗的MSP430微控制器,软件部分采用的软件开发平台是IAR MSP4
[单片机]
基于MSP430<font color='red'>单片机</font>的PID参数整定义
纳思达:公司旗下某款通用MCU单月销量已经突破200万颗
近日,纳思达在互动平台表示,最近国内外市场的通用MCU芯片供不应求,公司旗下极海半导体的某款通用MCU单月销量已经突破200万颗,销售势头非常畅旺。 据了解,艾派克微电子是国家工业和信息化部认定的集成电路设计企业,属于纳思达的全资子公司。而艾派克电子的子公司极海半导体主攻工业级通用MCU、工业互联网SoC-eSE安全主控芯片、MCU+BLE低功耗蓝牙芯片、MCU+认证芯片等中高端物联网芯片产品,拥有约300人规模的芯片设计团队,技术实力突出。极海APM32系列工业级通用MCU广泛应用于消费电子、智能家居以及医疗设备领域,并拓展至工业领域。 艾派克微电子的另一个重要系列产品----基于国产 CPU 的工业物联网安全主控芯片已经量产,
[手机便携]
单片机ADC采用输入电压范围的调节
本文以STM32F429IGT6单片机为例。 STM32F429IGT6有 3 个 ADC,每个 ADC有 12 位、10 位、8 位和 6 位可选,每个ADC有 16 个外部通道。另外还有两个内部 ADC源和 V BAT 通道挂在 ADC1 上。ADC具有独立模式、双重模式和三重模式,对于不同 AD 转换要求几乎都有合适的模式可选。ADC功能非常强大,具体的我们在功能框图中分析每个部分的功能。 单个ADC功能框图如下所示: 掌握了 ADC的功能框图,就可以对 ADC有一个整体的把握,在编程的时候可以做到了然如胸,不会一知半解。框图讲解采用从左到右的方式,跟 ADC 采集数据,转换数据,传输数据的方向大概一致。 电压输
[单片机]
<font color='red'>单片机</font>ADC采用输入电压范围的调节
关于HCS12(X)单片机AD的深层次的一些东西
关于AD,一直有人问一些东西,应该是属于AD比较深的东西,答应总结一个贴子. 大部分来自中电网陈刚版主的精典问答,如果要用加速度传感器,请看完下面的,如果想用好多路AD转换请看完下面的. 一般小车可能不需要,因为一般用的是单次转换单通道无FIFO模式. 1为什么要多次转换? ATD模块有8个结果寄存器,所以它的AD转换有这样的功能,就是对一个或多个通道连续进行转换,将结果顺序放入这8个结果寄存器中。这样用户如果要取一个通道的平均值,或取多个通道的值,都很方便了,就不用软件一次一次地去转换了 2 ATDCTL3 那个S8C、S4C等决定的转换序列长度是什么意思? ATDCTL3中的S8C~S1C决定了一个转换序列的长度,即一
[单片机]
利用ATmega8L单片机为主控的臭氧治疗仪设计方案
臭氧作为一种高效冷杀菌手段,目前已经被广泛应用在各行各业中。具有高效、迅速杀菌作用的臭氧在医院环境消毒、术前消毒等方面应用广泛,其治疗效果优于其它传统杀菌治疗仪。因此研制一种运行稳定、使用方便、便携的臭氧治疗仪产品,为妇科疾病患者提供一种方便有效的在家治疗方式,具有实际意义。 目前市面上的同类型产品都是采用80C51单片机为控制核心的, 虽然也能实现它所需求的功能,但执行速度慢,在长期工作环境中,特别在臭氧治疗仪的内部大功率气泵模块和臭氧发生器的干扰下,系统功耗高和抗干扰性能差,系统性能不稳定等问题便凸现出来。对此本文采用了ATMEL公司的一款AVR高档单片机,对控制系统作了改进,提高了整机的性能。 臭氧产生的原理及方
[单片机]
利用ATmega8L<font color='red'>单片机</font>为主控的臭氧治疗仪设计方案
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved