单片机应用技术 教学课件 ppt 作者 徐江海 第7章 串行扩展技术

上传人:E**** 文档编号:89479778 上传时间:2019-05-25 格式:PPT 页数:38 大小:498KB
返回 下载 相关 举报
单片机应用技术 教学课件 ppt 作者 徐江海 第7章  串行扩展技术_第1页
第1页 / 共38页
单片机应用技术 教学课件 ppt 作者 徐江海 第7章  串行扩展技术_第2页
第2页 / 共38页
单片机应用技术 教学课件 ppt 作者 徐江海 第7章  串行扩展技术_第3页
第3页 / 共38页
单片机应用技术 教学课件 ppt 作者 徐江海 第7章  串行扩展技术_第4页
第4页 / 共38页
单片机应用技术 教学课件 ppt 作者 徐江海 第7章  串行扩展技术_第5页
第5页 / 共38页
点击查看更多>>
资源描述

《单片机应用技术 教学课件 ppt 作者 徐江海 第7章 串行扩展技术》由会员分享,可在线阅读,更多相关《单片机应用技术 教学课件 ppt 作者 徐江海 第7章 串行扩展技术(38页珍藏版)》请在金锄头文库上搜索。

1、第7章 串行扩展技术,本章主要内容,一、SPI串行接口,1、SPI总线,SPI(Serial Peripheral Interface)总线是由Motorola公司提出的一种高速同步外设接口总线,通常采用3根或4根信号线进行数据传输 。,时钟脉冲信号(SCK),串行数据输入线(SDI),串行数据输出线(SDO),从机选择线(CS),2、有多个SPI从设备级联连接原理图,从设备的CS端都与系统主机的CS端相连,主机的SDO接到其中一个从设备的SDI,该从设备的SDO接到下个从设备的SDI,依次下去,最后一个从设备的SDO再接回到主机的SDI 。,3、有多个SPI从设备独立连接原理图。,从设备的C

2、S信号分别由主机分别控制,主机的SDO连接到每个从设备的SDI,所有从设备的SDO都连接到主机的SDI,主机每次只能对一个从设备进行操作,先通过片选信号选中某个从设备,4、SPI总线数据传输示意图,主机向它的SPI串行寄存器写入一个字节来发起一次传输。寄存器是通过SDO信号线将字节传送给外设,外设也将自己移位寄存器中的内容通过SDI信号线返回给主机 。,4、SPI总线典型时序图,进行写操作,主机只需忽略收到的字节;反过来,如果主机要读取外设的一个字节,就必须发送一个空字节来引发从机的传输。,二、SPI总线应用举例,1. AT89S51单片机ISP(In System Program)接口,AT

3、89S系列单片机具有在线编程能力,使用其P1口的P1.5、P1.6、P1.7的第二功能,这时的单片机为ISP系统中的从设备,由其它主设备控制,将程序下载到单片机内部。方便使用。,图7-8 AT89S51串行编程时序图,2. DS1302时钟接口芯片,DS1302采用SPI三线接口与CPU进行同步通信,可一次传送一个或多个字节的实时时钟数据或RAM数据。,图7-9 DS1302引脚封装图,Vcc1:主电源;Vcc2:备份电源。 当Vcc2Vcc1+0.2V时,由Vcc2向DS1302供电,当Vcc2 Vcc1时,由Vcc1向DS1302供电。,SCLK:串行时钟输入引脚;,I/O:数据输入/输出

4、引脚(三线接口时 的双向数据线);,:复位引脚,要求在读、写数据期间,必须为高,图7-10 DS1302内部结构图,表7-4 DS1302时钟/日历寄存器,3、DS1302的读/写操作,图7-11 DS1302读/写控制字,控制字的最高位MSB是1,才能把数据写入到DS1302中。 D6为0,表示读/写对象为日历时钟数据;D6为1,表示读/写对象为RAM。D5D1为当前读/写单元的地址; 最低位LSB表示读/写状态,D0为0,表示对指定单元进行“写”操作,D0为1,表示对指定单元进行“读”操作。,4、DS1302与AT89S51单片机接口电路,图7-14 DS1302与单片机的典型接口电路,例

5、7-1在图7-14电路中,将DS1302运行时间设置为2010年5月9日15点整, 星期日,编写相应的程序。,sbit RST=P10 ;/定义RST为P1.0口 sbit SCLK=P11 ; /定义SCLK为P1.1口 sbit I_O=P12 ; /定义I_O为P1.2口 void W_BYTE(unsigned char x) /写字节子函数 unsigned char i,p; p=x; for(i=0;i8)if(p /信息左移1位 ,void Write DS1302() RST=0; /复位引脚为低电平所有数据传送终止 _nop_(); SCLK=0; /清时钟总线 _nop_

6、(); RST=1; /复位引脚为高电平逻辑控制有效 W_BYTE(0x80); /写控制字,从寄存器地址0开始写数据 W_BYTE(0x00); /0秒信息,BCD码 W_BYTE(0x00); /0分信息,BCD码 W_BYTE(0x15); /15时信息,BCD码 W_BYTE(0x09); /9日信息,BCD码 W_BYTE(0x05); /5月信息,BCD码 W_BYTE(0x07); /星期日信息,BCD码 W_BYTE(0x10); /10年信息,BCD码 RST=0; /复位引脚为低电平所有数据传送终止 ,一、I2C总线串行扩展技术概述,I2C总线(Intel Integrat

7、ed Circuit BUS)。 1I2C总线扩展的连接方式,图7-15 I2C总线扩展示意图,2I2C总线器件的寻址方式,DA3DA0 是器件内部的地址,根据不同器件类型进行划分的,如ADC/DAC,器件内部的地址为1001,AT24C系列的E2 P ROM器件内部的地址为1010 。 A2A1A0 是器件的引脚地址,用来区别总线上相同的器件 。 R/ W 读写控制位,控制串行数据的传送方向,图7-16 I2C总线器件地址格式,3I2C总线接口的电气结构与驱动能力,I2C总线的最大电容负载能力为400pF,所有器件等效电容的和应小于400pF。,图7-17 I2C总线电气结构,4I2C总线的

8、工作时序,图7-19为I2C总线几个典型时序,图7-18 I2C总线数据传送时序图,二、89S51虚拟I2C总线软件包,1启动信号START,void START(void) /启动信号子函数 SCL=1; SDA=1; / 维持SCL、SDA高电平 _nop_();_nop_(); SDA=0; /在SCL高电平期间,SDA由高到低变化 _nop_();_nop_(); /维持SCL高电平4S SCL=0; / SCL由高到低,准备产生传输脉冲 ,2终止信号STOP,void STOP (void) /停止信号子函数 SCL=1; SDA=0; _nop_();_nop_(); /维持SCL

9、高电平、SDA低电平 SDA=1; /在SCL高电平期间,SDA由低到高变化 _nop_();_nop_(); /维持SCL、SDA高电平,释放总线 ,3发送应答信号TACK,void TACK (void) /发送应答信号子函数 SDA=0; /输出应答信息,SDA=0 SCL=1; / SCL置高电平 _nop_();_nop_(); /维持SCL高电平4S以上 SCL=0; / SCL由高到低,准备产生传输脉冲 SDA=1; ,4发送应答非信号TNACK,void TNACK (void) /发送应答非信号子函数 SDA=1; /输出应答非信息,SDA=1 SCL=1; / SCL置高电

10、平 _nop_();_nop_(); /维持SCL高电平4S以上 SCL=0; / SCL由高到低,准备产生传输脉冲 SDA=0; ,5检测应答信号RACK,void RACK (void) /检测应答信号子函数 SDA=1; /置为输入口 SCL=1; / SCL置高电平 if(SDA= =0) SCL=0; / SCL由高到低,准备产生传输脉冲 else /不正常处理程序,从机没有正常应答 ,6写字节WBYTE,void WBYTE(unsigned char data1)/写字节函数, unsigned char i,p; p=data1; /取传送数据 for(i=0;i8;i+) /

11、置8位数据长度 if (p /数据左移一位 ,7、读字节RBYTE,unsigned char RBYTE() /读字节函数 unsigned char i,j,k=0; SDA =1; /置为输入口 for (i=0;i8;i+) /置数据位数8位 SCL=1; / SCL置高电平 if (SDA = =1) j=1; /读一位数据 else j=0; k=(k1)|j; /数据左移一位 SCL=0; / SCL由高到低,产生传输脉冲 _nop_();_nop_(); /维持SCL低电平4S以上 return(k); /返回数据 ,三、AT24C系列E2 PROM芯片扩展,1AT24C02的

12、接口电路,图7-20 AT24C02引脚与接口电路,2AT24C02的读写格式,图7-21 AT24C02读操作格式,图7-22 AT24C02的写操作个格式,四、A/D、D/A芯片PCF8591扩展,1PCF8591引脚,图7-23 PCF8591引脚图,2、PCF8591控制寄存器,D3、D7:必须为0 。 D1、D0:选择A/D通道号,00:通道0; 01:通道1;10: 通道2;11:通道3。 D2:自动增量选择,D2=1时,A/D转换按通道03 依次自动转换 D5、D4:模拟量输入方式选择位 D6:模拟输出允许,D6=1,模拟量输出有效。 该位用于D/A转换,图7-26 PCF859

13、1A/D输入4种组合方式,3PCF8591 A/D、D/A操作数据格式,图7-26 PCF8591接口电路,一、温度测量报警系统存储器电路设计,存储器芯片采用AT24C02,用来存放8路温度的参数,电路设计在图6-20基础上设计,电路的其它部分显示电路、LED灯、报警电路和键盘电路只画出框图表示。接口电路如图7-27所示,AT24C02的引脚地址都接地,P1.6作为数据线,P1.5为时钟线。,图7-27 温度测量报警系统存储器接口电路,二、温度测量报警系统存储器程序设计,void W_canshu( unsigned char addr,unsigned char data)/写字节参数 un

14、signed char x_addr, y_data; x_addr= addr; y_data= data; / 取数据 START(); /调启动子函数 WBYTE(0xA0); /调写字节子函数,写SLAW RACK(); /调检测应答子函数 WBYTE(x_addr); /调写字节子函数,写AT24C02内部单元地址 RACK(); /调检测应答子函数 WBYTE(y_data);/ 调写字节子函数,写数据 RACK(); /调检测应答子函数 STOP(); /调停止子程序 ,1、写字节参数,2、读参数 子函数,void READ_canshu() / 读参数子函数 unsigned

15、char i; START(); /调启动子函数 WBYTE(0xA0); /调写字节子函数,写SLAW RACK(); /调检测应答子函数 WBYTE(0x00); /调写字节子函数,写SADR,AT24C02内部单元首地址 RACK(); /调检测应答子函数 STOP(); /调停止子程序 START(); /调启动子函数 WBYTE(0xA1); /调写字节子函数,写SLAR for(i=0;i8;i+) canshu i= RBYTE(); /调读字节子函数,读参数 TACK(); /调发送应答子程序 STOP(); /调停止子程序 ,3、键盘操作写参数,void inex0 () interrupt 0 /外中断0的中断服务程序

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号