欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > PPT文档下载  

    单片机原理及应用C语言版8.ppt

    • 资源ID:4937470       资源大小:665.01KB        全文页数:95页
    • 资源格式: PPT        下载积分:10金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要10金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    单片机原理及应用C语言版8.ppt

    单片机原理及应用(C语言版)第8章 单片机系统扩展,主 编:周国运本章制作:赵天翔中国水利水电出版社,第8章 单片机系统扩展,目 录 8.1 扩展并行三总线 8.2 扩展简单并行输入/输出口 8.3 扩展并行数据存储器 8.4 串行扩展总线接口技术,第8章 单片机系统扩展,本章主要介绍了MCS-51单片机系统扩展的方法。通过扩展并行三总线来进行并行总线接口扩展;通过UART或I/O口模拟几种串行通信的特点来进行串行总线接口扩展。,8.1 扩展并行三总线,主要内容 8.1.1 片外三总线结构 8.1.2 MCS-51系统扩展的实现 8.1.3 总线驱动,8.1.1 片外三总线结构,通常,微机的CPU外部都有单独的并行地址总线、数据总线、控制总线。MCS-51单片机由于引脚的限制,数据总线和地址总线是复用的。地址需要锁存:为了能把复用的数据总线和地址总线分离出来以便同外部的芯片正确的连接,需要在单片机的外部增加地址锁存器,从而构成与一般CPU相类似的三总线结构,如图8-1所示。,P2,ALE,89C52,P0,PSEN,WR,RD,地址锁存器,地址总线,数据总线,控制总线,A8A15,A0A7,D0D7,8.1.1 片外三总线结构,图8-1 89C52扩展的三总线,图8-2 地址总线扩展电路,8.1.1 片外三总线结构,地址锁存器74HC573与单片机P0口连接,扩展地址总线,如图8-2所示。,74HC573简介74HC573是有输出三态门的电平允许8位锁存器。引脚信号如下:OE:输出允许端,为0时芯片有效。LE:锁存控制端,高电平时,锁存器的数据输出端Q的状态,与数据输入端D相同,即锁存器是透明的;当LE端从高电平返回到低电平时(下降沿后),输入端的数据就被锁存在锁存器中,数据输入端D的变化不再影响Q端。,8.1.1 片外三总线结构,一、地址总线 地址总线(Address Bus,AB)用于传送单片机送出的地址信号,以便进行存储器单元和I/O端口的选择。地址总线是单向的,只能由单片机向外发送信息。地址总线的数目决定了可直接访问的存储单元的数目。,8.1.1 片外三总线结构,二、数据总线 数据总线(Data Bus,DB)用于单片机与存储器或I/O端口之间的数据传送。一般数据总线的位数与CPU的字长一致,MCS-51单片机的数据总线是8位的。数据总线是双向的,可以进行两个方向的数据传送。三、控制总线 控制总线(Control Bus,CB)是单片机发出的以控制片外ROM、RAM和I/O口读/写操作的一组控制线。,8.1.1 片外三总线结构,8.1.2 MCS-51系统扩展的实现,一、以P0口作低8位地址及8位数据的复用总线 复用,即一段时间内作两种或两种以上用途。在这里指P0口在每个CPU周期的前半个周期输出低8位地址,由地址锁存器锁存,然后由地址锁存器代替P0口输出低8位地址。后半个周期进行8位数据的输入输出。,二、以P2口作为高8位的地址总线 P0口的低8位地址加上P2的高8位地址就可以形成16位的地址总线,达到64KB的寻址能力。实际应用中,往往不需要扩展那么多地址,扩展多少用多少口线,剩余的口线仍可作一般I/O口来使用。,8.1.2 MCS-51系统扩展的实现,三、控制信号线ALE:地址锁存信号,用以实现对低8位地址的锁存。PSEN:片外程序存储器读选通信号。EA:程序存储器选择信号。为低电平时,访问外部程序存储器;为高电平时,访问内部程序存储器。WR:片外数据存储器写选通信号。RD:片外数据存储器读选通信号。,8.1.2 MCS-51系统扩展的实现,8.1.3 总线驱动,总线驱动的原因:在单片机应用系统中,扩展的三总线上挂接很多负载,如存储器、并行接口、A/D接口、显示接口等,但总线接口的负载能力有限,因此常常需要通过连接总线驱动器进行总线驱动。,总线驱动器的作用:对于单片机的I/O口只相当于增加了一个TTL负载,因此驱动器除了对后级电路驱动外,还能对负载的波动变化起隔离作用。在对TTL负载驱动时,只需考虑驱动电流的大小。在对MOS负载驱动时,MOS负载的输入电流很小,更多地要考虑对分布电容的电流驱动。,8.1.3 总线驱动,总线驱动器的选择:系统总线中地址总线是单向的,因此驱动器可以选用单向的,如74LS244,还带有三态控制,能实现总线缓冲和隔离。数据总线是双向的,其驱动器也要选用双向的,如74LS245。74LS245也是三态的,有一个方向控制端DIR。DIR=1时输出(AnBn),DIR=0时输入(AnBn)。,8.1.3 总线驱动,8.2 扩展简单并行输入/输出口,89C52有P0P3四组I/O口,但是在某些特定的场合,可能会出现I/O口不够用的情况。这时就需要通过扩展来增加I/O口的数量以满足使用的需要。在很多应用系统中,采用74系列TTL电路或4000系列MOS电路芯片,扩展并行数据输入输出。,例1 在图8-4中,当P2.0=0,WR=1,RD=0时,通过74HC244(扩展输入)读入按键状态,当P2.0=0,WR=0,RD=1时,通过74HC573(扩展输出)根据按键状态驱动发光二极管发光。74HC244、74HC573的操作地址设为0 xfeff。,8.2 扩展简单并行输入/输出口,P0.0P0.1P0.2P0.3P0.4P0.5P0.6P0.789C52 WRP2.0RD,D0 Q0D1 Q1D2 Q2D3 Q3D4 Q4D5 Q5D6 Q6D7 Q7LE VCC,Q0 D0Q1 D1Q2 D2Q3 D3Q4 D4Q5 D5Q6 D6Q7 D7G,+,+,74HC573,74HC244,+5V,图8-4 简单I/O接口扩展,8.2 扩展简单并行输入/输出口,C语言程序清单:#include voidmain()unsigned char data tmp1,tmp2=0;unsigned char xdata*pt1;pt1=0 xfeff;/给指针赋地址值0 xfeffwhile(1)/循环 tmp1=*pt1;/从74HC244输入数据 if(tmp1!=tmp2)/判断输入改变时,*pt1=tmp1;/从74HC573输出数据 tmp2=tmp1;,汇编语言程序清单:MOV30H,#00H;设一初值MOVDPTR,#0FEFFH;设端口地址LOOP:MOVXA,DPTR;从244读键盘新值CJNEA,30H,NEXT;与上次值比较SJMP LOOP;相等再读键盘值NEXT:MOV 30H,A;保存新键盘值MOVXDPTR,A;从573输出键盘值SJMP LOOP;继续读取键盘值,8.2 扩展简单并行输入/输出口,8.3 扩展并行数据存储器,主要内容 8.3.1 扩展存储器概述 8.3.2 数据存储器的扩展,8.3 扩展并行数据存储器,数据存储器即随机存取存储器(Random Access Memory,RAM),用于存放可随时修改的数据信息。单片机使用的主要是静态RAM。MCS-51系列单片机片外数据存储器的空间可达64KB,而片内数据存储器的空间只有128B或256B。如果片内的数据存储器不够用时,则需进行数据存储器的扩展。,8.3.1 扩展存储器概述,存储器扩展的核心问题是存储器的编址问题。所谓编址就是给存储单元分配地址。由于存储器通常由多个芯片组成,为此存储器的编址分为两个层次:即存储器芯片的选择和存储器芯片内部存储单元的选择。,一、地址线的译码 存储器芯片的选择有两种方法:线选法和译码法。1、线选法。所谓线选法,就是直接以系统的地址线作为存储器芯片的片选信号,为此只需把用到的地址线与存储器芯片的片选端直接相连即可。2、译码法。所谓译码法,就是使用地址译码器对系统的片外地址进行译码,以其译码输出作为存储器芯片的片选信号。译码法又分为完全译码和部分译码两种。,8.3.1 扩展存储器概述,(1)完全译码。地址译码器使用了全部地址线,地址与存储单元一一对应,也就是1个存储单元只占用1个唯一的地址。(2)部分译码。地址译码器仅使用了部分地址线,地址与存储单元不是一一对应,而是1个存储单元占用了几个地址。,8.3.1 扩展存储器概述,图8-5 地址译码关系图,8.3.1 扩展存储器概述,芯片译码地址:在设计地址译码器电路时,常采用地址译码关系图。所谓地址译码关系图,就是一种用简单的符号来表示全部地址译码关系的示意图,如图8-5所示。,二、扩展存储器所需芯片数目的确定 若所选存储器芯片字长与单片机字长一致,则只需扩展容量。所需芯片数目按下式确定:芯片数目=,系统扩展容量存储器芯片容量,8.3.1 扩展存储器概述,若所选存储器芯片字长与单片机字长不一致,则不仅需扩展容量,还需字扩展。所需芯片数目按下式确定:芯片数目=,系统字长存储器芯片字长,系统扩展容量存储器芯片容量,三、38译码器74LS138 38译码器74LS138为一种常用的地址译码器芯片。其中,G1、G2A、G2B为控制端。只有当G1为“1”,且G2A、G2B均为“0”时,译码器才能进行译码输出。否则译码器的8个输出端全为高阻状态。译码输入端与输出端之间的译码关系如表8-1所示。,8.3.1 扩展存储器概述,表8-1 74LS138的译码关系,8.3.1 扩展存储器概述,8.3.2 数据存储器的扩展,一、常用静态RAM芯片 常见的静态RAM芯片有6264(8K8位)、62256(32K8位)、628128(128K8位)等。二、扩展数据存储器举例 例8-2 采用6264芯片在89C52片外扩展24KB数据存储器,如图8-8所示。,图8-8 6264扩展24KB数据存储器,P2.0P2.4P0ALEP2.5P2.6P2.7WERD,74HC573D QLE,74LS138A Y0B Y1C Y2,A8A12,D0D7,A0A7,8.3.2 数据存储器的扩展,8.4 串行扩展总线接口技术,主要内容 8.4.1 常用的串行总线接口简介 8.4.2 I2C总线 8.4.3 SPI串行外设接口总线,8.4 串行扩展总线接口技术,串行扩展总线技术是新一代单片机技术发展的一个显著特点。相对于并行总线接口,串行总线接口有着占用I/O口线少(一般34根),编程相对简单,易于实现用户系统软硬件的模块化、标准化等优点。随着串行总线接口技术(SPI、I2C等)和各种串行接口芯片的发展,串行总线接口技术越来越受到人们的推崇。,8.4.1 常用的串行总线接口简介,一、I2C(Inter Integrated Circuit)I2C总线是Philips公司推出的芯片间串行传输总线。I2C总线是二线制,采用器件地址的硬件设置方法,通过软件寻址完全避免了器件的片选线寻址方法,从而使硬件系统具有简单灵活的扩展方法。,二、SPI SPI总线是Motorola公司提出的一种同步串行外设接口。SPI总线是三线制,可直接与多种标准外围器件直接接口。三、Microware Microware总线是NS公司提出的串行同步双工通信接口。Microware总线是三线制,由一根数据输出(SO)线、一根数据输入(SI)线和一根时钟(SK)线组成。,8.4.1 常用的串行总线接口简介,四、单总线(1-wire)单总线及应用:1-wire总线是Dallas公司研制开发的一种协议,主要用于便携式仪表和现场监控系统。单总线结构:是利用一根线实现双向通信,由一个总线主节点、一个或多个从节点组成系统,通过一根信号线对从芯片进行数据的读取。,8.4.1 常用的串行总线接口简介,五、USB(Universal Serial Bus)USB总线及应用:USB总线是Compaq、Intel、Microsoft、NEC等公司联合制定的一种计算机串行通信协议。USB总线的主要优点:比较于其他传统接口的一个优势是即插即用的实现,即插即用(Plug-and-Play)也称为热插拔(Hot Plugging),8.4.1 常用的串行总线接口简介,六、CAN(Controller Area Network)CAN总线及应用:CAN总线是德国Bosch公司最先提出的多主机局域网总线,是国际上应用最广泛的现场总线之一。CAN总线的主要优点:在由CAN总线构成的单一网络中,理论上可以挂接无数个节点。,8.4.1 常用的串行总线接口简介,8.4.2 I2C总线,一、I2C总线的特点 I2C总线最主要的优点是其简单性和有效性。I2C总线的特点:其接口直接集成在组件之上,因此I2C总线占用的空间非常小,减少了电路板的空间和芯片管脚的数量,降低了互联成本。I2C总线的其它优点:它支持多主控(Multimastering),其中任何能够进行发送和接收的设备(节点)都可以成为主控器。,图8-9 典型I2C总线系统示意图,8.4.2 I2C总线,I2C总线的主控器:一个主控器能够控制信号的传输和时钟频率。当然,在任何时间点上只能有一个主控器。如图8-9所示。,I2C总线支持多主和主从两种工作模式多主方式:通过硬件和软件的仲裁,主控器取得总线控制权。主从方式:从器件地址包括器件编号地址和引脚地址两部分,器件编号地址由I2C总线委员会分配,引脚地址由外界电平的高低决定。器件内部子地址:当器件内部有连续的子地址空间时,对这些空间进行连续读写,子地址会自动加1。,8.4.2 I2C总线,CPU发出的控制信号:分为地址码和控制量两部分。地址码:用来选址,即接通需要控制的电路,确定控制的种类。控制量:决定该调整的类别(如对比度、亮度等)及需要调整的量。这样,各控制电路虽然挂在同一条总线上,却彼此独立,互不相关。,8.4.2 I2C总线,二、I2C总线的时序 I2C总线的信号:I2C总线在传送数据过程中共有三种类型信号,分别是:开始信号、结束信号和应答信号。I2C总线 开始信号:SCL为高电平时,SDA由高电平向低电平跳变,开始传送数据。结束信号:SCL为低电平时,SDA由低电平向高电平跳变,结束传送数据。应答信号:接收数据的IC在接收到8bit数据后,向发送数据的IC发出特定的低电平脉冲,表示已收到数据。,8.4.2 I2C总线,SDASCL,开始信号允许数据变化 允许数据变化 允许数据变化 结束信号,图8-10 I2C总线的时序,8.4.2 I2C总线,如图8-10所示,为I2C总线的一般时序。即起始信号、结束信号、允许数据线改变的条件等。,三、I2C总线的数据传输过程 数据传输时,主机先发送启动信号和时钟信号,随后发送寻址字节来寻址被控器件,并规定数据传送方向。寻址字节由7位从机地址(D7D1)和1位方向位(D0,读0/写1)组成。从机地址包括器件编号地址和引脚地址两部分。,8.4.2 I2C总线,R/,I2C总线器件的7位从器件(机)地址:,8.4.2 I2C总线,从机对地址的响应:当主机发送寻址字节时,总线上所有器件都将其中的高7位地址与自己的比较,若相同,则该器件根据读/写位确定是从发送器还是从接收器。对从接收器:在寻址字节之后,主控发送器通过SDA线向从接收器发送数据,数据发送完毕后发送终止信号,以结束传送过程。对从发送器:在寻址字节之后,主控接收器通过SDA线接收被控发送器的发送数据。,8.4.2 I2C总线,每传输一位数据,都有一个时钟脉冲相对应。时钟脉冲不必是周期性的,它的时钟间隔可以不同。I2C总线的备用状态(“非忙”状态):SDA和SCL都为“1”;只有当总线处于“非忙”状态时,数据传输才能被初始化。I2C总线的关闭状态:SCL箝位在低电平。I2C总线上传输的数据和地址字节均为8位,且高位在前,低位在后。,8.4.2 I2C总线,数据线SDA上的一般情况:I2C总线以开始信号为启动信号;接着传输的是地址和数据字节,数据字节是没有限制的;每个字节后必须跟随一个应答位(0);全部数据传输完毕后,以结束信号结尾。SCL的“线与”特性:任一器件的SCL为低电平时,便时时钟线SCL变低,SDA上数据就被停止传送。,8.4.2 I2C总线,接收器的应答:正常应答位为0;当接收器接收到一个字节后无法立即接收下一个字节时,便向SCL线输出低电平而箝住SCL(SCL=0),迫使SDA线处于等待状态。被控器箝住SCL线为低电平,使主控发送器处于等待状态的情况:如图8-11中的A处,当接收器在A点接收完主控器发来的一个字节时,需要处理接收中断而无法继续接收,则被控器便可箝住SCL线为低电平,使主控发送器处于等待状态,直到被控器处理完接收中断后,再释放SCL线。,8.4.2 I2C总线,图8-11 I2C总线的数据传送字节格式,开始信号,从地址,来自接收器响应信号,发送器等待,数据,来自接收器响应信号,方向位,停止信号,重复开始信号,若传送多个字节则重复,SCL,S,SDA,MSB,ACK,ACK,R/W,P/S,A,8.4.2 I2C总线,关于应答信号:(1)应答信号的发送时刻:数据传输时,发送器每发完一个字节,都要求接收方发回一个应答信号(0)。(2)应答信号的过程:发送时钟仍由主控器在SCL上产生。主控发送器必须在被控接收器发送应答信号前,预先释放对SDA线的控制(SDA1),以便主控器对SDA线上应答信号的检测。,8.4.2 I2C总线,正常应答:主控器发送时,被控器接收完每个字节需发回应答信号“0”,主控器据此进行下一字节的发送。异常应答:如果被控器由于某种原因无法继续接收SDA上数据时,可向SDA输出一个非应答信号(1),主控器据此便产生一个Stop来终止SDA线上的数据传输。主控器接收时也应给被控器发应答信号。主控器接收时的结束应答:当主控器要结束传输时,必须给被控器发一个非应答信号“1”,令被控器释放SDA线,以便主控器发送Stop信号来结束数据的传输,如图8-12所示。,8.4.2 I2C总线,图8-12 I2C总线的应答信号,8.4.2 I2C总线,四、I2C的数据格式 1、主控器写数据 主机写数据过程:整个过程均为主机发送,从机接收,数据的方向位R/W=0。应答位ACK由从机发送,当主机产生结束信号后,数据传输停止。格式如下:,8.4.2 I2C总线,A/,SLA,S为开始信号,P为结束信号,A为应答信号,为非应答信号,,SLA,为寻址字节(写),Data 1Data n为被传送的n个数据。,为主控器发送,被控器接收。,为被控器发送,主控器接收。,8.4.2 I2C总线,2、主控器读数据 主机读数据过程:寻址字节为主机发送、从机接收,方向位R/W=1,n个数据字节均为从机发送、主机接收。主机接收完全部数据后发非应答位(1),表明读操作结束。格式如下:,SLA R为寻址字节读。,8.4.2 I2C总线,3、主控器读/写数据 改变传送方向的数据传输过程:由于读/写方向有变化,开始信号和寻址字节都会重复一次,但读/写方向(R/W)相反。格式如下:,Sr为重复开始信号,Data 1Data n为主控器的读数据,DATA 1DATA n为主控器的写数据。,SLA,A/,8.4.2 I2C总线,三、I2C总线的应用 带有I2C接口的单片机:Cygnal的 C8051 F0XX系列,Philips的P87LPC7XX系列,Microchip的PIC16C6XX系列等。很多外围器件如存储器、监控芯片等也提供I2C接口。图8-13为I2C总线外围扩展示意图。,8.4.2 I2C总线,图8-13 I2C总线外围扩展示意图,MCU SDA SCL,LED显示器LED驱动控制器SDA SCL,LCD显示器LCD驱动控制器SDA SCL,键盘I/OSDA SCL,打印机I/OSDA SCL,VCC,8.4.2 I2C总线,RTC实时时钟,DTMF双音多频编码解码器。例8-3 89C52模拟I2C。如图8-14所示。,图8-14 89C51模拟I2C,89C52 P1.0P1.1,I2C器件SCLSDA,10K2,VCC,8.4.2 I2C总线,C语言程序清单:#include#include/有位操作、空操作等sbit scl=0 x90;/P1.0的地址sbit sda=0 x91;/P1.1的地址void start(void)/发送开始信号 sda=1;scl=1;_nop_();/延时 _nop_();sda=0;_nop_();_nop_();scl=0;,8.4.2 I2C总线,void stop(void)/发送结束信号 sda=0;scl=1;_nop_();/延时_nop_();sda=1;_nop_();_nop_();sda=0;scl=0;,8.4.2 I2C总线,bit tack(void)/检查应答 sda=1;/准备接收 scl=1;_nop_();_nop_();if(sda!=0)/判断是否有应答return sda;/若非应答返回sda scl=0;,8.4.2 I2C总线,void txbyt(unsigned char txdat)/字节发送 unsigned int i;for(i=0;i8;i+)/一个字节8次按位循环发送 if(txdat/左移准备取次高位,8.4.2 I2C总线,unsigned char rxbyt(void)/字节接收 unsigned char rxdat=0;/接收数据存于rxdat unsigned int i;for(i=0;i8;i+)sda=1;/开始接收 scl=1;if(sda/返回接收到的数据,8.4.2 I2C总线,汇编语言程序清单:SCL EQU P1.0SDA EQU P1.1;发送开始信号START:SETB SDA SETB SCLNOP;NOP的数目由时钟频率确定NOP;此处用NOP来延时 CLR SDANOPNOPCLR SCLRET,8.4.2 I2C总线,;结束信号STOP:CLR SDASETB SCLNOPNOPSETB SDANOPNOPCLRSDACLR SCLRET,8.4.2 I2C总线,;应答位检查TACK:SETB SDA SETB SCLNOPNOPCLR 30H;正常标志 MOV C,SDAJNC TEND;正常应答转移 SETB 30HTEND:CLR SCLRET,8.4.2 I2C总线,;发送子程序 TXBYT:MOV R4,#08H;数据长度为8位 TX0:RLC A;发送位送入CYJC TX1;CY位为1转到TX1CLR SDA;置为低电平,发送0 SETB SCLNOPNOPCLR SCL;高电平保持数据稳定DJNZ R4,TX0RET,8.4.2 I2C总线,TX1:SETB SDA SETB SCLNOPNOPCLR SCL;脉冲变为低电平改变数据 CLR SDADJNZ R4,TX0RET,8.4.2 I2C总线,;字节接收子程序 RXBYT:MOV R4,#08HRX0:SETB SDASETB SCLMOV C,SDA;读入SDA引脚状态MOV A,R5;数据位储存在R5 RLC AMOV R5,ACLR SCLDJNZ R4,RX0RET,8.4.2 I2C总线,8.4.3 SPI串行外设接口总线,SPI(Serial Peripheral Interface,串行外围设备接口):是Motorola公司推出的一种同步串行通信方式,是一种三线同步总线。SPI的特点:因其硬件功能很强,与SPI有关的软件就相当简单,使CPU有更多的时间处理其他事务。图8-15为SPI总线典型结构。,图8-15 SPI总线系统典型结构示意图,8.4.3 SPI串行外设接口总线,SCKMOSIMISOMCU(主)I/OI/OI/OI/O,SCKMOSIMISOMCU(从)CS,SCK MOSI MISO外围器件CS,SCK MOSI MISO外围器件CS,SCK MOSI MISO外围器件CS,SPI总线定义:串行时钟线(SCK,同步脉冲)主机输入/从机输出数据线(MISO,高位在前)主机输出/从机输入数据线(MOSI,高位在前)从机选择线 一、用一般I/O口线模拟扩展SPI外设接口 用P1.0模拟MCU的数据输出端(MOSI)用P1.1模拟SPI的SCK输出端(SCK)用P1.2模拟SPI的从机选择端(CS)用P1.3模拟SPI的数据输入端(MISO),8.4.3 SPI串行外设接口总线,单片机模拟1位数据输入/输出的过程如下:MCU输出1位SCK时钟的低电平,使接口芯片串行左移,1位数据输入至89C52的P1.3;再置P1.1为1,使89C52从P1.0输出1位数据至串行接口芯片 依次循环8次,完成1次通过SPI传输1个字节的操作。在一个CLK中,下降沿输出,上升沿输入,或反之。,8.4.3 SPI串行外设接口总线,例8-4 如图8-16所示,MCU串行输入子程序SPIIN,从2814(E2PROM)的SPISO线上接收1字节数据并放入寄存器R7中。,图8-16 89C52与MCM2814的硬件连接图,8.4.3 SPI串行外设接口总线,C语言程序清单:#inclued#include sbit sck=0 x91;/P1.1的地址sbit ss=0 x92;/P1.2的地址 sbit miso=0 x93;/P1.3的地址sbit mosi=0 x90;/P1.0的地址 unsigned char spiin(void)/接收子程序 unsigned int i;unsigned char tmp=0;/接收到数据暂存于tmp sck=1;/准备开始 ss=0;/置片选信号,8.4.3 SPI串行外设接口总线,for(i=0;i8;i+)sck=0;_nop_();_nop_();if(miso/接收完,返回数据,8.4.3 SPI串行外设接口总线,汇编语言程序清单:SPIIN:SETBP1.1CLRP1.2MOVR1,#08HSPIN1:CLRP1.1NOPNOPMOVC,P1.3;从机输出送C RLCA;左移至累加器ACC SETBP1.1DJNZR1,SPIN1MOVR7,ARET,8.4.3 SPI串行外设接口总线,例8-5 MCU串行输出子程序SPIOUT,将89C52中R7寄存器的内容传送到2814的SPISI线上。C语言程序清单:#inclued#include sbit sck=0 x91;/P1.1的地址sbit ss=0 x92;/P1.2的地址 sbit miso=0 x93;/P1.3的地址sbit mosi=0 x90;/P1.0的地址,8.4.3 SPI串行外设接口总线,void spiout(unsigned char tmp)/发送子程序 unsigned int i;sck=1;ss=0;for(i=0;i8;i+)sck=0;_nop_();_nop_();if(tmp/左移准备取次高位,8.4.3 SPI串行外设接口总线,汇编语言程序清单:SPIOUT:SETB P1.1 CLR P1.2MOV R1,#08HMOV A,R7SPIOT1:CLR P1.1 NOPNOPRLC AMOV P1.0,C;左移ACC最高位至CSETB P1.1;进位C送SPISI线上DJNZ R1,SPIOT1RET,8.4.3 SPI串行外设接口总线,例8-6 MCU串行输入/输出子程序SPIIO,将89C52中R7的内容传送到2814的SPISI线上,同时从2814的SPISO接收1字节数据存入R0中。同时收发程序:#inclued#include sbit sck=0 x91;/P1.1的地址sbit ss=0 x92;/P1.2的地址 sbit miso=0 x93;/P1.3的地址sbit mosi=0 x90;/P1.0的地址,8.4.3 SPI串行外设接口总线,unsigned char spiio(unsigned char ttmp)unsigned int i;unsigned char rtmp=0;/接收暂存于rtmp sck=1;ss=0;for(i=0;i8;i+)/循环接收8位sck=0;_nop_();_nop_();,8.4.3 SPI串行外设接口总线,if(ttmp,8.4.3 SPI串行外设接口总线,汇编语言程序清单:SPIIO:SETBP1.1CLRP1,2MOVR1,#08H;设置计数器MOVA,R7SPIO1:CLRP1.1NOP;延时NOPMOVC,P1.3RLCAMOVP1.0,CSETBP1.1DJNZR1,SPIO1MOVR0,ARET,8.4.3 SPI串行外设接口总线,二、利用89C52串口方式0实现SPI操作 如图8-17所示,利用89C52串行口方式0与串行时钟芯片HT1380连接实现SPI操作,适用于对绝对时钟要求较高的场合。,8.4.3 SPI串行外设接口总线,图8-17 89C52与串行时钟芯片HT1380连接图,图8-18 89C52与串行LED显示接口连接图,8.4.3 SPI串行外设接口总线,利用89C52串行口方式0与串行LED显示接口MAX7219实现SPI操作。MAX7219可驱动8个LED显示器,如图8-18所示。,单片机与MAX7219交换信息过程:TXD作为移位时钟,RXD作为串行数据I/O端,Load作为芯片选择端。当Load低电平时,对7219进行读/写操作;当Load为高电平时,7219处于高阻状态。,8.4.3 SPI串行外设接口总线,本章小结,本章首先介绍了并行三总线以及并行三总线的扩展方法。然后讨论了如何通过并行三总线来扩展简单的并行输入/输出口和扩展并行数据存储器。最后介绍了几种常见的串行接口总线扩展技术,重点讨论了I2C和SPI串行总线,并通过实例介绍了在无相应接口的单片机上,如何模拟I2C和SPI串行接口,以及具体的实现程序。,思考题与习题,1假定一个存储器有4096个存储单元,其首地址为0,则末地址为多少?26根地址线和11根地址线各可选多少个地址?3用2K4位的数据存储器芯片扩展4K8位的数据存储器需要多少片?地址总线是多少位?画出连线图。4用两片74HC573芯片扩展89C52的P1端口实现6位发光二极管的开关控制和点亮。,5用2K8位的数据存储器芯片扩展64K8位的数据存储器需要多少根地址线?6I2C和SPI各有什么特点?7用P1口模拟SPI从外部先发送从片内RAM中30H开始的10个字节,再接收30个字节存放在40H开始的片内RAM中。引脚自定义。8用P1口模拟I2C从外部接收一组数据,遇到“$”结束。引脚自定义。,思考题与习题,

    注意事项

    本文(单片机原理及应用C语言版8.ppt)为本站会员(sccc)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开