51单片机外围硬件资源
一.MCS-51单片机基本特性
♦ 8 位的 CPU , 片内有振荡器和时钟电路, 工作频率为1 ~ 12MHz
(Atmel 89Cxx为0~24MHz)
♦ 片内有 128/256字节 RAM
♦ 片内有 0K/4K/8K字节 程序存储器ROM
♦ 可寻址片外 64K字节 数据存储器RAM
♦ 可寻址片外 64K字节 程序存储器ROM
♦ 片内 21/26个 特殊功能寄存器(SFR)
♦ 4个8位 的并行I/O口(PIO)
♦ 1个 全双工串行口(SIO/UART)
♦ 2/3个16位 定时器/计数器(TIMER/COUNTER)
♦ 可处理 5/6个中断源,两级中断优先级
♦ 内置1个布尔处理器和1个布尔累加器(Cy)
♦ MCS-51指令集含 111条指令(用C语言不需要记指令的)
典型的单片机基本构成:
二.认识单片机的引脚
1.电源端
Vcc, GND: 正电源端与接地端(+5V/3.3V/2.7V)不同的单片机可以允许不同的工作电压,不同的单片机表现出的功耗也不同。
2.晶振端
XTAL1, XTAL2: 片内振荡电路输入/输出端。
3.复位端
RESET: 复位端(正脉冲有效,宽度>8mS)
复位使单片机进入某种确定的初始状态:
▼ PC值归零(0000H);
▼ 各个SFR被赋予初始值:
P0~P3 = 0FFH,Acc = 0,B = 0,TH0=0,
TL0=0,TH1=0,TL0=0,SP=7,PSW=0 ……
▼退出处于节电工作方式的停顿状态、退出一切程序进程、退出程序的死循环,从头开始。
4.EA端
EA/Vpp: 寻址外部ROM控制端/编程电源输入端。
低有效,片内无ROM时必须接地;
片内有ROM时应当接高电平;
对片内ROM编程时编程正电源加到此端。
5.ALE端
ALE/PROG: 地址锁存允许/编程脉冲输入端。
P0口寻址外部低8位地址时接外部锁存器 G端;
ALE端平时会输出周期正脉冲:f ≈ fosc/6 ;
对片内ROM编程时编程脉冲由此端加入。
6.PSEN端
PSEN:寻址外部程序存储器时选通外部EPROM的读控制端(OE)低有效。
三.蜂鸣器
由于蜂鸣器的工作电流一般比较大,以致于单片机的I/O 口是无法直接驱动的,所以要利用放大电路来驱动,一般使用三极管来放大电流就可以了。
四.独立键盘
按键一般是利用机械触点的闭合、断开作用,由于机械触点的弹性作用,在其闭合、断开瞬间均右抖动过程,抖动时间一般在5—10mS,稳定闭合时间由操作人员的按键动作决定,一般为零点几秒到几秒。为了保证单片机对一次闭合,仅作一次键输入操作,必须在编程时候编写必要的程序代码来去除抖动影响,称键盘软件消抖。
按键在闭合和断开时,触点会存在抖动现象:
五.窜口
1.工作方式寄存器SCON
RI:接收中断标志位
接收结束时,会由硬件置1,向CPU发出中断请求。(要由软件复位)
TI:发送中断标志位
发送结束时,会由硬件置1,向CPU发出中断请求。要由软件复位)
TB8:用来存放发送的第9位。
RB8:用来存放接收的第9位。
REN:是串行接收允许位
0时:允许串行接收
1时:禁止串行接收
2.工作方式寄存器PCON
PCON是没有位寻址的,也就是说不能直接操作SMOD要直接操作PCON寄存器。
SMOD:是波特率是否加倍的选择位。
0时:波特率不加倍。
1时:波特率加倍。
3.波特率的概念
波特率的定义是:串行口每秒钟发送的位数称为波特率。
比如说2400的波特率就是没秒钟发送2400个位数。
串行口的波特率是用定时器T1作为波特率发生器的,这是定时器自动设置在工作方式2(可自动重装初值)。
波特率=(2SMOD)/32定时器T1的溢出率
定时器T1的溢出率=单片机内部时钟频率/(256-X)
X是定时器的初值
波特率=(2SMOD)/32(单片机内部时钟频率/(256-X))