单片机ppt课件-第9章.ppt

上传人:飞****2 文档编号:69572292 上传时间:2023-01-07 格式:PPT 页数:66 大小:819.50KB
返回 下载 相关 举报
单片机ppt课件-第9章.ppt_第1页
第1页 / 共66页
单片机ppt课件-第9章.ppt_第2页
第2页 / 共66页
点击查看更多>>
资源描述

《单片机ppt课件-第9章.ppt》由会员分享,可在线阅读,更多相关《单片机ppt课件-第9章.ppt(66页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、http:/ 9章章 串行扩展技术串行扩展技术(课时:(课时:6 6学时)学时)http:/ n了解串行扩展的分类和特点。n了解Microware、1-wire、USB和CAN总线。n掌握I2C总线的原理。n掌握SPI总线的原理。学习重点和难点学习重点和难点 nI2C总线的软件模拟。nSPI总线的软件模拟。http:/ 9章章 串行扩展技术串行扩展技术 n9.1 9.1 串行扩展概述串行扩展概述 n9.2 UART9.2 UART串行扩展接口串行扩展接口 n9.3 I9.3 I2 2C C串行扩展总线串行扩展总线 n9.4 SPI9.4 SPI串行扩展接口串行扩展接口 n本章小结本章小结n习题

2、习题 http:/ 9.1 串行扩展概述串行扩展概述n9.1.1 9.1.1 串行扩展的种类串行扩展的种类 n9.1.2 9.1.2 串行扩展的特点串行扩展的特点http:/ 9.1.1 串行扩展的种类串行扩展的种类 新一代单片机技术的显著特点之一就是串行扩展总线和接口的推出。常用的串行扩展总线和接口有I2C总线、SPI总线、Microware总线、1-wire总线和CAN总线等。(1)UART串行扩展接口 (Universal Asynchronous Receiver/Transmitter)UART通用异步收发器,既能同步又能异步通信的硬件电路称为UART。UART是用于控制计算机与串行

3、设备的芯片,它提供了RS232C数据终端设备接口,这样计算机就可以和调制解调器或其它使用RS232C接口的串行设备通信了。http:/ 9.1.1 串行扩展的种类串行扩展的种类(2)I2C(Inter Integrated Circuit)串行扩展总线 I2C总线是Philip公司推出的芯片间串行传输总线。它用两根线实现了完善的全双工同步数据传送,可以极为方便地构成多机系统和外围器件扩展系统。(3)SPI(Serial Peripheral Interface)串行扩展接口 SPI总线是Motorola公司提出的一种同步串行外设接口。允许MCU与各种外围设备以同步串行方式进行通信。其外围设备种

4、类繁多,从最简单的TTL移位寄存器到复杂的LCD显示驱动器、网络控制器等,可谓应有尽有。http:/ 9.1.1 串行扩展的种类串行扩展的种类(4)Microware串行扩展接口 Microware总线是NS公司提出的串行同步双工通信接口,用于8位COP800系列单片机和16位HPC系列单片机。(5)单总线(1-wire)串行扩展总线 1-wire总线是Dallas公司研制开发的一种协议,用于便携式仪表和现场监控系统。(6)USB(Universal Serial BUS)串行扩展总线 USB总线是Compaq、Intel、Microsoft、NEC等公司联合制定的一种计算机串行通信协议。ht

5、tp:/ 9.1.1 串行扩展的种类串行扩展的种类(7)CAN(Controller Area Network)串行扩展总线 CAN总线是德国Bosch公司最先提出的多主机局域网,是国际上应用最广泛的现场总线之一。最初,CAN被设计作为汽车环境中的微控制器通信,在车载各电子控制装置ECU之间交换信息,形成汽车电子控制网络。比如:发动机管理系统、变速箱控制器、仪表装备。http:/ 9.1.2 串行扩展的特点串行扩展的特点 串行扩展总线技术是新一代单片机技术发展的一个显著特点。与并行扩展总线相比,串行扩展总线有电路结构简单,程序编写方便,易于实现用户系统软硬件的模块化、标准化等优点。常用串行扩展

6、总线和接口的特点简要说明如下:(1)UART串行扩展接口 UART接口是二线制,8051单片机的UART既能作通用异步接收和发送器,又能作同步移位寄存器。它可以实现8051单片机系统之间点对点的单机通信或多机通信,也可以实现扩展I/O口。http:/ 9.1.2 串行扩展的特点串行扩展的特点(2)I2C总线 I2C总线是二线制,采用器件地址的硬件设置方法,通过软件寻址完全避免了器件的片选线寻址方法,从而使硬件系统具有简单灵活的扩展方法。I2C总线简单,结构紧凑,易于实现模块化和标准化。(3)SPI串行扩展接口 SPI总线是三线制,可直接与多种标准外围器件直接接口,在SPI从设备较少而没有总线扩

7、展能力的单片机系统中使用特别方便。即使在有总线扩展能力的系统中采用SPI设备也可以简化电路设计,省掉很多常规电路中的接口器件,从而提高了设计的可靠性。http:/ 9.1.2 串行扩展的特点串行扩展的特点(4)Microware串行扩展接口 Microware总线是三线制,由一根数据输出(SO)线、一根数据输入(SI)线和一根时钟(SK)线组成。所有从器件的时钟线连接到同一根SK线上,主器件向SK线发送时钟脉冲信号,从器件在时钟信号的同步沿输出/输入数据。主器件的数据输出线SO和所有从器件的数据输入线相接,从器件的数据输出线都接到主器件的数据输入线SI上。(5)1-wire总线 1-wire总

8、线是利用一根线实现双向通信,由一个总线主节点、一个或多个从节点组成系统,通过一根信号线对从芯片进行数据的读取。每一个符合1-wire协议的从芯片都有一个唯一的地址,包括8位分类码、48位的序列号和8位CRC代码。主芯片对各个从芯片的寻找依据这64位的不同来进行。单总线节省I/O引脚资源、结构简单、成本低廉、便于总线扩展和维护。http:/ 9.1.2 串行扩展的特点串行扩展的特点(6)USB串行扩展接口 USB比较于其他传统接口的一个优势是即插即用的实现,即插即用(Plug-and-Play)也称为热插拔(Hot Plugging)。数据传输速度快,USB1.1接口的最高传输率可达12 Mb/

9、s;USB2.0接口的最高传输率可达480 Mb/s。扩展方便,使用USB Hub扩展,可以连接127个USB设备,连接的方式十分灵活。(7)CAN总线 在由CAN 总线构成的单一网络中,理论上可以挂接无数个节点。实际应用中,节点数目受网络硬件的电气特性所限制。CAN 可提供高达1Mbit/s的数据传输速率,这使实时控制变得非常容易。另外,硬件的错误检定特性也增强了CAN的抗电磁干扰能力。当信号传输距离达到10km时,CAN 仍可提供高达50Kbit/s的数据传输速率。http:/ UART9.2 UART串行扩展接口串行扩展接口 n9.2.1 9.2.1 串行口工作方式串行口工作方式 n9.

10、2.2 UART9.2.2 UART串行扩展应用实例串行扩展应用实例 http:/ 9.2.1 串行口工作方式串行口工作方式n串行口有四种工作方式,每一种工作方式都有自己的特点。其中方式0是8位同步通信方式,用于串/并或并/串转换中,常用的串/并转换芯片有74LS164和并/串转换芯片74LS165等。n74LS164 是一个双列直插式8位串入/并出移位寄存器,其引脚如下图所示。其引脚定义如下:lA:同步串行数据输入端lB:同步串行数据输入端lQ0Q7:8位并行数据输出端lCK:时钟脉冲输入端lCLR:数据清除端(清除输出数据,通常用在移位完成时)lGND:接地端lVCC:电源端http:/

11、9.2.1 串行口工作方式串行口工作方式n74LS165 是一个双列直插式8位并入/串出移位寄存器,其引脚如下图所示。其引脚定义如下:lLD:重新装载数据端(通常用在数据完全移出后)lCK:内部数据移位时钟脉冲输入端lD0D7:并行数据输入端lQ11:取反串行输出端lGND:接地端lQ11:串行输出端lSE:用于填充数据移出后的空位的逻辑电平信号lCOK:和CK联合控制数据移动lVCC:电源端http:/ 9.2.1 串行口工作方式串行口工作方式74LS164引脚图 74LS165引脚图 http:/ UART9.2.2 UART串行扩展应用实例串行扩展应用实例【例1】利用74LS164串行输

12、入并行输出芯片作一个简单的电子钟,要求四个数码管显示时钟;其中LED1显示小时的十位,LED2显示小时的个位,LED3显示分钟的十位,LED4显示分钟的个位。解:解:原理图如下图,采用单片机的串行口输出字形码,用74LS164和74LS138作为扩展芯片。74LS164的功能是将AT89C2051串行通信口输出的串行数据译码并在其并口线上输出,从而驱动LED数码管。74LS138是一个3线-8线译码器,它将单片机输出的地址信号译码后动态驱动相应的LED。因74LS138电流驱动能力较小,故用末级驱动三极管9013作为地址驱动。将4只LED的字段位都连在一起,它们的公共端则由74LS138分时选

13、通,这样任何一个时刻,都只有一位LED在点亮,也即动态扫描显示方式,其优点使用串行口进行LED通信程序编写相当简单,用户只需将需显示的数据直接送串口发送缓冲器,等待串行中断即可。http:/ UART9.2.2 UART串行扩展应用实例串行扩展应用实例串行动态LED扫描电路 P3.2P3.3TXRXhttp:/ UART9.2.2 UART串行扩展应用实例串行扩展应用实例ORG 0000HLJMP MAINORG 0040HMAIN:MOV SCON,#00H;初始化串口为方式0MOV R3,#00HLOOP:MOV R4,#0E8HDELAY:LCALL DISPLAY;动态扫描显示DJNZ

14、 R4,DELAYINC R3;显示数字增1CJNE R3,#0AH,LOOP;不等于10转移LJMP MAIN 下面是一个简单的动态扫描程序,如果再利用上第六章的定时器就可做成一个完整的电子钟,四个数码管显示为00:00这种形式。在本例中冒号就不显示出来了,分别用20H、21H、22H、23H地址存放时间的时钟的十位、时钟的个位、分钟的十位、分钟的个位。用中断方式做一个不带时钟芯片的电子钟,请读者自己完成。http:/ UART9.2.2 UART串行扩展应用实例串行扩展应用实例DISPLAY:CLR P3.2;显示LED1CLR P3.3LCALL DISPLCALL DELAY1SETB

15、 P3.3;显示LED2LCALL DISPLCALL DELAY1SETB P3.3;显示LED3CLR P3.2LCALL DISPLCALL DELAY1SETB P3.2;显示LED4SETB P3.3LCALL DISPLCALL DELAY1RET参考程序:http:/ UART9.2.2 UART串行扩展应用实例串行扩展应用实例DISP:MOV A,R3;将字形码送串口MOV DPTR,#TABLEMOVC A,A+DPTRMOV SBUF,AWAIT:JNB TI,WAIT;等待串口传送CLR TIRETDELAY1:MOV R6,#10H;动态扫描的时间LOOP1:MOV R

16、7,#38H;间隔DJNZ R7,$DJNZ R6,LOOP1RETTABLE:DB 3FH,06H,,5BH;09的字形码DB 4FH,66H,6DHDB 7DH,07H,,7FH,,6FH参考程序:http:/ I9.3 I2 2C C串行扩展总线串行扩展总线 n9.3.1 I9.3.1 I2 2C C总线的结构原理总线的结构原理 n9.3.2 I9.3.2 I2 2C C总线的软件模拟总线的软件模拟 n9.3.3 I9.3.3 I2 2C C串行扩展应用实例串行扩展应用实例 http:/ I9.3.1 I2 2C C总线的结构原理总线的结构原理nI2C总线是芯片间串行传输总线。它用数据线

17、SDA和时钟线SCL两根线实现全双工同步数据传送,可方便地构成多机系统和外围器件扩展系统。nI2C总线采用了器件地址的硬件设置方法,通过软件寻址完全避免了器件的片选线寻址方法,从而使硬件系统具有简单灵活的扩展方法。n按照I2C总线规范,总线传输中的所有状态都生成相对应的状态码,系统中的主机能够依照这些状态码自动地进行总线管理,用户只要在程序中装入这些标准处理模块,根据数据操作要求完成I2C总线的初始化,启动I2C总线,就能自动完成规定的数据传送操作。http:/ I9.3.1 I2 2C C总线的结构原理总线的结构原理I2C总线接口电路结构 http:/ I9.3.1 I2 2C C总线的结构

18、原理总线的结构原理nI2C总线接口为开漏或开集电极输出,需加上拉电阻。n系统中所有的单片机、外围器件都将数据线SDA和时钟线SCL的同名端相连在一起,总线上的所有节点都由器件和管脚给定地址。n系统中可以直接连接具有I2C总线接口的单片机,也可以通过总线扩展芯片或I/O口的软件仿真与I2C总线相连。n在I2C总线上可以挂接各种类型的外围器件,如RAM/EEPROM、日历/时钟芯片、A/D转换器、D/A转换器、以及由I/O口、显示驱动器构成的各种模块。http:/ I9.3.1 I2 2C C总线的结构原理总线的结构原理nSDA 和SCL 都是双向线路,都通过一个电流源或上拉电阻连接到正的电源电压

19、;当总线空闲时,这两条线路都是高电平;连接到总线的器件输出级必须是漏极开路或集电极开路才能执行线与的功能。nI2C 总线上数据的传输速率l在标准模式下可达100kbit/s。l在快速模式下可达400kbit/s。l在高速模式下可达3.4Mbit/s。n连接到总线的接口数量只由总线电容是400pF 的限制决定关于高速模式主机器件的信息。http:/ I9.3.1 I2 2C C总线的结构原理总线的结构原理nI2C总线上数据传送的基本单位为字节,采用低位在前的格式。主从器件之间一次传输的数据称为一帧,由启动信号、若干个数据字节和应答位以及停止信号组成。nI2C的主要命令只有读、写两种,虽然读写的字

20、节根据具体器件的不同而不同,但其时序关系不会发生改变。n下位机只要具备I2C的基本时序即可。这些基本时序包括:启动、写字节、读字节、应答位、停止信号,并可以组合成两个子程序:读N字节子程序、写N字节子程序。http:/ I9.3.1 I2 2C C总线的结构原理总线的结构原理nI2C总线最显著的特点是规范的完整性、结构的独立性和用户使用时的“傻瓜”化。lI2C总线有严格的规范,如接口的电气特性、信号时序、信号传输的定义、总线状态设置、总线管理规则及总线状态处理等。l在I2C总线规范中,总线上的器件节点的电气特性及地址给定都具有较强的独立性,而且各节点上的器件、模块都有相对独立的地址编号。l严格

21、、完善的规范,并将这些规范的应用尽可能“傻瓜”化,除了有充分的硬件支持外,在软件方面,Philips公司为用户提供了一套完善的总线状态处理软件包,以致于用户可以不去熟悉I2C总线的规范,不去理睬总线的管理方法,只要掌握I2C总线的应用程序设计方法就可方便地使用I2C总线,并且能很快地掌握I2C总线系统的软、硬件设计方法。http:/ I9.3.2 I2 2C C总线的软件模拟总线的软件模拟1.产生起始位和停止位 I2C总线的起始和停止条件如下图所示。分别用P1.0和P1.1模拟I2C总线的时钟线和数据线,则可给时钟线SCL和数据线SDA赋值。程序如下:SDL EQU P1.0SCA EQU P

22、1.1http:/ I9.3.2 I2 2C C总线的软件模拟总线的软件模拟2.发送起始条件 当时钟SCL为高电平时,数据线SDA从高电平向低电平切换表示起始条件,即启动I2C总线数据传送。模拟时序产生时钟SCL和SDA发送的起始条件子程序如下:使用不同频率的晶体振荡器,则要相应增删程序段中NOP指令的条数,以满足时序的要求。START:SETB SDASETB SCLNOP;NOP的数目根据时钟频率确定NOP;此处用NOP来延时CLR SDANOPNOPCLR SCLREThttp:/ I9.3.2 I2 2C C总线的软件模拟总线的软件模拟3.发送停止条件 当时钟SCL为高电平时,数据线S

23、DA由低电平向高电平切换表示停止条件,即停止I2C总线数据传送。模拟时序产生时钟SCL和SDA发送的停止条件子程序如下:使用不同频率的晶体振荡器,则要相应增删程序段中NOP指令的条数,以满足时序的要求。STOP:CLR SDASETB SCLNOP;NOP的数目根据时钟频率确定NOP;此处用NOP来延时SETB SDANOPNOPCLR SDACLR SCLREThttp:/ I9.3.2 I2 2C C总线的软件模拟总线的软件模拟4.发送应答位、非应答位子程序I2C总线上的第9个时钟脉冲对应于应答位,当该位为低电平表示应答ACK,当该位为高电平表示非应答ACK。I2C总线的应答位和非应答位如

24、下图所示。发送ACK和ACK子程序如下。SDASCLhttp:/ I9.3.2 I2 2C C总线的软件模拟总线的软件模拟(1)发送应答位ACK 由上图可知,当发送应答位ACK时,只需将SDA设为低电平、SCL设为高电平,其区间的长短根据晶振的频率确定,即改变下列子程序中的NOP数即可达到要求,发送ACK子程序如下:YACK:CLR SDASETB SCLNOP;NOP的数目根据时钟频率确定NOP;此处用NOP来延时CLR SCLSETB SDAREThttp:/ I9.3.2 I2 2C C总线的软件模拟总线的软件模拟(2)发送非应答位 由上图可知,当发送非应答位ACK时,只需将SDA设为高

25、电平、SCL设为高电平,其区间的长短根据晶振的频率确定,即改变下列子程序中的NOP数即可达到要求,发送ACK子程序如下:YNACK:SETB SDASETB SCLNOP;NOP的数目根据时钟频率确定NOP;此处用NOP来延时CLR SCLCLR SDAREThttp:/ I9.3.2 I2 2C C总线的软件模拟总线的软件模拟5.应答位检查子程序根据I2C总线协议,在接收到一个字节后,要发送一个应答位以供检查,此时可设置一个标志位表示应答状态。当检查结果为正常应答时,则标志位置0;否则,标志位置0。应答位检查子程序如下:TACK:SETB SDA;设置SDA为输入方式SETB SCL;产生第

26、9个时钟脉冲NOP;NOP的数目根据时钟频率确定NOP;此处用NOP来延时CLR 30HMOV C,SDAJNC TEND;若正常应答,则转移SETB 30HTEND:CLR SCLREThttp:/ I9.3.2 I2 2C C总线的软件模拟总线的软件模拟6.字节数据发送子程序根据I2C总线协议,数据在时钟线为低电平时变化,高电平时稳定,每一个时钟脉冲传送一位。模拟I2C总线的SDA接在并行口线,并口中无移位寄存器,要通过指令完成移位后再从SDA串行输出。I2C总线的字节数据传送如下图所示。将待发送的字节存于累加器A中,字节数据发送子程序如下:http:/ I9.3.2 I2 2C C总线的

27、软件模拟总线的软件模拟WOBYT:MOV R4,#08H;要发送的数据长度为8位LOOP2:RLC A;将待发送的位送入位CY中JC LOOP1;CY位为1转到LOOP1CLR SDA;置为低电平,发送0SETB SCL;时钟高电平数据保持数据稳定NOP;调节NOP的个数,使延时4.7u sNOPCLR SCL;时钟脉冲变为低电平,准备改变数据DJNZ R4,LOOP2;若8位未发送完,转LOOP2继续RET;8位发送完成返回LOOP1:SETB SDA;置为高电平,发送1SETB SCL;时钟为高电平保持数据稳定NOP;调节NOP的个数,使延时4.7u sNOPCLR SCL;时钟脉冲变为低

28、电平,准备改变数据CLR SDA;将数据改为低电平DJNZ R4,LOOP2;若8位未发送完,转LOOP2继续RET;8位发送完成返回字节数据发送子程序http:/ I9.3.2 I2 2C C总线的软件模拟总线的软件模拟7.字节数据接收子程序根据I2C总线协议,数据必须在时钟处于高电平期间,数据稳定时才能读取数据,在经过八次的时钟转换后,读出八位即一个字节数据。I2C总线起始字节如下图所示。将读出的字节数据存于R5中,接收字节数据子程序如下:http:/ I9.3.2 I2 2C C总线的软件模拟总线的软件模拟接收字节数据子程序ROBYT:MOV R4,#08H;要接收的数据长度为8位LOO

29、P3:SETB SDA;设置SDA为输入方式SETB SCL;SDA上数据有效MOV C,SDA;读入SDA引脚状态MOV A,R5;将存放结果送入A中RLC A;将读出的1位移入A中MOV R5,ACLR SCL;一个脉冲结束,SDA上数据无效DJNZ R4,LOOP3;未读完8位,转到LOOP3RET;读完返回http:/ I9.3.2 I2 2C C总线的软件模拟总线的软件模拟8.多个字节数据发送子程序 在完成上述模拟子程序后,根据I2C总线协议,可编写多个字节数据发送子程序。要发送的字节数存放在R5中,要发送的数据块的第一个数据的地址为40H,外围器件的地址存放在60H中,参考程序如下

30、:WDBYT:LCALL START;起始WLP1:MOV A,60H;设60H为存放的控制字LCALL WOBYT;发送读控制字节LCALL TACK;检查应答位JB 30H,WLP1;无应答位,重发MOV R0,#40H;40H为第一个数据的首地址WLP2:MOV A,R0;读一个字节数据LCALL WOBYT;发送LCALL TACK;检查应答位JB 30H,WLP1;无应答位,重发INC R0;指向下一个要发送的数据DJNZ R5,WLP2;要发送数据未发完,再发送LCALL STOP;全部数据发完,停止RET;返回http:/ I9.3.2 I2 2C C总线的软件模拟总线的软件模拟

31、9.多个字节数据接收子程序 根据I2C总线协议,同样可编写多个字节数据接收子程序。要接收的字节数存放在R5中,要接收的数据块存放的首地址为50H,外围器件的地址存放在60H中,参考程序如下:RDBYT:LCALL START;起始RLP1:MOV A,60H;设60H为存放的控制字LCALL WOBYT;发送读控制字节LCALL TACK;检查应答位JB 30H,RLP1;无应答位,重发MOV R0,#50H;50H为第一个数据的首地址RLP2:LCALL ROBYT;读入一个字节MOV R0,ADJNZ R5,RLP3;要接收数据未读完,再读入LCALL YNACK;发送非应答位LCALL

32、STOP;全部数据发完,停止RET;返回RLP3:LCALL YACK;发送应答位INC R0;指向下一个要存放数据的地址SJMP RLP2;调节NOP的个数,使延时4.7u shttp:/ I9.3.3 I2 2C C串行扩展应用实例串行扩展应用实例【例2】将AT89C2051片内RAM40H47H单元中的八个8位数据通过I2C总线接口传送到存储器AT24C01的50H57H单元中。解:AT24C01是Atmel公司生产的具有I2C总线接口的E2PROM,是目前应用较多的AT24C系列存储器中的一种,芯片存储容量为1Kb(1288位)。AT24C01引脚如下图所示。其引脚定义如下:lSCL:

33、串行时钟端。lSDA:串行数据端,漏极开路,需接上拉电阻到VCC。lWP:写保护,当WP为高电平时存储器只读;当WP为低电平时存储器可读可写。lA2A0:芯片地址。http:/ I9.3.3 I2 2C C串行扩展应用实例串行扩展应用实例 AT89C2051与AT24C01通过串行总线接口传送数据的接线如下图所示。因AT89C2051没有I2C总线接口,可用软件的办法来模拟I2C总线操作。P1.0模拟I2C总线的时钟线SCL,P1.1模拟I2C总线的数据线SDA。AT89C2051与AT24C01的接口接线http:/ I9.3.3 I2 2C C串行扩展应用实例串行扩展应用实例 AT24C0

34、1的读写操作有多种形式,写操作有两种类型:字节写和页面写;读操作有三种类型:读当前地址内容、读随机地址内容和读顺序地址内容。AT24C01写N个字节数据的操作时序如下图所示,AT24C01读N个字节数据的操作时序如下图所示。http:/ I9.3.3 I2 2C C串行扩展应用实例串行扩展应用实例上图中器件地址说明如下:器件地址码的第74位从器件地址位,用于确认器件的类型。AT24C01的器件地址码为1010,1010 表示从器件为串行E2PROM。器件地址码的第31位18片的片选或存储器内的页面地址选择位。此三个控制位用于选片或者内部页面选择。如在存储容量8Kb(10248位)的AT24C0

35、8内部,存储矩阵分为4个页面,每一页面有256个字节。通过器件地址码的第2位和第1位,可以选择数据读写的页面。器件地址码的第0位读、写(R/W)操作控制码。若此位为1,下一字节进行读操作(R);此位为0,下一字节进行写操作(W)。http:/ I9.3.3 I2 2C C串行扩展应用实例串行扩展应用实例编程说明:lAT24C01每接收一个字节后,都必须发送一个确认应答信号位ACK,即时序中的响应信号。此时AT89C2051必须产生一个与此确认位相应的时钟脉冲。lAT24C01在读写操作时,具有地址自动加1功能,即读、写完某一地址空间后,会自动指向下一个地址单元。l将AT89C2051片内RAM

36、40H47H单元中的八个8位数据通过I2C总线接口传送到存储器AT24C01的50H57H单元中,参考子程序如下。l程序中用到的子程序均为9.3.2节所编写的模拟I2C总线的子程序。http:/ START;发送起始信号ICWLP1:MOV A,0A0H;#10100000B器件地址码,LCALL WOBYT;发送器件地址LCALL TACK;检查应答位JB 30H,ICWLP1;无应答位,重发ICWLP2:MOV A,50H;50H为待写存储单元首地址LCALL WOBYT;发送待写存储单元地址LCALL TACK;检查应答位JB 30H,ICWLP1;无应答位,重发MOV R5,#8;待发

37、送数据块的长度MOV R0,#40H;40H为第一个数据的首地址ICWLP3:MOV A,R0;读一个字节数据LCALL WOBYT;发送LCALL TACK;检查应答位JB 30H,ICWLP1;无应答位,重发INC R0;指向下一个要发送的数据DJNZ R5,WLP2;要发送数据未发完,再发送LCALL STOP;全部数据发完,停止LCALL DELAY;延时,等待AT24C01内部写操作RET;返回http:/ SPI9.4 SPI串行扩展接口串行扩展接口 n9.4.1 SPI9.4.1 SPI总线的结构原理总线的结构原理 n9.4.2 SPI9.4.2 SPI总线的软件模拟总线的软件模

38、拟 n9.4.3 SPI9.4.3 SPI串行扩展应用实例串行扩展应用实例 http:/ SPI9.4.1 SPI总线的结构原理总线的结构原理nSPI总线系统是一种同步串行外设接口,允许MCU与各种外围设备以同步串行方式进行通信来交换信息。nSPI总线接口一般使用4根线:串行时钟线SCK、主机输入/从机输出数据线MISO、主机输出/从机输入数据线MOSI和低电平有效的从机选择线SS。n由于SPI系统总线只需3根公共的时钟数据线和若干位独立的从机选择线,在SPI从设备较少而没有总线扩展能力的单片机系统中使用特别方便。nSPI总线包括1根串行同步时钟信号线以及2根数据线。SPI总线接口电路结构如下

39、图所示。http:/ SPI9.4.1 SPI总线的结构原理总线的结构原理SPI总线接口电路结构 http:/ SPI9.4.1 SPI总线的结构原理总线的结构原理nSPI模块为了和外设进行数据交换,根据外设工作要求,其输出的串行同步时钟极性和相位可以进行配置。n时钟极性(CPOL)对传输协议没有重大的影响。l如果CPOL=0,串行同步时钟的空闲状态为低电平;l如果CPOL=1,串行同步时钟的空闲状态为高电平。n时钟相位(CPHA)能够用于选择两种不同的传输协议进行数据传输。l如果CPHA=0,在串行同步时钟的第一个跳变沿(上升或下降)数据被采样;l如果CPHA=1,在串行同步时钟的第二个跳变

40、沿(上升或下降)数据被采样。nSPI主模块和与之通信的外设间时钟相位和极性应该一致。http:/ SPI9.4.1 SPI总线的结构原理总线的结构原理n特点:由于SPI系统总线一共只需34位数据线和控制线即可实现与具有SPI总线接口功能的各种I/O器件进行连接,而扩展并行总线则需要8根数据线、816位地址线、23位控制线,因此,采用SPI总线接口可以简化电路设计,节省很多常规电路中的接口器件和I/O口线,提高设计的可靠性。n应用:在MCS51系列等不具有SPI接口的单片机组成的智能仪器和工业测控系统中,当传输速度要求不是太高时,使用SPI总线可以增加应用系统接口器件的种类,提高应用系统的性能。

41、http:/ SPI9.4.2 SPI总线的软件模拟总线的软件模拟n对于没有提供SPI接口的单片机而言,通常可使用软件的办法来模拟SPI的总线操作,包括串行时钟、数据输入和输出。nAtmel公司生产的EEPROM具有SPI接口,存储容量为4Kb的AT25040就有SPI接口,MCS51系列单片机与AT25010的SPI总线接口接线如下图所示。图中,P1.0模拟SPI的数据输出端(MOSI),P1.1模拟SPI的SCK输出端,P1.2模拟SPI的从机选择端(SS),P1.3模拟SPI的数据输入端(MISO)。下面给出模拟SPI串行输入、串行输出和串行输入/输出的3个子程序。http:/ 从AT2

42、5040的SO端接收8位数据并放入寄存器R0中。参考程序如下:SPIIN:SETB P1.1 ;使P1.1(时钟)输出为1 CLR P1.2 ;选择从机 MOV R1,#08H ;置循环次数 SPIIN1:CLR P1.1;使P1.1(时钟)输出为0 NOP ;延时 NOP MOV C,P1.3;从机输出送进位C RLC A ;左移至累加器A SETB P1.1 ;使P1.0(时钟)输出为1 DJNZ R1,SPIIN1 ;判断是否循环8次(8位数据)MOV R0,A ;8位数据送R0 REThttp:/ 将MCS51单片机中R0寄存器的内容传送到AT25040的SI端。参考程序如下:SPIO

43、UT:SETB P1.1 ;使P1.1(时钟)输出为1 CLR P1.2 ;选择从机 MOV R1,#08H ;置循环次数 MOV A,R0 ;8位数据送累加器ASPIOUT1:CLR P1.1 ;使P1.1(时钟)输出为0 NOP ;延时 NOP RLC A ;左移至累加器A最高位至C MOV P1.0,C ;进位C送从机输入 SETB P1.1 ;使P1.1(时钟)输出为1 DJNZ R1,SPIOUT1 ;判是否循环8次(8位数据)REThttp:/ 将MCS51单片机R0寄存器的内容传送到AT25040的SI端,同时从AT25040的SO端接收8位数据。参考程序如下:SPIIO:SET

44、B P1.1 ;使P1.1(时钟)输出为1 CLR P1.2 ;选择从机 MOV R1,#08H ;置循环次数 MOV A,R0 ;8位数据送累加器A SPIIO1:CLR P1.1 ;使P1.1(时钟)输出为0 NOP ;延时 NOP MOV C,P1.3 ;从机输出送进位C RLC A ;左移至累加器A最高位至C MOV P1.0,C ;进位C送从机输入 SETB P1.1 ;使P1.1(时钟)输出为1 DJNZ R1,SPIIO1 ;判断是否循环8次(8位数据)REThttp:/ SPI9.4.2 SPI总线的软件模拟总线的软件模拟n这些子程序适用于在串行时钟的上升沿输入和下降沿输出的各

45、种串行外围接口芯片(如D/A和A/D转换芯片、实时时钟芯片、LED显示驱动芯片等)。n对于下降沿输入、上升沿输出的各种串行外围接口芯片,只要改变P1.1的输出电平顺序,这些子程序也同样适用。如先置P1.1为低电平,之后再次置P1.1为高电平,再置P1.1为低电平等等。http:/ SPI9.4.3 SPI串行扩展应用实例串行扩展应用实例【例3】将AT89C2051片内RAM30H、31H单元中的16位数据通过SPI总线接口传送到数/模转换器TLC5615。解:TLC5615是3线串行总线接口10位电压输出数/模转换器,它既可与单片机的SPI总线接口相连接,又可与单片机的Microwire总线接

46、口相连接。TLC5615内部结构如下图所示。http:/ SPI9.4.3 SPI串行扩展应用实例串行扩展应用实例 TLC5615内部结构 http:/ SPI9.4.3 SPI串行扩展应用实例串行扩展应用实例lTLC5615通过固定增益为2的运放缓冲电阻网络,把10位数字数据转换为模拟电压。在TLC5615芯片上电时,内部电路把D/A寄存器复位为0。其输出具有与基准输入相同的极性,表达式为 VO=2REFCODE/1024 其中,CMOD是通过串行总线接口输入的待转换的数据;REF是基准电压。lTLC5615最大的串行时钟速率不超过14MHz,10位DAC的建立时间为12.5s,通常更新速率

47、限制至80kHz以内。lTLC5615的16位移位寄存器在SCLK的控制下从DIN引脚输入数据,高位在前,低位在后。16位移位寄存器中间的10位数据在上升沿的作用下输入10位的D/A寄存器供给D/A转换。http:/ SPI9.4.3 SPI串行扩展应用实例串行扩展应用实例lAT89C2051与TLC5615通过串行总线接口传送8位数据的接线如下图所示。l因AT89C2051没有SPI接口,可用软件的办法来模拟SPI的总线操作。P1.1模拟SPI的数据输出端(MOSI),P1.2模拟SPI的SCK输出端,P1.2模拟SPI的从机选择端(SS);TLC5615是数/模转换器,不会向AT89C20

48、51发送数据,故不需要模拟SPI的数据输入端(MISO)。http:/ SPI9.4.3 SPI串行扩展应用实例串行扩展应用实例 AT89C2051将片内RAM30H、31H单元中的16位数据传送到TLC5615的参考程序如下:DIN BIT P1.1 ;定义I/O口SCLK BIT P1.2CS5615 BIT P1.3DataH EQU 30HDataL EQU 31HTLC5615:CLR SCLK ;准备操作TLC5615 CLR CS5615 ;选中TLC5615 MOV R7,#08H MOV A,DataH ;装入高8位数据LPH:LCALL DELAY ;延时 RLC A ;最

49、高位移向TLC5615 MOV DIN,C SETB SCLK ;产生上升沿,移入1位数据 LCALL DELAY CLR SCLK DJNZ R7,LPHhttp:/ SPI9.4.3 SPI串行扩展应用实例串行扩展应用实例 MOV R7,#08H MOV A,DataL ;装入低8位数据LPL:LCALL DELAY ;延时 RLC A ;最高位移向TLC5615 MOV DIN,C SETB SCLK ;产生上升沿,移入1位数据 LCALL DELAY CLR SCLK DJNZ R7,LPL SETB CS5615 ;结束TLC5615的操作,同时将转换数据代码存入10位DA寄存器,启动新一轮的DA转换RETDELAY:(略)RET 参考程序http:/ 题题1.串行扩展与并行扩展相比的主要优点是什么?2.简述I2C总线的数据传输方法。3.常用模拟I2C总线的应用子程序有哪些?4.简述SPI总线的数据传输方法。5.常用模拟SPI总线的应用子程序有哪些?http:/

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁