初步认识 51 芯片
2017-10-11 12:04
169 查看
初步认识 51 芯片
C 语言只是一种程序语言的统称,针对不同的处理器相关的 C 语言都会有一些细节的改变。编写 PC 机的 C 程序时,如要对硬件编程您就必须对硬件要有一定的认识,51 单片机编程就更是如此,因它的开发应用是不可与硬件脱节的,所以我们先要来初步认识一下 51 苾片的结构和引脚功能。MSC51 架构的芯片种类很多,具体特点和功能不尽相同(在以后编写的附录中会加入常用的一些 51 芯片的资料列表),在此后的教程中就以 Atmel 公司的 AT89C51 和 AT89C2051 为中心对象来进行学习,两者是AT89系列的典型代表,在爱好者中使用相当的多,应用资料很多,价格便宜,是初学 51 的首选芯片。
图 2-1 AT89C51 和 AT89C2051 引脚功能图
AT89C51 AT89C2051 | AT89C51 AT89C2051 |
4KB 可编程 Flash 存储器(可擦写 1000 次) 2KB 可编程 Flash 存储器(可擦写 1000 次) | 4KB 可编程 Flash 存储器(可擦写 1000 次) 2KB 可编程 Flash 存储器(可擦写 1000 次) |
三级程序存储器保密 两级程序存储器保密 | 三级程序存储器保密 两级程序存储器保密 |
静态工作频率:0Hz-24MHz 静态工作频率:0Hz-24MHz | 静态工作频率:0Hz-24MHz 静态工作频率:0Hz-24MHz |
128 字节内部 RAM 128 字节内部 RAM | 128 字节内部 RAM 128 字节内部 RAM |
2 个 16 位定时/计数器 2 个 16 位定时/计数器 | 2 个 16 位定时/计数器 2 个 16 位定时/计数器 |
一个串行通讯口 一个串行通讯口 | 一个串行通讯口 一个串行通讯口 |
6 个中断源 6 个中断源 | 6 个中断源 6 个中断源 |
32 条 I/O 引线 15 条 I/O 引线 | 32 条 I/O 引线 15 条 I/O 引线 |
片内时种振荡器 1 个片内模拟比较器 | 片内时种振荡器 1 个片内模拟比较器 |
以上可以看出它们是大体相同的,由于 AT89C2051 的 IO 线很少,导致它无法外加 RAM 和程序 ROM,片内 Flash 存储器也少,但它的体积比 AT89C51 小很多,以后大家可根据实际需要来选用。它们各有其特点但其核心是一样的,下面就来看看 AT89C51 的引脚具体功能。
1.电源引脚
Vcc 40 电源端
GND 20 接地端
*工作电压为 5V,另有 AT89LV51 工作电压则是 2.7-6V, 引脚功能一样。
2. 外接晶体引脚
图 2-2 外接晶体引脚
XTAL1 19
XTAL2 18
XTAL1 是片内振荡器的反相放大器输入端,XTAL2 则是输出端,使用外部振荡器时,外部振荡信号应直接加到 XTAL1,而 XTAL2 悬空。内部方式时,时钟发生器对振荡脉冲二分频,如晶振为12MHz,时钟频率就为6MHz。晶振的频率可以在1MHz-24MHz内选择。电容取 30PF 左右。
*型号同样为 AT89C51 的芯片,在其后面还有频率编号,有 12,16,20,24MHz 可选。大家在购买和选用时要注意了。如 AT89C51 24PC 就是最高振荡频率为 24MHz,40P6 封装的普通商用芯片。
3.复位 RST 9
在振荡器运行时,有两个机器周期(24 个振荡周期)以上的高电平出现在此引腿时,将使单片机复位,只要这个脚保持高电平,51 芯片便循环复位。复位后 P0-P3 口均置 1 引脚表现为高电平,程序计数器和特殊功能寄存器 SFR 全部清零。当复位脚由高电平变为低电平时,芯片为 ROM 的 00H 处开始运行程序。常用的复位电路如图 2-3 所示。
*复位操作不会对内部 RAM 有所影响。
图 2-3 常用复位电路
4.输入输出引脚
(1) P0 端口[P0.0-P0.7] P0 是一个 8 位漏极开路型双向 I/O 端口,端口置 1(对端口写 1)时作高阻抗输入端。作为输出口时能驱动 8 个 TTL。
对内部 Flash 程序存储器编程时,接收指令字节;校验程序时输出指令字节,要求外接上拉电阻。在访问外部程序和外部数据存储器时,P0 口是分时转换的地址(低 8 位)/数据总线,访问期间内部的上拉电阻起作用。
(2) P1 端口[P1.0-P1.7] P1 是一个带有内部上拉电阻的 8 位双向 I/0 端口。输出时可驱动 4 个 TTL。端口置 1 时,内部上拉电阻将端口拉到高电平,作输入用。对内部 Flash 程序存储器编程时,接收低 8 位地址信息。
(3) P2 端口[P2.0-P2.7] P2 是一个带有内部上拉电阻的 8 位双向 I/0 端口。输出时可驱动 4 个 TTL。端口置 1 时,内部上拉电阻将端口拉到高电平,作输入用。对内部 Flash 程序存储器编程时,接收高 8 位地址和控制信息。在访问外部程序和 16 位外部数据存储器时,P2 口送出高 8 位地址。而在访问 8位地址的外部数据存储器时其引脚上的内容在此期间不会改变。
(4) P3 端口[P3.0-P3.7] P2 是一个带有内部上拉电阻的 8 位双向 I/0 端口。输出时可驱动 4 个 TTL。端口置 1 时,内部上拉电阻将端口拉到高电平,作输入用。对内部 Flash 程序存储器编程时,接控制信息。除此之外 P3 端口还用于一些专门功能,具体请看 表 2-2。
*P1-3 端口在做输入使用时,因内部有上接电阻,被外部拉低的引脚会输出一定的电流。
P3 引脚 兼用功能 | P3 引脚 兼用功能 |
P3.0 串行通讯输入(RXD) | P3.0 串行通讯输入(RXD) |
P3.1 串行通讯输出(TXD) | P3.1 串行通讯输出(TXD) |
P3.2 外部中断 0( INT0) | P3.2 外部中断 0( INT0) |
P3.3 外部中断 1(INT1) | P3.3 外部中断 1(INT1) |
P3.4 定时器 0 输入(T0) | P3.4 定时器 0 输入(T0) |
P3.5 定时器 1 输入(T1) | P3.5 定时器 1 输入(T1) |
P3.6 外部数据存储器写选通 WR | P3.6 外部数据存储器写选通 WR |
P3.7 外部数据存储器写选通 RD | P3.7 外部数据存储器写选通 RD |
P3 引脚 兼用功能 | P3 引脚 兼用功能 |
呼!一口气说了那么多,停一下吧。嗯,什么?什么叫上拉电阻?上拉电阻简单来说就是把电平拉高,通常用 4.7-10K 的电阻接到 Vcc 电源,下拉电阻则是把电平拉低,电阻接到 GND 地线上。具体说明也不是这里要讨论的,接下来还是接着看其它的引脚功能吧。
5.其它的控制或复用引脚
(1) ALE/PROG 30 访问外部存储器时,ALE(地址锁存允许)的输出用于锁存地址的低位字节。即使不访问外部存储器,ALE 端仍以不变的频率输出脉冲信号(此
频率是振荡器频率的 1/6)。在访问外部数据存储器时,出现一个 ALE 脉冲。对
Flash 存储器编程时,这个引脚用于输入编程脉冲 PROG
(2) PSEN 29 该引是外部程序存储器的选通信号输出端。当 AT89C51 由外部程序存储器取指令或常数时,每个机器周期输出 2 个脉冲即两次有效。但访问外部数据存储器时,将不会有脉冲输出。
(3) EA/Vpp 31 外部访问允许端。当该引脚访问外部程序存储器时,应输入低电平。要使 AT89C51 只访问外部程序存储器(地址为 0000H-FFFFH),这时该引脚必须保持低电平。对 Flash 存储器编程时,用于施加 Vpp 编程电压。Vpp 电压有两种,类似芯片最大频率值要根据附加的编号或芯片内的特征字决定。具体如表2-3 所列。
| Vpp = 12V | Vpp = 5V | ||
印刷在芯片面上的型号 | AT89C51 xxxx YYWW | AT89LV51 xxxx YYWW | AT89C51 xxxx-5 YYWW | AT89LV51 xxxx-5 YYWW |
片内特征字 | 030H=1EH | 030H=1EH | 030H=1EH | 030H=1EH |
031H=51H | 031H=61H | 031H=51H | 031H=61H | |
032H=FFH | 032H=FFH | 032H=05H | 032H=05H |
看到这您对 AT89C51 引脚的功能应该有了一定的了解了,引脚在编程和校验时的时序我们在这里就不做详细的探讨,通常情况下我们也没有必要去撑握它,除非您想自己开发编程器。下来的课程我们要开始以一些简单的实例来讲述 C 程序的语法和编写方法技巧,中间穿插相关的硬件知识如串口,中断的用法等等。
相关文章推荐
- 第二课 初步认识51芯片
- 初步认识:Windows系统服务与Linux系统服务的区别
- HTML初步认识
- javascript DOM编程艺术学习笔记(3)Ajax初步认识:
- 初步认识Springboot的配置和启动Springboot的方式
- XPath的初步认识
- OData的初步认识
- Java 中文问题的初步认识[转载]
- JAVA-初步认识-第一章-环境变量的搭配
- 初步认识下Oracel的ROW_NUMBER()Over(partition by order by )
- Ajax的初步认识
- 黑马程序员(一)-------MAC OS X的初步认识
- android studio 初步认识
- react.js框架Redux:初步认识
- 对Android基于vitamio框架调用第三方播放器播放视频的初步认识
- 对Oracle的初步认识
- js错误之js初步认识之define详解
- HighGUI的初步认识
- 属性动画的初步认识
- C++初步认识 第一章