学习情境1信号灯控制系统的设计与制作 联系客服

发布时间 : 星期日 文章学习情境1信号灯控制系统的设计与制作更新完毕开始阅读786b8230eefdc8d376ee3251

《单片机应用技术》

0003H~000AH 外部中断0中断地址区 000BH~0012H 定时器/计数器0中断地址区 0013H~001AH 外部中断1中断地址区

001BH~0022H 定时器/计数器1中断地址区 0023H~002AH 串行中断地址区

中断响应后,按中断种类,自动转到各中断区的首地址去执行程序。因此在中断地址区中理应存放中断服务程序。但通常情况下,8个单元难以存下一个完整的中断服务程序,因此通常也是从中断地址区首地址开始存放一条无条件转移指令,以便中断响应后,通过中断地址区,再转到中断服务程序的实际入口地址去。

1.1.2.6 并行输入/输出口电路结构

单片机芯片内还有一项主要内容就是并行I/O口。MCS-51共有四个8位的并行I/O口,分别记作P0、P1、P2、P3。每个口都包含一个锁存器,一个输出驱动器和输入缓冲器。实际上它们已被归入专用寄存器之列,并且具有字节寻址和位寻址功能。

在访问片外扩展存储器时,低8位地址和数据由P0口分时传送,高8位地址由P2口传送。在无片外扩展存储器的系统中,这4个口的每一位均可作为双向的I/O端口使用。

MCS-51单片机的四个I/O口都是8位双向口,这些口在结构和特性上是基本相同的,但又各具特点,以下分别介绍。

1. P0口

P0口的口线逻辑电路如图1.7所示。

地址/数据控制&1P0.X引脚内部总线写锁存器DP0.XQT2MUXvcc

T1读锁存器锁存器CPQ读引脚

图1.7 P0口某位结构

由图可见,电路中包含有1个数据输出锁存器、2个三态数据输入缓冲器、1个数据输出的驱动电路和1个输出控制电路。当对P0口进行写操作时,由锁存器和驱动电路构成数据输出通路。由于通路中已有输出锁存器,因此数据输出时可以与外设直接连接,而不需再加数据锁存电路。

考虑到P0口既可以作为通用的I/O口进行数据的输入输出,也可以作为单片机系统的地址/数据线使用。为此在P0口的电路中有一个多路转接电路MUX。在控制信号的作用下,多路转接电路可以分别接通锁存器输出或地址/数据线。当作为通用的I/O口使用时,内部的控制信号为低电平,封锁与门将输出驱动电路的上拉场效应管(FET)截止,同时使多路转接电路MUX接通锁存器Q端的输出通路。

当P0口作为输出口使用时,内部的写脉冲加在D触发器的CP端,数据写入锁存器,并向端口引脚输出。

当P0口作为输入口使用时,应区分读引脚和读端口两种情况。为此在口电路中有两个用于读入驱动的三态缓冲器。所谓读引脚就是读芯片引脚的数据,这时使用下方的数据缓冲

13

《单片机应用技术》

器,由“读引脚”信号把缓冲器打开,把端口引脚上的数据从缓冲器通过内部总线读进来。使用传送指令(MOV)进行读口操作都是属于这种情况。

而读端口则是指通过上面的缓冲器读锁存器Q端的状态。在端口已处于输出状态的情况下,本来Q端与引脚的信号是一致的,这样安排的目的是为了适应对口进行“读-修改-写”操作指令的需要。例如“ANL P0,A”就是属于这类指令,执行时先读入P0口锁存器中的数据。然后与A的内容进行逻辑与,再把结果送回P0口。对于这类“读-修改-写”指令,不直接读引脚而读锁存器是为了避免可能出现的错误。因为在端口已处于输出状态的情况下,如果端口的负载恰是一个晶体管的基极,导通了的PN结会把端口引脚的高电平拉低,这样直接引脚就会把本来的“1”误读为“0”。但若从锁存器Q端读,就能避免这样的错误,得到正确的数据。

但要注意,当P0口进行一般的I/O输出时,由于输出电路是漏极开路电路,必须外接上拉电阻才能有高电平输出;当P0口进行一般的I/O输入时,必须先向电路中的锁存器写入“1”,使FET截止,以避免锁存器为“0”状态时对引脚读入的干扰。

在实际应用中,P0口绝大多数情况下都是作为单片机系统的地址/数据线使用,这要比作一般I/O口应用简单。当输出地址或数据时,由内部发出控制信号,打开上面的与门,并使多路转接电路MUX处于内部地址/数据线与驱动场效应管栅极反相接通状态.这时的输出驱动电路由于上下两个FET处于反相,形成推拉式电路结构,使负载能力大为提高.而当输入数据时,数据信号则直接从引脚通过输入缓冲器进入内部总线.

2. P1口

P1口的口线逻辑电路见图1.8。

因为P1口通常是作为通用I/O口使用的,所以在电路结构上与P0口有一些不同之处.首先它不再需要多路转接电路MUX;其次是电路的内部有上拉电阻,与场效应管共同组成输出驱动电路。

为此P1口作为输出口使用时,已能向外提供推拉电流负载,无需再外接上拉电阻.当P1口作为输入口使用时,同样也需先向其锁存器写“1”,使输出驱动电路的FET截止。

vcc读锁存器内部上拉电阻P1.X引脚内部总线写锁存器DQP1.X锁存器QCP读引脚

图1.8 P1口某位结构

3. P2口

P2口的口线逻辑电路见图1.9。

14

《单片机应用技术》

vcc读锁存器地址控制内部上拉电阻P2.X引脚内部总线写锁存器DP2.XQMUX1锁存器CPQ

读引脚 图1.9 P2口某位结构图

P2口电路中比P1口多了一个多路转接电路MUX,这又正好与P0口一样。P2口可以作为通用I/O口使用。这时多路转接开头倒向锁存器Q端。但通常应用情况下,P2口是作为高位地址线使用,此时多路转接开头应倒向相反方向。

4. P3口

P3口的口线逻辑电路见图1.10。

读锁存器第二输出功能vcc内部上拉电阻P3.X引脚&内部总线写锁存器DP3.XQ锁存器CPQ读引脚第二输入功能

图1.10 P3口某位结构

P3口的特点在于为适应引脚信号第二功能的需要,增加了第二功能控制逻辑。由于第

二功能信号有输入和输出两类,因此分两种情况说明。

对于第二功能为输出的信号引脚,当作为I/O使用时,第二功能信号引线应保持高电平,与非门开通,以维持从锁存器到输出端数据输出通路的畅通。当输出第二功能信号时,该位的锁存器应置“1”,使与非门对第二功能信号的输出是畅通的,从而实现第二功能信号的输出。

对于第二功能为输入的信号引脚,在口线的输入通路上增加了一个缓冲器,输入的第二功能信号就从这个缓冲器的输出端取得。而作为I/O使用的数据输入,仍取自三态缓冲器的输出端。不管是作为输入口使用还是第二功能信号输入,输出电路中的锁存器输出和第二功能输出信号线都应保持高电平。

1.1.2.7 时钟电路与复位电路

时钟电路用于产生单片机工作所需要的时钟信号,而时序所研究的是指令执行中各地信号之间的相互关系。单片机本身就如一个复杂的同步时序电路,为了保证同步工作方式的实现,电路应在唯一的时钟信号控制下严格地按时序进行工作。

1. 时钟电路与时序

1)时钟信号的产生

在MCS-51芯片内部有一个高增益相反相放大器,其输入端为芯片引脚XTAL1,其输出端为引脚XTAL2 。而在芯片的外部,XTAL1和XTAL2之间跨接晶体振荡器和微调电容,

15

《单片机应用技术》

从而构成一个稳定的自激振荡器,这就是单片机的时钟电路,如图1.11所示。

8051XTAL1C1晶振1C2XTAL2至内部时钟电路 图1.11 时钟振荡电路

时钟电路产生的振荡脉冲经过触发器进行二分频之后,才成为单片机的时钟脉冲信号。请读者特别注意时钟脉冲与振荡脉冲之间的二分频关系,否则会造成概念上的错误。

一般电容C1和C2取30pF左右,晶体的振荡频率范围是1.2MHZ~12 MHZ 。晶体振荡频率高, 则系统的时钟频率也高, 单片机运行速度也就快。MCS-51在通常应用情况下,使用振荡频率为的6MHZ或12MHZ。

2)引入外部脉冲信号

在由多片单片机组成的系统中,为了各单片机之间时钟信号的同步,应当引入唯一的公用外部脉冲信号作为各单片机的振荡脉冲。这时外部的脉冲信号是经XTAL2引脚注入,其连接如图1.12所示。

VCC8051TTL外部时钟信号1XTAL2XTAL1VSS 图1.12 外部时钟源接法

3)时序

时序是用定时单位来说明的。MCS-51的时序定时单位共有4个,从小到大依次是:节拍、状态、机器周期和指令周期。下面分别加以说明。

(1)节拍与状态

把振荡脉冲的周期定义为拍节(用P表示)。振荡脉冲经过二分频后,就是单片机的时钟信号的周期定义为状态(用S表示)。

这样,一个状态就包含两个拍节,具前半周期对应的拍节叫拍节1(P1),后半周期对应的拍节2(P2).

(2)机器周期

MCS-51采用定时控制方式, 因此它有固定的机器周期. 规定一个机器周期的宽度为6个状态, 并依次表示为S1~S6. 由于一个状态又包括两个节拍, 因此一个机器周期总共有12个节拍, 分别记作S1 P1S1 P2 。。。。。。 S6P2. 由于一个机器周期共有12个振荡脉冲周期, 因此机器周期就是振荡脉冲的十二分频.

当振荡脉冲频率为12 MHZ时, 一个机器周期为1us。 当振荡脉冲频率为6 MHZ时, 一个机器周期为2 us。

16