1、第第8章章 单片机小系统及片外扩展单片机小系统及片外扩展v8.1 单片机小系统及应用单片机小系统及应用v8.2 并行扩展三总线的产生并行扩展三总线的产生v8.3 扩展数据存储器扩展数据存储器v8.4 几种外部串行总线工作方式几种外部串行总线工作方式28.1 8.1 单片机小系统单片机小系统 一个最小的单片机微机系统由三片集成块组成,它们是CPU(8031)、8位3态D锁存器74LS373、ROM或RAM。习惯上将这三样称作老三件。当然有了这三件单片机还是不能工作,还要加上一个时钟电路和复位电路,由这些基本电路组成一个完整的最小系统,见图8-1,该电路可提供P1口、P3口作为用户的输入、输出口(
2、I/O)。38031 最小系统489C51 最小系统58.1.18.1.1单片机最小系统的应用单片机最小系统的应用 v最小系统只是单片机能工作的最低要求,它不能对外完成控制任务,还不能人机对话,要进行人工对话还要一些输入、输出部件,作控制时还要执行部件。v常见的输入部件:开关、按钮、键盘、鼠标等v输出部件:指示灯、数码管、显示器等v执行部件:继电器、电磁阀等68051彩灯控制器电路图 7彩灯控制器设计v设计过程:对于彩灯控制器,只要在口线上加线驱动器就行。因8051每个口带负载的能力有限,也就是说在P1口的8根口线上同时直接接8个指示灯,若编程让8个灯同时亮,这时,8个灯一个也不亮,最多能接4
3、个,要想8个指示灯能同时亮的方法是每一个口线加驱动,一般用同向放大器或反向放大器作为驱动器,若驱动电流还不够,应改用三极管作驱动器件,根据以上设计思路,加了8个发光二极管、8个电阻和8个同向放大器(74LS244),电阻是限流电阻,调整阻值使发光管最亮,电流又最小。88.18.1.2 I/O端口的编址 v1I/O端口和存储器统一编址方式端口和存储器统一编址方式 vI/O端口和存储器公用一个地址空间,端端口和存储器公用一个地址空间,端口与存储器统一编址,即把每个口与存储器统一编址,即把每个I/O端口端口当做一个存储单元,给它分配存储空间当做一个存储单元,给它分配存储空间的一个地址。的一个地址。2
4、 2I/OI/O端口独立编址方式端口独立编址方式v这种方式是端口地址与存储器地址分开这种方式是端口地址与存储器地址分开编址。对编址。对I/O端口独立编址,需要专门的端口独立编址,需要专门的I/O指令和接口信号访问指令和接口信号访问I/O端口。端口。98.1.3 I/O口的直接应用 从从P1.0P1.0P1.3P1.3输入开关状态,输入开关状态,再经再经P1.4P1.4P1.7P1.7输出去驱输出去驱动发光二极管,动发光二极管,使发光二极管使发光二极管显示开关的状显示开关的状态。态。P1.789C51P1.0P1.1P1.2P1.3P1.4P1.5P1.6K0K1K2K3LED0LED1LED2
5、LED3+5V+5V41004k1.510程序如下:v ORG0000Hv AJMP MAINv ORG 0030HvMAIN:MOV P1,#0FH ;熄灭发光二极管vMOV A,P1;读入开关状态vSWAPA;A高低半字节交换vMOV P1,A;开关状态输出vAJMP MAINvEND11扩展扩展I/O接口所用的芯片主要有通用可编程接口所用的芯片主要有通用可编程I/O芯片和芯片和TTL、CMOS锁存器、三态门电锁存器、三态门电路芯片两大类。路芯片两大类。简单并行简单并行I/O接口的扩展接口的扩展12 采用采用74LS24474LS244做扩展输入、做扩展输入、74LS27374LS273做
6、扩展输出的简单做扩展输出的简单I/OI/O扩扩展电路。展电路。P0.789C51P0.0P0.1P0.2P0.3P0.4P0.5P0.6RDLEDX8+5V11P2.0WRD0D6D5D4D3D2D1D7Q0Q6Q5Q4Q3Q2Q1CLRQ7Q0Q6Q4Q2Q5Q3Q1Q7D0D6D4D2D5D3D1D7G74LS27374LS2448R+5VK0K1K2K3K4K5K6K713程序如下:v ORG 0000Hv AJMP MAINv ORG 0030HvMAIN:MOV DPTR,#0FEFFH;数据指针指向I/O口地址v MOVX A,DPTR;从244读入数据,检测按键vMOVX DPT
7、R,A ;向273输出数据,驱动LEDvAJMP MAINvEND148.1.4 显示器的扩展 v1LED显示器的结构与原理 d1234abcdpfec dpdegfbaGNDGNDabcdefgdpabcdefgdp+5v8R8Rg共阴极共阴极共阳极共阳极15十六进制数字形代码表 字型字型共阳极代码共阳极代码共阴极代码共阴极代码字型字型共阳极代码共阳极代码共阴极代码共阴极代码0C0H3FH990H6FH1F9H06HA88H77H2A4H5BHB83H7CH3B0H4FHCC6H39H499H66HDA1H5EH592H6DHE86H79H682H7DHF84H71H7F8H07H灭灭FFH
8、00H880H7FH 162LED显示器接口方法显示器接口方法v(1)以硬件为主的接口方法 dgabcdpfeA7A0+5v8R地址译码器锁存器I/O接口译码驱动器D0D1D2D317v(2)以软件为主的接口方法 dgabcdpfe8R驱动器PB0PB2PB7PB6PB5PB4PB3PB18155188.1.5 矩阵式键盘的扩展 v键盘上的键按行列构成矩阵,在行列的交点上都对应有一个键。v所谓键实际上就是一个机械开关,被按下则其交点的行线和列线接通。非编码键键盘接口技术的主要内容就是如何确定被按键的行列位置,并根据此产生键码。191键输入过程与软件结构键输入过程与软件结构键扫描有无键按下查键号
9、JMP A+DPTR00#按键应用程序01#按键应用程序NN#按键应用程序A=00HA=01HA=NNH.NY202键盘输入接口与软件应解决的任务 v(1)键开关的可靠输入 v抖动的处理有硬件处理和软件处理两种。v(2)按键编码与键号定义 v(3)键盘检测与编制键盘程序v 213矩阵式键盘电路的结构及工作原理矩阵式键盘电路的结构及工作原理0123106759841114 151312+5VX3X2X1X0Y3Y0Y2Y1v一个44的行、列结构可以构成一个含有16个按键的键盘。22v扫描方法:先令列线Y0为低电平(0),其余3根列线Y1、Y2、Y3都为高电平,读行线状态。如果X0、X1、X2、X
10、3都为高电平,则Y0这一列上没有键闭合,如果读出的行线状态不全为高电平,则为低电平的行线和Y0相交的键处于闭合状态;如果Y0这一列上没有键闭合,接着使列线Y1为低电平,其余列线为高电平。用同样的方法检查Y1这一列上有无键闭合,依次类推,最后使列线Y3为低电平,其余列线为高电平,检查Y3这一列有无键闭合。234键盘接口举例 v82行列式键盘扫描接口电路 8R P0.0P0.2P0.7P0.6P0.5P0.4P0.3P0.18051B0B1B7B6B5B4B3B2A0A7A6A5A4A3A2A1P1.0P1.1P2.7RD174HC24501A98765432BFECDVCCDIRE24键盘扫描的
11、程序(采用查询方法)键盘扫描的程序(采用查询方法)vKS:MOVDPTR,#7FFFH;键扫描程序vCLRP1.0;先扫描第1列(即07号键)vMOVX A,DPTR;读入按键状态vMOV37H,A;暂存按键状态vCPLA;vJZKSK1;07号键没有键操作,则跳vLCALL DL20;07号键有操作,则延时去抖vMOVX A,DPTR;再读键状态vXRLA,37H;和延时前的状态一样吗?vJZKS1;一样,则转去查询键号vKSK1:SETBP1.0;开始扫描第2列,8F号键vCLRP1.1vMOVX A,DPTR;读入按键状态vMOV37H,A;暂存按键状态vCPLAvJZKSK2;8F号键
12、没有键操作,则跳vLCALL DL20;8F号键有操作,则延时去抖v25vMOVX A,DPTR;再读键状态vXRLA,37H;和延时前的状态一样吗?vJZKS1;一样,则转去查询键号vKSK2:AJMPKS9;8F号键也不存在操作,则跳vKS1:MOVX A,DPTR;再读按键状态vCPLAvJNZKS1;按键没有松开,则等待松开vMOVA,37H;查询有键操作的键号vJBACC.0,KS2;不是第1个键,则跳vMOV37H,#00H;赋键初值vAJMPKS10vKS2:JBACC.1,KS3;不是第2个键,则跳vMOV37H,#01H;赋键初值vAJMPKS10v vKS9:AJMP KS
13、9 268.1.6 输出执行部件 1 继电器继电器是用低电压控制高电压的器件,它分为线圈、铁芯、衔铁、触点,触点有常开触点、常闭触点之分。在开关特性上有单刀单置、双刀单置、单刀双置、双刀双置、单刀多置、双刀多置之别。2 光耦v 光耦在电路中起隔离作用,由光作为信号传递媒介(工具),将单片机和外部设备在电器隔离。有三极管型光耦(又分带基极型和不带基极型)、可控硅型光耦(又分单向可控和双向可控)。27(a)继电器 (b)光耦符号 继电器和光耦符号2829v常用的光电耦合的隔离作用有两种:一是输入信号隔离,用于单片机应用系统的前向通道,可防止由输入信号带来的干扰;二是控制隔离,用于系统的后向通道,可
14、以防止来自强电开关上的干扰。(a)发光二极管光晶体管 (b)发光二极管光电阻器 (c)高速光电耦合器 302.光电耦合器(隔离器)件及驱动接口v后向通道往往所处环境恶劣,控制对象多为大功率伺服驱动机构,电磁干扰较为严重。为防止干扰窜入和保证系统的安全,常常采用光电耦合器,用以实现信号的传输,同时又可将系统与现场隔离开。v晶体管输出型光电耦合器的受光器是光电晶体管,如图所示。光电耦合器4N25的接口电路31 3 固态继电器的接口固态继电器的接口v普通继电器由于开关速度慢,易跳火、易机械磨损,通常用于要求不高的场合。在某些特殊应用场合,比如防火防爆等系统中则应采用固态继电器,固态继电器是一种无触点
15、的电子继电器,它的输入端只要很小的控制电流,可以与单片机的I/O口直接连接,输出则采用双向晶闸管控制,其输入输出间均通过内部光电耦合器隔离,可以防止信号间的干扰,是单片机接口的理想器件。随着其技术的成熟、应用的广泛,价格也已经非常的便宜。1A/250V的目前在10元左右,当一端所接的P1.0为高电平时SSR导通负载工作 32固态继电器内部结构I/O口线与SSR接口电路33v4N40和MOC3041的接口驱动电路。v4N40是常用的单向晶闸管输出型光电耦合器,也称固态继电器。vMOC3041是常用的双向晶闸管输出的光电耦合器(固态继电器)。晶闸管输出型光电耦合器驱动接口348.2 并行扩展三总线
16、的产生v通常情况下,微机的CPU外部都有单独的并行地址总线、数据总线和控制总线,而89C51单片机由于受引脚的限制,数据线和地址线是复用的,而且由口线兼用。v为了将它们分离出来,以便同单片机片外的芯片正确地连接,需要在单片机外部增加地址锁存器,从而构成与一般CPU相类似的片外三总线,如图825所示。v采用74HC373作锁存器的地址总线扩展电路如图826所示。35图825 89C51扩展的并行三总线图826 89C51地址总线扩展电路36引脚图 功能表图8-27 74LS373引脚图和功能表OELEDnQnLHHHLHLLLLLLLLHHHZ37v由89C51 P0口送出的低8位有效地址信号是
17、在ALE(地址锁存允许)信号变高的同时出现的,并在ALE由高变低时,将出现在P0口的地址信号锁存到外部地址锁存器74HC373中,直到下一次ALE变高时,地址才发生变化。388.2.1 片外三总线结构v所谓总线,就是连接系统中各扩展部件的一组公共信号线。按照功能,通常把系统总线分为3组,即地址总线、数据总线和控制总线。v89C51单片机的片外引脚可构成如图8-25所示的并行三总线结构,所有的外围芯片都将通过这三种总线进行扩展。391.地址总线v地址总线(Address Bus,AB)用于传送单片机送出的地址信号,以便进行存储单元和端口的选择。v地址总线是单向的,只能由单片机向外发送信息。地址总
18、线的数目决定了可直接访问的存储单元的数目。v例如,n位地址可以产生2个连续地址编码,因此,可访问2个存储单元,即通常所说的寻址范围为2个地址单元。89C51单片机存储器扩展最多可达64 KB,即2个地址单元,因此,最多需16位地址。402.数据总线v数据总线(Data Bus,DB)用于单片机与存储器之间或单片机与端口之间传送数据。v数据总线的位数与单片机处理数据的字长一致。v例如,89C51单片机是8位字长,所以,数据总线的位数也是8位。数据总线是双向的,可以进行两个方向的数据传送。413.控制总线v控制总线(Control Bus,CB)是单片机发出的以控制片外ROM、RAM和口读写操作的
19、一组控制线。428.2.2 系统扩展的实现1.1.以以P0P0口作地址数据总线口作地址数据总线v此处的地址总线是指系统的低8位地址线。v因为P0口线既用作地址线,又用作数据线(分时使用),因此,需要加一个8位锁存器。v在实际应用时,先把低8位地址送锁存器暂存,然后再由地址锁存器给系统提供低8位地址,而把P0口线作为数据线使用。v实际上,单片机P0口的电路设计已考虑了这种应用需要,P0口线电路中的多路转接电路MUX以及地址数据控制即是为此目的而设计的。432.2.以以P2P2口的口线作高位地址线口的口线作高位地址线v如果使用P2口的全部8位口线,再加上P0口提供的低8位地址,便可形成完整的16位
20、地址总线,使单片机系统的寻址范围达到64 KB。v但实际应用系统中,高位地址线并不固定为8位,需要用几位就从P2口中引出几条口线。44 除了地址线和数据线之外,在扩展系统中还需要一些控制信号线,以构成扩展系统的控制总线。这些信号有的是单片机引脚的第一功能信号,有的则是第二功能信号。其中包括:v使用ALE作为地址锁存的选通信号,以实现低8位地址的锁存;v以信号作为扩展程序存储器的读选通信号;v以信号作为内、外程序存储器的选择信号;v以和作为扩展数据存储器和端口的读/写选通信号。执行MOVX指令时,这两个信号分别自动有效。45v可以看出,尽管89C51单片机号称有4个口,共32条口线,但由于系统扩
21、展的需要,真正能作为数据使用的,就只剩下P1口和P3口的部分口线了。v特别需要强调的是,程序存储器不应再采用外扩的方案。因为89系列单片机内有432 KB的不同型号产品可供选择。如果课题需要功能更强的MCU,则可选择ADC8、C8051F和MAX7651等SOC芯片。468.3 扩展数据存储器v由于89C51单片机片内RAM仅有128字节,当系统需要较大容量RAM时,就需要片外扩展数据存储器RAM,最大可扩展64 KB。v由于单片机是面向控制的,实际需要扩展容量不大,因此,一般采用静态RAM较方便,如6116(2K8位),6264(8K8位)。v如有特殊需要,可采用62256(32K8位),6
22、28128(128K8位)等。与动态RAM相比,静态RAM无须考虑保持数据而设置的刷新电路,故扩展电路较简单;但由于静态RAM是通过有源电路来保持存储器中的数据,因此要消耗较多的功率,价格也较高。47v扩展数据存储器空间地址,由P2口提供高8位地址,P0口分时提供低8位地址和用作8位双向数据总线。片外数据存储器RAM的读/写由89C51的 (.7)和(P3.6)信号控制。488.3.1 常用的数据存储器芯片v数据存储器用于存储现场采集的原始数据、运算结果等,所以,外部数据存储器应能随机读写,通常由半导体静态随机存取存储器RAM组成。vEPROM芯片也可用作外部数据存储器,且掉电后信息不丢失。4
23、91.静态RAM(SRAM)芯片v目前常用的静态RAM电路有6116、6264、62256、628128等。它们的引脚排列如图827所示。v注:6264的26脚为高电平有效的片选端。图827 常用静态RAM芯片引脚图50v其引脚功能如下:vA0Ai 地址输入线,i=10(6116),12(6264),14(62256)。vD0D7 双向三态数据线;v 片选信号输入线,低电平有效,当6264的26脚(CS)为高电平,且为低电平时。才选中该片;v 读选通信号输入线,低电平有效;v 写允许信号输入线,低电平有效;v 工作电源,电压为;vGND 线路地。v这3种RAM电路的主要技术特性见表85。515
24、2v静态RAM存储器有读出、写入和维持3种工作方式,这些工作方式的操作控制如表86所列。53图829 89C51扩展2 KB RAM548.4.1 SPI串行总线 1.SPI总线的特点总线的特点(串行外围设备接口(串行外围设备接口:serial peripheral interface)v一般使用一般使用4条线条线串行时钟线(串行时钟线(SCK)主机输入主机输入/从机输出数据线从机输出数据线MISO主机输出主机输出/从机输入数据线从机输入数据线MOSI低电平有效的从机选择线低电平有效的从机选择线SSSPI总线技术是总线技术是Motorola公司推出的一种同步串行接口公司推出的一种同步串行接口
25、8.4 几种外部串行总线工作方式几种外部串行总线工作方式 552.SPI总线系统的构成总线系统的构成v单片机与多个单片机与多个SPISPI串行接口设备典型结构如图串行接口设备典型结构如图6.16.1所示。所示。图8.1 单片机与多个SPI串行接口设备典型连接563.SPI串行总线在串行总线在MCS-51系列单片机中的实现系列单片机中的实现 vMCS-51MCS-51单片机单片机I/OI/O口模拟口模拟SPISPI总线接口原理图如图总线接口原理图如图6.26.2所示。所示。图8.2 MCS-51单片机I/O口模拟SPI总线接口原理图57v单片机,如单片机,如MotorolaMotorola公司的
26、公司的M68HC08M68HC08系列、系列、CygnalCygnal公司的公司的C8051F0XXC8051F0XX系列、系列、PhilipsPhilips公司的公司的P89LPC93XP89LPC93X系列。系列。vA/DA/D和和D/AD/A转换器,如:转换器,如:ADAD公司的公司的AD7811/12AD7811/12、TITI公司的公司的TLC1543TLC1543、TLC2543TLC2543、TLC5615TLC5615等。等。v实时时钟实时时钟RTCRTC,如,如DallasDallas公司的公司的DS1302/05/06DS1302/05/06等。等。v温度传感器,如温度传感
27、器,如ADAD公司的公司的AD7816/17/18AD7816/17/18;NSNS公司的公司的LM74LM74等。等。v其他设备,如其他设备,如LEDLED控制驱动器控制驱动器MAX7219MAX7219、HD7279HD7279等,集成看门狗、电压监等,集成看门狗、电压监控、控、E E2 2PROMPROM等功能的等功能的X5045X5045等。等。4.常用常用SPI串行总线接口的器件串行总线接口的器件588.4.2 I2C总线总线 vI I2 2C C(Inter Integrated CircuitInter Integrated Circuit)常译为内常译为内部集成电路总线,或集成
28、电路间总线,它部集成电路总线,或集成电路间总线,它是是由由PhilipsPhilips公司推出的芯片间串行传输总线。公司推出的芯片间串行传输总线。使用使用2 2线实现数据通信。线实现数据通信。1 1根串行数据线(根串行数据线(SDASDA)1 1根串行时钟线(根串行时钟线(SCLSCL)。)。591.I2C总线的基本特性总线的基本特性v硬件结构上具有相同的硬件接口界面。图8.3 I2C器件连接实例60v总线接口器件地址具有很大的独立性。总线接口器件地址具有很大的独立性。在单主系统中,每个在单主系统中,每个I I2 2C C接口芯片具有唯一的器件地址,各从器件之间互不干扰,接口芯片具有唯一的器件
29、地址,各从器件之间互不干扰,相互之间不能进行通信。相互之间不能进行通信。MCUMCU与与I I2 2C C器件之间的通信是通过独器件之间的通信是通过独一无二的器件地址来实现的。一无二的器件地址来实现的。v数据传输首先从最高位开始。数据传输首先从最高位开始。传输速率在标准模式下可达传输速率在标准模式下可达100kbit/s100kbit/s,在快速模式下达,在快速模式下达400kbit/s400kbit/s,在高速模式下达,在高速模式下达3.4Mbit/s3.4Mbit/s。v它是一个真正的多主机总线。它是一个真正的多主机总线。如果两个或更多主机同时初始如果两个或更多主机同时初始化数据传输,可以
30、通过冲突检测和仲裁防止数据被破坏。化数据传输,可以通过冲突检测和仲裁防止数据被破坏。v软件操作的一致性。软件操作的一致性。任何器件通过任何器件通过I I2 2C C总线与总线与MCUMCU进行数据传进行数据传送的方式基本一样,决定了送的方式基本一样,决定了I I2 2C C总线软件编写的一致性。总线软件编写的一致性。612.I2C总线工作原理总线工作原理(1 1)I I2 2C C总线信号类型总线信号类型v开始信号:开始信号:SCLSCL为高电平时,为高电平时,SDASDA由高电平向低电平跳变,开由高电平向低电平跳变,开始传送数据。始传送数据。v结束信号:结束信号:SCLSCL为低电平时,为低
31、电平时,SDASDA由低电平向高电平跳变,结由低电平向高电平跳变,结束传送数据。束传送数据。v应答信号:应答信号:接收数据的器件在接收到接收数据的器件在接收到8bit8bit数据后,向发送数数据后,向发送数据的器件(发送器)发出特定的低电平脉冲,表示已收到数据的器件(发送器)发出特定的低电平脉冲,表示已收到数据。发送器接收到应答信号后,根据实际情况作出是否继续据。发送器接收到应答信号后,根据实际情况作出是否继续传递信号的判断。若未收到应答信号,由判断为接收器出现传递信号的判断。若未收到应答信号,由判断为接收器出现故障。故障。起始信号与结束信号都是由主器件产生。起始信号与结束信号都是由主器件产生
32、。62(2)I2C总线数据传输总线数据传输 v主器件和从器件都可以工作于接收和发送状态。主器件和从器件都可以工作于接收和发送状态。v总线必须由主器件(通常为单片机)控制,主器件产生串行总线必须由主器件(通常为单片机)控制,主器件产生串行时钟控制总线的传输方向,并产生起始和停止条件。时钟控制总线的传输方向,并产生起始和停止条件。v在起始信号结束后,主器件将发送一个用于选择从器件地址在起始信号结束后,主器件将发送一个用于选择从器件地址的的7 7位地址码和一个数据方向位(位地址码和一个数据方向位(R/WR/W),方向位为),方向位为“0”0”表示表示主器件把数据写到所选择的从器件中,此时主器件作为发
33、送主器件把数据写到所选择的从器件中,此时主器件作为发送器,而从器件作为接收器;方向位为器,而从器件作为接收器;方向位为“1”1”表示主器件从所选表示主器件从所选择的从器件中读取数据,此时主器件作为接收器,而从器件择的从器件中读取数据,此时主器件作为接收器,而从器件作为发送器。在寻址字节后是按指定读、写操作的数据字节作为发送器。在寻址字节后是按指定读、写操作的数据字节与应答位。在数据传送完成后主器件必须发送停止信号。与应答位。在数据传送完成后主器件必须发送停止信号。638.4.3 单总线单总线v单总线(单总线(1-Wire1-Wire)是)是DallasDallas公司推出外围串行扩展总线,公司
34、推出外围串行扩展总线,采用单根信号线完成数据的双向传输。采用单根信号线完成数据的双向传输。v单总线技术有三个显著的特点:单总线技术有三个显著的特点:v单总线芯片通过一根信号线进行地址信息、控制信息和数单总线芯片通过一根信号线进行地址信息、控制信息和数据信息的传送,并通过该信号线为单总线器件提供电源;据信息的传送,并通过该信号线为单总线器件提供电源;v每个单总线芯片都具有全球唯一的访问序列号,当多个单每个单总线芯片都具有全球唯一的访问序列号,当多个单总线器件挂在同一单总线上时,对所有单总线芯片的访问总线器件挂在同一单总线上时,对所有单总线芯片的访问都通过该唯一序列号区分;都通过该唯一序列号区分;1.1.单总线芯片在工作过程中,不需要提供外接电源,而通过单总线芯片在工作过程中,不需要提供外接电源,而通过它本身具有的它本身具有的“总线窃电总线窃电”技术从总线上窃取电源。技术从总线上窃取电源。64图8.4 单总线多节点系统的示意图