单片机是什么?
在学之前必须要明白这个东西是什么,怎么用,为什么能这样用。理解这三个问题,那么51单片机就可以学得很好。
单片机的对比
这里只对8051与8052进行对比:
型号 Flash(ROM) RAM I/O 定时/计数器 中断源 引脚数
AT89C51 4KB 128B 32 2 5 40
AT89c52 8KB 256B 32 3 8 40
引脚描述
20引脚VSS:电源负极
40引脚VCC:电源正极(+5V)
19引脚XTAL1:片内时钟振荡器的输入端;当使用片内时钟振荡器时,这个引脚接石英晶体和微调电容。
18引脚XTAL2:片内时钟振荡器的输出端;当使用片内时钟振荡器时,这个引脚接石英晶体和微调电容。
9引脚RST:复位信号输入端;高电平有效(无效状态电平必须低于0.5V)。
31引脚EA/Vpp:
EA=1,访问片内程序存储器,但在PC(程序计数器)值 超过0FFFH时,即超出片内程序存储器的4K字节地址范围时,将自动转向执行外部程序存储器内的程序。
EA=0,单片机只访问外部程序存储器
Vpp:对片内Flash进行编程时,该引脚接入编程电压。
通常情况下,将此引脚与VCC接在一起。
30引脚ALE/PROG:
ALE:地址锁存控制信号端。不访问外部ROM与RAM时不使用。
PROG:为编程脉冲输入端。
29引脚PSEN:片外程序存储器的选通信号,低电平有效。
以下为I/O端口:
P0:
第一功能:8位,漏极开路的双向I/O口。用时要加上拉电阻。
第二功能:低8位地址线和8位数据线分时复用;此时为真正的双向三态口。
电源时钟,晶振电路
1、内部时钟方式
1.起振电容C1和C2典型值15~33pF,通常选择为30pF的瓷片电容。
2.晶体的振荡频率一般为12MHz(方便定时计算)和 11.0592MHz(方便串口波特率设置)。
3.晶体和电容尽量安装得与单片机靠近。
2、外部时钟方式
这种方式常用于多片单片机同时工作。
时序
1、时钟周期: 单片机的基本时间单位。若时钟的晶体的振荡频率为fosc,则时钟周期Tosc=1/fosc。
2、机器周期:CPU完成一个基本操作所需的时间称为机器周期。
AT89S51单片机每12个时钟周期为1个机器周期。
通常,一条指令的执行要分为好几个基本操作,每个基本操作耗时一个机器周期。
3、指令周期:指令周期是执行一条指令所需的时间。
单片机的指令按字节可分为单字节(1个机器周期)、双字节(2个机器周期)、三字节指令(3个机器周期),乘法、除法指令需要(4个机器周期),因此执行一条指令的时间也不相同。
时钟周期==1/fosc ; 机器周期=12*时钟周期 ; 指令周期=1~4机器周期。当使用12M晶振,执行单字节指令的时间 t=12*(1/fosc)=12*(1/12M)=1us。
复位电路
上电自动复位电路:引脚RST加上大于2个机器周期的高电平(2us)就可使单片机复位。
1.工程上通常认为t=3rc~5rc,充放电结束。
2.先确定复位时间t,然后根据条件确定rc。
最小系统
复位电路的探讨: 若采用上图制作复位电路,使上电延迟100ms复位,选择10K电阻,则计算出电容为109mF,选择100mF。典型值通常选取,10K与10uF,则上电复位时间为:51ms
晶振电路的探讨: 上面已经说了…
I/O口的探讨:“灌电流”:由外设向单片机引脚灌入电流,此时单片机输出低电平;“拉电流”:由单片机引脚向外设输出电流,此时单片机输出高电平;P0口的灌电流最大电流可达26mA,其他I/O稍弱些。而拉电流比较差,大概在1mA。所以通常是以低电平点亮LED灯。P0口用做通用I/O时,需加上拉电阻(1~10K),否则P0口作地址 / 数据总线。