欢迎来到天天文库
浏览记录
ID:50066871
大小:498.00 KB
页数:38页
时间:2020-03-08
《单片机应用技术 教学课件 作者 徐江海 第7章 串行扩展技术.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第7章串行扩展技术本章主要内容1、SPI串行接口2、I2C总线串行扩展技术3、应用实例——温控6一、SPI串行接口1、SPI总线SPI(SerialPeripheralInterface)总线是由Motorola公司提出的一种高速同步外设接口总线,通常采用3根或4根信号线进行数据传输。时钟脉冲信号(SCK)串行数据输入线(SDI)串行数据输出线(SDO)从机选择线(CS)2、有多个SPI从设备级联连接原理图从设备的CS端都与系统主机的CS端相连,主机的SDO接到其中一个从设备的SDI,该从设备的SDO接到下个从设备的SDI,依次下去,最后一个从设备的SDO再接回到主机的SDI。3、有多个S
2、PI从设备独立连接原理图。从设备的CS信号分别由主机分别控制,主机的SDO连接到每个从设备的SDI,所有从设备的SDO都连接到主机的SDI,主机每次只能对一个从设备进行操作,先通过片选信号选中某个从设备4、SPI总线数据传输示意图主机向它的SPI串行寄存器写入一个字节来发起一次传输。寄存器是通过SDO信号线将字节传送给外设,外设也将自己移位寄存器中的内容通过SDI信号线返回给主机。4、SPI总线典型时序图进行写操作,主机只需忽略收到的字节;反过来,如果主机要读取外设的一个字节,就必须发送一个空字节来引发从机的传输。二、SPI总线应用举例1.AT89S51单片机ISP(InSystemPro
3、gram)接口AT89S××系列单片机具有在线编程能力,使用其P1口的P1.5、P1.6、P1.7的第二功能,这时的单片机为ISP系统中的从设备,由其它主设备控制,将程序下载到单片机内部。方便使用。图7-8AT89S51串行编程时序图2.DS1302时钟接口芯片DS1302采用SPI三线接口与CPU进行同步通信,可一次传送一个或多个字节的实时时钟数据或RAM数据。图7-9DS1302引脚封装图Vcc1:主电源;Vcc2:备份电源。当Vcc2>Vcc1+0.2V时,由Vcc2向DS1302供电,当Vcc24、/输出引脚(三线接口时的双向数据线);:复位引脚,要求在读、写数据期间,必须为高图7-10DS1302内部结构图寄存器命令码数值范围(BCD码)位内容名称地址写读D7D6D5D4D3D2D1D0秒00H80H81H00~59CH秒(十位)秒(个位)分01H82H83H00~590分(十位)分(个位)时02H84H85H01~120(24)时(十位)时(个位)或00~231(12)A/P时(十位)日03H86H87H01~28,29,30,3100日(十位)日(个位)月04H88H89H01~12000月(十位)月(个位)星期05H8AH8BH01~0700000星期年06H8CH8DH005、~99年(十位)年(个位)写保护07H8EH8FH—WP0000000涓流08H90H91H—TCSTCSTCSTCSDSDSDSDS多字节3EHBEHBFH——表7-4DS1302时钟/日历寄存器3、DS1302的读/写操作图7-11DS1302读/写控制字控制字的最高位MSB是1,才能把数据写入到DS1302中。D6为0,表示读/写对象为日历时钟数据;D6为1,表示读/写对象为RAM。D5~D1为当前读/写单元的地址;最低位LSB表示读/写状态,D0为0,表示对指定单元进行“写”操作,D0为1,表示对指定单元进行“读”操作。4、DS1302与AT89S51单片机接口电路图7-14DS16、302与单片机的典型接口电路[例7-1]在图7-14电路中,将DS1302运行时间设置为2010年5月9日15点整,星期日,编写相应的程序。sbitRST=P1^0;//定义RST为P1.0口sbitSCLK=P1^1;//定义SCLK为P1.1口sbitI_O=P1^2;//定义I_O为P1.2口voidW_BYTE(unsignedcharx)//写字节子函数{unsignedchari,p;p=x;for(i=0;i<8){if(p&0x80==0)//判断高位数据{I_O=0;}//输出低else{I_O=1;}//输出高SCLK=1;//时钟上升沿_nop_();SCLK=0;/7、/时钟下降沿p<<1;//信息左移1位}}voidWriteDS1302(){RST=0;//复位引脚为低电平所有数据传送终止_nop_();SCLK=0;//清时钟总线_nop_();RST=1;//复位引脚为高电平逻辑控制有效W_BYTE(0x80);//写控制字,从寄存器地址0开始写数据W_BYTE(0x00);//0秒信息,BCD码W_BYTE(0x00);//0分信息,BCD码W_BYTE(0x15);//15
4、/输出引脚(三线接口时的双向数据线);:复位引脚,要求在读、写数据期间,必须为高图7-10DS1302内部结构图寄存器命令码数值范围(BCD码)位内容名称地址写读D7D6D5D4D3D2D1D0秒00H80H81H00~59CH秒(十位)秒(个位)分01H82H83H00~590分(十位)分(个位)时02H84H85H01~120(24)时(十位)时(个位)或00~231(12)A/P时(十位)日03H86H87H01~28,29,30,3100日(十位)日(个位)月04H88H89H01~12000月(十位)月(个位)星期05H8AH8BH01~0700000星期年06H8CH8DH00
5、~99年(十位)年(个位)写保护07H8EH8FH—WP0000000涓流08H90H91H—TCSTCSTCSTCSDSDSDSDS多字节3EHBEHBFH——表7-4DS1302时钟/日历寄存器3、DS1302的读/写操作图7-11DS1302读/写控制字控制字的最高位MSB是1,才能把数据写入到DS1302中。D6为0,表示读/写对象为日历时钟数据;D6为1,表示读/写对象为RAM。D5~D1为当前读/写单元的地址;最低位LSB表示读/写状态,D0为0,表示对指定单元进行“写”操作,D0为1,表示对指定单元进行“读”操作。4、DS1302与AT89S51单片机接口电路图7-14DS1
6、302与单片机的典型接口电路[例7-1]在图7-14电路中,将DS1302运行时间设置为2010年5月9日15点整,星期日,编写相应的程序。sbitRST=P1^0;//定义RST为P1.0口sbitSCLK=P1^1;//定义SCLK为P1.1口sbitI_O=P1^2;//定义I_O为P1.2口voidW_BYTE(unsignedcharx)//写字节子函数{unsignedchari,p;p=x;for(i=0;i<8){if(p&0x80==0)//判断高位数据{I_O=0;}//输出低else{I_O=1;}//输出高SCLK=1;//时钟上升沿_nop_();SCLK=0;/
7、/时钟下降沿p<<1;//信息左移1位}}voidWriteDS1302(){RST=0;//复位引脚为低电平所有数据传送终止_nop_();SCLK=0;//清时钟总线_nop_();RST=1;//复位引脚为高电平逻辑控制有效W_BYTE(0x80);//写控制字,从寄存器地址0开始写数据W_BYTE(0x00);//0秒信息,BCD码W_BYTE(0x00);//0分信息,BCD码W_BYTE(0x15);//15
此文档下载收益归作者所有