第3章
CHAPTER 3


主控单元及地址译码电路






本章设计一个具有较完备功能的主控单元,可满足中等规模以上系统的开发需要。本主控单元将作为后续各章节的主控单元,存储器及各I/O接口设计和地址分配在本主控单元地址译码电路基础上进行。
3.1主控单元
1. 原理图
主控单元包括时钟电路、复位电路、外部三总线扩展电路和系统片选地址译码电路,电路原理见图31。设置锁存器U3,便于在程序设计与调试过程中观察数据总线上数据的变化,了解程序运行状况。


图31主控单元原理图


2. 时钟电路
时钟是时序的基础,由片内高增益反相放大器和外部晶振构成振荡器,产生时钟脉冲。
在XTAL1和XTAL2引脚外接晶振,内部反向放大器自激振荡,产生振荡脉冲,见图32。时钟发生器对振荡脉冲二分频,产生双相脉冲信号(P1相+P2相),构成时钟脉冲信号。fosc为1.2~12MHz,电容C1、C2取30pF。
3. 复位电路
系统定义复位引脚RST持续24个振荡周期的高电平为系统复位信号,复位完成后使RST保持低电平。如图33所示为上电复位与按键复位电路。
电源VCC、电阻R7与按键构成按键复位电路。电容C3、电阻R5构成上电复位电路。完成复位后,通过电阻R5接地,RST保持低电平,使系统进入正常的程序运行状态。
4. 后备电源
后备电源电路见图34。利用D1和D2实现常规电源和后备电源切换。主电源正常工作时,D1将后备电源B1隔离。当主电源低电压或故障时,B1通过D1对系统供电。大容量电容C4具有储能作用。



图32时钟电路




图33上电复位与按键复位电路




图34后备电源电路


3.2地址译码
地址译码模块是系统设计的重要环节,需要对应用系统数据存储器的地址空间和I/O接口地址空间进行总体规划和分配,以便于存储器模块和I/O接口模块的设计与扩展。
常用地址译码器包括74HC139、74HC138和74HC154。
3.2.174HC139
1. 74HC139译码器

74HC139为24译码器,引脚见图35。


图3574HC139引脚


引脚说明: 
 ——使能端,低有效。
 B、A——2位二进制码输入端。
 Y0~Y3——编码信号输出端,低有效。
当使能端有效时,对2位二进制输入码B、A进行译码,相应译码器输出信号Yi有效(=0),其他Yi无效(=1)。
2. 地址译码电路
采用1片74HC139地址译码器,两位二进制代码输入连接系统地址线A15和A14,提供4路片选信号Y0~Y3,将64KB地址空间划分为4个16KB区域,满足小规模系统设计需要,连接电路见图36。


图36地址译码电路(74HC139)


=0,芯片常态使能,系统地址总线A15、A14连接译码器的B、A输入端,为系统提供片选信号,地址分配见表31。


表31地址分配表



A15A14A13..A0有效片选Yi端口地址范围

0000..00
11..11Y0
0000H3FFFH

01
00..0011..11
Y1
4000H7FFFH

1000..00
11..11Y2
8000HBFFFH

11
00..0011..11
Y3
C000HFFFFH

3.2.274HC138
1. 74HC138译码器
74HC138为38译码器,引脚见图37。


图3774HC138逻辑结构


引脚说明: 
 S1、S2、S3——使能端,S1高有效,S2、S3低有效。
 A2、A1、A0——3位二进制码输入端。
 Y0~Y7——编码信号输出端,低有效。
当使能端有效时,对3位二进制输入码A2、A1、A0进行译码,相应译码信号Yi有效(=0),其他Yi无效(=1)。
2. 地址译码电路
采用1片74HC138地址译码器,3位二进制代码输入连接系统地址线A15、A14和A13,提供8路片选信号Y0~Y7,将64KB地址空间划分为8个8KB地址空间,满足中规模系统设计需要,连接电路见图38。


图38地址译码电路(74HC138)


E1/E2/E3=100,芯片常态使能,系统地址总线A15、A14、A13连接译码器的C、B、A输入端,为系统提供片选信号,地址分配见表32。


表32地址分配表



A15A14A13A12..A0有效片选Yi端口地址范围

000
00..0011..11Y0
0000H1FFFH

001
00..0011..11
Y1
2000H3FFFH

010
00..0011..11
Y2
4000H5FFFH

011
00..0011..11
Y3
6000H7FFFH

100
00..0011..11
Y4
8000H9FFFH

101
00..0011..11
Y5
A000HBFFFH

续表


A15A14A13A12..A0有效片选Yi端口地址范围

110
00..0011..11
Y6
C000HDFFFH

111
00..0011..11
Y7
E000HFFFFH


3.2.374HC154
1. 74HC154
74HC154为416译码器,引脚见图39。


图3974HC154引脚


引脚说明: 
 G1/G2——使能端,低有效。
 DCBA——4位二进制码输入。
 Y0~Y15——译码信号输出。
2. 地址译码电路
地址译码电路(见图310)采用1片74HC154,系统地址总线A15、A14、A13、A12连接译码器的D、C、B、A输入端,产生16路片选信号Y0~Y15,将64KB地址空间划分为16个4KB地址空间,为系统提供片选信号,地址分配如表33。


图310地址译码电路(74HC154)


本书后续章节选择该地址译码方案,将RAM地址和后续各章所设计的I/O接口地址统一安排,见表33。



表33地址分配表



A15A14A13A12A11..A0片选Yi端口地址范围备注

0000
00..0011..11Y0
0000H0FFFH
4.2节:
 RAM,2KB

续表


A15A14A13A12A11..A0片选Yi端口地址范围备注

0001
00..0011..11
Y1
1000H1FFFH
5.1.2节: 
8255A扩展I/O

0010
00..0011..11
Y2
2000H2FFFH
6.2节: 
74HC244中断扩展

0011
00..0011..11
Y3
3000H3FFFH
14.1节: LCD1602

0100
00..0011..11
Y4
4000H4FFFH

0101
00..0011..11
Y5
5000H5FFFH

0110
00..0011..11
Y6
6000H6FFFH

0111
00..0011..11
Y7
7000H7FFFH
7.2.2节: 
CD4052通信端口

1000
00..0011..11
Y8
8000H8FFFH
7.2.3节: 
CD4051通信端口

1001
00..0011..11
Y9
9000H9FFFH
10.3节: 
8253看门狗

1010
00..0011..11Y10
A000H
AFFFH11.2节: 
ADC0809

1011
00..0011..11
Y11
B000HBFFFH

1100
00..0011..11
Y12
C000HCFFFH

1101
00..0011..11
Y13
D000HDFFFH

1110
00..0011..11
Y14
E000HEFFFH

1111
00..0011..11
Y15
F000HFFFFH


3.3Proteus仿真
1. 仿真原理图
主控单元仿真连接如图311所示。
系统对外部程序存储器、外部数据存储器和片外I/O接口访问时,选择不同的地址范围,可从连接在译码器输出端的LED指示灯读出当前有效Yi,从连接在数据总线上的LED指示,读出当前数据总线上8位数据值,便于系统调试。







图311主控单元仿真电路


2. 参考程序


#include "reg51.h"

#include<absacc.h>

#define DE154Y0 XBYTE[0x0000]



void  vDelay(unsigned  int  uiT )

{

while(uiT--) ;

}



void main()

{

unsigned  char i;

unsigned char *ucAdd;

ucAdd=&DE154Y0;

while(1)

 {

for(i=0;i<16;i++)

{

*ucAdd=0x55;vDelay(10000);

*ucAdd=0xaa;vDelay(10000);     

ucAdd=ucAdd+0x1000;

}

}

}