单片机AT89C51
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
AT89C51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROM—Falsh Programmable and Erasable Read Only Memory)的低电压,高性能CMOS8位微处理器,俗称单片机。
该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。
由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。
1.主要特性:
·8031 CPU与MCS-51 兼容
· 4K字节可编程FLASH存储器(寿命:1000写/擦循环)
· 全静态工作:0Hz-24KHz
· 三级程序存储器保密锁定
· 128*8位内部RAM
· 32条可编程I/O线
· 两个16位定时器/计数器
·6个中断源
· 可编程串行通道
· 低功耗的闲置和掉电模式
· 片内振荡器和时钟电路
2.管脚说明:
VCC:供电电压。
GND:接地。
P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。
当P1口的管脚第一次写1时,被定义为高阻输入。
P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。
在FIASH 编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。
P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。
P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。
在FLASH编程和校验时,P1口作为第八位地址接收。
P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。
并因此作为输入时,P2口的管脚被外部拉低,将输出电流。
这是由于内部上拉的缘故。
P2口当用于外部程序
存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。
在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。
P2口在FLASH编程和校验时接收高八位地址信号和控制信号。
P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。
当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。
作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。
P3口也可作为AT89C51的一些特殊功能口,如下表所示:
口管脚备选功能
P3.0 RXD(串行输入口)
P3.1 TXD(串行输出口)
P3.2 /INT0(外部中断0)
P3.3 /INT1(外部中断1)
P3.4 T0(记时器0外部输入)
P3.5 T1(记时器1外部输入)
P3.6 /WR(外部数据存储器写选通)
P3.7 /RD(外部数据存储器读选通)
P3口同时为闪烁编程和编程校验接收一些控制信号。
I/O口的内部结构:
I/O口作为输入口时有两种工作方式即所谓的读端口与读引脚读端口时实际上并不从外部读入数据而是把端口锁存器的内容读入到内部总线经过某种运算或变换后再写回到端口锁存器只有读端口时才真正地把外部的数据读入到内部总线上面图中的两个三角形表示的就是输入缓冲器CPU将根据不同的指令分别发出读端口或读引脚信号以完成不同的操作这是由硬件自动完成的不需要我们操心
读引脚时也就是把端口作为外部输入线时首先要通过外部指令把端口锁存器置1然后再实行读引脚操作否则就可能读入出错为什么看上面的图如果不对端口置1端口锁存器原来的状态有可能为0Q端为0Q^为1加到场效应管栅极的信号为1该场效应管就导通对地呈现低阻抗,此时即使引脚上输入的信号为1也会因端口的低阻抗而使信号变低使得外加的1信号读入后不一定是1若先执行置1操作则可以使场效应管截止引脚信号直接加到三态缓冲器中实现正确的读入由于在输入操作时还必须附加一个准备动作所以这类I/O口被称为准双向口89C51的P0/P1/P2/P3口作为输入时都是准双向口接下来让我们再看另一个问题从图中可以看出这四个端口还有一个差别除了P1口外P0P2P3口都还有其他的功能
RST:复位输入。
当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。
ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存
地址的地位字节。
在FLASH编程期间,此引脚用于输入编程脉冲。
在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。
因此它可用作对外部输出的脉冲或用于定时目的。
然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。
如想禁止ALE的输出可在SFR8EH地址上置0。
此时,ALE只有在执行MOVX,MOVC指令是ALE才起作用。
另外,该引脚被略微拉高。
如果微处理器在外部执行状态ALE禁止,置位无效。
/PSEN:外部程序存储器的选通信号。
在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。
但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。
/EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。
注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。
在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。
XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。
XTAL2:来自反向振荡器的输出。
以上所讲的是8951的引脚功能,下面结合程序讲一下如何使用,方便初学的朋友理解:
一单片机I/O口的输出实验
1实验程序
程序如下
ORG 0000H
AJMP LOOP
LOOP:MOV SP,#65H;//保护堆栈,养成习惯MOV P1,#0FFH ;
LCALL DELAY ;
MOV P1,#00H ;
LCALL DELAY ;
LJMP LOOP ;
DELAY:MOV R7,#250 ;
D1:MOV R6,#250 ;
D2:DJNZ R6,D2 ;
DJNZ R7,D1 ;
RET ;
END
将以上写入MEDWIN编译软件,源代码编译生成HEX文件,烧写到实验板看到了什么8只LED灯都在闪烁
2程序分析
这段程序和教程里的程序比较有两处不同第1条原来是SETB P1.0现在改为MOV P1#0FFH第3条原来是CLR P1现在改为MOV P1#00H为什么这样改了之后就变成了8只LED灯同时闪烁了原来P1代表了P1.7-P1.0的全部我们把它当作一个存储器单元即一个字节不过对一个存储器单元送数就应该用MOV 指令了在这里P1P1.7-P1.0接的是LED灯也就是负载它起到了一个输出端的作用那如果把P1改为P0或P2或P3行不行呢答案是肯定的为什么我们稍后再谈接着看第2个实验
二单片机I/O口的输入实验
1实验程序
程序如下
MAIN:MOV P3,#0FFH ;
LOOP:MOV A,P3 ;
MOV P1,A ;
LJMP LOOP ;
END.
同样的方法把程序搞到单片机实验板上按下第1个按钮有一个LED灯亮了按下第2个按钮另一个LED灯亮了松开按钮相应的灯就灭了是不是有点象工业控制中的点动控制原理分析一下这个程序
3.振荡器特性:
XTAL1和XTAL2分别为反向放大器的输入和输出。
该反向放大器可以配置为片内振荡器。
石晶振荡和陶瓷振荡均可采用。
如采用外部时钟源驱动器件,XTAL2应不接。
有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度。
4.芯片擦除:
整个PEROM阵列和三个锁定位的电擦除可通过正确的控制信号组合,并保持ALE管脚处于低电平10ms 来完成。
在芯片擦操作中,代码阵列全被写“1”且在任何非空存储字节被重复编程以前,该操作必须被执行。
此外,AT89C51设有稳态逻辑,可以在低到零频率的条件下静态逻辑,支持两种软件可选的掉电模式。
在闲置模式下,CPU停止工作。
但RAM,定时器,计数器,串口和中断系统仍在工作。
在掉电模式下,保存RAM
的内容并且冻结振荡器,禁止所用其他芯片功能,直到下一个硬件复位为止。
AT89C2051是一带有2KB FLASH可编程、可擦除只读存储器(EEPROM)的低电压、高性能8位CMOS微型计算机,引脚如上图。
.主要性能:
. 和MCS-51产品兼容;
. 2KB可重编程FLASH存储器(1000次);
. 2.7-6V电压范围;
· 全静态工作:0Hz-24KHz
· 2级程序存储器保密锁定
· 128*8位内部RAM
· 15条可编程I/O线
· 两个16位定时器/计数器
·6个中断源
· 可编程串行通道
· 直接LED驱动输出
· 片内振荡器和时钟电路
. 片内模拟比较器
很多初学51单片机的网友会有这样的问题:AT89S51是什么?89S51、89S52是ATMEL公司的升级产品完全兼容89C51/52产品,为适用市场竞争新增一些功能,89C51/52已经停产为方便网友学习本网站继续提供89C系列产品。
不过在市场化方面,89C51受到了PIC单片机阵营的挑战,89C51最致命的缺陷在于不支持ISP(在线更新程序)功能,必须加上ISP功能等新功能才能更好延续MCS-51的传奇。
89S51就是在这样的背景下取代89C51的,现在,89S51目前已经成为了实际应用市场上新的宠儿,89S51在工艺上进行了改进,89S51采用0.35新工艺,成本降低,而且将功能提升,增加了竞争力。
89SXX可以像下兼容89CXX等51系列芯片。
同时,Atmel不再接受89CXX的定单,大家在市场上见到的89C51实际都是Atmel前期生产的巨量库存而以。
89S51相对于89C51增加的新功能包括:
-- 新增加很多功能,性能有了较大提升;
-- ISP在线编程功能,这个功能的优势在于改写单片机存储器内的程序不需要把芯片从工作环境中剥离。
是一个强大易用的功能。
-- 工作频率为33MHz,大家都知道89C51的极限工作频率只有24M,就是说S51具有更高工作频率,从而具有了更快的计算速度。
-- 具有双工UART串行通道。
-- 内部集成看门狗计时器,不再需要像89C51那样外接看门狗计时器单元电路。
-- 双数据指示器。
-- 电源关闭标识。
-- 全新的加密算法,这使得对于89S51的解密变为不可能,程序的保密性大大加强,这样就可以有效的保护知识产权不被侵犯。
-- 兼容性方面:向下完全兼容51全部字系列产品。
比如8051、89C51等等早期MCS-51兼容产品。
在89c51上一样可以照常运行,这就是所谓的向下兼容。
AT89S51看门狗程序例子如下:
要激活AT89S51,89S52的看门狗功能,只需依次向#0A6H单元送入#01EH和#0E1H即可使看门狗定时计数器工作。
AJMP MAIN
MAIN:
;启动看门狗
Mov 0A6H,#01EH ;先送1E
Mov 0A6H,#0E1H ;后送E1
;主程序
START:
....
.....
....
ACALL WDT ;调用复位看门狗子程序
....
.....
AJMP START
;主程序*****************************************
;复位看门狗子程序
WDT:
Mov 0A6H,#01EH ;先送1E
Mov 0A6H,#0E1H ;后送E1
RET
END
注意事项:
1.89S51的看门狗必须由程序激活后才开始工作。
所以必须保证CPU有可靠的上电复位。
否则看门狗也无法工作。
2.看门狗使用的是CPU的晶振。
在晶振停振的时候看门狗也无效。
3.89S51只有14位计数器。
在16383个机器周期内必须至少喂狗一次。
而且这个时间是固
定的,无法更改。
当晶振为12M时每16个毫秒需喂狗一次。