一、80C51单片机的发展
MCS-51是单片机系列的名称,其中包含有多种芯片型号;而80C51则既是系列名称又是其中一个具体芯片的型号。
早期的80C51系列芯片型号与MCS-51完全对应。它们都有两个子系列,即基本型51子系列和增强型52子系列。
80C51是对MCS-51的改进,具体表现在所使用的半导体集成电路工艺上。MCS-51采用的是HMOS工艺,即高密度短沟道MOS半导体集成工艺,而80C51则采用CHMOS工艺,即互补金属氧化物的HMOS半导体集成工艺。集成工艺的改进,使得80C51具有抗干扰能力强和低功耗等明显优势。
(1)功能简化芯片
(2)功能增强芯片
二、 从8×C552看8位单片机功能的增强
8×C552芯片的硬件结构是在80C51内核的基础上再增加一些功能部件构成的,现以83C552芯片为例进行说明,硬件结构框图如下图所示。
由于中断源增多,所以中断允许寄存器和中断优先级控制寄存器都增加到两个。对于中断允许寄存器,把80C51原有的改称为IE0,而把新增加的称为IE1。对于中断优先级控制寄存器,把80C51原有的改称为IP0,而把新增加的称为IP1。
硬件查询顺序为:外部中断0(X0)→定时器0中断(T0)→外部中断1(X1)→定时器1中断(T1)→串行中断(S0)→I2C中断(S1)→捕捉0中断(CT0)→捕捉1中断(CT1)→捕捉2中断(CT2)→捕捉3中断(CT3)→A/D中断(AD)→比较0中断(CM0))→比较1中断(CM1)→比较2中断(CM2)→定时器2中断(T2)。
8×C552事件捕捉与事件定时输出逻辑结构
对单片机应用系统来说,可靠性是至关重要的。这是因为单片机应用的现场环境通常比较恶劣,极易因受到干扰而出现故障;而一旦出现故障,就有可能导致系统失控,甚至造成极其严重的后果。
为了提高系统的可靠性,除采取足够的硬件措施外,还应对程序运行进行监视,因为系统可靠与否最终体现在程序运行上。最常见的程序运行故障是“跑飞”和死循环,对于这些程序运行故障,在及时发现的同时,还要能够自动恢复,以实现系统自救。常用的方法:插入陷阱程序和设置“看门狗”。
8×C552的监视定时器由8位定时器T3和11位预分频器组成,其中预分频器为计数结构的低位,定时器为其高位。监视定时器的计数脉冲来自芯片内部时钟,每个机器周期进行一次加1计数。
监视定时器计数溢出时,能产生有效的复位信号,从而使单片机系统复位,这就是监视定时器的功能。
程序应在小于监视周期的时间间隔内,对监视定时器进行一次赋值,以使其不发生溢出。当出现故障程序不能正常运行时,监视定时器就会因不能按时赋值而出现溢出,并将系统复位。
8×C552具有两路脉宽调制输出,由预分频器(PWMP)、8位加法计数器、两个脉冲宽度寄存器(PWM1、PWM0)、两个比较器及相关逻辑电路等组成,其结构框图如下图所示。
脉宽调制器输出的方波脉冲宽度间隔(占空比)是可编程的,其数据通过程序写入PWM1和PWM0中。而重复频率由预分频器PWMP确定。
脉宽调制器输出的方波脉冲周期(或频率)由预分频器PWMP控制。PWM计数器每一个状态周期进行一次加1,8位计数器最大计数值为255,故脉宽调制器输出的方波脉冲频率fPWM的计算公式为:
fPWM =fosc/2×(PWMP+1)×255
按此公式,只要知道时钟频率和预分频器的值,便可计算出以微秒为单位的PWM方波周期。
PWM方波脉冲的宽度由脉冲宽度寄存器(PWM1和PWM0)确定。而PWM是通过计数和比较来产生方波的,所以只要改变脉冲宽度寄存器的内容,方波宽度就会随之改变。
方波宽度在整个方波周期中所占的百分比称为占空比。因为PWM方波的宽度是可控的,所以它的占空比也是可调的,
PWM的最基本应用是产生方波,而绝大多数PWM应用都是建立在对PWM方波进行滤波的基础上。例如,把PWM波经过简单处理就可以得到连续变化的模拟信号,实现D/A转换功能,其电路如下图所示。
三、 闪速存储器及其在单片机中的应用
闪速存储器全称为快闪可编程/擦除只读存储器,简称闪速存储器或FlashROM,也可简写为FPEROM(Flash Programmable andErasable Read Only Memory),20世纪80年代后期由Intel公司研制成功。
闪速存储器具有可写性和非易失性,所以常用做只读存储器。
闪速存储器除具有高密度、低功耗、非易失、高可靠性、长保存时间和超强的加密功能等特点外,它的优势更表现在在线编程功能上。
Flash ROM与E2PROM都使用电信号进行编程和擦除,并可重复进行。
闪速存储芯片的存储容量可达2~16KB,近期更有16~64 MB的芯片出现。这里介绍一个比较典型的闪速存储芯片28F010。闪速存储芯片28F010的存储容量为128 KB,引脚排列如图所示。
A16~A0:地址引脚。在写周期中,其内容被内部地址锁存器锁存。
DQ7~DQ0:数据引脚。当芯片未选中时,引脚为高阻抗状态。
/CE:片选信号,低电平有效。当CE=0时,芯片被选中,将激活芯片内的控制逻辑和相关电路。当CE=1时,芯片不被选中,功耗将降低到预备状态。
/OE:输出选通控制信号,低电平有效。在读周期中,当OE=0时,输出缓冲器被选通,读出的数据通过缓冲器输出。
/WE:写信号,低电平有效。用于控制对命令寄存器和存储阵列的写入操作,在WE脉冲的下降沿,地址被锁存;在其上升沿时,数据被锁存。
VPP:擦除/编程电压。
VCC:主电源,+5 V。
VSS:地线。
NC:空引脚。
28F010的核心是一个1048576位的存储阵列,以及相应的译码和选通电路。其他部分则是在线擦除和编程的辅助电路。28F010的内部硬件结构如下图所示 。
28F010芯片结构框图
在线擦除与编程主要是通过编程引脚VPP和命令寄存器实现的。当VPP不加编程电压(通常是接地)时,命令寄存器内容为缺省值(即数据读出命令),存储芯片为只读方式。此时对闪速存储器只能进行读操作而不能进行写操作。若要进行在线擦除和编程操作,则需把VPP引脚接上编程高电压(+12 V)。这时,除可以对闪速存储器进行正常的数据读操作外,还可进行擦除与编程操作,包括存储阵列的擦除和编程以及读出编程验证数据等。但对每项操作,还需要向命令寄存器写入相应的命令。
闪存单片机芯片是指内部程序存储器为闪速存储器的单片机芯片,在80C51系列中比较典型的闪存单片机芯片是89C51。
28F010芯片结构框图
片内有4 KB闪速存储器。
128 B的内部RAM单元。
两个16位定时器/计数器。
中断系统仍为5个中断源,二级优先结构。
4个8位I/O口,即32位可编程口线。
可编程全双工串行口。
宽范围的工作电压,VCC的允许变化范围为2.7~6.0 V。
可设置为待机状态和掉电状态。
振荡器及时钟电路,全静态工作方式,时钟频率可为0 Hz~24 MHz。具有全静态工作方式,表明它不一定要求连续的时钟定时,在等待内部事件期间,时钟频率可降至0。
(3)AT89C51的简化芯片
AT89C2051没有并行扩展功能,所以只保留P1和P3两个I/O口。但在AT89C2051芯片中有一个模拟比较器,比较器以口线P1.1/AIN1和P1.0/AIN0为模拟量的正负输入端。由于P3.6已用作比较器输出,所以芯片不再有P3.6引脚。如下图所示。
单片机芯片中的闪速存储器,原始状态为擦除状态,地址单元的内容全为FFH。对它有两种编程方式。一种是使用专用编程设备进行,另一种是利用系统的自身资源进行。
利用芯片自身资源进行编程的方式,也称为系统内部写入法ISW(In SystemWriting),即在线编程。
为实现闪速存储器编程,应预先把相关的地址、数据和控制信号准备好。AT89C51芯片FPEROM的编程接口信号如下图所示 。
P0.7~P0.0:编程时代码输入,校验时代码输出。
P1.7~P1.0和P2.3~P2.0:存储阵列单元地址,因为AT89C51的闪存容量为4 KB,需用12位地址。
P3.7、P3.6、P2.7、P2.6:高、低电平组合设置。
ALE/PROG:PROG为编程脉冲信号。
EA/VPP:VPP为编程电源。
对于AT89C51芯片来说,有两种编程电压,一种是+5 V,使用时可以把VPP与本芯片的VCC直接相连;另一种是+12 V,VPP单独接+12 V电源。+5 V编程电压使用户系统的在线编程成为可能,为用户提供方便;而+12 V编程电压则是供与专用编程器配套使用的。
现以AT89C51用户系统的在线编程为例,对闪速存储器的编程过程进行说明,其中主要过程包括: