资源描述
单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,单击此处编辑母版标题样式,2024/9/28,1,第,8,章,80C51,的串行总线扩展,I,2,C,总线,及其扩展,SPI,总线,接口及其扩展,串行时钟日历芯片,DS1302,及其接口,2024/9/28,2,I,2,C,总线接口及其扩展,有两根双向信号线:,数据线,SDA,和,时钟线,SCL,I,2,C,总线架构,8.1.1 I,2,C,总线基础,2024/9/28,3,I,2,C,总线的特点,采用,2,线制,器件引脚少,器件间连接简单,电路板体积减小,可靠性提高,传输速率高,标准模式:,100Kb/s,,快速模式:,400Kb/s,,高速模式为,支持主,/,从和多主两种工作方式,标准型,80C51,没有,I,2,C,总线接口,只能工作于单主方式(,扩展外围从器件,),2024/9/28,4,I,2,C,总线的数据传输,传输时序图,起始信号,S,终止信号,P,2024/9/28,5,字节传送与应答,寻址字节,位:,D7,D6,D5,D4,D3,D2,D1,D0,器件地址,R/W,2024/9/28,6,器件地址表,器件型号,字节容量,寻址字节,内部地址,字节数,页面写,字节数,最多可挂,器件数,固定标识,片 选,R/W,AT24C01A,128,1,0,1,0,A2,A1,A0,1/0,1,8,8,AT24C02,256,A2,A1,A0,1/0,8,8,AT24C04,512,A2,A1,P0,1/0,16,4,AT24C08A,1K,A2,P1,P0,1/0,16,2,AT24C16A,2K,P2,P1,P0,1/0,16,1,AT24C32A,4K,A2,A1,A0,1/0,2,32,8,AT24C64A,8K,A2,A1,A0,1/0,32,8,AT24C128B,16K,A2,A1,A0,1/0,64,8,AT24C256B,32K,A2,A1,A0,1/0,64,8,AT24C512B,64K,A2,A1,A0,1/0,128,8,无效,在一个,I2C,总线上只能接一个,AT24C16A,2024/9/28,7,I,2,C,总线典型信号时序模拟,8.1.2 80C51,的,I,2,C,总线时序模拟,2024/9/28,8,I,2,C,总线典型信号模拟子程序,起始信号,STA:SETB SDA,SETB SCL,NOP,NOP,CLR SDA,NOP,NOP,CLR SCL,RET,终止信号,STP:CLR SDA,SETB SCL,NOP,NOP,SETB SDA,NOP,NOP,CLR SDA,CLR SCL,RET,发应答位,“,0,”,ASK:CLR SDA,SETB SCL,NOP,NOP,CLR SCL,SETB SDA,RET,发非应答位,“,1,”,NAS:SETB SDA,SETB SCL,NOP,NOP,CLR SCL,CLR SDA,RET,主程序设置:,设,SCM,的晶振频率为,6MHz,(即时钟周期,2us,),2024/9/28,9,8.1.3 80C51,与,AT24C02,的接口,AT24C02,为串行,E,2,PROM,存储器。体积小、功耗低、占用,I/O,口线少,性能价格比高,WP,:写保护控制端,接地时允许写入。,2024/9/28,10,写操作过程,单片机发送起始信号,S,单片机发送控制字节,释放,SDA,线,被选中的器件确认是自己地址后,在,SDA,线产生应答,单片机发送,1,字节预写入存储区首地址,器件产生应答,-,单片机发出停止信号,P,器件进入写周期(,10ms,内结束),2024/9/28,11,读操作过程,单片机发送起始信号,S,单片机发送,控制字节(伪写),,释放,SDA,线,被选中的器件确认是自己地址后,在,SDA,线产生应答,单片机发送,1,字节预读出存储区首地址,器件产生应答,单片机再发一次起始信号,S,和读控制字节,器件产生应答,单片机读数据、恢复应答,-,最后字节读完、发非应答、发停止信号,P,I,2,C,总线基本操作子程序,应答位检查,正常,(F0)=0,,,否则,(F0)= 1,ASKC:SETB SDA,SETB SCL,CLR,F0,MOV C, SDA,JNC EXIT,SETB F0,EXIT:CLR SCL,RET,接收一个字节,RDB:MOV R0,#8,RLP:SETB SDA,SETB SCL,MOV C,SDA,MOV A,R2,;,R2,接收数据,RLC A,MOV R2,A,CLR SCL,DJNZ R0,RLP,RET,WR0:CLR SDA,SETB SCL,NOP,NOP,CLR SCL,AJMP WLP2,发送一个字节,WRB:MOV R0,#8,WRP1:RLC,A,JC WR1,AJMP WR0,WLP2:DJNZ R0,WRP1,RET,WR1:SETB SDA,SETB SCL,NOP,NOP,CLR SCL,CLR SDA,AJMP WLP2,2024/9/28,14,I,2,C,总线应用程序举例,【,例,8-1】,将,8,个数据写入,AT24C02,的,50H-57H,单元。,SNUM EQU 40H,SLAW EQU 41H,MAIN:MOV SP,#5FH,LCALL,LDATA,MOV SLAW, #0A0H,MOV SNUM, #9,MOV R1,#30H,LCALL WRNB,SJMP $,WRNB:CALL STA,MOV A,SLAW,CALL WRB,CALL ASKC,JB F0,WRNB,WLP:MOV A,R1,CALL WRB,CALL ASKC,JB F0,WRNB,INC R1,DJNZ SNUM,WLP,CALL STP,RET,装载数据,50H,00H,11H,22H,77H,到,30H,开始的,RAM,连续空间,2024/9/28,15,【,例,8-2】,将,AT24C02,的,50H-57H,单元的,8,个数据读出,存放到单片机内部,RAM,的,40H-47H,单元。,SNUM EQU 4AH,SLAW EQU 4BH,RNUM EQU 4CH,SLAR EQU 4DH,MAIN:MOV SP,#5FH,MOV 30H,#50H,MOV R1,#30H,MOV SLAW, #0A0H,MOV SNUM, #1,LCALL WRNB,MOV R1,#40H,MOV SLAR, #0A1H,MOV RNUM, #8,LCALL RDNB,SJMP $,RDNB:CALL STA,MOV A,SLAR,CALL WRB,CALL ASKC,JB F0,RDNB,RNLP:CALL RDB,MOV R1, A,DJNZ RNUM,FASK,CALL NAS,CALL STP,RET,FASK:CALL ASK,INC R1,SJMP RNLP,起始信号,STA,;终止信号,STP,;发应答位“,0”ASK,;发非应答位“,1”,应答位检查,ASKC(,出口,F0),;接收一个字节,RDB(,出口,R2),;发送一个字节,WRB(,入口,A),WRNB(S SLAW A DATA0,首地址, A DATA1. DATAn A P,,入口,SLAW,,,R1),RDNB(S SLAR A DATA1 A . DATAn A P,,入口,SLAR,,,R1),2024/9/28,16,SPI,总线接口及其扩展,8.2.1,单片机扩展,SPI,总线的系统结构,用于,E,2,PROM,、,A/D,、,D/A,、实时时钟等。单片机可,模拟,SPI,时序。,对于,80C51,,常采用,“,主,MCU+,多个从器件,”,的,主从模式,4,个引脚,2024/9/28,17,8.2.2,单片机,SPI,总线的时序模拟,单片机读,(,从器件输出,)时,在选通有效的情况下,,SCK,的下降沿时从器件将数据放在,MISO,线上,单片机延时并采样,MISO,线,将数据位读入。然后将,SCK,置为高电平形成上升沿,数据被锁存。,单片机写,(从器件输入)操作类似。,送出数据,锁存读入数据,2024/9/28,18,【,例,8-3】,单片机与具有,SPI,总线接口的,E2PROM,器件,X25F008,的接口电路如图所示 。,定义单片机引脚如下:,MISO EQU P1.3,单片机读子程序(读取字节在,R0,中),SPIRD:SETB SCK,CLR SS,MOV R1,#8,RLP:CLR SCK,NOP,NOP,MOV C, MISO,RLC A,SETB SCK,DJNZ R1,RLP,MOV R0,A,RET,MISO,从设备,编程模式,2024/9/28,19,单片机写子程序,SPIWR:SETB SCK,CLR SS,MOV R1,#8,MOV A, R0;,R0,存放准备发送的数据,WLP:CLR SCK,NOP,NOP,RLC A,MOV MOSI,C,SETB SCK,DJNZ R1,WLP,RET,2024/9/28,20,PP,:编程保护。,PP,为,H,,允许编程;,PP,为,L,,且位,PPEN=1,时,禁止编程,HOLD,:保持。,SCK,为,L,,,HOLD,也为,L,,则暂停通信;,SCK,为,L,,,HOLD,为,H,,则恢复通信;,若不使用暂停功能,,HOLD,应保持为,H,带,SPI,接口的,E2PROM,器件,X25F008,X25F008,有一个,8,位的指令寄存器,指令名称 指令格式 操作,PREN 0000 0110,置位,编程使能锁存器,(,使能编程,),PRDI 0000 0100,清零,编程使能锁存器,(,禁止编程,),RDSR 0000 0101,读,状态寄存器,PRSR 0000 0001,写,状态寄存器,READ 0000 0011,从给定地址开始的,存储单元,读,PROGRAM 0000 0010,从给定地址开始的,存储单元,写,(32 Bytes),2024/9/28,21,X25F008,有一个,8,位的状态寄存器,7 6 5 4 3 2 1 0,PPEN X X X BL1 BL0 PEL PIP,BL1 BL0,:存储块锁定设置位。,The X25F008 device array is divided into four equal segments,BL1 BL0 Array Addresses Locked (,禁止编程,),0 0 None,0 1 upper fourth,(,One segment,),1 0 upper half,(,two segments,),1 1 All,(,four segments,),PPEN,:编程保护使能。,PIP,:,1,表示正在编程;,0,表示未编程。,PEL,:,1,编程使能锁存器被置位;,0,,编程使能锁存器被复位,只读,由,PRSR,指令设置,2024/9/28,22,PPEN,PP,PEL,Locked,Blocks,Unlocked,Blocks,Status,Register,0,X,0,Locked,Locked,Locked,0,X,1,Locked,Programmable,Programmable,1,LOW,0,Locked,Locked,Locked,1,LOW,1,Locked,Programmable,Locked,X,HIGH,0,Locked,Locked,Locked,X,HIGH,1,Locked,Programmable,Programmable,2024/9/28,23,Figure 3. Program Enable Latch Sequence,Figure 1. Read SerialFlash Memory Array Operation Sequence,2024/9/28,24,Figure 4. Programming Sequence,2024/9/28,25,Figure 2. Read Status Register Operation Sequence,Figure 5. Program Status Register Operation Sequence,2024/9/28,26,8.3,串行时钟日历芯片,DS1302,及其接口,DS12887(DICE-5208K,实验箱,),AD0AD7 Multiplexed Address/Data Bus,MOT Bus Type Selection,CS Chip Select,AS Address Strobe,R/ W Read/Write Input,DS Data Strobe,IRQ Interrupt Request Output,SQW Square Wave Output,PCF8563(,普中科技,),:,I2C,实时时钟日历芯片,PCF8563 是低功耗的CMOS 实时时钟日历芯片, 采用I2C 总线,提供,1个可编程时钟输出,1个中断输出,1个掉电检测器,应用:移动 、便携仪器、,机、电池电源产品,主要性能,8.3.1 DS1302,的性能与引脚,计算,2100,年之前的秒、分、时、日、星期、月和年,能进行闰年调整;,31,字节数据,RAM,;,引脚与,TTL,兼容;,工作电流小于,300nA,,有备份电源和涓流充电能力。,DS1302,,含有,实时时钟,/,日历,和,31,字节静态,RAM,2024/9/28,29,引脚定义,I/O,:数据输入,/,输出引脚,SCLK,:串行时钟输入引脚,RST,复位引脚。,H,启动,I/O,,,L,结束,I/O,GND,:接地引脚,Vcc1,、,Vcc2,:工作电源、备份电源引脚,X1,、,X2,:晶振接入管脚。晶振频率为,。,2024/9/28,30,命令字格式,8.3.2 DS1302,的操作,位:,D7,D6,D5,D4,D3,D2,D1,D0,1,R/C,A4,A3,A2,A1,A0,R/W,D7,位:固定为,1,R/C,位:为,0,时选择操作时钟,为,1,时选择操作,RAM,A4A3A2A1A0:,操作地址,R/W,位:为,0,时进行写操作,为,1,时进行读操作,2024/9/28,31,单字节操作,写操作,读操作,All data transfers are initiated by driving the RST,input high,If the RST input is low all data transfer terminates,and the I/O pin goes to a high impedance state.,2024/9/28,32,多字节操作(突发模式),每次写入或读出,8,个字节时钟日历数据或,31,个字节,RAM,数据。与单字节时相似,,仅需将,A0A4,换成,“,11111,”,。,DS1302 RAM,单元共,31,个,其命令控制字为,C0H,FDH,,其中,奇数为读,操作,,偶数为写,操作,.,2024/9/28,33,8.3.3 DS1302,的寄存器及,RAM,日历时钟相关寄存器,寄存器名,命令字节,范 围,位内容,写,读,D7,D6,D5,D4,D3,D2,D1,D0,秒,80H,81H,00,59,CH,秒的十位,秒的个位,分,82H,83H,00,59,0,分的十位,分的个位,时,84H,85H,01,12,或,00,23,12/24,0,A/P,HR,小时个位,日,86H,87H,01,31,0,0,日的十位,日的个位,月,88H,89H,01,12,0,0,0,0/1,月的个位,星期,8AH,8BH,01,07,0,0,0,0,0,星期几,年,8CH,8DH,00,99,年的十位,年的个位,时钟控制:,1,,停振;,0,,工作,D7=1,,,12,小时制,,D5=1,,上午,D7=0,,,24,小时制,,D5D4,十位,教材表错,2024/9/28,34,其它寄存器及,RAM,寄存器名,命令字节,范 围,位内容,写,读,D7,D6,D5,D4,D3,D2,D1,D0,写保护,8EH,8FH,00H,80H,WP,0,涓流充电,90H,91H,-,TCS,DS,RS,时钟突发,BEH,BFH,-,-,RAM,突发,FEH,FFH,-,-,RAM0,C0H,C1H,00H,FFH,RAM,数据,00H,FFH,RAM30,FCH,FDH,00H,FFH,写保护位:,1,,写保护;,0,,未写保护,DS: 01,,选一个二极管,;10,,选,2,个二极管,;11,或,00,,禁止充电,RS,:,00,不充电,;01,2K,电阻,;10,4K,电阻,;11,8K,电阻,TCS: 1010,慢充电,教材表错,2024/9/28,35,8.3.4 DS1302,与单片机的接口,接口电路,驱动程序,ORG 0000H,JMP MAIN,ORG 0040H,MAIN:MOV 30H,#,00H,;,秒,MOV 31H,#08H;,分,MOV 32H,#,00,H;,时,MOV 33H,#08H;,日,MOV 34H,#08H;,月,MOV 35H,#01H;,星期,MOV 36H,#08H;,年,CALL INIT,SJMP $,字节写入子程序,(,写入内容在,B,中,),WRB:MOV 40H,#8,LPW:MOV A,B,RRC A,MOV B,A,MOV SIO,C,SETB SCLK,CLR SCL,DJNZ 40H,LPW,RET,字节读出子程序,(,读出内容在,A,中,),RDB:MOV 40H,#8,LPR:MOV C,SIO,RRC A,SETB SCLK,CLR SClK,DJNZ 40H,,,LPR,RET,24,小时制,下午,时钟工作,初始化及启动计时子程序,(,时间、日期初值在,30H,36H,单元,),:,INIT:CLR RST,CLR SCLK,SETB RST,MOV B,#8EH;,清保护位,CALL WRB,MOV B,#00H,CALL WRB,SETB SCLK,CLR RST,MOV R0,#30H,MOV R7,#7,MOV R1,#,80H,;,写秒命令,LOOP:CLR RST,CLR SCLK,SETB RST,MOV B,R1;,写入写秒命令,CALL WRB,MOV A,R0;,写秒数据,MOV B,A,CALL WRB,INC R0,1NC R1,1NC R1,SETB SCLK,CLR RST,DJNZ R7,LOOP,CLR RST,CLR SCLK,SETB RST,MOV B,#8EH;WP,置,1,,写保护生效,CALL WRB,MOV B,#80H,CALL WRB,SETB SCLK,CLR RST,RET,WRB,:入口,B,教材,81H,错,读时间及日期子程序,(,时间、日期值读到,30H,36H,单元,),RTIME:MOV R7,#7,MOV R1,#,81H,LPRT:CLR RST,CLR SCLK,SETB RST,MOV B,R1,CALL WRB,CALL RDB,MOV R0,A,INC R0,INC R1,INC R1,SETB SCLK,CLR RST,DJNZ R7,LPRT,RET,读秒命令,RDB,:出口,A,WRB,:入口,B,教材,80H,错,DS1302,应用举例(,C,程序),2024/9/28,39,2024/9/28,41,秒单元写命令、地址,秒单元读命令、地址,
展开阅读全文