1、第第9 9章章 单片机系统的扩展单片机系统的扩展主讲:朱兆优主讲:朱兆优本章学习要点:本章学习要点:(1)单片机外部扩展和总线构成原理,串行总线、并行总线扩展技术;(2)线选法、译码法扩展单片或多片存储器、TTL芯片的方法;(3)扩展外部存储器或TTL芯片的端口地址编址方法;(4)I2C、SPI、1/2/3Wire总线的接口和编程应用。9.1 单片机系统扩展概述单片机系统扩展概述 单片机内部资源不够用,需要外部扩展RAM、ROM或I/O口。1、传统的扩展办法、传统的扩展办法 采取外部扩展并行器件,如:ROM-2764、27128、27256、27512等。RAM-6264、62128、6225
2、6、62512或2864等。I/O口-8255A、8155H等。通过三总线把单片机与外部器件连接起来,进行数据、地址、控制信号的传输。传统的扩展结构如下:实际上这些器件已经淘汰,也很不实用。2、现代电路扩展方法现代电路扩展方法(1)单片机选型)单片机选型:从外部转到内部,重视单片机选型,根据不同的应用,选择不同性能的单片机芯片。(2)串行总线扩展)串行总线扩展:有I2C接口的AT24Cxx系列和SPI接口的W25Xxx系列。W25X64容量高达容量高达8MB,W25Q128容量高达容量高达16MB。因此,今后的片外扩展将以因此,今后的片外扩展将以串行总线为主串行总线为主,传统,传统的的三总线三
3、总线的应用扩展将出现在的应用扩展将出现在以以ARMARM为核心为核心的大系的大系统结构上。统结构上。9.2 单片机系统总线的构造单片机系统总线的构造 单片机系统扩展出总线,所有器件都挂接在一条总线上。9.2.1 单片机系统总线单片机系统总线三大总线:三大总线:数据总线-与外部器件之间传输数据 地址总线-向外发出地址信号 控制总线-是一组控制信号线 9.2.2 单片机系统三总线的构造单片机系统三总线的构造 单片机的三总线分别由P0、P2口和控制信号构成。三总线构造 如下图:9.3 单片机系统的扩展接口单片机系统的扩展接口1片外并行器件的连接方法 (1)查阅芯片资料 (2)按引脚功能分类 (3)同
4、类线相连 (4)片选信号接地址线2系统扩展要求 (1)能区分不同的地址空间,每个存储单元或端口都各有一个地址。(2)能够控制不同的芯片,读、写操作时不会相互干扰。(3)系统的地址编址不重叠,避免发生数据冲突。3存储器地址分配方法存储器地址分配方法(1)线选法 直接利用单片机系统的地址线作为扩展芯片的片选信号。(2)译码法 用译码器将地址线进行译码,然后将译码器的输出信号作为扩展芯片的片选信号。9.3.2 扩展的外部单元的编址扩展的外部单元的编址 编址方法如下:编址方法如下:(1)基本地址基本地址计算计算 (2)加权地址加权地址计算计算 (3)空地址线空地址线处理处理 (4)将将加权地址加权地址
5、固定地址固定地址,再叠加到,再叠加到基本地址基本地址的的高位上,得出器件的地址范围。高位上,得出器件的地址范围。例例如如 假定扩展了2个芯片(IC1、IC2),其连接关系如下图,要求计算这2个芯片的地址范围。表示地址位,单片机每一次只能访问一个芯片。则基本地址线12根根,编址为000FFFH 加权地址线2根根(、(、P2.7)悬空线2根根(、(、P2.4)假设假设地址线地址线按如下分配,则计算按如下分配,则计算IC1、IC2的的地址空间如地址空间如 下:9.3.3 单片机扩展存储器的接口设计单片机扩展存储器的接口设计12764和6264的引脚功能(1)数据线8根:D0D7。(2)地址线13根:
6、A0A12。(3)控制线5根:OE-输出允许控制端(读选通信号输入线),低电平有效;WE-写允许信号输入线,低电平有效;PGM-编程时,编程脉冲的输入端,低电平有效;CE-片选信号,低电平有效;CS-片选信号使能端,高电平有效,即当CE=0,同时CS=1时,芯片才被有效选中。(4)电源和地线:+5 V供电。2764、6264B引脚排列如下图引脚排列如下图 2、单片机与存储器的典型接口电路、单片机与存储器的典型接口电路确定IC1、IC2和IC3的地址分配如下:IC1:6000H7FFFH;IC2:A000HBFFFH;IC3:C000HDFFFH;对IC2的A100H地址的读操作指令为:MOVD
7、PTR,#0A100H MOVXA,DPTR对IC3的C200H地址的写操作指令为:MOVA,#Data MOVDPTR,#0C200H MOVXDPTR,A3操作时序操作时序对程序存储器和数据存储器的操作是严格分开的。假设执行一个2字节、1周期指令“MOV A,#Data”对对外部数据存储器外部数据存储器的的读操作读操作,如:,如:MOVX A,DPTR9.4 I/O端口扩展与设计端口扩展与设计 传统的I/O端口扩展通常采用8255A/8155H和TTL芯片;现代的I/O口扩展采取选择片内带有不同端口数量的单片机芯片。单片机品种多,有564个数字I/O引脚9.4.1 I/O接口概述接口概述
8、串行I/O接口-采用逐位串行移位的方式传输数据,可以满足速度要求不高的串行设备接口要求;并行I/O接口-采用并行方式传输数据,可以与外设高速传输数据。1I/O接口的功能接口的功能 (1)数据传输速度匹配。(2)输出数据锁存。(3)输入数据三态缓冲。(4)信号或电平变换。2I/O接口与端口的区别接口与端口的区别 I/O接口(Interface)是CPU与外界的连接电路,是CPU与外界进行数据交换的通道。I/O端口(Port)是CPU与外设直接通信的地址,通常是把I/O接口电路中能够被CPU直接访问的寄存器或缓冲器称之为端口。3.I/O端口的编址端口的编址独立编址方式-把I/O端口地址空间和存储器
9、地址空间严格分开,地址空间相互独立,编址界限分明。统一编址方式-每个I/O端口作为一个外部数据存储器RAM地址单元编址。8051单片机对单片机对I/O端口采用统一编址。端口采用统一编址。3单片机与外设间的数据传送方式单片机与外设间的数据传送方式 (1)同步传送方式 (2)异步传送方式 (3)中断传送方式4I/O接口电路种类 常用的片外I/O接口芯片:(1)TTL芯片、CMOS器件 (2)可编程并行接口芯片(如8155H、8255A)。使用并行可编程I/O接口芯片时,扩展电路比较繁杂,实际已经很少使用(已淘汰)。9.4.2 TTL电路扩展并行电路扩展并行I/O口口 采用TTL电路或CMOS电路的
10、锁存器、三态门,使用总线式或非总线式扩展可以实现与单片机连接。1用TTL电路扩展并行I/O端口电路 例1 按图中,LED灯一一对应按键状态,若K1按下对应L1亮,若没有键按下,则LED灯全灭,要求编程用LED灯表示某按键是否按下。其程序段如下:MOV DPTR,#0000H;I/O端口地址DPTRMOVX A,DPTR;读74LS244端口数据A,产生RD=0。MOVX DPTR,A 例例2 按图从扩展的16位输入口中读入6组数据(每组2字节),读入的数据存放在片内30H开始的单元。RXDAT:MOV R2,#06;设置读入的字节数 MOV R0,#30H;设置读入数据存放指针 SETB P1
11、.0START:CLR P1.0;端口复位 SETB P1.0;允许串行移位输入 MOV SCON,#00;设置串行口为工作方式0 MOV R3,#02;设置每组读入的字节数READAT:JNB RI,$CLR RI MOV A,SBUF;读入数据 MOV R0,A INC R0 DJNZ R3,READAT DJNZ R2,START RET3用串行接口扩展并行输出口用串行接口扩展并行输出口 CD4094和74LS164都是具有串行移位输入、并行输出的接口芯片,可扩展成并行输出口,电路如下:例例3 按照图,把按照图,把片内片内30H、31H单元单元的内容通过串行接口传送到的内容通过串行接口传
12、送到扩展的扩展的16位输出口。程序段如下:位输出口。程序段如下:TXDAT:MOV R2,#02;设置发送的字节数 MOV R0,#30H;设置发送数据地址指针 CLR P1.0;显示复位清除;禁止复位 MOV SCON,#00;设置串行口为工作方式0 MOV A,R0 MOV SBUF,A;启动发送数据 JNB RI,$CLR RI INC R0;指针加1 DJNZ R2,START;判断数据是否发送完毕 RET9.5 串行总线的扩展应用串行总线的扩展应用 串行总线是芯片间串行数据传输总线,串行总线类型:(1)I2C总线:传输速率400 KB/s。(2)SPI总线:传输速率1.05 MB/s
13、 (3)1/2/3Wire总线 9.5.1 I2C总线结构与工作原理总线结构与工作原理1I2C总线结构及特点 I2C总线是由数据线SDA和时钟线SCL构成的串行总线,可发送和接收数据,可在主控器与被控器之间、主控器与主控器之间进行双向传输。结构如下图:2I2C总线特点总线特点(1)使用二线传输。(2)多主竞争中的仲裁和同步。(3)I2C总线传输数据采用状态码管理方式。(4)采用器件地址与引脚地址相结合的方式进行编址。(5)I2C总线接口的器件都具有应答功能。(6)I2C总线电气接口输出端是晶体管漏极开路或集电极开路结构,使用时必须外接上拉电阻。3I2C总线的信号及时序定义(1)总线上数据的有效
14、性 在时钟线(SCL)为高电平期间,数据线(SDA)高电平表示传输的数据位为1,低电平表示传输的数据位为0。(2)数据传输的起始位和结束位 I2C总线在传送数据过程中有三种类型信号,分别是:起始信号、结束信号和应答信号。9.5.2 I2C总线的时序总线的时序 标准模式下,传输速率100 KB/s,高速模式下传输速率400 KB/s。9.5.3 I2C总线上的数据传输格式总线上的数据传输格式1数据传输时的总线控制 I2C总线上可以连续以8位二进制数(1字节)的方式传输数据。但每启动一次I2C总线,其后的数据传输字节数没有限制。2应答信号 每传送1字节数据后必须跟随等待一个应答信号,表示已收到数据
15、。3数据传送格式(1)主控器写操作:指主控器向被寻址的被控器写入n字节数据的操作,数据传输格式如下:(2)主控器读操作(3)主控器读/写操作9.5.4 I2C总线的信号模拟与编程技术总线的信号模拟与编程技术启动条件:在SCL为高电平时,SDA出现一个下降沿则启动I2C总线。停止条件:在SCL为高电平时,SDA出现一个上升沿则停止使用I2C总线。稳定状态:除了启动和停止状态,在其余状态下,SCL的高电平都对应SDA的稳定数据状态。设以89C51的I/O口、做模拟I2C总线,则常用的子程序如下:(1)I2C总线启动子程序总线启动子程序STAT STAT:SETB SDA;SDA置高电平SETB S
16、CL;SCL置高电平NOP;延时NOPCLR SDA;在SCL=1使SDA产生下降沿NOPNOPCLR SCL;SCL拉低,主控制器等待RET2、停止子程序STOPSTOP:CLR SDA;SDA置低电平SETB SCL;SCL置高电平NOP;延时NOPSETB SDA;在SCL=1使SDA产生上升沿NOP;延时NOPCLR SCL;SCL拉低,主控制器等待RET(3)发送应答位置0子程序MACKMACK:CLR SDA;SDA置低电平SETB SCL;SCL置高电平NOP;延时NOPCLR SCL;发送0信号,即应答位SETB SDARET(4)发送非应答位置发送非应答位置1子程序子程序NA
17、CKNACK:SETB SDA;SDA置高电平SETB SCL;SCL置高电平NOPNOPCLR SCL;发送1信号,即非应答位CLR SDARET(5)应答位检测子程序应答位检测子程序CACK CACK:SETB SDA;置SDA为输入方式SETB SCL;SCL置1使SDA上数据有效CLR F0;置F0=0MOV C,SDA;读SDA信号到CJNC CEND;若SDA=0为应答,F0=0SETB F0;否则无正常应答,置F0=1CEND:CLR SCL;SCL拉低RET(6)发送一字节数据子程序发送一字节数据子程序WRBYT WRBYT:MOV R2,#08;置一字节8位,WLP:RLC
18、A;从高位开始逐位移出并发送JC WR1;判断发送1还是0,若发送1则转WR1AJMP WR0WLP1:DJNZ R2,WLP;8位数据未发送完,继续发送RETWR1:SETB SDA;置SDA=1,发送1SETB SCLNOPNOPCLR SCLCLR SDA;复位SDAAJMP WLP1WR0:CLR SDA;置SDA=0,发送0SETB SCLNOPNOPCLR SCLAJMP WLP1(7)接收一字节数据子程序接收一字节数据子程序RDBYTRDBYT:MOV R0,#08;置8位数据长度RLP:SETB SDA;置SDA为输入方式SETB SCL;置SCL=1,使数据有效MOV C,S
19、DA;从数据线上读入一位到CMOV A,R2RLC A;把数据位移入到AMOV R2,ACLR SCL;读一位结束,继续接下一位DJNZ R0,RLP;8位数据读完否?RET 9.6 I2C总线器件的接口应用总线器件的接口应用 AT24Cxx、PCF8563/8583等器件都是目前广泛应用的I2C总线接口的器件。9.6.1 串行串行E2PROM存储器接口应用存储器接口应用 AT24Cxx广泛应用于汽车电子、水表、电表、煤气表和电视机等电子产品中用做数据保存。1AT24Cxx存储器的主要特性 字节写入方式和页写入方式 可用电擦写,功耗很低,电压5.5 V 1.8 V供电时最高传输速率达100 K
20、Hz 2.7 V或5 V供电时传输速率达400 KHz 在5 V供电时最大速率达1 MHz (AT24C128/256/512)抗干扰能力强 2引脚功能与地址选择采用了DIP8脚封装形式,各引脚功能如下:A0、A1、A2:地址输入端,可并联8个芯片;SCL:I2C总线的时钟线;SDA:I2C总线的数据线;WP:写保护端,WP=1只读,读写时接地;Vcc、GND:电源,可以接或5V供电。AT24Cxxx特性特性3存储器的写操作存储器的写操作 AT24Cxx系列存储器把地址空间按物理分页,支持按页写操作模式,其读写通信格式时序 如下:5与单片机的接口编程与单片机的接口编程89C51单片机与AT24
21、C64接口电路如下:例1 要求从IC1中的120H地址开始连续读出8字节数据,读出的数据存放在单片机片内30H开始的单元中(用R0作指针)。读出过程读出过程:送写命令,送写地址,送读命令,读出数据。初值定义如下:AddrH EQU 01H;指定读器件内单元地址高字节AddrL EQU 20H;指定读器件内单元地址低字节PAddr EQU 30H;单片机片内地址NDATA 08;从24C64器件内读出数据长度MOV R0,#PAddr;初始化 MOV R6,#AddrL MOV R7,#AddrH MOV R5,#N;多字节读出程序见课本例例2 要求把片内地址要求把片内地址30H开始的开始的8个
22、数写入到个数写入到IC1中的中的3C0H地址开始单元中。地址开始单元中。写操作过程写操作过程:送写命令,送写地址,写多字节数。写子程序如下:送写命令,送写地址,写多字节数。写子程序如下:WRCBY:ACALL STAT;24C64数据写入子程序MOV A,#0A2H;写入命令字A2H,准备数据写入ACALL WR8B;写入子程序ACALL CACKJB F0,WRC64MOV A,R7;高字节地址03HAACALL WR8B;写入子程序ACALL CACKJB F0,WRC64MOV A,R6;低字节地址0C0HAACALL WR8BACALL CACKJB F0,WRC64WRDA64:MO
23、V A,R0;从30H单元取1字节要写入的数据AACALL WR8B;调用一字节数据写入子程序ACALL CACKJB F0,WRC64INC R0DJNZ R5,WRDA64;判断N个数据数据是否写完,未完则继续ACALL STOPRET9.6.2 串行日历时钟芯片的接口应用串行日历时钟芯片的接口应用 PCF8563是Philips公司推出的一款工业级、内含I2C总线接口功能、具有极低功耗的多功能CMOS实时时钟/日历芯片。广泛用于电池供电的仪器仪表等电子产品领域。1PCF8563的主要特性 内部有16个8位寄存器,具有多种报警功能、定时器功能、时钟输出功能以及中断输出功能,能够完成各种复杂
24、的定时服务,可以为单片机提供看门狗功能。总线速度400 KB/s 2PCF8563工作原理工作原理 用16个8位寄存器管理、控制芯片工作。CLK频率寄存器用于控制CLK引脚输出方波的频率。当FE=0,CLK成高阻态,禁止输出信号;FE=1,允许在CLK输出有效频率。3PCF8563与单片机的接口应用 PCF8563有唯一的器件地址:读地址为A3H、写地址为A2H,具有字节写和读两种状态。9.7 1/2/3Wire总线器件的接口应用总线器件的接口应用 1/2/3Wire总线是Dallas公司研制开发的一种总线接口技术,并设计了可供家用电器及工业控温使用的器件。9.7.1 单线制串行总线器件 每一
25、个符合One-Wire协议的芯片都有一个唯一的地址,包括8位的家族代码、48位的序列号和8位的CRC代码。主芯片对各个从芯片的寻址依据这64位的内容来进行。1DS18B20性能特点 One-Wire协议的数字式温度传感器。它设置地址线、数据线和控制线合用合用1根双向数据传输信号线(DQ)。测温范围为-55+125;转换精度为912位二进制数(含1位符号位)。测温精度为9位精度为0.5;12位精度为0.0625;具有非易失性上、下限报警设定功能。转换时间:9位精度时为93.75 ms;10位精度时为187.5 ms;12位精度时为750 ms。2DS18B20寄存器 内部有9字节的高速寄存器,各
26、寄存器功能与编址如下表:3DS18B20系统配置寄存器数据格式 系统配置寄存器数据格式如下:DS18B20分辨率设置如下:4DS18B20温度值存放格式DS18B20用12位精度测出的温度值用16位二进制补码形式表达如下:DS18B20采取12位精度测出的数字量用16位二进制补码形式表达如下:5DS18B20命令字 DS18B20温度步骤:复位操作;发送ROM指令;发送RAM指令进行预定操作。DS18B20指令表如表 6DS18B20的应用电路的应用电路 7DS18B20的编程应用(1)主机应先发送复位信号(2)主机对DS18B20写数据时,主机每写入1位数据时间应保持60120 s,两次写入
27、数据的间隙应大于1 s。(3)主机对DS18B20读操作时,主机应在15 s后读取数据线,完成读操作。DS18B20的初始化、复位和读、写子程序略。9.7.2 双线制、三线制串行总线器件(自学)略双线制、三线制串行总线器件(自学)略 DS1621和DS1620都是DALLAS公司生产的串行接口总线数字式温度传感器,具有9位精度,分辨率为0.5,测温范围-55+125,转换时间为1秒。DS1621是双线制接口,DS1620是三线制接口两者总线的传输协议与I2C总线兼容,器件地址为:1001 A2A1A0 R/W 通过A2 A1 A0编码,一次最多可控制8片。9.8 SPI总线器件的接口应用 SP
28、I(Serial Peripheral Interface)总线是芯片间的串行外围接口,是Motorola公司推出的同步扩展接口,采用四线制(片选线、时钟线、数据输入、输出线)实现芯片间串行数据传输。SPI串行扩展接口是全双工同步通信口,主机方式传送数据速率达1.05 MB/s。具有SPI串行总线接口的器件有ISD4004语音录/放芯片、W25X10A、LM74高精度温度传感器、X5045P和X25045A存储器等器件。W25X10A最高传送速率达150MHz/sWRDA64:MOV A,R0;从30H单元取1字节要写入的数据ADS18B20采取12位精度测出的数字量用16位二进制补码形式表达
29、如下:每一个符合One-Wire协议的芯片都有一个唯一的地址,包括8位的家族代码、48位的序列号和8位的CRC代码。(AT24C128/256/512)7 1/2/3Wire总线器件的接口应用对外部数据存储器的读操作,如:实际上这些器件已经淘汰,也很不实用。对IC2的A100H地址的读操作指令为:2 双线制、三线制串行总线器件(自学)略对外部数据存储器的读操作,如:TXDAT:MOV R2,#02;设置发送的字节数具有非易失性上、下限报警设定功能。(3)主控器读/写操作(6)用3V电压供电,电流小,待机时1 uA,放音时30 mA,录音时25 mA。SETB SCL;SCL置高电平9.8.1
30、ISD4004语音录/放电路(简略)1语音录语音录/放芯片放芯片ISD4004特点特点(1)记录的声音没有段长度限制。(2)声音的记录无需A/D 转换和压缩。(3)保存数据长达100年,重复记录1000次以上。(4)内置16MB非易失性存储器,可分为2400段,每段400 ms,分段地址为000960H,记录时长16分钟。(5)SPI 串行接口,提供全部数据和控制操作。(6)用3V电压供电,电流小,待机时1 uA,放音时30 mA,录音时25 mA。2ISD4004引脚功能说明引脚功能说明 ISD4004采用28脚封装,引脚如图 9.8.2 ISD4004的工作时序的工作时序(略)1.读写时序读写时序2ISD4004指令操作码格式指令操作码格式 ISD4004的指令码是1字节命令字,实际只用高5位(C0C4),低3位无效(使用时以0处理)。ISD4004的指令码有10个,指令格式如表:9.8.3 ISD4004接口电路与编程应用(略)图中MIC作为语音输入的麦克风,SPK作为语音输出的喇叭,LM386作为语音放大器,单片机用作为SPI模拟串行通信线。程序见课本。