单片机串行扩展.ppt

上传人:夺命阿水 文档编号:246753 上传时间:2023-03-22 格式:PPT 页数:53 大小:3.69MB
返回 下载 相关 举报
单片机串行扩展.ppt_第1页
第1页 / 共53页
单片机串行扩展.ppt_第2页
第2页 / 共53页
单片机串行扩展.ppt_第3页
第3页 / 共53页
单片机串行扩展.ppt_第4页
第4页 / 共53页
单片机串行扩展.ppt_第5页
第5页 / 共53页
点击查看更多>>
资源描述

《单片机串行扩展.ppt》由会员分享,可在线阅读,更多相关《单片机串行扩展.ppt(53页珍藏版)》请在课桌文档上搜索。

1、第六部分单片机的串行扩展,系统扩展是指单片机内部各功能部件不能满足应用系统要求时,在片外连接相应的外围新片以满足应用系统要求。80C51系列单片机有很强的外部扩展能力,外围扩展电路芯片大多是一些常规芯片。扩展电路及扩展方法较典型、规范。,80C51系统扩展有程序存储器(ROM)扩展,数据存储器(RAM)扩展,I/O口扩展,中断系统扩展以及其他特殊功能扩展。,单片机系统扩展方法有并行扩展和串行扩展法。,并行扩展是指利用单片机的三总线(AB、DB、CB)进行的系统扩展(见第五部分);,串行扩展是指利用SPI三总线、IC双总线、单总线 等进行的串行系统扩展。,6.1 概述,缺点:速度慢,在需要高速的

2、场合要用并行扩展。,优点:串行接口器件体积小;与单片机接口的I/O口线少。,串行扩展的特点:,在器件之间采用两根信号线(SDL,SCL)进行信息传送并允许若干兼容器件共享的数据总线,称为IC总线。,SDA传输双向的数据;SCL线用来传输时钟信号,用来同步串行数据线上的数据。,一、IC公用双总线结构(飞利浦公司),挂接在IC总线的器件,根据功能可分为:主控器件和从控器件。,主控器件:控制总线存取,产生串行时钟信号,并产生启动传送及结束传送的器件,总线必须有一个主控器件。,从控器件:在总线上被主控器件寻址的器件,它们根据主控器件的命令来接收和发送数据。,6.2 串行扩展概述,多个器件之间连接使数据

3、线SDA为“与”的关系,即只要其中一个器件输出0,即可使SDA数据线为0。,在有多个器件组成的I2C总线系统中,可能存在多个主器件。因此,I2C总线系统是一个允许多主的系统。,I2C数据传输协议:只有当总线不忙时(SDA与SCL均为高电平),数据传输才开始;数据传输期间,无论何时串行时钟线为高,串行数据线必须保持稳定;当串行时钟线为高时,串行数据线将认为此时传送的开始或停止。,I2C总线定义的总线条件有:,1.总线不忙:,2.开始传输数据:,3.停止传输数据:,SCL和SDA保持高电平。,在SCL1时,SDA发生一个高到底的跳变。,在SCL1时,SDA发生一个低到高的跳变。,4.数据有效:SC

4、L保持高电平期间,当SDA稳定后,串行数据线的状态表示数据线是有效的。,5.数据变化:SCL保持低电平期间,SDA数据线的状态才可以发生变化。,在I2C总线上传输的数据有两种方式:主发送从接收、从发送主接收。它们是由起始信号后的第一个字节的最低位决定。1表示主器件读数据,0表示主器件写数据)。,主发送从接收(主器件为写数据):,主器件产生起始信号后,发送的第一个字节为从地址(该地址的前7位字节为从器件的片选信号,最低位决定数据的传输方向位)此时该位是0。,从器件每接收一个数据字节后,都返回一个应答信号(ASK=0),从发送主接收(主器件为读数据):,从器件在接收到主器件发送的从地址和为1的方向

5、位后,返回一个应答信号(ASK=0),接着从器件发送数据到主器件,主器件每接收一个数据字节后,都返回一个应答信号(ASK=0):,在接收从器件最后一个字节后,主器件发送一个非应答信号(ASK=1),终止从器件继续发送。从器件发送的数据可以是单字节,也可以是一串数据。,(1)A0、A1、A2:片选或页面选择地址输入。,1、二线制I2C E2PROM AT24CXX系列的扩展,AT24C01(A)/02/04/08/16 E2ROM存储器都是8个引脚。存储容量为1K/2K/4K/8K/16K bits。,(2)GND:地线。,6.3 单片机的外部串行扩展,一、串行扩展E2PROM,AT24C01(

6、A)/02/04/08/16的封装形式,AT24C04与单片机的扩展,模拟实现I2C接口,(3)SDA:串行数据(/地址)I/O端,用于串行数据的 输入/输出。,(4)SCL:串行时钟输入端,用于输入/输出数据的同步。,(5)WP:写保护,用于硬件数据的保护。,(6)VCC:电源电压,接+5V。,AT24CXX SDA和SCL时钟关系,AT24CXX启动和停止信号,应答信号,AT24CXX立即地址读,其中:1010为EEPROM的编码;XXX为AT24CXX的地址编号。,在I2C总线上最多可以连接8个AT24C01/02,4个AT24C04,2个AT24C08,1个AT24C16。,AT24C

7、XX立即地址读,AT24CXX随机读,AT24CXX顺序读,AT24C01(A)/02/04/08/16字节写,AT24C01(A)/02/04/08/16页面写,START:;开始位;传入参数:无;返回值:无SETB SDASETB SCLNOP NOP CLR SDANOPNOP NOP NOP CLR SCLRET,STOP:;停止位;传入参数:无;返回值:无CLR SDANOP NOP SETB SCLNOP NOP NOP NOP SETB SDA NOPRET,SHIN:;从AT24Cxx移入数据到MCU;传入参数:无;返回值:R7-移入的数据USING0CLR AMOV R6,A

8、SHIN_LP:SETB SCLMOV A,R7ADD A,ACCMOV R7,AMOV C,SDACLR ARLC AORL AR7,ACLR SCLINC R6CJNE R6,#08H,SHIN_LP;共8位,判断是否完成RET,SHOUT:;从MCU移出数据到AT24Cxx;传入参数:R7-要移出的数据;返回值:C-AT24Cxx的应答位USING0CLR AMOV R6,ASHOUT_LP:MOV A,R7;循环移入8个位RLC AMOV SDA,CNOP SETB SCLNOP NOP CLR SCLMOV A,R7ADD A,ACCMOV R7,AINC R6CJNE R6,#08

9、H,SHOUT_LP;共8位,判断是否完成SETB SDA;读取应答NOP NOP SETB SCLNOP NOP NOP MOV C,SDA;保存应答位到CCLR SCLRET,READ_RANDOM:;在指定地址读取;传入参数:R7-地址;返回值:R7-读入的数据USING0MOV R5,AR7;暂存地址LCALLSTARTMOV R7,#OP_WRITE;写入器件地址和写入命令LCALLSHOUTMOV R7,AR5;写入地址LCALLSHOUTLCALLREAD_CURRENT;在当前地址读取RET,READ_CURRENT:;在当前地址读取;传入参数:无;返回值:R7-读出的数据US

10、ING0LCALLSTARTMOV R7,#OP_READ;写入器件地址和读取命令LCALLSHOUTLCALLSHIN;读取数据,保存在R7LCALLSTOPRET,WRITE_BYTE:;在指定地址写入数据;传入参数:R7-写入数据的地址;传入参数:R5-要写入的数据;返回值:无USING0MOV R4,AR7LCALLSTARTMOV R7,#OP_WRITE;写入器件地址和写命令LCALLSHOUTMOV R7,AR4;地址LCALLSHOUTMOV R7,AR5;数据LCALLSHOUTLCALLSTOPMOV R7,#10;写入周期,延时10msLCALLDELAYMS,2、利用S

11、PI扩展E2PROM,SPI是三线总线结构的一个同步外围接口,允许单片机与各种外围设备以串行方式进行通讯。特点:,主从机工作方式;,可程控的主机位传送频率、时钟极性和相位;,发送完成中断标志;,写冲突保护标志。,全双工、三线同步传送;,在SPI设置为主机方式时,MISO是主机的数据输入线,MOSI是主机的数据输出线;设置为从机时,MISO是从机的数据输出线,MOSI是从机的数据输入线。,(1)、串行数据线(MISO,MOSI),主机输入/从机输出数据线MISO和主机输出/从机输入数据线MOSI,用于串行数据的发送和接收。数据发送时,先传高位,后传低位。,(2)、串行时钟线SCLK,串行时钟线用

12、于同步从MISO和MOSI引脚输入和输出的数据的传输。在SPI设置为主机方式时,SCLK为输出;设置为从机方式时,SCLK为输入。,(3)、从机选择/SS在从机方式时,/SS脚是输入端,用于使能SPI从机进行数据传送;在主机方式时/SS一般为高电平。,高位数据,低位数据,1)串行E2PROM的特点及引脚,93C46是6416位串行存取的电擦除可编程只读存储器。特点:在线改写数据和自动擦除功能;调电数据不丢失;输入、输出与TTL兼容;片内可产生擦除和写入时的电压;片内有控制和定时发生器;具有整体编程允许和截至功能。,CS:片选信号。高电平有效。用CS下降沿启动片内 定时器,开始读写操作。启动后,

13、与CS信号上电平无关。,CLK:串行数据时钟信号输入端。频率位0250KHZ。,DI:串行数据输入端。,DO:串行数据输出端。擦除时,DO引脚可作为擦写状态指示,即忙闲信号。,ORG:结构端。当接到VCC或悬空时,芯片为16位存储器结构;接到VSS时,选择8位存储器结构。在时钟频率低于1MHZ,ORG悬空。,2)指令系统:读指令,写指令,擦除指令,擦除整片存储器指令,写整个存储器指令,擦写允许指令,读指令时序,写指令时序,擦除指令时序,擦除整片指令时序,3)与单片机的接口,取反,目的是双向传输数据,片选,1,读入数据;0操作码、地址、数据进入C46,二、串行扩展I/O口,1、利用SPI扩展I/

14、O口,(1)扩展并行输出口,(2)扩展并行输入口,2、利用I2C扩展I/O口,(1)PCF8574是一种CMOS电路,具有I2C接口和8位准双向口。它在I2C总线中仅作从器件。具有低的电流损耗,具有中断逻辑线。3只硬件地址引脚最多挂接8个PCF8574。,SDA:串行数据线,双向,SCL:串行时钟线,输入,P7P0:8位准双向口。上电复位为高电平。在做输入时,应置高电平。,A0A2:地址输入线,/INT:中断输出,低电平有效,(2)PCF8574的寻址方式及操作,控制字节和器件寻址,读,写,应答,开始信号,控制字节,选中某一片,(a)为PCF8574器件控制字节,(b)为PCF8474A控制字

15、节,读操作,写操作,(3)PCF8574应用和编程,作扩展8位输入口,A0,A1,A2接地了,扩展8位输出口,输出显示,A0,A1,A2接地了,作扩展4位输入和4位输出口。,中断悬空,输入开关量,输出显示,TLC549是美国德州仪器公司生产的8位串行A/D转换器芯片,通过SPI接口与单片机连接,从CLK输入的频率最高可达1.1MHz。,1、8位串行A/D转换器TLC549,TLC549具有4MHz的片内系统时钟,片内具有采样保持电路,A/D转换时间最长17s,最高转换速率为40000次/s。,TLC549的电源范围为+3V+6V,功耗小于15Mw,总失调误差最大为0.5LSB,适用于电池供电的

16、便携式仪表及低成本高性能的系统中。,三、串行扩展A/D、D/A等,REF+:正基准电压输入端,2.5VREF+VCC+0.1V。,(1)、引脚功能,REF-:负基准电压输入端,-0.1VREF-2.5V,且要求REF+REF-1V。,在要求不高时,也可将REF-接地,REF+接VCC。,AIN:模拟信号输入端,0AINVCC,当AINREF+时,转换结果为全1(FFH),AINREF-时,转换结果为全“”(00H)。,/CS:芯片选择输入端,低电平有效。,DO:数据串行输出端,输出时高位在前,低位在后。,CLK:外部时钟输入端,最高频率可达1.1MHz。,(2)、TLC549的时序,当/CS变

17、为低电平时,TLC549芯片被选中,同时前次转换结果的最高有效位MSB(A7)自DO端输出;,接着自CLK端输入个外部时钟信号,前个CLK信号是配合TLC549输出上次转换结果的A6-A0 位,并为本次转换做准备:,在第个CLK信号由高至低的跳变之后,片内采样/保持电路对输入模拟量采样开始,第个CLK信号的下降沿使片内采样/保持电路进入保持状态并启动A/D开始转换。,转换时间为36个系统时钟周期,最大为17uS。A/D转换完成前的这段时间内,TLC549的控制逻辑要求:或者/CS保持高电平,或者CLK时钟端保持36个系统时钟周期的低电平。,由此可见,在TLC549的CLK端输入个外部时钟信号期

18、间需要完成以下工作:读入前次A/D转换结果;对本次转换的输入模拟信号采样并保持;启动本次A/D转换。,利用TLC549转换器设计一个简易数字电压表,用4位LED显示器将被测电压显示出来。,将TLC549的/CS、CLK、DO接到单片机的三条I/O口线,REF+、REF-直接接到Vcc、GND,模拟输入AIN接电位器的中心抽头,调节电位器即可改变被测输入电压值。,sbit CLK=P11;/时钟sbit DO=P12;/数据输出sbit CS=P10;/片选信号uchar TLC549_ADC(void)uchar i,tmp;CS=1;CLK=0;CS=0;_nop_();_nop_();fo

19、r(i=0;i 8;i+)tmp=1;tmp|=DO;CLK=1;_nop_();CLK=0;CS=1;for(i=17;i!=0;i-)_nop_();return(tmp);,CS BIT P1.0CLOCK BIT P1.1DO BIT P1.2MEM EQU 30H ORG 0050HSTAR:SETB CS;CS CLR CLOCK;CLOCK MOV R5,#00H;#模数转换 CLR CS NOP;参见datasheet的时序表 NXT:MOV C,DO SETB CLOCK NOP RLC A CLR CLOCK INC R5 CJNE R5,#8,NXT MOV R5,#00

20、H SETB CS MOV MEM,A;转换结果放于MEM,1、TLC5615的内部结构和引脚功能 TLC5615 是SPI接口的10位电压输出的D/A转换器,通过3根串行总线就可以完成10 位数据的串行输入,易于和工业标准的微处理器或单片机接口,适用于电池供电的测量仪表、移动电话以及工业控制场合。其主要特点如下:,(1)5V单电源工作;(2)3线串行接口;(3)DAC输出的最大电压为2倍基准输入电压;(4)上电时内部自动复位,确保可以重复启动;(5)功耗低,最大功耗为1.75mW。,二、串行D/A转换器TLC5615,模拟地,串行二进制数输入端,串行时钟输入端,芯片选择,低有效,菊花链的串行

21、数据输出端(用于多芯片的级联),基准电压输入端,DAC 模拟电压输出端,正电源电压端,2、TLC5615的时序 当/CS为低电平时,在每一个SCLK时钟的上升沿从DIN 引脚移入一位数据,高位在前,低位在后。经16个时钟后,/CS 的上升沿将16位移位寄存器的10 位有效数据锁存到10位DAC寄存器,供DAC电路进行转换。,#include#include#include typedef unsigned char uchar;typedef unsigned int uint;sbit CS=P37;/*DA片选信号*/sbit SCLK=P36;/*DA时钟信号*/sbit DIN=P35

22、;/*数字数据输入*/void delay(uint us);/*延时子函数*/void dac_5615(uint data_in);void delay(uint us)uchar i;while(us-)for(i=0;i125;i+);/*函 数 名:dac_5615()功 能:写入DAC的10bit输入数据*/void dac_5615(uint data_in)uchar i;,data_in=6;/*精度10位,所以左移6位*/CS=0;SCLK=0;for(i=0;i12;i+)/*逐位传递12次,由于10位传完需 要传送2位0*/DIN=(bit)(data_in,6.4 外

23、部中断源的扩展,在80C51系列单片机中,一般只有两个外部中断请求的输入端/INT0、/INT1。当某个系统需要扩展更多个中断时,采用“OC门”经过“线或”后,引入芯片本身的外部中断请求端,就可以方便的扩展多个外部中断。,在中断服务程序中,由软件设置的顺序查询外部中断是哪一位是高电平,然后进入中断服务程序。查询程序的流程图如下图所示。,共用一个中断源,扩展中断源1的优先级最高,中断源4的优先级低。,PINT0:PUSH PSW;保护现场 PUSH A JB P1.0,LOOP1;转向中断服务程序1 JB P1.1,LOOP2;转向中断服务程序2 JB P1.2,LOOP3;转向中断服务程序3 JB P1.3,LOOP4;转向中断服务程序4INTEND:POP A POP PSW RETILOOP1:中断服务程序1 AJMP INTENDLOOP2:中断服务程序2 AJMP INTENDLOOP3 中断服务程序3 AJMP INTENDLOOP4 中断服务程序4 AJMP INTEND,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 在线阅读 > 生活休闲


备案号:宁ICP备20000045号-1

经营许可证:宁B2-20210002

宁公网安备 64010402000986号