版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
单片机原理与应用第8章单片机系统扩展及接口技术●教学目标
介绍单片机程序存储器的扩展方法
介绍单片机数据存储器的扩展方法介绍单片机I/O口的扩展方法
●学习要求
熟悉单片机片外三总线结构和扩展能力掌握系统扩展EPROM,RAM,I/O口方法掌握地址译码及片选方法了解单片机总线驱动能力和扩展方法单片机原理与应用第8章单片机系统扩展及接口技术8.1单片机扩展的基本概念8.2扩展数据存储器8.3简单并行I/O接口的扩展8.4串行扩展总线接口技术扩展数据存储器(自学)扩展8255并行I/O接口芯片(自学)单片机原理与应用单片机扩展的基本概念MCS-51单片机的特点之一是硬件设计简单,系统结构紧凑;对于简单的应用场合,MCS-51的最小系统就能满足功能要求。但在许多情况下构成一个工业测控系统时,要考虑到传感器接口、伺服控制接口、人机对话接口等的需要,最小系统常常不能满足要求,因此单片机扩展是应用系统设计中最常见的问题。
使单片机能运行的最少器件构成的系统,就是最小系统。单片机原理与应用单片机最小系统使单片机能运行的最少器件构成的系统,就是最小系统。无ROM芯片:8031必须扩展ROM,复位、晶振电路有ROM芯片:89c51等,不必扩展ROM,只要有复位、晶振电路单片机原理与应用
单片机扩展需与键盘、显示器、打印机、A/D、D/A等外部设备相连,一般来说,外部设备相对于单片机工作速度较慢,它们与单片机不能直接连接,需要有缓冲桥梁,使两者能很好的匹配。定义单片机与外部设备交换信息的桥梁----接口单片机原理与应用通常,采用8051/8751/89C51的最小系统最能发挥单片机体积小、成本低的优点。但在很多情况下,最小应用系统常常不能满足要求。
它包括程序存储器(ROM)扩展、数据存储器(RAM)扩展、I/O口扩展、定时/计数器扩展、中断系统扩展以及其它特殊功能扩展等。单片机原理与应用一、单片机片外三总线结构单片机是通过片外引脚进行扩展的,为满足系统扩展要求,51系列单片机的片外引脚可以构成下图所示的三总线结构,即地址总线(AB)、数据总线(DB)和控制总线(CB)。所有的外部芯片都是通过这三组总线进行扩展。单片机原理与应用单片机的片外三总线结构单片机原理与应用1.地址总线(AB)地址总线宽度为16位,可寻址范围为64K字节,由P0口提供低8位A0—A7,P2口提供高8位A8—A15,由于P0口还作数据总线口,只能分时用作地址线,必须用锁存器对低八位地址锁存。锁存控制信号由ALE引脚提供,在ALE的下降沿将P0输出地址锁存。P2口具有输出锁存功能,不需外加锁存器。P0、P2口用作数据、地址总线后,不能再作为其他I/O口使用。单片机原理与应用2.数据总线(DB)
数据总线宽度为8位。由P0口提供,作为数据总线时P0口为三态双向口。数据总线要连接多个外围芯片上,而同一时间只能有一个是有效的数据传输通道,那个芯片的数据传输通道有效,则由地址线控制各个芯片的片选线来选择。3.控制总线(CB)控制总线包括片外系统扩展用控制线和片外信号对单片机的控制线。单片机原理与应用系统扩展用控制线:RD(读)、WR(写)、EA(程存选择)、PSEN(外程序存储器读选通)、ALE(地址锁存允许)片外信号对单片机的控制线:INT0(外中断0请求)、INT1(外中断1请求)、T0(计数脉冲输入0)、T1(计数脉冲输入1)、RST(复位)单片机原理与应用二、MCS-51系统的扩展能力根据地址总线宽度,MCS-51系列单片机在片外可扩展的存储器最大容量为64KB,地址范围为0000H~FFFFH。问题:1.片外数据存储器与程序存储器的地址2.片外数据存储器与片内数据存储器的地址3.片外程序存储器与片内程序存储器的地址4.扩展的I/O接口与片外数据存储器的地址单片机原理与应用片外数据存储器与程序存储器的操作使用不同的指令和控制信号,允许两者的地址重复。故片外可扩展的数据存储器与程序存储器分别为64k字节。片外数据存储器与片内数据存储器的操作指令不同,允许两者地址重复。片外程序存储器与片内程序存储器采用相同的操作指令,片内片外程序存储器的选择由硬件实现,EA=0或EA=1。扩展的I/O接口与片外数据存储器是统一编址的。单片机原理与应用当应用系统存储扩展容量超过地址总线范围时,可采用换体的办法解决:图中62256为32k数据存储器,4片共128K字节,将他们分成两组,由2-4译码器选通,P1.0=0时选1组P1.0=1时选2组74LS139CE62256CE62256CE62256CE62256P2.7P1.01组2组Y0Y1Y2Y3单片机原理与应用三、总线驱动能力及扩展总线的驱动能力系统扩展的外围芯片都通过总线驱动,外围芯片工作时有一个输入电流,不工作也有漏电流存在,因此总线只能带动一定数量的电路。P0口作为数据总线和低八位地址总线可驱动8个LSTTL电路,其他口只能驱动4个LSTTL电路。若系统规模过大,可能造成负载过重,致使驱动能力不够,系统不能可靠地工作。这时需进行总线扩展。单片机原理与应用总线的扩展概述在设计计算机应用系统硬件电路时,首先要估计总线的负载情况,以确定是否需要对总线的驱动能力进行扩展。地址总线和控制总线是单向总线,可采用单向总线驱动器74LS244进行扩展;
数据总线是双向总线,应采用双向总线驱动器74LS245进行扩展单片机原理与应用总线扩展芯片:单片机原理与应用四、MCS-51常用系统扩展芯片常用扩展芯片主要有程序存储器、数据存储器、I/O口及其他功能芯片:AD、DA、时钟等。1.存储器芯片EPROM单片机原理与应用EEPROM单片机原理与应用静态RAM单片机原理与应用动态RAM单片机原理与应用大容量FLASH单片机原理与应用2.I/O扩展芯片专用I/O扩展芯片单片机原理与应用TTL电路芯片单片机原理与应用3.A/D、D/A芯片单片机原理与应用4.其他功能芯片8259:可编程中断控制器(8中断)8279:可编程键盘/显示控制器8253:可编程通用定时器单片机原理与应用第8章单片机系统扩展及接口技术8.1单片机扩展的基本概念8.2扩展数据存储器8.3简单并行I/O接口的扩展8.4串行扩展总线接口技术单片机原理与应用数据储存器扩展程序储存器扩展程序存储器不应再采用外扩的方案。因为89系列单片机内有4~64KB的不同型号产品可供选择。一、数据储存器扩展概述1.地址线的连接
一般扩展容量都大于256B,因此地址线除了P0口经锁存器提供的低八位外,还需P2口提供若干条(由容量决定)。如2K字节的存储器需11条地址线,P0提供8条,P2提供3条。单片机原理与应用如果系统中只有一片存储器,无须片选控制,存储器片选端接地即可。否则可使用P2口剩余的线接到各存储器片选端。2.数据线的连接直接和P0口相连即可
3.控制线的连接主要有8051的RD、WR与存储器读允许OE、WE相连,ALE与锁存器的锁存允许端相连。单片机原理与应用地址锁存器
P2.7
P2.0
ALE8031
P0.7~P0.0EAWRRDA15CE
A8A7A0外部数据存储器D7~D.0
WERD
单片机原理与应用访问外部数据区可只采用低8位地址线寻址,这时可寻址空间为256B,采用下面读、写指令来访问此数据存储区:
MOVXA,@Ri
(i=0,1)
MOVX@Ri,A(i=0,1)由于8位寻址指令所占字节少,指令执行速度快,在数据量不大情况下,尽可能采用这种8位寻址指令。也可以采用16位地址线寻址外部数据区:
MOVXA,@DPTR
MOVX@DPTR,A当外部RAM容量较大(大于256B)时,采用此寻址方法。单片机原理与应用二、数据储存器扩展电路芯片数据存储器扩展时,除了必需的静态RAM(SRAM)外,还必须有锁存器芯片地址锁存器的原理当三态门的使能信号OE为低电平时,三态门处于导通状态,允许Q输出;当OE为高电平时,三态门断开,输出端对外呈高阻状态;G端由高变低时锁存输入状态。单片机原理与应用单片机原理与应用地址锁存器芯片74LS373与74LS573只是引脚布置的不同。74LS273的11脚G逻辑与以上相反。单片机原理与应用单片机
AD0~7
ALER/WD0~7A0~7R/W存储器Di
Qi
G地址锁存器
AD8~n
A8~nALE地址锁存地址锁存地址输出数据有效地址输出数据有效AD0~n数据采样数据采样R/W单片机复用总线结构,数据与地址分时共用一组总线。单片机原理与应用2、数据储存器扩展电路芯片数据存储器一般采用RAM芯片,这种存储器在电源关断后,存储的数据将全部丢失。
RAM器件有两大类:动态RAM(DRAM),一般容量较大,易受干扰,使用略复杂。静态RAM(SRAM),在工业现场常使用SRAM。单片机原理与应用SRAM的引脚型号:6264前两位数62,表示SRAM后两位64÷8=8k字节容量62128有128÷8=16k字节容量62256有256÷8=32k字节容量6264逻辑图6264引脚图单片机原理与应用
此外E2PROM芯片也可用作外部数据存储器,且掉电后信息不丢失。串行E2PROM芯片有很多种,如24×××系列和93×××系列等等。单片机原理与应用三、典型数据储存器扩展电路由于单片机是面向测、控为主的,实际所需要的数据存储器的扩展容量不会很大,所以在扩展时为了电路的简单,一般使用静态RAM,如6116和6264。扩展单片数据存储器时,其片选端能否直接接地则还要考虑应用系统中有无I/O口及外围设备扩展,如果有,则要统一进行片选选择。单片机原理与应用6116的扩展电路单片机原理与应用62128与MCS51的连接单片机原理与应用作为数据储存器EEPROM的扩展EEPROM兼有程序存储器与数据存储器的特点,故在单片机应用系统中既可作为程序存储器,又可作为数据存储器。并行EEPROM的数据存储器扩展可按照典型的数据存储器扩展电路联接方式,如2816A(1)芯片。也可以作为外设电路,通过扩I/O口8255连接,如2816A(2)。可以看出,作为数据存储器时其电路连接较为灵活。2816A(2)工作时,要使8255进入工作状态(P2.7使8255有效),2816A所需的地址采用通过8255用MOVX指令送入。单片机原理与应用28C16作为数据存储器的扩展电路单片机原理与应用第8章单片机系统扩展及接口技术8.1单片机扩展的基本概念8.2扩展数据存储器8.3简单并行I/O接口的扩展8.4串行扩展总线接口技术单片机原理与应用简单单片机I/O口扩展扩展I/O口可以通过MCS-51单片机的数据总线进行,也可以利用移位寄存器通过MCS-51单片机的串行口进行。
通过数据总线扩展一、采用简单并行I/O接口芯片扩展输出时,接口电路应具有锁存功能,如采用8D锁存器74LS273,74LS373,74LS377组成输出口;输入时,接口电路应能三态缓冲,如采用8位三态缓冲器74LS244组成输入口。单片机原理与应用1.用三态门扩展8位输入并行口MOVXDPTR,#7FFFH;数据指针指向74LS244口地址MOVXA,@DPTR ;读入数据单片机原理与应用2.用锁存器扩展简单的8位输出口(略)上图是用74LS273通过P0口扩展的8位并行输出接口。74LS273是带三态门控的锁存器,CLR为数据清零端,其为低电平时有效,故此处应接高电平。CLK为锁存时钟端,由P2.7和WR相或后控制,当同时为低电平时,将P0口的数据锁存到74LS273。因此74LS273的地址为7FFFH,和输入口地址相同,但由于它们分别由和信号控制,仍然不会发生冲突。其数据的输出使用以下几条指令即可:单片机原理与应用MOVXDPTR,#7FFFH;数据指针指向74LS273口地址MOVXA,#data ;输出数据要通过累加器传送MOVX@DPTR,A ;P0口通过74LS273输出数据当要扩展多个简单的8位输入口和输出口,多个74LS244的选通端和多个74LS273的锁存时钟CLK,应采用类似前面所讲述的多片EPROM扩展时的片选方法。但要注意8031的I/O口驱动能力,在实际应用时,要根据负载的大小适当增设驱动电路。单片机原理与应用利用TTL芯片、COMS锁存器、三态门等接口芯片把P0接口扩展,常选用74LS273、74LS373、74LS244等芯片。单片机原理与应用通过串行口扩展(略)一、用并入串出移位寄存器扩展并行输入口下图是利用两片74LS165扩展2个8位并行输入口的电路。74LS165是8位并行输入串行输出移位寄存器,单片机的RXD(P3.0)作为串行数据输入端与74LS165的串行输出端Q7相连;单片机的TXD(P3.1)为移位脉冲输出端,与所有的74LS165芯片的移位脉冲输入端CLK相连;用1根I/O线(P1.0)与74LS165的移位/置位端相连,来控制其移位与置位。当PL为低电平时,并行数据置入74LS165的寄存器;当PL为高电平时,开始串行移位。当扩展多个8位输入口时,相邻两芯片的首尾(串行输出端Q7与串行输入端SER)相连。串行接收时,由RI引起中断或对RI查询来决定何时接受下一个字符(在采用查询方式时,也需预先关闭中断)。单片机原理与应用单片机原理与应用下面程序为读入16位数据并存入8031的片内RAM30H和31H两个端单元中:
MOV R0,#30H ;建立指针
MOV R7,#02H ;字节计数初值
CLR P1.0
;=0,并置入数据
SETB P1.0 ;=1,允许串行移位LOOP:MOV SCON,#10H ;置串行口方式0,REN=1,RI=0
JNB RI,$ ;等待一帧数据接受完
CLR RI ;清接收标志 MOV A,SBUF ;读接受数据
MOV @R0,A ;存入RAM缓冲区
INC R0 ;调整指针
DJNZ R7,LOOP ;数据未接受完,继续
单片机原理与应用二、采用串入并出移位寄存器扩展并行输出口下图是利用两片74LS164扩展2个2位输出口的接口电路。74LS164是8位串入并出移位寄存器,单片机的RXD(P3.0)为串行输出与74LS164数据输入端(1,2)相连;TXD(P3.1)为移位脉冲输出,与74LS164的时钟脉冲输出端(8)相连;由P1.0口线控制74LS164的清除端MR(9)。当MR为低电平时,清除74LS164中的数据;当MR为高电平时,开始串行移位。当扩展多个8位输入口时,相邻两芯片的首尾(串行输出端Q7与串行输入端A、B)相连。
单片机原理与应用单片机原理与应用下面程序为利用上图扩展一个16位并行输出口,将8031的片内RAM30H和31H两个单元中的数据通过两片74LS164输出:
MOV R0,#30H ;建立指针
MOV R7,#02H ;字节计数初值
SETB P1.0 ;=1,清零端无效LOOP:MOV SCON,#00H ;置串行口方式0,REN=0,TI=0
MOV A,@R0 ;取RAM缓冲区内容
MOV SBUF,A ;发送
JNB TI,$ ;等待一帧数据发送完
CLR TI ;清发送标志
INC R0 ;调整指针
DJNZ R7,LOOP ;数据未发送完,继续两次发送过程中,两片74LS164的16位输出端是连续变化的。每个移位脉冲使数据自Q0向Q7方向移动一位,待两个字节全部发送完毕时,输出稳定下来。单片机原理与应用第8章单片机系统扩展及接口技术8.1单片机扩展的基本概念8.2扩展数据存储器8.3简单并行I/O接口的扩展8.4串行扩展总线接口技术89C51除芯片自身具有UART可用于串行扩展I/O口线以外,还可利用89C51的3~4根I/O口线进行SPI或I2C的外设芯片扩展,以及单总线的扩展。SPI串行外设接口总线I2C总线单总线单片机原理与应用一、SPI串行外设接口总线SPI(SerialPeripheralInterface——串行外设接口)总线是Motorola公司推出的一种同步串行外设接口,它用于MCU与各种外围设备以串行方式进行通信(8位数据同时同步地被发送和接收),系统可配置为主或从操作模式。外围设备包括简单的TTL移位寄存器(用作并行输入或输出口)至复杂的LCD显示驱动器或A/D转换器等。单片机原理与应用SPI系统可直接与各个厂家生产的多种标准外围器件直接接口,它只需4条线:串行时钟线(SCK)、主机输入/从机输出数据线MISO、主机输出/从机输入数据线MOSI和低电平有效的从机选择线CS(SS)。在SPI接口中,数据的传输只需要1个时钟信号和2条数据线。单片机原理与应用由于SPI系统总线只需3~4位数据线和控制线即可扩展具有SPI的各种I/O器件,而并行总线扩展方法需8根数据线、8~16位地址线、2~3位控制线,因而SPI总线的使用可以简化电路设计,省掉了很多常规电路中的接口器件,提高了设计的可靠性。单片机原理与应用1.SPI总线系统的组成图1SPI总线系统典型结构示意图。单片机原理与应用单片机与外围扩展器件在时钟线SCK、数据线MOSI和MISO上都是同名端相连。带SPI接口的外围器件都有片选端CS。在扩展多个SPI外围器件时,单片机应分别通过I/O口线来分时选通外围器件。当SPI接口上有多个SPI接口的单片机时,应区别其主从地位,在某一时刻只能由一个单片机为主器件。图1中MCU(主)为主器件,MCU(从)为从器件。单片机原理与应用SPI有较高的数据传送速度,主机方式最高速率可达1.05Mb/s。使用1个MCU作为主机,控制数据向1个或多个从外围器件的传送。从器件只能在主机发命令时,才能接收或向主机传送数据。其数据的传输格式是高位(MSB)在前,低位(LSB)在后。单片机原理与应用当SPI工作时,在移位寄存器中的数据逐位从输出引脚(MOSI)输出(高位在前),同时从输入引脚(MISO)接收的数据逐位移到移位寄存器(高位在前)。主SPI的时钟信号(SCK)使传输同步。单片机原理与应用SPI总线有以下主要特性:全双工、3线同步传输;主机或从机工作;提供频率可编程时钟;发送结束中断标志;写冲突保护;总线竞争保护等。其典型时序图如图2所示。图2SPI串行总线典型时序图单片机原理与应用2.89C51单片机串行扩展SPI外设接口的方法1)用一般I/O口线模拟SPI操作对于没有SPI接口的89C51来说,可使用软件来模拟SPI的操作,包括串行时钟、数据输入和输出。对于不同的串行接口外围芯片,它们的时钟时序是不同的:对于在SCK的上升沿输入(接收)数据和在下降沿输出(发送)数据的器件,一般应取图3中的串行时钟输出P1.1的初始状态为1;在允许接口芯片后,置P1.1为0。单片机原理与应用因此,MCU输出1位SCK时钟,同时,使接口芯片串行左移,从而输出1位数据至89C51的P1.3(模拟MCU的MISO线);再置P1.1为1,使89C51从P1.0输出1位数据(先为高位)至串行接口芯片。至此,模拟1位数据输入/输出完成。以后再置P1.1为0,模拟下一位的输入/输出……依次循环8次,可完成1次通过SPI传输1字节的操作。对于在SCK的下降沿输入数据和上升沿输出数据的器件,则应取串行时钟输出的初始状态为0,在接口芯片允许时,先置P1.1为1,此时,外围接口芯片输出1位数据(MCU接收1位数据);再置时钟为0,外围接口芯片接收1位数据(MCU发送1位数据),可完成1位数据的传送。单片机原理与应用图3为89C51(MCU)与MCM2814(E2PROM)的硬件连接图。图3SPI总线接口原理图单片机原理与应用图3中,P1.0模拟MCU的数据输出端(MOSI),P1.1模拟SPI的SCK输出端,P1.2模拟SPI的从机选择端,P1.3模拟SPI的数据输入端(MISO)。下面介绍用89C51汇编语言模拟SPI串行输入、串行输出和串行输入/输出3个子程序。这些子程序也适用于在串行时钟的上升沿输入和下降沿输出的各种串行外围接口芯片,如8位或10位A/D芯片,74LS系列输出芯片等。对于下降沿输入、上升沿输出的各种串行外围接口芯片,只须改变P1.1的输出顺序,即输出0,再输入1;再输出0……则这些子程序也同样适用。单片机原理与应用(1)MCU串行输入子程序SPIIN从MCM2814的SPISO线上接收1字节数据并放入寄存器R0中。SPIIN: SETB P1.1;使P1.1(时钟)输出为1 CLR P1.2;选择从机
MOV R1,#08H;置循环次数SPIN1: CLR P1.1;使P1.1(时钟)输出为0 NOP;延时
NOP MOV C,P1.3;从机输出SPISO送进位C RLC A;左移至累加器ACC SETB P1.0;使P1.0(时钟)输出为1 DJNZ R1,SPIN1;判断是否循环8次(1字节数据)
MOV R0,A;1字节数据送R0 RET;返回单片机原理与应用(2)MCU串行输出子程序SPIOUT将89C51中R0寄存器的内容传送到MCM2814的SPISI线上。SPIOUN: SETB P1.1;使P1.1(时钟)输出为1 CLR P1.2;选择从机
MOV R1,#08H;置循环次数
MOV A,R0;1字节数据送累加器ACCSPIOT1: CLR P1.1;使P1.1(时钟)输出为0 NOP;延时
NOP RLC A;左移至累加器ACC最高位至C MOV P1.0,C;进位C送从机输入SPISI线上
SETB P1.1;使P1.1(时钟)输出为1 DJNZ R1,SPIOT1;判断是否循环8次(1字节数据)
RET;返回单片机原理与应用(3)MCU串行输入/输出子程序SPIIO将89C51中R0寄存器的内容传送到MCM2814的SPISI中,同时从MCM2814的SPISO接收1字节数据存入R0中。SPIIO: SETB P1.1;使P1.1(时钟)输出为1 CLR P1,2;选择从机
MOV R1,#08H;置循环次数
MOV A,R0;1字节数据送累加器ACCSPIO1: CLR P1.1;使P1.1(时钟)输出为0 NOP;延时
NOP MOV C,P1.3;从机输出SPISO送进位C RLC A;左移至累加器ACC最高位至C MOV P1.0,C;进位C送从机输入
SETB P1.1;使P1.1(时钟)输出为1 DJNZ R1,SPIO1;判断是否循环8次(1字节数据)
MOV R0,A RET;返回单片机原理与应用2)利用89C51串行口实现SPI操作单片机应用系统中,最常用的功能无非是开关量I/O、A/D、D/A、时钟、显示及打印功能等等。下面分析利用单片机串口与多个串行I/O接口芯片进行接口的可行性。单片机原理与应用(1)串行时钟芯片在有些需要绝对时间的场合,例如打印记录、电话计费、监控系统中的运行及故障时间统计等,都需要以年、月、日、时、分、秒等表示的绝对时间。虽然单片机内部的定时器可以通过软件进位计数产生绝对时钟,但由于掉电之后数据丢失,修改麻烦等原因,这样产生的绝对时钟总使设计者感到不满意。因此我们提倡对绝对时钟要求较高的场合使用外部时钟芯片,串行时钟芯片HT1380就是一个典型的器件。单片机原理与应用HT1380是一个8脚的日历时钟芯片,它可以通过串行口与单片机交换信息,如图4所示。在该芯片中,X1、X2接晶振,SCLK作为时钟输入端,I/O端为串行数据输入、输出端口,RST是复位引脚。由于该芯片只有当RST为高时才能对时钟芯片进行读/写操作,因此可以利用单片机的I/O口线对它进行控制(类似于芯片选择信号)。当RST为低时,I/O引脚对外是高阻状态,因此它允许多个串行芯片同时挂靠在串行端口上。CPU对它的输入/输出操作可以按串行的方式0(即扩展I/O方式)进行。单片机原理与应用图4HT1380与单片机接口电路单片机原理与应用(2)串行LED显示接口MAX7219该芯片可驱动8个LED显示器,这在智能仪表中已经足够了。89C51单片机与它的接口如图5所示。同样,单片机可以通过串行口以方式0与MAX7219交换信息,TXD作为移位时钟、RXD作为串行数据I/O端、Load为芯片选择端。当Load位于低电平时,对它进行读/写操作;当Load为高电平时,DIN处于高阻状态。它同样允许多个串行接口芯片共同使用89C51的串行口。单片机原理与应用图5MAX7219与单片机接口电路单片机原理与应用(3)串行模拟量输入芯片MAX1458MAX1458是一个可对差分输入信号(如电桥)进行程控放大(放大倍数可以由软件设定),并进行12位A/D转换的芯片。它将放大与转换电路集成在一个芯片上,图6给出了它与单片机的串行接口电路。图6串行A/D芯片与单片机接口电路单片机原理与应用它既可把转换好的数据通过串口送到CPU,同时也可将转换前的模拟信号输出到显示仪表。当CS为高电平时,可对MAX1458进行读/写,单片机对它的读/写也是以串口方式0进行的;当CS为低电平时,DIO对外处于高阻状态。单片机原理与应用(4)串行接口芯片的一般接口规律除上面3种芯片之外,单片机还可以通过串行接口芯片与E2PROM、D/A转换芯片等连接。它们与CPU的串行接口方式与以上几种芯片类似,即:都需要通过单片机的开关量I/O口线进行芯片选择;当芯片未选中时,数据端口均处于高阻状态;与单片机交换信息时均要求单片机串行口以方式0进行;传输数据时的帧格式均要求先传送命令/地址,再传送数据;大都具有图7所示的时序波形。单片机原理与应用图7
串行接口信号的一般时序图单片机原理与应用(5)扩展多个串行接口芯片的典型控制器的结构在图8所示的控制器电路中,数据采集均由串行接口芯片完成。由于无总线扩展,单片机节余出来的其他资源可以作为打印机输出控制、功能键、中断逻辑等电路。在扩展了系统功能的同时,极大地利用了系统资源,且使接口简单,控制器体积减小,可靠性提高。系统的软件设计与常规的单片机扩展系统类似,只是在芯片选择方面不是通过地址线完成,而是通过I/O口线来实现。单片机原理与应用图8
基于串行接口控制器的电路结构图单片机原理与应用二、I2C总线I2C总线是PHILIPS公司推出的串行总线。I2C总线的应用非常广泛,在很多器件上都配备有I2C总线接口,使用这些器件时一般都需要通过I2C总线进行控制。这里简要介绍I2C总线的工作原理,介绍如何用51单片机进行控制以及相应的汇编语言控制程序的编写。单片机原理与应用1I2C总线的概念I2C总线是一种具有自动寻址、高低速设备同步和仲裁等功能的高性能串行总线,能够实现完善的全双工数据传输,是各种总线中使用信号线数量最少的。I2C总线只有两根信号线:数据线SDA和时钟线SCL。单片机原理与应用所有进入I2C总线系统中的设备都带有I2C总线接口,符合I2C总线电气规范的特性,只需将I2C总线上所有节点的串行数据线SDA和时钟线SCL分别与总线的SDA和SCL相连即可。各节点供电可以不同,但需共地,另外SDA和SCL需分别接上拉电阻。单片机原理与应用当执行数据传送时,启动数据发送并产生时钟信号的器件称为主器件;被寻址的任何器件都可看作从器件;发送数据到总线上的器件称为发送器;从总线上接收数据的器件称为接收器。I2C总线是多主机总线,可以有两个或更多的能够控制总线的器件与总线连接;同时I2C总线还具有仲裁功能,当一个以上的主器件同时试图控制总线时,只允许一个有效,从而保证数据不被破坏。单片机原理与应用I2C总线的寻址采用纯软件的寻址方法,无需片选线的连接,这样就简少了总线数量。主机在发送完启动信号后,立即发送寻址字节来寻址被控器件,并规定数据传送方向。寻址字节由7位从机地址(D7~D1)和1位方向位(D0,0/1,读/写)组成。当主机发送寻址字节时,总线上所有器件都将该寻址字节中的高7位地址与自己器件的地址比较,若两者相同,则该器件认为被主机寻址,并根据读/写位确定是从发送器还是从接收器。单片机原理与应用I2C总线具有多重主控能力,这就意味着可以允许多个作为主控器的电路模块(具有I2C总线接口的单片机)去抢占总线。因此挂接在I2C总线上的集成电路模块的发送器/接收器可以根据不同的工作状态分为主控发送器、主控接收器、被控发送器和被控接收器。具有I2C总线接口的单片机可以工作在上述4种工作状态中的任一状态,而一些带有I2C总线接口的存储器(RAM或E2PROM)模块只能充当被控发送器或被控接收器。单片机原理与应用图9示出了带有两个单片机和其他一些外围电路模块接入I2C总线的一个实例。图9I2C总线典型系统示意图单片机原理与应用假设单片机A要向单片机B发送信息,单片机A首先作为主控器在I2C总线上发送起始信号和时钟,寻址作为被控器的单片机B,并确立信息传送方向。单片机A作为主控发送器便可通过SDA线向被控接收器(单片机B)发送信息,并在信息发送完毕后发送终止信号,以结束信息的传送过程。单片机原理与应用假设单片机A要从单片机B读取信息,单片机A同样作为主控器在I2C总线上发送起始信号和时钟,寻址作为被控器的单片机B,并确立信息传送方向。单片机A作为主控接收器接收单片机B发送的信息,一旦作为主控接收器的单片机A接收完单片机B发来的信息后就发出终止信号,以结束整个信息的读取过程。单片机原理与应用上述分析表明:不论作为主控器的单片机A向作为被控器的单片机B是发送信息还是读取信息,被传信息的起始和终止信号以及时钟信号都是由作为主控器的单片机A发送的。单片机原理与应用2I2C总线的应用I2C总线为同步串行数据传输总线,用于单片机的外围扩展。其总线传输速率为100kb/s(改进后的规范为400kb/s),总线驱动能力为400pF。图10为I2C总线外围扩展示意图。单片机原理与应用图10I2C总线外围扩展示意图单片机原理与应用最常使用的通用外围器件有SRAM、E2PROM、ADC/DAC、RTC、I/O口和DTMF等外围设备模块有LED驱动控制器构成的LED显示器,各种LCD驱动控制器构成的段式、图形点阵、字符点阵液晶显示器等。通过I2C总线通用I/O口器件可构成许多通用接口如键盘、码盘、打印机接口和LCD接口等。单片机原理与应用I2C总线有利于系统设计的模块化和标准化,省去了电路板上的大量连线,提高了可靠性,降低了成本。在多种串行总线中,I2C总线只用两条线,不需要片选线,支持带电插拔,并有众多的外围接口芯片,可以作为优先选择。单片机原理与应用I2C总线上支持多主和主从两种工作方式。在多主方式中,通过硬件和软件的仲裁主控制器取得总线控制权。而在多数情况下,系统中只有一个主器件,即单主节点,总线上的其他器件都是具有I2C总线的外围从器件,这时的I2C总线就工作在主从工作方式。单片机原理与应用在主从方式中,从器件的地址包括器件编号地址和引脚地址,器件编写地址由I2C总线委员会分配,引脚地址决定于引脚外接电平的高低。当器件内部有连续的子地址空间时,对这些空间进行N个字节的连续读/写,子地址会自动加1。在主从方式的I2C总线系统中,只须考虑主方式的I2C总线操作。单片机原理与应用3.I2C总线基本知识1)I2C总线的接口电路结构I2C总线由一根数据线SDA和一根时钟线SCL构成。I2C总线中一个节点的每个电路器件都可视为有如图11虚框所示的一个I2C总线接口电路,用于与I2C总线的SDA和SCL线挂接。数据线SDA和时钟线SCL都是双向传输线,平时均处于高电平备用状态,只有当需要关闭I2C总线时,SCL线才会箝位在低电平。单片机原理与应用图8-11I2C总线的器件连接单片机原理与应用2)I2C总线信号定义在I2C总线上,SDA用于传送有效数据,其上传输的每位有效数据均对应于SCL线上的一个时钟脉冲。也就是说,只有当SCL线上为高电平(SCL=1)时,SDA线上的数据信号才会有效(高电平表示1,低电平表示0);SCL线为低电平(SCL=0)时,SDA线上的数据信号无效。只有此时,SDA线上的电平状态才允许发生变化(见图12)。单片机原理与应用图8-12I2C总线信号的时序单片机原理与应用SDA线上传送的数据均以起始信号(START)开始,停止信号(STOP)结束,SCL线在不传送数据时保持Mark(SCL=1)。当串行时钟线SCL为Mark(SCL=1)时,串行数据线SDA上发生一个由高到低的变化过程(下降沿),即为起始信号;发生一个由低到高的变化过程,即称为停止信号。起始信号和停止信号均由作为主控器的单片机发出,并由挂接在I2C总线上的被控器检测。单片机原理与应用4.I2C总线的数据传送在I2C总线上每传输一位数据都有一个时钟脉冲相对应。注意这里的时钟脉冲不像一般的时钟那样必须是周期性的,它的时钟间隔可以不同。总线备用时(即处于“非忙”状态),SDA和SCL都必须保持高电平状态,关闭I2C总线时才使SCL箝位在低电平。只有当总线处于“非忙”状态时,数据传输才能被初始化。在数据传输期间,只要时钟线为高电平,数据线就必须保持稳定。只有在时钟线为低电平时,才允许数据线上的电平状态变化。在时钟线保持高电平期间,数据线出现下降沿为启动信号、上升沿为停止信号,启动和停止信号都由主机产生,总线上带有I2C总线接口的器件很容易检测到这些信号。单片机原理与应用I2C总线上传输的数据和地址字节均为8位,且高位在前,低位在后。I2C总线以起始信号为启动信号,接着传输的是地址和数据字节,数据字节是没有限制的,但每个字节后都必须跟随一个应答位,全部数据传输完毕后,以终止信号结尾。I2C总线上数据的传送时序如图13所示。单片机原理与应用图13I2C总线的数据传送字节格式单片机原理与应用SCL线为低电平时,SDA线上数据就被停止传送。SCL线的这一线“与”特性十分有用:当接收器接收到一个数据/地址字节后需要进行其他工作而无法立即接收下一个字节时,接收器便可向SCL线输出低电平而箝住SCL(SCL=0),迫使SDA线处于等待状态,直到接收器准备好接收新的数据/地址字节时,再释放时钟线SCL(SCL)=1),使SDA线上数据传输得以继续进行。单片机原理与应用利用SDA线进行数据传输时,发送器每发完一个数据字节后,都要求接收方发回一个应答信号。但与应答信号相对应的时钟仍由主控器在SCL线上产生,因此主控发送器必须在被控接收器发送应答信号前,预先释放对SDA线的控制,以便主控器对SDA线上应答信号的检测。单片机原理与应用应答信号在第9个时钟位上出现,接收器在SDA线上输出低电平为应答信号(A),输出高电平为非应答信号(A)。时钟信号以及应答和非应答信号间的关系如图14所示。图14I2C总线的应答位单片机原理与应用在主控器发送数据时,被控器接收完一个数据字节后都要向主控器发回一个应答信号(A),主控器据此便可进行下一字节的发送。但如果被控器由于某种原因需要进行其他处理而无法继续接收SDA线上数据时,便可向SDA线输出一个非应答信号(A),使SDA线保持高电平,主控器据此便可产生一个停止信号来终止SDA线上的数据传输。单片机原理与应用当主控器作为接收器接收被控器送来的最后一个数据时,必须给被控器发送一个非应答信号(A),令被控器释放SDA线,以便主控器可以发送停止信号来结束数据的传输。I2C总线上的应答信号是比较重要的,在编制程序时应该着重考虑。单片机原理与应用5I2C总线数据传输协议1)总线节点的寻址字节主机产生起始条件后,发送的第一个字节为寻址字节。该字节的头7位(高7位)为从机地址,最后位(LSB)决定了报文的方向:0表示主机写信息到从机,1表示主机读从机中的信息。当发送了一个地址后,系统中的每个器件都将头7位与它自己的地址比较。如果一样,器件会应答主机的寻址,至于是从机接收器还是从机发送器由R/W位决定。单片机原理与应用从机地址由一个固定的和一个可编程的部分构成。例如,某些器件有4个固定的位(高4位)和3个可编程的地址位(低3位),那么同一总线上共可以连接8个相同的器件。I2C总线委员会协调I2C地址的分配,保留了2组8位地址(0000×××和1111×××),这2组地址的用途可查阅有关资料。单片机原理与应用挂接到总线上的所有外围器件、外设接口都是总线上的节点。在任何时刻总线上只有一个主控器件(主节点)实现总线的控制操作,对总线上的其他节点寻址,分时实现点点的数据传送。总线上每个节点都有一个固定的节点地址。单片机原理与应用I2C总线上的单片机都可以成为主节点,其器件地址由软件给定,存放在I2C总线的地址寄存器中,称为主器件的从地址。在I2C总线的多主系统中,单片机作为从节点时,其从地址才有意义。I2C总线上所有的外围器件都有规范的器件地址。器件地址由7位组成,它和1位方向位构成了I2C总线器件的寻址字节SLA。单片机原理与应用主机产生起始信号后的第一个寻址字节格式如下:D7D0SLADA3DA2DA1DA0A2A1A0R/W
从机地址单片机原理与应用其各位含义如下:器件地址(DA3、DA2、DA1和DA0):是I2C总线外围接口器件固有的地址编码,器件出厂时,就已给定。例如,I2C总线E2PROMAT24C××的器件地址为1010,4位LED驱动器SAA1064的器件地址为0111。引脚地址(A2、A1和A0):是由I2C总线外围器件地址,端口A2、A1和A0在电路中接电源或接地的不同而形成的地址数据。数据方向(R/W):规定了总线上主节点对从节点的数据传送方向,R——接收,W——发送。表1列出了一些常用外围器件的节点地址和寻址字节。单片机原理与应用表1
常用I2C接口通用器件的种类、型号和寻址字节单片机原理与应用2)I2C总线数据传输的格式I2C总线传输数据时必须遵循规定的数据传输格式,图15示出了I2C总线一次完整的数据传输格式。图15I2C总线一次完整的数据传输格式单片机原理与应用在图15中,起始信号表明一次数据传送的开始,其后为被控器的地址字节,高位在前,低位在后,第8位为R/W方向位。方向位R/W表明主控器和被控器间数据传输的方向。若R/W=0,表明数据由主控器按地址字节写入被控器;若R/W=1,表明数据从由地址字节决定的被控器读入主控器。方向位后面是被控器发出的应答位ACK。地址字节传输完后是数据字节,数据字节仍是高位在前,低位在后,然后是应答位。单片机原理与应用若有多个数据字节需要传送,则每个数据字节的格式相同。数据字节传送完后,被控接收器发回一个非应答信号(高电平有效),主控器据此发送停止信号,以结束这次数据的传输。但是,如果主机仍希望在总线上通信,它可以产生重复的起始信号(Sr)和寻址另一个从机,而不是首先产生一个停止信号。总线上数据传输有多种组合方式,现以图解方式分别介绍如下3类数据传输格式。单片机原理与应用(1)主控器的写数据操作格式主控器产生起始信号后,发送一个寻址字节,收到应答后跟着就是数据传输,当主机产生停止信号后,数据传输停止。主机向被寻址的从机写入n个数据字节。整个过程均为主机发送,从机接收,先发数据高位,再发低位,应答位ACK由从机发送。主控器向被控器发送数据时,数据的方向位(R/W=0)是不会改变的。传输n字节的数据格式如下:单片机原理与应用具体内容为:单片机原理与应用(2)主控器的读数据操作格式主机从被寻址的从机读出n个数据字节。在传输过程中,除了寻址字节为主机发送、从机接收外,其余的n字节均为从机发送,主机接收。主机接收完数据后,应发非应答位,向从机表明读操作结束。单片机原理与应用主控器从被控器读取数据时,数据传输的方向位R/W=1。主控器从被控器读取n字节的数据格式为:单片机原理与应用具体内容为:注意:主控器在发送停止信号前,应先给被控器发送一个非应答信号,向被控器表明读操作结束。单片机原理与应用3)主控器的读/写数据操作格式读/写操作时,在一次数据传输过程中需要改变数据的传送方向,即主机在一段时间内为读操作,在另一段时间内为写操作。由于读/写方向有变化,起始信号和寻址字节都会重复一次,但读/写方向(R/W)相反。例如,由单片机主机读取存储器从机中某存储单元的内容,就需要主机先向从机写入该存储单元的地址,再发一个启动位,进行读操作。单片机原理与应用主控器向被控器先读后写的数据格式如下:单片机原理与应用具体内容为:其中:Sr为重复起始信号;data1~datan为主控器的读数据;DATA1~DATAn为主控器的写数据;其余与前述相同。单片机原理与应用通过上述分析,可以得出如下结论:无论总线处于何种方式,起始信号、终止信号和寻址字节均由主控器发送和被控器接收。寻址字节中,7位地址是指器件地址,即被寻址的被控器的固有地址,R/W方向位用于指定SDA线上数据传送的方向。R/W=0为主控器写和被控器收,R/W=1为主控器读(收)和被控器发。每个器件(主控器或被控器)内部都有一个数据存储器RAM,RAM的地址是连续的,并能自动加/减1。n个被传送数据的RAM地址可由系统设计者规定,通常作为数据放在上述数据传输格式中,即第一个数据字节data1或DATA1。总线上传输的每个字节后必须跟一个应答或非应答信号A/A。单片机原理与应用651单片机与I2C总线的接口1)单片机与I2C总线的硬件连接用不带I2C接口的51单片机控制I2C总线时,硬件也非常简单,只需两个I/O口线,在软件中分别定义成SCL和SDA,与I2C总线的SCL和SDA直接相连,再加上上拉电阻即可。以51系列单片机为例,可以用P1.6和P1.7直接与SCL和SDA相连,硬件接口如图8-16所示。图8-16模拟I2C总线单片机原理与应用2)51单片机对I2C总线的控制程序这里以51系列单片机为例,介绍如何根据I2C总线的工作原理用汇编语言编写控制程序。单片机原理与应用首先,应根据I2C总线对SDA和SCL在各个时段的时序要求写出起始、停止、送应答位、送非应答位、检查应答位以及发送一字节、接收一字节的子程序,具体代码可参见《电子世界》网站()上的汇编源程序,该程序中设置“I2C_ERROR”为出错标志。若在程序中适当增加NOP指令的条数,可以提高I2C总线数据传输的可靠性。单片机原理与应用注意在使用这些程序前,先要确定从机的地址和从机中要操作的内部单元的地址。程序中用“DeviceaddressW”表示从机的7位地址加上写标志0,“DeviceaddressR”表示从机的7位地址加上读标志1,“Subaddress”表示内部单元的8位地址,“DATA_I2C”表示操作数据在单片机内的存放地址。这些程序可以实现简单的I2C总线操作,用户也可以根据具体要求再附加相应的程序。单片机原理与应用7I2C总线数据传送软件包我们知道89C51单片机中具有I2C总线接口的毕竟是少数。如果是不带I2C总线的单片机,则不必扩展I2C总线接口,只须通过软件模拟,这无疑会给I2C总线的应用提供更广泛的空间。通常大多数单片机应用系统中只有一个CPU,这种单主系统如果采用I2C总线技术,则总线上只有单片机对I2C总线从器件的访问,没有总线的竞争等问题,这种情况下只需要模拟主发送和主接收时序。基于上述考虑,这里提供了这种使用情况下的时序模拟软件,使I2C总线的使用不受单片机必须带有I2C总线接口的限制。单片机原理与应用本教程在模拟主方式下的I2C总线时序时,选用如图8-16所示P1.6和P1.7作为时钟线SCL和数据线SDA,晶振采用6MHz。这里提供一个软件包,包括启动(STA),停止(STOP),发送应答位(MACK),发送非应答位(MNACK),应答位检查(CACK),发送一字节数据(WRBYT),接收一字节数据(RDBYT),发送N字节数据和接收N字节数据(RDNBYT)9个子程序。单片机原理与应用1)I2C总线典型信号时序及信号模拟子程序I2C总线数据传送时,有起始位(S)、终止位(P)、发送0代表应答位(A)、发送1代表非应答位(A)等信号。按照典型I2C总线传送速率的要求,这些信号、时序如图8-17(a)、(b)、(c)和(d)所示。单片机原理与应用图8-17I2C总线数据传送典型信号时序单片机原理与应用图17I2C总线数据传送典型信号时序对于I2C总线的典型信号,可以用指令操作来模拟其时序过程。若89C51单片机的系统时钟为6MHz,相应的单周期指令的周期为2μs,则起始(STA)、终止(STOP)、发送应答位(MACK)、发送非应答位(MNACK)的4个模拟子程序如下:单片机原理与应用1)启动I2C总线子程序STASTA:SETB SDASETB SCL;起始条件建立时间大于4.7μsNOPNOPCLR SDANOP ;起始条件锁定时间大于4μsNOPCLR SCL;箝住总线,准备发送数据RET单片机原理与应用(2)停止I2C总线子程序STOP:CLR SDASETB SCL;发送停止条件的时钟信号NOP ;停止总线时间大于4μsNOPSETB SDA;停止总线NOPNOPCLR SDACLR SCLRET单片机原理与应用(3)发送应答位信号子程序MACK:CLR SDASETB SCLNOP ;保持数据时间,即SCL为高,时间大于40μsNOPCLR SCLSETB SDARET单片机原理与应用(4)发送非应答位信号子程序MNACK:SETB SDASETB SCLNOP ;保持数据时间,即SCL为高,时间大于4.0μsNOPCLR SCLCLR SDARET在使用上述子程序时,如果单片机的主时钟不是6MHz,则应调整NOP指令个数,以满足时序要求。单片机原理与应用2)I2C总线数据传送的模拟子程序
从I2C总线的数据操作中可以看出,除了基本的启动(STA)、终止(STOP)、发送应答位(MACK)、发送非应答位(MNACK)外,还应有应答位检查(CACK)、发送一字节(WRBYT)、接收一字节(RBYT)、发送N字节(WRNBYT)和接收N字节(RDNBYT)这5个子程序。单片机原理与应用(1)应答位检查子程序CACK在应答位检查子程序(CACK)中,设置了标志位。CACK中用F0作标志位,当检查到正常应答位后,F0=0;否则F0=1。CACK: SETB SDA ;置SDA为输入方式
SETB SCL ;使SDA上数据有效
CLR F0 ;预设F0=0 MOV C,SDA ;输入SDA引脚状态
JNC CEND ;检查SDA状态,正常应答转CEND,且F0=0 SETB F0 ;无正常应答,F0=1CEND: CLR SCL ;子程序结束,使SCL=0RET单片机原理与应用(2)发送一字节数据子程序WRBYT该子程序是向虚拟I2C总线的数据线SDA上发送一字节数据的操作。调用该子程序前,将要发送的数据送入A中。占用资源:R0,C。WRBYT:MOV R0,#08H ;8位数据长度送R0中WLP: RLCA ;发送数据左移,使发送位入C JC WR1 ;判断发送1还是0,发送1转WR1 AJMP WR0 ;发送0转WR0WLP1: DJNZ R0,WLP ;8位是否发送完,未完转WLP RET ;8位发送完结束WR1: SETB SDA ;发送1程序段
SETB SCL NOP NOP CLR SCL CLRS DA AJMP WLP1WR0: CLR SDA ;发送0程序段
SETB SCL NOP NOP CLR SCL AJMP WLP1单片机原理与应用(3)从SDA上接收一字节数据子程序RDBYT该子程序用来从SDA上读取一字节数据,执行本程序后,从SDA上读取的一字节存放在R2或A中。占用资源:R0、R2和C。RDBYT: MOV R0,#08H ;8位数据长度送R0中RLP: SETB SDA ;置SDA为输入方式
SETB SCL ;使SDA上数据有效
MOV C,SDA ;读入SDA引脚状态
MOV A,R2 ;读入0程序段,由C拼装入R2中
RLCA MOV R2,A CLR SCL ;使SCL=0可继续接收数据位
DJNZ R0,RLP ;8位读完了吗?未读完转RLP RET单片机原理与应用(4)向被控器发送N字节数据子程序WRNBYT在I2C总线数据传送中,主节点常常需要连续地向外围器件发送多个字节数据,本子程序是用来向SDA线上发送N字节数据的操作。该子程序的编写必须按照I2C总线规定的读/写操作格式进行。如主控器向I2C总线上某个外围器件连续发送N个数据字节时,其数据操作格式如下:其中,SLAW为外围器件寻址字节(写)。单片机原理与应用按照上述操作格式所编写的发送N字节的通用子程序(WRNBYT)清单如下:
WRNBYT: MOV R3,NUMBYT LCALL STA ;启动I2C总线
MOV A,SLA ;发送SLAW字节
LCALL WRBYT LCALL CACK ;检查应答位
JB F0,WRNBYT ;非应答位则重发
MOV R1,#MTDWRDA: MOV A,@R1 LCALL WRBYT LCALL CACK JB F0,WRNBYT INC R1 DJNZ R3,WRDA LCALL STOP RET单片机原理与应用在使用本子程序时,占用资源为R1和R3,但须调用STA、STOP、WRBYT和CACK子程序,而且使用了一些符号单元。在使用这些符号单元时,应在片内RAM中分配好这些地址。这些符号单元有:
MTD主节点发送数据缓冲区首址;
SLA外围器件寻址字节存放单元;
NUMBYT发送数据字节数存放单元。单片机原理与应用在调用本子程序之前,必须将要发送的N字节数据依次存放在以MTD为首地址的发送数据缓冲区中。调用本子程序后,N字节数据依次传送到外围器件内部相应的地址单元中。单片机原理与应用(5)从外围器件读取N字节数据子程序RDNBYT在I2C总线系统中,主控器按主接收方式从外围器件中读出N字节数据的操作格式如下:其中,A:非应答位,主节点在接收完N字节后,必须发送一个非应答位;SLAR:外围器件寻址字节(读)。单片机原理与应用按照上述操作格式所编写的通用N字节接收子程序(RDNBYT)清单如下:RDNBYT: MOV R3,NUMBYT LCALL STA ;发送启动位
MOV A,SLA ;发送寻址字节(读)
LCALL WRBYT LCALL CACK ;检查应答位
JB F0,RDNBYT ;非正常应答时重新开始RDN: MOV R1,#MRD ;接收数据缓冲区首址MRD入R1RDN1: LCALL RDBYT ;读入一字节到接收数据缓冲区中
MOV @R1,A DJNZ R3,ACK ;N字节读完了吗?未完转ACK LCALL MNACK ;N字节读完发送非应答位
LCALL STOP ;发送停止信号
RET ;子程序结束ACK: LCALL MACK ;发送应答位
INC R1 ;指向下一个接收数据缓冲单元
SJMP RDN1 ;转读入下一个字节数据单片机原理与应用在使用RDNBYT子程序时,占用资源R1和R3,但须调用STA、STOP、WRBYT、RDBYT、CACK、MACK和MNACK等子程序并满足这些子程序的调用要求。RDNBYT子程序中使用了一些符号单元,除了在WRNDYT子程序中使用过的SLA、MTD和NUMBYT外,还有以下几个:
SLA器件寻址(读)存放单元;
MRD主节点中数据接收缓冲区首址;在调用RDNBYT子程序后,从节点中所指定首地址中的N字节数据将被读入主节点片内以MRD为首址的数据缓冲器中。单片机原理与应用3)主程序在主程序初始化中,应有如下的语句:
SDA BIT P17 SCL BIT P16 MTD EQU 30H ;MTD:发送数据缓冲区首址
MRD EQU 40H ;MRD:接收数据缓冲区首址
SLA EQU 60H ;SLA:寻址字节SLAR/W的存放单元NUMBYT EQU 61H ;NUMBYT:传送字节数存放单元单片机原理与应用三、单总线单总线(1-Wire)是Dallas公司推出的外围串行扩展总线。单总线只有一根数据输入/输出线,可由单片机或PC机的1根I/O口线作为数据输入/输出线,所有的器件都挂在这根线上。例如,图8-18表示一个由单总线构成的分布式温度监测系统。许多带有单总线接口的数字温度计集成电路DS18S20都挂接在1根I/O口线上,单片机对每个DS18S20通过总线DQ寻址。DQ为漏极开路,须加上拉电阻RP。此外还有1线热电偶测温系统及其他单总线系统。Dallas公司为单总线的寻址及数据传送提供了严格的时序规范。单片机原理与应用图8-18单总线构成的分布式温度监测系统单片机原理与应用1DS18S20单总线测温系统DS18S20是美国Dallas公司生产的单总线数字温度传感器。它可以把温度信号直接转换成串行数字信号供单片机处理,特别适合构成多点温度巡回检测系统。由于每片DS18S20都含有惟一的产品号,所以从理论上来说,在一条总线上可以挂接任意多个DS18S20芯片。从DS18S20读出或写入信息仅需一根口线(单线接口)。读/写及温度变换功率来源于数据总线,总线本身也可以向所挂接的DS18S20供电,而无需额外电源。DS18S20提供9位温度读数,构成多点温度检测系统而无需任何外围硬件。单片机原理与应用1)DS18S20的特性及引脚单线接口,仅需一根口线与MCU相连,无需外围元件;由数据线提供电源;测温范围为-55~125℃,精度为0.5℃(-10~85℃范围内);9位温度读数;温度转换时间最长为750ms;用户可自设定温度报警上下限,其值是非易失性的;报警搜索命令可识别哪片DS18S20超温度界限。DS18S20采用3脚PR35封装(或8脚SOIC封装),引脚排列如图19所示。图中GND为地,DQ为数据输入/输出脚(单线接口,可作寄生供电),VDD为电源电压。图19D
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB/T 47272-2026煤焦油饱和分、芳香分、杂原子、酚类、胶质和沥青质含量的测定溶剂萃取-柱层析分离重量法
- 《玲珑剔透的美》教案-2025-2026学年赣美版小学美术四年级下册
- 2024年秋季新剑桥版英语三年级上册全册教案
- 中班语言动物谜语教案
- 海水倒灌应急物资管理
- 2025-2026学年黑龙江省高三第四次模拟考试化学试卷(含答案解析)
- 麻纺厂生产记录细则
- 某纺织厂原材料采购流程
- 麻纺产品销售渠道管理
- 2026年物理实验题结果分析答题模板
- 山东省潍坊市2026届高三下学期4月模拟考试(二模)政治试卷(含答案)
- 2026年4月河北保定市中考一模英语试卷
- 物流行业员工试用期考核标准
- WS∕T 391-2024 CT检查操作规程
- 疑难危重病例讨论模板
- MOOC 英文学术写作实战-北京大学 中国大学慕课答案
- T-BJCC 1003-2024 首店、首发活动、首发中心界定标准
- 小孩励志书籍读后感
- 全麻苏醒期躁动处理
- 2024年吉林长春天然气集团有限公司招聘笔试参考题库含答案解析
- 外科学:胃十二指肠外科疾病(英文版)完整版
评论
0/150
提交评论