单片机原理(4):系统扩展、外围接口

当单片机内部功能不能满足应用系统的要求,经需要在片外连接相应的外围芯片以满足应用系统的要求的过程,叫做系统扩展。

通过外围接口技术,可以通过单片机来控制LED数码管、键盘、LCD显示屏等外部设备以及进行A/D、D/A转换,使单片机应用在更为广泛的领域。

系统扩展

51单片机中集成了CPU、I/O口、定时器、中断系统、存储器等计算机的基本部件,外加电源、复位电路和时钟单路等简单的辅助电路即构成一个能够正常工作的最小系统,电路如下图所示:

最小系统

51单片机有很强外部拓展能力,大部分常规芯片都可作为单片机的外围扩展电路,可进行的拓展有存储器扩展、I/O口扩展、串行总线接口存储器扩展等。

系统拓展

总线(Bus)是计算机内部CPU、内存、输入、输出等设备传递信息的公用通道,它是由导线组成的传输线束, 主机的各个部件通过它相连接,外部设备通过相应的接口电路再与总线相连接,从而形成了计算机硬件系统。按照计算机所传输的信息种类,计算机的总线可以划分为地址总线(Address Bus)、数据总线(Data Bus)及控制总线(Control Bus),分别用来传输数据、数据地址和控制信号。

单片机的系统扩展法有并行扩展法及串行扩展法,并行扩展法是用单片机的地址总线、数据总线及控制总线进行系统扩展,而串行扩展法是用SPI(Serial Peripheral Interface)总线或者I2C(Inter-Integrated Circuit)总线进行系统扩展。

系统总线扩展

总线信号
对应引脚 扩展总线信号名 信号含义
P0口锁存输出 A0~A7 地址总线低8位
P2口 A8~A15 地址总线高8位
P0口 D0~D7 8位数据总线
ALE ALE 控制信号,地址锁存使能
PSEN PSEN 控制信号,程序存储器ROM使能,低电平有效
EA EA/VPP 控制信号,外部访问使能,低电平有效
RD RD(P3.7) 控制信号,读信号,低电平有效
WR WR(P3.8) 控制信号,写信号,低电平有效

51单片机包含的系统总线信号如上表所示,为了减少引脚数量,51系列单片机的扩展总线中,数据线和地址线采用了分时复用技术。

P0口除了作一般I/O口外,还可以分时复用传送地址总线信号的低8位(A0~A7)和数据总线信号(D0~D7),它在某一时刻传送的是低8位地址信号还是数据信号由ALE引脚的电平状态指明。 P2口除了作一般I/O口外,还可传输地址总线信号的高8位(A8~A15)。其他系统总线信号都为控制信号,在执行不同指令时,随硬件产生。

实际使用时,通过外接一个8位锁存器,可以实现地址信号和数据信号分离,如下图中使用74LS373实现信号分离电路原理图:

信号分离

进行总线扩展时,由于地址总线的宽度为16位,故外部ROM或RAM的最大直接寻址范围都为64KB,同时它们的地址可以重叠使用。

地址译码法

进行总线扩展时,首先要进行的是分配地址空间,就是把64KB的寻址空间通过地址译码的方法分成若干个大小相同的页面,其中低位地址线用来选择页内单元,高位地址线则用于页面的选择,不同的外部设备占用不同的页面。分配完成后,就要想办法进行地址译码,以方便单片机进行寻址。常用的地址译码方法有全地址译码法及“部分地址译码法”。

全地址译码是指所有的地址线都参与译码,所得到的地址空间是连续的,每一个数据单元与地址是一一对应的,其电路的结构一般比较复杂。例如一个存储页面大小为8KB,要把64KB的存储空间分成8个页面,则所有高位地址A13~A15都必须参与译码,产生8个独立的页面选择信号,形成一个连续的地址段,一般采用3-8译码器来实现,如下图:

全译码

部分译码是指只有一部分地址参与译码,所得到的地址空间是非连续的地址段,没有覆盖整个可寻址空间,一个数据单元可能与几个地址对应。如下图:

部分译码

还有一种线选法是部分译码法的特殊形式,即对地址线不进行译码,直接用地址线来选通数据单元,其得到的地址空间也是非连续的。比如,不用外加译码电路,仅用高位地址线就把64KB的寻址空间区分成若干区,如图下图所示:

线选法

存储器扩展

ROM扩展

51单片机访问外部ROM时,其控制总线仅由ALE、PSEN和EA组成。当EA = 1,单片机要访问的地址的超出片内ROM的范围时,将自动转向进行片外ROM寻址。可以通过“MOVC A, @A+DPTR”这条指令访问外部ROM。指令执行过程中控制信号的逻辑关系和时序如下图:

访问外部ROM时序

采用2764扩展32KB ROM时,接线图如下:

扩展ROM接线图

RAM扩展

51单片机访问外部RAM时,控制总线由ALE、PSEN、RD及WR组成。当执行“MOVX A, @DRTP”、“MOVX @DPTR, A”指令时,进行读、写外部RAM的操作,指令执行过程中控制信号的逻辑关系和时序如下图:

访问外部RAM时序

采用SRAM芯片61128扩展32KB RAM时,接线图如下:

扩展RAM接线图

并行扩展I/O口的方法,与扩展RAM的方法基本一致。

外围接口技术

LED显示器

LED(Light Emitting Diode)显示器是若干个发光二极管组成的显示字段的显示器件。常用的LED显示器有七段数码显示器。

七段LED数码显示器由8个发光二极管组成,根据内部LED的连接形式不同,可分为共阴极和共阳极两种。共阴极发光二极管的阴极连接在一起,共阳极则阳极连接在一起,其电路连接如下图:

LED数码管

选用共阴极的数码管时,所有LED的阴极连接在一起接地,当某个LED的阳极接高电平则对应的LED便点亮。共阳极数码管则相反,当某个LED的阴极接低电平则对应的LED便点亮。每次把某些特定的LED点亮,就能使数码管用来显示一些数字或符号,LED数码管共8位,正好是一个字节,习惯上以“a”段对应段码字节为最低位,这样,只需要输入不同的段码,就能获得不同的显示。

LED数码管的显示方式一般都采用动态显示,这种方法节省I/O口,然而在这种方法在任意时刻只有一位显示器能被点亮,显示位数较多时,需要采用动态扫码,动态扫描的频率有一定要求,要使人眼无法察觉。频率过低的话,LED将会出现闪烁现象,而频率太高,每个LED点亮的时间太短,LED的亮度太低,肉眼无法看清。程序上常采用的是调用延时子程序的方法,选通某一位LED使其点亮并保持几个ms左右的时间。

键盘

在单片机应用系统中,往往需要向单片机输入一些指令或参数,而单片机的运行结果有时也需要通过外部显示器或打印机输出出来,以供操作者及时了解和掌握单片机的运行状况。这样就构成了一种人机的交互接口。由于单片机本身的特点决定了其无法具备键盘、显示器、打印机等人机交互部件,所以只能通过其I/O口来扩展这些功能。

键盘可分为编码键盘和非编码键盘。编码键盘上闭合键的识别由专门的硬件实现,非编码键盘则通过软件来即时实别。单片机一般都采用的是非编码键盘。

单片机系统中所使用的键盘都是机械式的弹性按键,因为存在机械触点的弹性作用,在按键闭合和弹起的瞬间都会出现抖动,按键抖动一般会持续5~10ms,为使一次按键仅被处理一次,必须消除按键抖动。消除按键抖动可以采用软件消抖或硬件消抖。

硬件消抖通常采用RS触发器来实现,需要在电路上改进,较为复杂。软件消抖更为简单,在检测到有按键闭合时,延时一小段时间之后再次检测,如果仍然检测到按键闭合,则认为按键真正闭合。

键盘的连接单片机接口的方式有独立式和矩阵式。独立式键盘的每个键都单独与一个I/O口相连,各键的输入状态互不影响。单片机通过检测对应I/O口的电平高低就可以判断出是哪个键被按下,然而当按键数目较多时,占用的I/O口也较多。

需要的按键数量较多时,通常都采用矩阵式的连接方式。矩阵式键盘由行线和列线组成,所以有时也称行列式键盘。按键位于行、列线的交叉点上,行、列线又分别与I/O端口相连。其连接方式如下图:

矩阵式

矩阵式键盘的识别方法通常采用扫描法。先令某根列线,例如0号列线输出为“0”,其余三根列线输出为“1”。再依次扫描行线的状态,如有某根行线为“0”则表示该行线与0号列线交叉处的键被按下。如果行线都为“1”,则没有键被按下。同样,可以依次将下一根列线置“0”,同时其余列线“1”,并扫描行线,这样就可以判断出被按键的位置。


更新历史:

  • 2017.11.28 完成初稿
文章作者: Hugsy
文章链接: http://binweber.top/2017/11/27/msc51_4/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Weber
支付宝打赏~
微信打赏~