第四节 微控制器的硬件系统设计
一、简单并行I/O的扩展
型号为8051单片机有32根I/O线,P0口和P2口在单片机系统扩展后已被作为地址和数据总线,P3口的一部分也被用作控制信号线。这样,作为I/O线的只有P1口和P3口的一部分,因此在实际应用中应扩展I/O口。
常用的I/O扩展芯片有8255,8243,8155等。简单并行I/O接口的扩展一般采用TTL电路或MOS电路扩展输入/输出口,如图3-8所示。74LS244是一个三态输出八缓冲器及总线驱动器,作为扩展输入口;8D锁存器74LS273作为扩展输出口。
图 3-8 简单并行I/O接口的扩展
由于单片机将扩展I/O口和外部RAM统一编址,访问扩展接口和访问外部RAM一样都是用MOVX指令,且都产生信号。图中输出控制信号由P2.0和合成,当两者同时为“0”时,或门输出“0”,将从P0口输出的数据锁存到74LS273以控制LED的亮灭。输入信号由P2.0和合成,当两者同时为“0”时,或门输出“0”,选通74LS244,将按键信息(按下为“0”,弹起为“1”)输入到总线经P0口最后到累加器A中。
可见,对于该接口电路,输入和输出都是在P2.0为“0”时有效,所以输入口和输出口的地址都是FEFFH(实际只要保证P2.0即可),由于它们分别是用信号控制,所以不会发生冲突。若要求当某键按下时,相应的LED发亮,则接口程序如下。
在扩展I/O接口时,需要注意以下两个问题:
(1)I/O地址的安排。如果扩展的接口不多,可采用线选法寻址。即用单独的地址线选择I/O口,在图3-8中是用P2.0来选择一个输入口和一个输出口,当然也可以用P2口的其他线寻址I/O口。
线选法的优点是硬件线路简单,但由于所用的片选信号线都是高位地址线,它们的权值比较大,因此地址空间没有被充分利用,芯片之间的地址出现不连续的现象。
对于RAM和I/O口容量较大的系统,当芯片所需的片选信号多于可利用的地址线时,就需采用译码寻址方法。采用地址译码器(如74LS138芯片)对高位地址线进行译码,译出的信号线作为片选线。
(2)总线负载能力的扩大。8031单片机的P0口是作为地址/数据总线用的,其负载能力为8个LS型TTL电路。当外接的接口芯片超过8片时,必须增加总线驱动器。如三态单向驱动器74LS244、三态双向驱动器74LS245等。P2口是作为地址总线用的,其负载能力为4个LS型TTL电路,它是单向的,可加接单向驱动器如74LS244等。
二、LED显示器
1.LED显示器概述
发光二极管显示器LED,也叫数码管。其“8”字形由“a、b、c、d、e、f、g、h”8个发光二极管组成,通过不同的组合可用来显示0~9,A~F及小数点“.”等字样。如图3-9所示,每个发光二极管称为一个字段。
图 3-9“8”字形数码管
图 3-10“8”字形显示块结构
(a)共阳极;(b)共阴极
数码管有共阳极和共阴极两种结构形式,如图3-10所示。
下面以共阴极显示块为例,说明对显示块的控制方法。
如图3-10(b)所示,共阴极的电平为Ue,每字段上所加的电平分别为Ua、Ub、…、Uh,设某字段的电平为Ui。若Ue<Ui,该段发光;否则,该段不发光。
为获得不同的字形,显示块各段所加的电平也不同,因而编码也不一样,如表3-6所示。
表 3-6 共阴极字形与字段关系表
由此,可以看出:①Ue可以实现对整个显示块是否发光的控制,称字位控制;②Ui可以实现对显示块中某一字段的发光控制,称字形控制。
为了显示块发光,必须提供字位输出口和字形输出口。当显示块发光时,通过每段发光二极管的电流比较大,因而字位输出口和字形输出口必须采用高压驱动电路。
2.LED显示器接口
显示电路一般分为静态显示电路和动态显示电路两类。
(1)静态显示电路。
1)通过8051的P0口的显示接口。一般可用一个8位锁存器和一个显示块组成,图3-11是以共阳极的显示块为例,需要时将数据通过P0口送出。但这种电路需用电源的容量大。
图 3-11 共阳极的显示块接口电路
2)通过8051的P0口译码驱动的显示接口。如图3-12中,74HC247为译码驱动器,它将输入的4根数据线译为8根输出线,输出为BCD码0~9。74HC247的驱动能力很强,每根输出线的灌电流可达20mA,可以驱动共阳极显示块。
图 3-12 P0口译码驱动的显示接口电路
(2)动态显示电路。动态显示电路利用CPU控制电路来控制显示块的导通和截止。显示电路由显示块、字形锁存驱动器及字位锁存驱动器3部分组成。如图3-13所示。
动态显示电路的工作过程是:将字形代码送入字形锁存,这时所有的显示块都有可能显示同样的字符,然后将需要显示的位置送入字位锁存器锁存,以选择显示块。为防止闪烁,显示的时间在1~2ms。
图 3-13 动态显示电路的框图
通过P0口和P1口的显示接口电路如图3-14所示。
图 3-14 通过P0口和P1口的键盘和显示接口电路
其程序为:
三、D/A转换器及其接口电路
在过程控制和智能仪器仪表中,通常会遇到数字量与模拟量的转换问题。将数字量转换成模拟量的过程称为数字—模拟转换(D/A转换),使用的转换器件称为D/A转换器。下面简要介绍10位数/模转换器——AD7520。
AD7520是一个内部不带锁存器的单片的10位乘法式CMOS数/模转换器,其功能图如图3-15所示。主要技术参数为:分辨率为10位,电流稳定时间为500ns,非线性低于±0.05%Vref,参考电压为±15V,电源电压+5~+15V。
图 3-15 AD7520的功能图
AD7520与8051的接口,如图3-16所示。
为了不在输出时产生假信号,电路中增加了两个锁存器,一个8位的和一个2位的。实际上这里采用了两级数据缓冲结构。若数据存放在RAM 20H(高8位)和21H(低2位为数据,其他位为0),则AD7520的写入程序为:
图 3-16 AD7520与8051的接口
四、A/D转换器及其接口电路
在微机系统中,将模拟量转换成数字量的过程称为模拟—数字转换(A/D转换),使用的转换器件称为A/D转换器。下面简要介绍8位模/数转换器——ADC0809。
ADC0809是采用COMS工艺制成的8位8通道模/数转换器,采用28脚DIP封装,其结构原理框图和引脚信号图分别如图3-17和图3-18所示。
图 3-17 ADC0809结构原理框图
图 3-18 ADC0809引脚分配图
芯片包含一个8路模拟开关、模拟开关的地址锁存和译码电路、比较器、256R电阻网络、电子开关逐位比较寄存器SAR、三态输出锁存缓冲器以及控制与定时电路等。
数字部分引脚信号如下。
ADD A、ADD B、ADD C:模拟通道的地址选择线,输入。
ALE:地址锁存允许信号,输入。上升沿有效,此时锁存地址选择线的状态,从而选用相应的模拟通道,以便进行A/D转换。
2-8,2-7,…,2-1数字输出线,输出。2-8为最低位(LSB),2-1为最高位(MSB)。
START:启动信号,输入,高电平有效。为了启动转换,在此端上加一正脉冲信号。脉冲的上升沿将内部寄存器全部清零,在其下降沿开始转换。
EOC:转换结束信号,输出,高电平有效。在START信号的上升沿之后0~8个时钟周期内,EOC变为低电平。当转换结束时,EOC变为高电平,这时转换得到的数据可供读出。
OE:输出允许信号,输入,高电平有效。当OE有效时,A/D的输出锁存缓冲器开放,将其数据送到数据线上。
CLK:时钟,输入。
ADC0809模/数转换器的主要性能指标:①分辨率为8位;②非调整误差为±1LSB;③具有锁存功能的8路模拟开关,对8路模拟电压分别进行转换;④输出与TTL兼容;⑤可用单一电源供电,此时模拟电压输入范围为0~5V,无需调零和满刻度调整;⑥三态锁存输出;⑦低功耗,仅为15mW。
ADC0809与8051的接口电路如图3-19所示。
P0口直接与ADC0809的数据线相接,P0口是低三位通过锁存器74HC174连到ADD A、ADD B、ADD C,锁存器的锁存信号是8051的ALE信号经反相后得到的。8051的ALE直接连到ADC0809的ALE上。P2.7口作为读写端口的选通地址。
图 3-19 ADC0809与8051的接口电路
ADC0809的8个通道所占用的片外RAM的地址为7FF8H~7FFFH。
数据采集方法有:中断法、延时等待法等。
中断法:
延时等待法: