您的位置 首页 ADAS

MAX517与单片机的I2C总线数据通信

摘要:介绍了I2C总线的特点及数据通信的基本协议,并以AT89C51单片机与美国MAXIM公司的8位电压输出DAC数模转换器MAX517之间的通信为例,详细介绍了通过I2C总线进行数据通信的具体硬件电

摘要:介绍了I2C总线的特色及数据通讯的根本协议,并以AT89C51单片机与美国MAXIM公司的8位电压输出DAC数模转化器MAX517之间的通讯为例,详细介绍了经过I2C总线进行数据通讯的详细硬件电路衔接和其通讯子程序的编程办法。 关键词:I2C总线;AT89C51;MAX517;数据通讯 1 I2C总线的特色及根本通讯协议 I2C总线是Philips公司开发的一种简略、双向二线制同步串行总线。它只需要两根线串行数据线和串行时钟线即可使衔接于总线上的器材之间完结信息传送,一起可经过对器材进行软件寻址,而不是对硬件进行片选寻址的方法来节省通讯线数目,然后减少了硬件所占空间。因为总线已集成在片内,所以大大缩短了规划时刻,此外,在从体系中移去或添加集成电路芯片时,对总线上的其它集成芯片没有影响。

1.png

1.1 I2C总线的主要特色 I2C总线一般由两根线构成:串行数据线(SDA)和串行时钟线(SCL);总线上一切的器材都能够经过软件寻址,并坚持简略的主从关系,其间主器材既能够作为发送器,又能够作为接收器; I2C总线是一个真实的多主总线,它带有竞赛监测和裁定电路。当多个主器材一起发动设备时,总线体系会主动进行抵触监测及裁定,然后保证了数据的正确性; I2C总线选用8位、双向串行数据传送方法,规范传送速率为100kB/s,快速方法下可达400kB/s;同步时钟能够作为中止或重新发动串行口发送的握手方法;衔接到同一总线的%&&&&&%数目只受400pF的最大总线%&&&&&%的约束。 1.2 I2C总线数据通讯根本协议 使用I2C总线进行数据通讯时,应恪守如下根本操作: (1)总线应处于不忙状况,当数据总线(SDA)和时钟总线(SCL)都为高电平时,为不忙状况; (2)当SCL为高电平时,SDA电平由高变低时,数据传送开端。一切的操作有必要在开端之后进行; (3)当SCL为高电平时,SDA电平由低变为高时,数据传送完毕。在完毕条件下,一切的操作都不能进行; (4)数据的有用转化开端后,当时钟线SCL为高电平时,数据线SDA有必要坚持稳定。若数据线SDA改动时,有必要在时钟线SCL为低电平时方可进行。

2.png

2 AT89C51与MAX517的I2C数据通讯 2.1 MAX517简介 MAX517是MAXIM公司出产的8位电压输出型DAC数模转化器,它带有I2C总线接口,答应多个设备之间进行通讯。 MAX517选用单5V电源作业。该芯片的引脚图见图1所示。各引脚的详细阐明如下: 1脚(OUT):D/A转化输出端; 2脚(GND):接地; 3脚(SCL):时钟总线; 4脚(SDA):数据总线; 5、6脚(AD1,AD0):用于挑选哪个D/A通道的转化输出因为MAX517只要一个D/A,所以,使用时,这两个引脚一般接地。 7脚(VCC):电源; 8脚(REF):参阅。 2.2 MAX517的作业时序 图3 图2是MAX517的一个完好的转化时序。首要应给MAX517一个地址位字节。MAX517在收到地址字节位后,会给AT89C51一个应对信号。然后,在给MAX517一个操控位字节,MAX517收到操控位字节位后,再给AT89C51发一个应对信号。之后,MAX517便能够给AT89C51发送8位的转化数据(一个字节)。AT89C51收到数据之后,再给MAX517发一个应对信号。至此,一次转化进程完结。 MAX517的一个地址字节格局如下: BIT7 BIT6 BIT5 BIT4 BIT3 BIT2 BIT1 BIT0 0 1 0 1 1 AD1 AD0 0 其间,前三位010出厂时已设定。关于MAX517,BIT4和BIT3这两位应取为1。因为一个AT89C51上能够挂4个MAX517,而详细是对哪一个MAX517进行操作,则由AD1、AD0的不同取值来操控。 MAX517的操控字节格局如下: BIT7 BIT6 BIT5 BIT4 BIT3 BIT2 BIT1 BIT0 R2 R1 R0 RST PD X X A0 在该字节格局中,R2、R1、R0已预先设定为0;RST为复位位,该位为1时复位一切的寄存器;PD 为电源作业状况位,为1时,MAX517作业在4μA的休眠形式,为0时,回来正常的操作状况;A0为地址位,关于MAX517,该位应设置为0。 2.3 MAX517与AT89C51的硬件衔接 AT89C51是ATMEL公司的89系列单片机的一种电路,是市面上使用适当广泛的一种产品。 图3所示为MAX517与AT89C51的硬件衔接电路。该硬件电路中,选用MAX813作为看门狗电路,既可主动复位,也可手艺复位。使用该电路能够用数码管来显现0-255个数字量,图中,选用MAX7219作为数码驱动电路,若将MAX517的输出引脚衔接到示波器上,还能够显现相应的模仿电压的改变状况。 3 MAX517与AT89C51的通讯子程序 该体系应将MAX517作为从设备,AT89C51作为主设备。首要主设备向从设备发送一个地址字节58H,之后从设备则发一个应对信号,主设备接到应对后,再发给从设备一个操控字节00H,当从设备接到该操控字节后,再发给主设备一个应对。之后主设备便可发给从设备要转化的8位数据。其作业流程图见图4所示。详细的程序代码如下: 程序开端时,界说P1.6,P1.7为SDA,SCL; //开始条件子函数 void Start(void) { SDA=1; SCL=1; NOP; SDA=0; NOP; } //中止条件子函数 void Stop(void) { SDA=0; SCL=1; NOP;

3.png

SDA=1; NOP; } //应对子函数 void Ack(void) { SDA=0; NOP; SCL=1; NOP; SCL=0; } //发送数据子程序,Data为要发送的数据 void Send(uchar Data) { uchar BitCounter=8; //位数操控 uchar temp; //中心变量操控 do{ temp=Data; SCL=0; NOP; if((temp0x80)==0x80) //假如最高位是1 SDA=1; else SDA=0; SCL=1; temp=Data1; //左移 Data=temp; BitCounter–; }while(BitCounter); SCL=0; } //读一个字节的数据,并回来该字节值 uchar Read(void) { uchar temp=0; uchar temp1=0; uchar BitCounter=8; SDA=1; do{ SCL=0; NOP; SCL=1; NOP; if(SDA) //假如SDA=1 temp=temp|0x01; else temp=temp0xfe; if(BitCounter-1) { temp1=temp1; temp=temp1; } BitCounter–; }while(BitCounter); return(temp); } 4 完毕语 因为该体系可经过单片机给MAX517发送0-255的数字量,而且可用数码管显现,一起,用示波器还可观测相应的电压改变,直观性非常好。相同,该程序对单片机与MAX518、MAX519等的通讯都具有参阅价值。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/qiche/adas/294347.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部