1.3 了解51单片机
1.3.1 51单片机的由来
其实真的和我上面介绍单片机一样,我们人类是先发明的计算机(更精确的说法应该是先有了计算机的处理器),然后才有了单片机。下面我们就来看看51单片机是怎么发展而来的。
1971年1月,Intel公司的霍夫研制成功世界上第一块4位微处理器芯片Intel 4004,它是第一代微处理器问世的标志,微处理器和微型计算机时代从此开始。微处理器芯片Intel 4004包含2 300个晶体管,尺寸规格为3mm×4mm。
1971年11月,Intel推出MCS-4微型计算机系统,该系统包括4001 ROM芯片、4002 RAM芯片、4003移位寄存器芯片和4004微处理器。MCS-4的计算性能远远超过当年的ENIAC[很多资料称ENIAC(Electronic Numerical Integrator And Computer,电子数字积分计算机,1946年2月诞生)是第一台电子计算机,因而经常拿它做比较。其实第一台电子计算机应该是ABC(Atanasoff-Berry Computer,阿塔纳索夫-贝瑞计算机),1939年10月完成样机]。
1972年4月,霍夫等人研制出第一个8位微处理器Intel 8008。由于8008主要采用工艺简单、速度较低的P沟道MOS(Metal OXide Semicomductor,金属氧化物半导体)电路,因此仍属于第一代微处理器。
1973年8月,霍夫等人研制出新一代8位微处理器Intel 8080。Intel 8080以N沟道MOS电路取代了P沟道,这标志着第二代微处理器的诞生。
1975年4月,MITS(Micro Instrumentation and Telemetry Systems,微仪系统家用电子公司)发布第一个通用型Altair 8800系统,该系统配备有一个成套工具、一个主板、一个英特尔8080 CPU和256B的RAM,这是世界上第一台微型计算机(个人电脑)。
1976年,Intel公司研制出MCS-48系列单片机。该系列单片机具有以下特点:CPU为4位或8位,ROM有1KB或2KB,RAM有64B或128B,具有并行接口,无串行接口,有1个8位的定时/计数器,有2个中断源。注意,在此之前介绍的只是处理器的研制历史, MCS-48系列才是真正的单片机,它更像是Altair 8800的压缩版(微型版),因而说这是单片机问世的标志。
20世纪80年代初,Intel公司在MCS-48系列单片机的基础上,推出了MCS-51系列8位高档单片机。MCS-51系列单片机在集成度、存储容量(片内RAM、ROM)、功能的增强及扩展、运算速度等方面都有显著提高。
20世纪80年代中期以后,Intel以专利转让的形式把8051内核卖给了许多半导体厂家,如AMTEL、PHILIPS、ANANOG DEVICES、DALLAS等。这些厂家生产的芯片是MCS-51系列的兼容产品,准确地说是与MCS-51指令系统兼容的单片机。这些单片机与8051的系统结构(主要是指令系统)相同,采用CMOS工艺,因而常用80C51系列来称呼所有具有8051指令系统的单片机。
1.3.2 51单片机的特点
只要具有8051指令系统的单片机我们都叫它80C51系列,有时也简称8051单片机或51单片机,那么8051单片机有哪些特点呢?
8051单片机包含中央处理器(CPU)、程序存储器(ROM)、数据存储器(RAM)、定时/计数器、并行接口、串行接口和中断系统等几大单元,以及数据总线、地址总线和控制总线三大总线。下面我们分别介绍。
1.中央处理器
中央处理器也叫CPU(Central Processing Unit),主要由控制器和运算器组成,是整个单片机的核心部件。CPU 主要完成取指令、翻译指令、执行指令等工作,同时负责控制、指挥和调度整个单元系统协调工作,完成运算和控制输入/输出功能等操作。8051是8位数据宽度的处理器,能处理8位二进制数据或代码。
2.数据存储器(RAM)
8051内部有256个8位数据存储单元,分为128个8位用户数据存储单元和128个专用寄存器单元。其中专用寄存器只能用于存放控制指令数据,用户只能访问而不能存放数据,因而用户只有128B(数据存储单元)可以用来存放读/写数据、定义变量、运算的中间结果等。
3.程序存储器(ROM)
8051共有4KB片内ROM(EEPROM或Flash),用于存放用户程序、原始数据或表格。片外可扩展64KB的ROM,由于8051单片机的ROM是采用片内外统一编址的,故其最多只能寻址64KB的ROM空间。
4.定时/计数器
8051有两个16位的可编程定时/计数器(T0、T1),可用于精确定时、计时、延时、计数,检测速度、频率、脉宽,提供定时脉冲信号等。
5.并行输入/输出(I/O)口
8051共有4组8位I/O口(P0、P1、P2和P3共32个I/O口),用于对外部数据的输入、输出操作。
6.全双工串行口
8051内置一个全双工串行通信口,用于与其他设备间的串行数据传输。该串行口共有4种工作模式,既可以用做通用异步接收和发送器,也可以用做同步移位寄存器。
7.中断系统
8051具备较完善的中断功能:有两个外中断(INT0、INT1)、两个定时/计数器中断和一个串行中断(串行收/发中断用一个中断号),可满足多种控制要求,并且具有2级的优先级别选择。
8.时钟电路
8051内置最高频率达12MHz的时钟电路,用于产生整个单片机运行的脉冲时序,但8051单片机需外置振荡电容。
1.3.3 51单片机的代表AT89C51
在20世纪80年代中期Intel把8051内核以专利转让的形式卖出后,就有很多厂家生产51系列单片机。在众多的51系列单片机中,要数ATMEL公司的AT89C51、AT89S51更实用,因为它不但和8051指令、引脚完全兼容,而且其片内的4KB程序存储器是Flash工艺的,这种工艺的存储器用户可以用电的方式瞬间擦除、改写,一般专为ATMEL AT89xx做的编程器均带有这些功能。
AT89C51现已停产,但我们后面要用的仿真工具里有AT89C51而没有AT89S51,因此这里还是选择AT89C51作为实验对象。而且其代码可以直接在AT89S51上运行,不需要做任何修改。
1.AT89C51的主要特点
➢ 与MCS-51产品指令系统完全兼容;
➢ 4KB可编程Flash存储器;
➢ 寿命:1 000写/擦循环;
➢ 数据保留时间:10年;
➢ 全静态工作:0~24MHz;
➢ 三级程序存储器锁定;
➢ 256B片内RAM(128B用户RAM,128B SFR);
➢ 32个可编程I/O口;
➢ 两个16位定时/计数器;
➢ 5个中断源(也有6个中断源的说法,串口收/发中断看做两个);
➢ 全双工可编程串行通道;
➢ 低功耗的空闲模式和掉电模式;
➢ 片内振荡器和时钟电路。
2.AT89C51的外观
观察图1-17中左侧的外形图,了解芯片告诉我们的信息。芯片的左上角有一个小圆坑,旁边有白色的三角符号。该标志告诉我们这里是芯片的第1引脚,沿逆时针方向数下去,即第1至第40引脚,如图1-17中右图所示。该标志非常重要,我们在调试电路板,用三用表、示波器测量时找其对应引脚就要用到该标志。
图1-17 AT89C51外形及引脚定义
芯片上的标识:ATMEL是芯片公司的名称,后面的字符串AT89C51 24PI 0538代表的意思就更丰富了。
AT——是ATMEL的缩写,如AT89C51、AT89S51、ATMega8等;
8——表示该芯片是8051内核的芯片;
9——表示内部含Flash EEPROM存储器;
C——表示该芯片为CMOS产品,AT89S51中的S表示该芯片具有ISP功能;
5——固定不变;
1——表示内部程序存储空间的大小,1表示4KB、2表示8KB、3表示12KB等;
24——表示最高工作频率是24MHz;
P——表示封装形式是PDIP封装,同类符号还有A表示TQFP封装、J表示PLCC封装;
I——表示是工业级产品,使用温度为-40℃~85℃,同类符号还有C表示商业用产品、A表示汽车用产品、M表示军用产品等;
0538——表示生产批次,2005年第38周生产;
最后就是引脚数是40。
这就是一块芯片告诉我们的信息,我们可以利用这些信息去网上、生产厂家获取更多的信息。
3.AT89C51的引脚定义
VCC:电源引脚。
GND:接地。
P0口:P0口为一组8位漏级开路双向I/O口,每个引脚可吸收8个TTL门电流,可作为高阻抗输入端使用。
P1口:P1口为一组内部提供上拉电阻的8位双向I/O口,P1口缓冲器可接收、输出4个TTL门电流。
P2口:P2口为一组内部提供上拉电阻的8位双向I/O口,P2口缓冲器可接收、输出4个TTL门电流。
P3口:P3口为一组内部提供上拉电阻的8位双向I/O口,P3口缓冲器可接收、输出4个TTL门电流。P3口也可作为AT89C51的一些特殊功能口。
RST:复位输入。当振荡器工作时,保持RST引脚两个机器周期以上的高电平将使单片机复位。
ALE/PROG:当访问外部存储器时,地址锁存允许(ALE)的输出脉冲用于锁存地址的低8位。在Flash编程期间,该引脚用于输入编程脉冲(PROG)。平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。
PSEN:外部程序存储器的读选通信号。
EA/VPP:当该引脚保持低电平时,CPU将直接访问外部程序存储器(地址为0000H~FFFFH),不管是否有内部程序存储器。在Flash编程期间,此引脚也用于施加12V编程电源(VPP)。
XTAL1:振荡器反向放大器及内部时钟发生器的输入端。
XTAL2:振荡器反向放大器的输出端。
4.AT89C51与AT89S51的区别
AT89C51现已停产,AT89S51是ATMEL公司推出的对应升级产品。
AT89S51多了ISP(在线编程)功能。
AT89S51还有一个很好用的内部看门狗。看门狗是直译的说法,即一个不断自己计数的定时器,需要不断地“喂”它(不断地复位它,表示程序自己没有死机),否则过一段时间它就会计数溢出,MCU就复位,这样可以避免程序卡死后没人管。
AT89C51可以使用的最高晶振频率是24MHz,AT89S51可以使用的最高晶振频率可达33MHz。