at89c51引脚图及功能Word格式文档下载.doc
《at89c51引脚图及功能Word格式文档下载.doc》由会员分享,可在线阅读,更多相关《at89c51引脚图及功能Word格式文档下载.doc(9页珍藏版)》请在冰豆网上搜索。
同时,AT89C51可降至0Hz的静态逻辑操作,并支持两种软件可选的节电工作模式。
空闲方式停止CPU的工作,但允许RAM,定时/计数器,串行通信口及中断系统继续工作。
掉电方式保存RAM中的内容,但振荡器停止工作并禁止其它所有部件工作直到下一个硬件复位。
P0口:
P0口是一组8位漏极开路型双向I/O口,也即地址/数据总线复用口。
作为输出口用时,每位能吸收电流的方式驱动8个TTL逻辑门电路,对端口写“1”可作为高阻抗输入端用。
在访问外部数据存储器或程序存储器时,这组口线分时转换地址(低8位)和数据总线复用,在访问期间激活内部上拉电阻。
在FIash编程时,P0口接收指令字节,而在程序校验时,输出指令字节,校验时,要求外接上拉电阻。
P1口:
P1是一个带内部上拉电阻的8位双向I/O口,P1的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。
对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口。
作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(IIL)。
FIash编程和程序校验期间,P1接收低8位地址。
P2口:
P2是一个带有内部上拉电阻的8位双向I/O口,P2的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。
对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口,作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(IIL)。
在访问外部程序存储器或16位地址的外部数据存储器(例如执行MOVX@DPTR指令)时,P2口送出高8位地址数据。
在访问8位地址的外部数据存储器(如执行MOVX@RI指令)时,P2口线上的内容(也即特殊功能寄存器(SFR)区中R2寄存器的内容),在整个访问期间不改变。
Flash编程或校验时,P2亦接收高位地址和其它控制信号。
P3口:
P3口是一组带有内部上拉电阻的8位双向I/O口。
P3口输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。
对P3口写入“1”时,它们被内部上拉电阻拉高并可作为输入端口。
作输入端时,被外部拉低的P3口将用上拉电阻输出电流(IIL)。
P3口除了作为一般的I/O口线外,更重要的用途是它的第二功能,如下表所示:
P3口还接收一些用于Flash闪速存储器编程和程序校验的控制信号。
RST:
复位输入。
当振荡器工作时,RST引脚出现两个机器周期以上高电平将使单片机复位。
ALE/PROG—————
:
当访问外部程序存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低8位字节。
即使不访问外部存储器,ALE仍以时钟振荡频率的l/6输出固定的正脉冲信号,因此它可对外输出时钟或用于定时目的。
要注意的是:
每当访问外部数据存储器时将跳过一个ALE脉冲。
对Flash存储器编程期间,该引脚还用于输入编程脉冲(PROG—————
)。
如有必要,可通过对特殊功能寄存器(SFR)区中的8EH单元的DO位置位,可禁止ALE操作。
该位置位后,只有一条MOVX和MOVC指令ALE才会被激活。
此外,该引脚会被微弱拉高,单片机执行外部程序时,应设置ALE无效。
PSEN—————
程序储存允许(PSEN—————
)输出是外部程序存储器的读选通信号,当AT89C51由外部程序存储器取指令(或数据)时,每个机器周期两次PSEN—————
有效,即输出两个脉冲。
在此期间,当访问外部数据存储器,这两次有效的PSEN—————
信号不出现。
EA/VPP:
外部访问允许。
欲使CPU仅访问外部程序存储器(地址为0000H—FFFFH),EA端必须保持低电平(接地)。
需注意的是:
如果加密位LB1被编程,复位时内部会锁存EA端状态。
如EA端为高电平(接VCC端),CPU则执行内部程序存储器中的指令。
Flash存储器编程时,该引脚加上+12V的编程允许电源Vpp,当然这必须是该器件是使用12V编程电压Vpp。
XTAL1:
振荡器反相放大器的及内部时钟发生器的输入端。
XTAL2:
振荡器反相放大器的输出端。
掉电模式:
在掉电模式下,振荡器停止工作,进入掉电模式的指令是最后一条被执行的指令,片内RAM
和特殊功能寄存器的内容在终止掉电模式前被冻结。
推出掉电模式的唯一方法是硬件复位,复位后将重新定义全部特殊功能寄存器但不改变RAM
中的内容,在Vcc
恢复到正常工作电平前,复位应无效,且必须保持一定时间以使振荡器重启动并稳定工作。
89C51
的程序存储器阵列是采用字节写入方式编程的,每次写入一个字符,要对整个芯片的EPROM
程序存储器写入一个非空字节,必须使用片擦除的方法将整个存储器的内容清楚。
2
编程方法
编程前,设置好地址、数据及控制信号,编程单元的地址加在P1
口和P2
口的P2.0—P2.3(11
位地址范围为0000H——0FFFH),数据从P0口输入,引脚P2.6、P2.7
和P3.6、P3.7
的电平设置见表6,PSEB
为低电平,RST保持高电平,EA/Vpp
引脚是编程电源的输入端,按要求加上编程电压,ALE/PROG引脚输入编程脉冲(负脉冲)。
编程时,可采用4—20MHz
的时钟振荡器,89C51
编程方法如下:
在地址线上加上要编程单元的地址信号在数据线上加上要写入的数据字节。
激活相应的控制信号。
在高电压编程方式时,将EA/Vpp
端加上+12v
编程电压。
每对Flash
存储阵列写入一个字节或每写入一个程序加密位,加上一个ALE/PROG
编程脉冲。
改变编程单元的地址和写入的数据,重复1—5
步骤,知道全部文件编程结束。
每个字节写入周期是自身定时的,通常约为1.5ms。
数据查询89C51
单片机用数据查询方式来检测一个写周期是否结束,在一个写周期中,如需要读取最后写入的那个字节,则读出的数据的最高位(P0.7)是原来写入字节的最高位的反码。
写周期开始后,可在任意时刻进行数据查询。
2.1Ready/Busy:
字节编程的进度可通过Ready/Busy
输出信号检测,编程期间,ALE
变为高电平“H”后P3.4(Ready/Busy)端被拉低,表示正在编程状态(忙状态)。
编程完成后,P3.4
变为高电平表示准备就绪状态。
程序校验:
如果加密位LB、LB2
没有进行编程,则代码数据可通过地址和数据线读回原编写的数据,采用下图的电路,程序存储器的地址由P1
口的P2.0—P2.3
输入,数据由P0
口读出,P206、P2.7
的控制信号见表6,PSEN
保持低电平,ALE、EA
和RST
保持高电平。
校验时,P0
口必须接上10k
左右的上拉电阻。
图2-1-1
编程电路
图2-2-2
校验电路
2.2芯片擦除:
利用控制信号的正确组合(表6)并保持ALE/PROG
引脚10ms
的低电平脉冲宽度即可将EPROM
阵列(4k
字节)和三个加密位整片擦除,代码阵列在片擦除操作中将任何非空单元写入”1”,这步骤需在编程之前进行。
2.3读片内签名字节:
单片机内有3
个签名字节,地址为030H、031H
和032H。
于声明该器件的厂商、号和编程电压。
读签名字节的过程和单元030H、031H
和032H的正常校验相仿,只需要将P3.6
和P3.7
保持低电平,返回值意义如下:
(030H)
=
1EH
声明产品由ATMEL
公司制造。
(031H)
51H
声明为89C51
单片机。
(032H)
FFH
声明为12V
05H
声明为5
89c51方框图
单片机最小系统设计
该单片机最小系统具有的功能:
(1)具有2位LED数码管显示功能。
(2)具有八路发光二极管显示各种流水灯。
(3)可以完成各种奏乐,报警等发声音类实验。
(4)具有复位功能。
功能分析
(1)两位LED数码管显示功能,我们可以利用单片机的P0口接两个数码管来现这个功能;
(2)八路发光二极管显示可以利用P1口接八个发光二极管实现这个功能;
(3)各种奏乐、报警等发声功能可以采用P2.0这个引脚接一蜂鸣器来实现。
(4)利用单片机的第9脚可以设计成复位系统,我们采用按键复位;
利用单片机的18、19脚可以设计成时钟电路,我们利用单片机的内部振荡方式设计的。
设计框图
硬件电路设计
根据本系统的功能,和单片机的工作条件,我们设计出下面的电路图。
元件清单的确定:
数码管:
共阴极2只(分立)
电解电容:
10UF的一只
30PF的电容2只
220欧的电阻9只
4.7K的电阻一只
1.2K的电阻一只
4.7K的排阻一只,
12MHZ的晶振一只
有源5V蜂名器一只
AT89S51单片机一片
常开按钮开关1只紧锁座一只(方便芯取下来的,绿色的)
发光二极管(5MM红色)8只
万能板电路版15*17CM
S8550三极管一只
4.5V电池盒一只,导线相关程序编写
若干。
七、硬件电路的焊接
按照原理图把上面的元件焊接好,详细步骤省略。
针对上面的电路原理图,设计出本单片机最小系统的详细功能:
(1)、第一个发光二极管点亮,同时数码管显示“1”。
(2)、第二个发光二极管点亮,同时数码管显示“2”。
(3)、依次类推到第八个发光二极管点亮,同时数码管显示“8”。
以上出现的是流水灯的效果。
(4)、所有的发光二极管灭了,同时数码管现实“0”。
(5)、数码管显示“1”。
(6)、数码管显示“2、……”直到“9、A、B、C、D、E、F、Y”。
(7)、蜂鸣器发出九声报警声后重复上面所有步骤。
(8)程序如下:
ORG
0000H;
伪指令,定义下面的程序代码(机器代码)从地址为0000H的单元存放。
LJMP
START;
跳转到标号为START的地方去执行。
0030H;
伪指令,定义下面的程序代码(机器代码)从地址为0030H的单元存放。
START:
MOV
P1,#0FEH
;
点亮第一个发光二极管。
CLR
P2.7
送低电平到第一个数码管,开启数码管。
P2.6
送低电平到第二个数码管,开启数码管。
P0,#06H;
让数码管显示“1”
。
LCALL
DELAY;
调用延时子程序,起到延时的目的。
P1,#0FDH;
点亮第二个发光二极管。
P0,#5bH;
让数