单片机常用总线讲解.doc

上传人:苏美尔 文档编号:7195737 上传时间:2020-11-05 格式:DOC 页数:51 大小:1.58MB
返回 下载 相关 举报
单片机常用总线讲解.doc_第1页
第1页 / 共51页
单片机常用总线讲解.doc_第2页
第2页 / 共51页
单片机常用总线讲解.doc_第3页
第3页 / 共51页
单片机常用总线讲解.doc_第4页
第4页 / 共51页
单片机常用总线讲解.doc_第5页
第5页 / 共51页
点击查看更多>>
资源描述

《单片机常用总线讲解.doc》由会员分享,可在线阅读,更多相关《单片机常用总线讲解.doc(51页珍藏版)》请在三一文库上搜索。

1、第8章 单片机常用总线讲解8.1 I2C总线接口80C51单片机本身不具有I2C总线接口,但是通过软件进行模拟,可以挂接具有I2C接口的芯片。8.1.1 I2C总线的介绍串行扩展总线在单片机系统中的应用是目前单片机 技术发展的一种趋势。在目前比较流行的几种串行扩展总线中,I2C总线以其严格的规范和众多带I2C接口的外围器件而获得广泛应用。I2C总线是PHILIPS公司推出的芯片间串行传输总线,它由两根线组成,一根是串行时钟线(SCL),一根是串行数据线(SDA)。主控器利用串行时钟线发出时钟信号,利用串行数据线发送或接收数据。I2C总线由主控器电路引出,凡具有I2C接口的电路(受控器)都可以挂

2、接在I2C总线上,主控器通过I2C总线对受控器进行控制。随着I2C总线研究的深入,I2C总线已经广泛应用于视/音频领域、IC卡行业和一些家电产品中,在智能仪器、仪表和工业测控领域也越来越多地得到应用。8.1.2 I2C总线的特点I2C总线的广泛应用是同它卓越的性能和简便的操作方法分不开的。I2C总线的特点主要表现在以下几个方面:硬件结构上具有相同的硬件接口界面。I2C总线系统中,任何一个I2C总线接口的外围器件,不论其功能差别有多大,都是通过串行数据线(SDA)和串行时钟线(SCL)连接到I2C总线上。这一特点给用户在设计用用系统中带来了极大的便利性。用户不必理解每个I2C总线接口器件的功能如

3、何,只需将器件的SDA和SCL引脚连到I2C总线上,然后对该器件模块进行独立的电路设计,从而简化了系统设计的复杂性,提高了系统抗干扰的能力。线接口器件地址具有根大的独立性。每个I2C接口芯片具有唯一的器件地址,由于不能发出串行时钟信号而只能作为从器件使用。各器件之间互不干扰,相互之间不能进行通信,各个器件可以单独供电。单片机与I2C器件之间的通信是通过独一无二的器件地址来实现的。软件操作的一致性。由于任何器件通过I2C总线与单片机进行数据传送的方式是基本一样的,这就决定了I2C总线软件编写的一致性。PHILIPS公司在推出I2C总线的同时,也为I2C总线制订了严格的规范,如:接口的电气特性、信

4、号时片、信号传输的定义等。规范的严密性,结构的独立性和硬、软件接口界面的一致性.极大地方便了I2C总线设计的模块化和规范化,伴随面来的是用户在使用I2C总线时的“傻瓜”化。8.1.3 I2C总线数据的传输规则在I2C总线上的数据线SDA和时钟线SCL都是双向传输线,它们的接口各自通过一个上拉电阻接到电源正端。当总线空闲时,SDA和SCL必须保持高电平。为了使总线上所有电路的输出能完成一个线“与”的功能,各接口电路的输出端必须是开路漏极或开路集电极。进行数据传送时.在时钟信号高电平期间.数据线上的数据必须保持稳定;只有时钟线上的信号为低电平期间.数据线上的高电平或低电平才允许变化,如图8.1.1

5、所示。 图8-1 数据的有效性在I2C总线的工作过程中,当时钟线保持高电平期间,数据线由高电平向低电平变化定义为起始信号(S)。而数据线由低电平向高电平的变化定义为一个终止倌号(P),如图8.1.2所示,起始信号和终止信号均由主控器产生。 起始条件 停止条件图8-2 起始和停止条件I2C总线传送的每一字节均为8位,但每启动一次总线,传输的字节数没有限制,由主控器发送时钟脉冲及起始信号、寻址字节和停止信号,受控器件必须在收到每个数据字节后做出响应,在传送一个字节后的第9个时钟脉冲位,受控器输出低电平作为应答信号。此时.要求发送器在第9个时钟脉冲位上释放SDA线,以便受控器演出应答信号,将SDA线

6、拉或低电平,表示对接收数据的认可,应答信号用或表示.非应答信号用或表示,当确认后,主控器可通过产生一个停止信号来终止总线数据传输。I2C总线数据传输示意图如图8.1.3所示。起始 地址 读/写 应答 数据 应答 数据 应答 停止信号 信号 图8-3 I2C总线数据传输示意图需要说明的是,当主控器接收数据时,在最后一个数据字节,必须发送一个非应答位,使受控器释放SDA线,以便主控器产生一个停止信号来终止总线数据传输。3. I2C总线数据的读写格式总线上传送数据的格式是指为被传送的各项有用数据安排的先后顺序,这种格式是人们根据串行通信的特点,传送数据的有效性、准确性和可靠性而制定的。另外,总线上数

7、据的传送还是双向的,也就是说主控器在指令操纵下,既能向受控器发送数据(写入),也能接收受控器中某寄存器中存放的数据(读取).所以传送数据的格式有“写格式”与“读格式”之分。(1)写格式I2C总线数据的写格式如图8-4所示图8-4 I2C总线数据的写格式 写格式是指主控器向受控器发送数据,工作过程是:先由主控器发出启动信号(S),随后传送一个带读/写(R/)标记的从地址(SLAVE ADD)字节,从地址只有7bit长,第8位是读/写位(R/),用来确定数据传送的方向,对于写格式,R/应为“0”,表示主控器将发送数据给受控器,接着传送第二个字节,即从地址的子地址(SUB ADD),若受控器有多字节

8、的控制项目,该子地址是指首(第一个)地址,因为子地址在受控器中都是按顺序编制的,这就便于某受控器的数据一次传送完毕;接着才是若干字节的控制数据的传送,每传送一个字节的地址或数据后的第9位是受控器的应答信号,数据传送的顺序要靠主控器中程序的支持才能实现,数据发送完毕后,由主控器发出停止信号(P)。(2)读格式 读格式如图8.1.5所示。与写格式不同,读格式首先要找到读取数据的受控器的地址,包括从地址和子地址,所以格式中在启动读之前,用写格式发送受控器,再启动读格式,不过前3个应答信号因为是指向受控器,所以应由受控器发出;然后,所有数据字节的应答信号因为是指向主控制器,因此由主控器发出。不过最后的

9、A=1。图8-5 受控器向主控器发送数据(读格式)重点提示 在设置众多受控器中,为了将控制数据可靠地传逆给指定的受控IC,必须使每一块IC编制一个地址码,通常称为从地址,显然从地址不能在不同的IC间重复使用。主控器发送寻址字节时,总线上所有受控器都将寻址字节中的7位地址与自己的从地址相比较,如果两者相同,则该器件就是被寻址的受控器(从器件),受控器内部的n个数据地址(子地址)的首地址由子地址数据字节指出, I2C总线接口内部具有子地址指针自动加1功能,所以主控器不必一一发送n个数据字节的子地址。4.单片机模拟I2C总线通信 单片机在模拟I2C总线通信时,需写出如下几个关键部分的程序:总线初始化

10、、启动信号、应答信号、停止信号、写个字节、读个字节。下面分别给出具体函数的写法供大家参考,在阅读代码时请参考前面相关部分的文字描述及时序图。(1) 总线初始化void int() /将总线都拉高以释放总线 SCL=1; delay(); SDA=1; delay();(2) 启动信号void start() /SCL在高电平期间,SDA一个下降沿启动信号。 SDA=1; delay(); SCL=1; delay(); SDA=0; delay();(3) 应答信号void respons() uchar i=0; SCL=1; delay(); while(SDA=1)&(i255) i+;

11、 SCL=0; delay();SCL在高电平期间,SDA被从设备拉为低电平表示应答。上面代码中有一个(SDA=1)和(i255)相与的关系,表示若在一段时间内没有收到从器件的应答则主器件默认从器件已经收到数据而不在等待应答信号,这一点是作者后加的一步,大家可不必深究,因为如果不加这个延时退出,一旦从器件没有发送应答信号,程序将永远停止在这里,而真正的程序中是不允许这样的情况发生的。(4) 停止信号void stop() /SCL在高电平期间,SDA一个上升沿停止信号。 SDA=0; delay(); SCL=1; delay(); SDA=1; delay();(5) 写一个字节void w

12、ritebyte(uchar date) uchar i,temp; temp=date; for(i=0;i8;i+) Temp=temp1; SCL=0; delay(); SDA=CY; delay(); SCL=1; delay();SCL=0;delay();SDA=1;delay();串行发送一个字节时,需要把这个字节中的8位一位一位地发出去,“Temp=temp1;”表示将temp左移位,最高位将移入PSW寄存器的CY位中,然后将CY赋给SDA进而在SCL的控制下发送出去。(6) 读一个字节uchar readbyte() uchar i,k; SCL=0; delay(); S

13、DA=1; for(i=0;i8;i+) SCL=1; delay(); k=(k1)|SDA; SCL=0; delay();delay();return k;同样的,串行接收个字节时需将8位一位一位地接收,然后再组合成一个字节,上面代码中我们定义了一个临时变量k,将k左移一位后与SDA进行“或运算,依次把8个独立的位放入一个字节中来完成接收。8.1.4 I2C总线实例应用(AT24C02)具有I2C总线接口的E2PROM有多个厂家的多种类型产品。在此仅介绍ATMEL公司生产的AT24C系列E2PROM。主要型号有AT24C01/02/04/08/16等,其对应的存储容量分别为128x8/2

14、56x8/521x8/1024x8/2048x8。采用这类芯片可解决掉电数据保存问题,可对所存数据保存100年.并可多次擦写,擦写次数可达10万次以上。在一些应用系统设计中,有时需要对工作数据进行掉电保护,如电子式电能表等智能化产品。若采用普通存储器,在掉电时需要备引电池供电,并需要在硬件上增加掉电检测电路。但存在电池不可靠及扩展存储芯片占用单片机过多口线的缺点。采用具有I2C总线接口的串行E2PROM器件可很好地解决掉电数据保存问题,且硬件电路简单。下面以AT24C02芯片为例,介绍具有I2C总线接口的E2PROM的具体应用。AT24C02芯片的常用封装形式有直插(DIP8)式和贴片(SO-

15、8)式两种,实物图分别如图8.1.6和图8.1.7所示。 图8-6直插式AT24C02 图8-7 贴片式AT24C02无论是直插式还是贴片式,其引脚功能与序号都一样,引脚图如图8.1.8所示。 图8-8 AT24C02引脚图各引脚功能如下:1,2,3,(A0、A1、A2)可编程地址输入端。4(GND)电源地。5(SDA)串行数据输入/输出端。6(SCL)串行时钟输入端。7(WP)写保护输入端,用于硬件数据保护。当其为低电平时,可以对整个存储器进行正常的读/写操作;当其为高电平时,存储器具有写保护功能,但读操作不受影响。8(Vcc)电源正端。2.存储结构与寻址AT24C02的存储容量为2KB,内

16、部分成32页,每页8B,共2S6B,操作时有两种寻址方式;芯片寻址和片内子地址寻址。(1)芯片寻址。AT24C02的芯片地址为1010,其地址控制字格式为1010A2A1A0R/W。其中A2,A1,A0为可编程地址选择位。A2,A1,A0引脚接高、低电平后得到确定的三位编码,与1010形成7位编码,即为该器件的地址码。R/为芯片读写控制位,该位为0,表示对芯片进行写操作;该位为1,表示对芯片进行读操作。(2)片内子地址寻址。芯片寻址可对内部256B中的任一个进行读/写操作,其寻址范围为00FF,共256个寻址单元。3.读/写操作时序串行E2PROM一般有两种写入方式:一种是字节写入方式,另一种

17、是页写入方式。页写入方式允许在一个写周期内(10ms左右)对一个字节到一页的若干字节进行编程写入,AT24C02的页面人小为8B。采用页写方式可提高写入效率,但也容易发生事故。AT24C系列片内地址在接收到每个数据字节后自动加1,故装载顷以内数据字节时,只需输入首地址,如果写到此页的最后个字节,主器件继续发送数据,数据将重新从该页的首地址写入,进而造成原来的数据丢失,这就是页地址空间的“上卷”现象。解决“上卷”的方法是:在第8个数据后将地址强制加1,或是将下一页的旨地址重新赋给寄存器。(1)字节写入方式。单片机在次数据帧巾只访问E2PROM一个单元。该方式下,单片机先发送启动信号,然后送个字节

18、的控制字,再送一个字节的存储器单元子地址,上述几个宁节都得到E2PROM响应后,再发送8位数据,最后发送1位停止信号。发送格式如图8.1.9所示。 图8-9字节写入方式发送格式(2)页写入方式。单片机在一个数据与周期内可以连续访问1页(8个) E2PROM存储单元。在该方式中,单片机先发送启动信号,接着送个字节的控制字,再送1个字节的存储器起始单元地址,上述几个字节都得到E2PROM应答后就可以发送最多1页的数据,并顺序存放在以指定起始地址开始的相继单元中,最后以停止信号结束。页写入帧格式如图8.1.10所示。 图8-10页写入帧格式(3)指定地址读操作。读指定地址单元的数据。单片机在启动信号

19、后先发送含有片选地址的写操作控制字, E2PROM应答后再发送1个(2KB以内的E2PROM)字节的指定单元的地址, E2PROM应答后再发送1含有片选地址的读操作控制字,此时如果E2PROM做出应答,被访问单元的数据就会按SCL信号同步出现在串行数据/地址线SDA上。这种读操作的数据帧格式如叫8.1.11所示。 图8-11指定地址读操作数据帧格式(4)指定地址连续读。此种方式的读地址控制与前面指定地址读相同。单片机接收到每个字节数据后应做出应答,只要E2PROM检测到应答信号,其内部的地址寄存器就自动加1指向下一单元,并顺序将指向的单元的数据送到SDA串行数据线上。当需要结束读操作时,单片机

20、接收到数据后在需要应答的时刻发送一个非应答信号,接着再发送一个停止信号即可。这种读操作的数据帧格式如图8.1.12所示。 图8-12指定地址连续读数据帧格式4.TX-1C实验板上AT24C02连接图。TX-1C实验板上AT24C02与单片机连接如图8.1.13所示,其中A0,A1,A2与WP都接地,SDA接单片机P2.0脚,SCL接单片机P2.1脚,SDA与SCL分别与Vcc之间接一10k上拉电阻,因为AT24C02总线内部是漏极开路形式,不接上拉电阻无法确定总线空队列的电平状态。图8-13 TX-1实验板上AT24C02连接图例:用C语言编写程序,在TX1C实验板上实现如下功能:利用定时器产

21、生一个099秒变化的秒表,并且显示在数码管上,每过一秒将这个变化的数写入板上AT24C02内部。当关闭实验板电源,并再次打开实验板电源时,单片机先从ATZ4C02中将原来写入的数读取出来,接着此数继续变化并显示在数码管上。通过本实验可以看到,若向AT24C02中成功写入,并且成功读取则数码管上显示的数会接着关闭实验板时的数继续显示,否则有可能显示乱码。新建文件part2.6_1.c.程序代码如下:#include#define uchar unsigned char#define uint unsigned intbit write=0; /写24C02的标志;sbit sda=P20;sbi

22、t scl=P21;sbit dula=P26;sbit wela=P27;uchar sec,tcnt;uchar code table=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71;void delay();void delay1m(uint z) uint x,y; for(x=z;x0;x-) for(y=110;y0;y-);void start() /开始信号 sda=1; delay(); scl=1; delay(); sda=0; delay();Void sto

23、p() /停止 sda=0; delay(); scl=1; delay(); sda=1; delay();Void respons() /应答 uchar i; scl=1; delay(); while(sda=1)&(i255) i+; scl=0; delay();Void int() /将总线都拉高以释放总线 scl=1; delay(); sda=1; delay();void write_byte(uchar date) uchar i,temp; temp=date; for(i=0;i8;i+) Temp=temp1; scl=0; delay(); sda=CY; del

24、ay(); scl=1; delay();scl=0;delay();sda=1;delay();uchar read_byte() uchar i,k; scl=0; delay(); sda=1; for(i=0;i8;i+) scl=1; delay(); k=(k100) sec=0; TMOD=0x01; /定时器工作在方式1 ET0=1; EA=1; TH0=(65536-50000)/256; /对TH0 TL0赋值 TL0=(65536-50000)%256; /使定时器0.05秒中断一次 TR0=1; while(1) display(sec/10,sce%10); if(w

25、rite=1) write=0; /清0 write_add(2,sec); /在24c02的地址2中写入数据secvoid t0() interrupt 1 /定时中断服务函数 TH0=(65536-50000)/256; /对TH0 TL0赋值 TL0=(65536-50000)%256; /对装计数初值 tcnt+; /每过50ms tcnt加一 if(tcnt=20) /计满20次(1秒)时 tcnt=0; /重新再计 sec+; write=1; /1秒写一次24C02 if(sce=100) /定时100秒,再从零开始计时 sec=0;分析如下:(1)“void delay();”

26、是个微秒级延时函数,以前编写的延时函数内部都是用变量递增或是递减来实现延时,而这个函数是用空语句来实现短时间延时的,在Keil软件中设置晶振为11.0592MHz时,该延时函数延时人概45微秒,用来操作I2C总线时用。(2)“void write_add(uchar sddress,uchar date)”和“uchar read_add(uchar sddress)”两个函数分别实现向AT24CO2的任地址写字节的数据和从AT24CO2中任一地址读取字节数据的功能,函数操作步骤完全遵循前面讲解的操作原理,请人家参考对照。(3) sec=read_add(2); /读出保存的数据赋给secif

27、(sec100) /以防止首次读取出错误数据 sec=0;在主程序的开始处先读取上次写入AT24C02的数据,下面两句是为了防止第一次操作AT24C02时出现意外而加的,若是全新的AT24C02芯片或是以前已经被别人写过的不知道是什么内容的芯片,首次上电后读出来的数据我们无法知道,若是大于100的数将无法在数码管上显示向造成乱码,若是100以内的数还好处理。人家可自行修改程序使错误出现,再尝试修改程序看能否将错误排除。实例演示实际现象如图8.1.14所示。 图8-14 实际现象效果图8.2 SPI总线接口8.2.1 SPI总线的介绍 SPI, Serial Perripheral Interf

28、ace, 串行外围设备接口, 是 Motorola 公司推出的一种同步串行接口技术. SPI 总线在物理上是通过接在外围设备微控制器(PICmicro) 上面的微处理控制单元 (MCU) 上叫作同步串行端口(Synchronous Serial Port) 的模块(Module)来实现的, 它允许 MCU 以全双工的同步串行方式, 与各种外围设备进行高速数据通信. SPI 主要应用在 EEPROM, Flash, 实时时钟(RTC), 数模转换器(ADC), 数字信号处理器(DSP) 以及数字信号解码器之间. 它在芯片中只占用四根管脚 (Pin) 用来控制以及数据传输, 节约了芯片的 pin

29、数目, 同时为 PCB 在布局上节省了空间. 正是出于这种简单易用的特性, 现在越来越多的芯片上都集成了 SPI技术.8.2.2 SPI总线实例应用(DS1302)DS1302简介:DS1302是美国DALLAS公司推出的一种高性能、低功耗的实时时钟芯片,附加31字节静态RAM,采用SPI三线接口与CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号和RAM数据。实时时钟可提供秒、分、时、日、星期、月和年,一个月小与31天时可以自动调整,且具有闰年补偿功能。引脚及其功能结构如图8.3.1所示图8-15 DS1302外部引脚分配DS1302的引脚排列,其中Vcc1为后备电源,VCC2为

30、主电源。在主电源关闭的情况下,也能保持时钟的连续运行。DS1302由Vcc1或Vcc2两者中的较大者供电。当Vcc2大于Vcc1+0.2V时,Vcc2给DS1302供电。当Vcc2小于Vcc1时,DS1302由Vcc1供电。 X1和X2是振荡源,外接32.768kHz晶振。 CE:输入信号,在读、写数据期间,必须为高。该引脚有两个功能:第一,CE开始控制字访问为寄存器的控制逻辑;其次,CE提供结束单字节或多字节数据传输的方法。I/O:串行数据输入输出端(双向),后面有详细说明。 SCLK:时钟输入端。命令字节每一数据传送都需要由命令字节初始化。命令字节的最高位(位7)必须为1;位6为0表示对时

31、钟数据操作,为1表示对RAM数据操作;位15指定读写操作的寄存器;位0为0表示写操作,位1表示读操作;命令字节总是从最低有效位开始传送的。命令字节格式如下: 图8-16 控制字(即地址及命令字节)芯片复位与时钟控制CE复位引脚有两种功能:CE引脚接通控制逻辑,允许地址/命令序列送入移位寄存器;CE引脚可以终止单字节或多字节数据的传送。当CE为高电平时,所有的数据传送被初始化,允许对DS1302进行操作。时钟周期是下降沿跟随上升沿的序列,对于数据输入,则在时钟上升沿时数据必须有效,输出数据时,数据在时钟的下降沿输出。如果在传送过程中将CE引脚置为低电平,则会终止此次数据传送,使I/O引脚变为高阻

32、态。上电运行时,在VCC2.0V之前,CE必须保持低电平。只有在SCLK为低电平时,才能将CE置为高电平。读数据/写数据如图8.2.3和图8.2.4 图8-17 单字节读 图8-18 单字节写数据输入 紧跟写命令字节的8个SCLK之后的8个SCLK周期的上升沿,将数据写入DS1302,数据从低位开始写入。数据输出 紧跟写命令字节的8个SCLK之后的8个SCLK周期的下降沿,将数据从DS1302输出。输出的第一个数据位出现在写命令字节的最后一位后的第1个下降沿。多字节方式读写 通过对地址31寻址(地址命令位15全为1),则可以对时钟和RAM寄存器实现多字节读写操作,又称为突发模式。同样,地址命令

33、位6选择时钟或RAM,而位0选择读或写。再多字节操作方式下,不能操作地址为931的时钟寄存器,也不能操作地址为31的RAM寄存器。在多字节读写操作中,从地址0的0位开始。时钟时间与日期可以通过读DS1302的某些字节得到。通过写某些寄存器字节可以设置时间和日期,这些寄存器如表8-1所示。 表8-1 DS1302寄存器表中每个寄存器都有读地址与写地址,前七个寄存器为:秒、分、小时、日期、月、星期、年,随后是写保护寄存器和充电保护寄存器。时间和日期以BCD格式保存。小时寄存器的第7位为1,为12小时模式;位5显示AM/PM,当位5为1时,表示PM,为0时,表示AM。位7为0时是24小时模式,这时位

34、5是小时的最高位。秒寄存器的第7位为始终暂停位(CH),该位为1时,时钟停止,DS1302处于低功耗状态,消耗电流为100nA;该位为0时,启动时钟。控制寄存器的第7位(WP)是写保护位,该位为0才能进行写时钟与RAM寄存器操作;为1时,阻止写操作。上电后该位状态不定,所以在写操作前应该先清除该位。一些参数 表8-2 DS1302参数时序图读数据与写数据时CE、SCLK和I/O之间的时序图8-19如图8-19与图8-20所示。图中的时间参数如表8-3所示。由表8-3可以看出,芯片工作在5V,最小时间中最大的时间长度都小于1s,也就是说只要时间大于1s,就可以满足DS1302芯片的动作要求。例如

35、,tcc时间,在CE跳到高电平之后,SCLK应该在1s后才能跳到高电平。因此对已工作在11.0592MHz的51单片机,其每条指令的执行时间大于1s。若第一条指令使CE跳到高电平,第二条指令使SCLK上跳到高电平,则间隔时间为1s,因此可以满足时序要求。表8-3 时间参数(条件:VCC=5V)参数参数值数据与CLK建立tDC最小50ns时钟与数据保持tCDH最小70ns时钟与数据延时 tCDD最大200s时钟低电平tCL最小250ns时钟高电平tCH最小250ns时钟频率tCLK直流 最大2MHz时钟上升与下降tR,tF最大500nsCE与CLK建立tCC最小1sCLK与CE保持tCCH最小6

36、0nsCE无效时间tCWH最小1sCE与I/O高阻tCDZ最大70nsSCLK与I/O高阻tCCZ最大70ns 图8-19 读数据时CE、SCLK、和I/O之间的时序图 图8-20 写数据时CE、SCLK和I/O之间的时序图一些经典程序从DS1302读出一个字节数据的51单片机程序sclk=0; /使sclk为低电平ce=0; /使ce为低电平ce=1; /ce信号上跳,到此DS1302已经准备好接收数据i/o=a0; /将输出的命令a0送上i/o数据线sclk=1; / sclk信号上跳sclk=0; /返回低电平,为下次上跳做准备i/o=a1; /将输出的命令a1送上i/o数据线sclk=

37、1; / sclk信号上跳sclk=0; /返回低电平,为下次上跳做准备.i/o=a7; /直到命令最后一位sclk=1; / sclk信号上跳,到此为止,命令字节发送完毕 /以下为读数据操作sclk=0; / sclk信号下跳,使DS1302的数据送上i/o线clock_dat=1; /准双向口设置为输出a0=i/o; /从i/o数据线上接收数据a0sclk=1; /为下次下跳做准备sclk=0; /下跳,使DS1302输出数据a1=i/o; /接收数据.sclk=1; sclk=0;a7=i/o; /接收最后一位数据a7ce=0; /一次读操作完毕sclk=1;向DS1302写入一个字节数据的51单片机程序sclk=0; /使sclk为低电平ce=0; /使ce为低电平ce=1; /ce信号上跳,到此DS1302已经准备好接收数据i/o=a0;

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 科普知识


经营许可证编号:宁ICP备18001539号-1