.EA/VPP:外部访问允许,欲使 CPU仅访问外部程序存储器(地址为0000H--FFFFH),EA端必须保持低电平(接地)。需要注意的是:如果加密位LB1被编程,复位时内部会锁存EA端状态。
如EA端为高电平(接Vcc端),CPU则执行内部会锁存EA端状态。
Flash存储器编程时,该引脚加上+12V的编程允许电源Vpp,当然这必须是该器件是使用12V编程电压Vpp。
.XTAL1:振荡器反相放大器的及内部时钟发生器的输入端。 .XTAL2:振荡器3放大器的输出端。 时钟振荡器
AT89C51中有一个用于构成内部振荡器的高增益反相放大器,引脚XTAL和XTAL2分别是该放大器的输入端和输出端。这个放大器与作为反馈元件的片外石英晶体或陶瓷谐振器一起构成自激振荡器,振荡电路如图:
外接石英晶体(或陶瓷振荡器)及电容C1、C2接在放大器的反馈回路中构成并联振荡电路。对外接电容C1、C2虽然没有十分严格的要求,但电容容量的大小会轻微影响振荡频率的高低,振荡器工作的稳定性,起振的难易程序及温度稳定性,如果使用石英晶体,则推荐电容使用30pF?10pF,而如使用陶瓷振荡器建议选择40pF?10F。
用户也可以采用外部时钟,采用时钟的电路如图。在这种情况下,外部时钟脉冲接到XTAL1端,即内部时钟发生器的输入端,XTAL2则悬空。
由于外部时钟信号是通过一个2分钟触发器后作为内部时钟信号的,所以对外部时钟信号的占空比没有特殊要求,但最小高电平持续时间和最大的低电平持续时间应符合产品技术条件的要求。
9
编程方法
编程前,先设置好地址,数据及控制信号,编程单元的地址加在P1口和P2口的P2.0—P2.3(11位地址范围为0000H—0FFFH),数据从P0口输入,引脚P2.6、P2.7和P3.6、P3.7的电平,PSEN为低电平,RST保持高电平,EA/Vpp引脚是编程电源的输入端,按要求加上编程电压,ALE/PROG引脚输入编程脉冲(负脉冲)。编程时,可采用4—20MHz的时钟振荡器,AT89C51编程方法如下: 1. 在地址线上加上要编程单元的地址信号。 2. 在数据线上加上要写入的数据字节。 3. 激活相应的控制信号。
4. 在高电压编程方式时,将/EA/Vpp端加上+12V编程电压。
5. 每对Flash存储阵列写入一个字节或每写入一个程序加密位,加上一个ALE/PROG编程脉冲。
改变编程单元的地址和写入的数据,重复1—5步骤,直到全部文件编程结束。 每个字节写入周期是自身定时的,通常约为1.5ms 数据查询
AT89C51单片机用数据查询方式来检测一个写周期是否结束,在一个写周期中,如需读取最后写入的那个字节,则读出的数据的最高位(P0.7)是原来写入字节最高的反码,写周期完成后,有效的数据就会出现在所有输出端上,此时,可进入下一个字节的写周期,写周期开始后,可在任意时刻进行数据查询。
Ready/Busy:字节编程的进度可通过RDY/BSY输出信号监测,编程期间,ALE变成高电平“H”后P3.4端电平被拉低,表示正在编程状态。编程完成后。P3.4变为高电平表示准备就绪状态。 程序校验及芯片擦除
如果加密位LB1、LB2没有进行编程,则代码数据可通过地址和数据线读回原编写的数据。采用下图电路。程序存储器的地址由P1和P2口的P2.0-P2.3输入,数据有P0口读出,P2.6、P2.7和P3.6、P3.7的控制信号PSEN保持低电平,ALE、EA和RST保持高电平。校验时P0口须接上10K左右的上拉电阻。
加密位不可直接校验,加密位的校验可通过对存储器的校验和写入状态来验证。
10
利用控制信号的正确组合并保持ALE/PROG引脚10ms的低电平脉冲宽度即可将PEROM阵列(4k字节)和三个加密位整片擦除,代码阵列在片擦除操作中将任何非空单元写入“1”,这步骤需再编程之前进行。 读片内签名字节及编程接口
AT89C51单片机内有3个签名字节,地址为030H、031H和032H。用于声明该器件的厂商、型号和编程电压。读签名字节的过程和单元030H、031H和032H的正常校验相仿,只需将P3.6、P3.7保持低电平,返回值意义如下: (030H)=1EH 声明产品由ATMEL公式制造。 (031H)=51H 声明为AT89C51单片机。 (032H)=FFH 声明为12V编程电压。 (032H)=05H 声明为5V编程电压。
编程接口:采用控制信号的正确组合可对Flash闪速存储阵裂中的每一代码字节进行写入和存储器的整片擦除,写操作周期是自身定时的,初始化后它将自动定时到操作完成。 显示电路
在单片机应用系统中,如果需要显示的内容只有数码和某些字母,使用LED数码管是一种较好的选择。LED数码管显示清晰、成本低廉、配置灵活,与单片机接口简单易行。LED数码管是由发光二极管作为显示字段的数码型显示器件,其中七只发光二极管分别对应a~g笔端构成“日”字形,另一只发光二极管Dp作为小数点。因此这种LED显示器称为七段数码管或八段数码管。如图所示:
LED数码管按电路中的连接方式可分为共阴型和共阳型两大类,共阳型是将各段发光二极管的正极连在一起,作为公共端COM,公共端COM接高电平,a~g、Dp各笔段通过限流电阻接控制端。某笔段控制端低电平时,该笔段发光,
11
高电平时不发光。控制某几段笔端发光,就能显示出某个数码或字符。共阴型是将各段发光二极管的负极连在一起,作为公共端COM接地,某笔段通过限流电阻接高电平时发光。
在自动加料机控制系统中运行是要显示输送、排料、满料、空料时间,有时间切换键和标志哪条生产线的发光二极管表示,显示的位数少,所以就采用静态显示的方式。LED显示器工作于静态显示方式时,各位的共阴极(或共阳极)连接在一起并接地(或+5V);每位的段选线(a~dp)分别与一个8位的锁存器输出相连。所以称为静态显示。各个LED的显示字符一经确定,相应锁存器的输出将维持不变,直到显示另一个字符为止。也正因此如此,静态显示器的亮度都较高。这种显示方式接口编程容易。若用I/O接口,则要占用4个8位I/O口,若用锁存器接口,则要用4片74LS373芯片。如果显示器位数增多,则静态显示方式便无法适应。
在设计中,LED显示电路采用74LS377驱动器和MC14511B译码器控制LED数码管。
74LS377芯片介绍
.D0~D7:8个信号输入端。 .Q0~Q7:8个信号输出端。 .CLK:时钟信号输入端。
.E :锁存允许信号。当E=0时,CLK端的上跳变将把8位D输入端的数据打入8位锁存器。
74LS377真值表
12