AT89S52单片机的最小系统
AT89S52单片机的引脚(P1口)
P1.0—P1.7: 准双向I/O口(内置了上拉电阻) 输出时一切照常,在作输入口用时要先对其 写“1”。
P1.0—P1.7: 准双向I/O口(内置了上拉电阻) 输出时一切照常,仅在作输入口用时要先对其 写“1”。
P1.0—P1.7: 准双向I/O口(内置了上拉电阻) 输出时一切照常,仅在作输入口用时要先对其 写“1”。在读数据之前,先要向相应的锁存器做写1操作的I/O口称为准双向口;
P0.0—P0.7: 双向I/O (内置场效应管上拉)
寻址外部程序存储器时分时作为双向8位数据口和输出低8位地址复用口;不接外部程序存储器时可作为8位准双向I/O口使用。
P2.0—P2.7: 双向I/O (内置了上拉电阻)
寻址外部程序存储器时输出高8位地址;不接外部程序存储器时可作为8位准双向I/O口使用。
P3.0—P3.7: 双功能口(内置了上拉电阻)
它具有特定的第二功能。在不使用它的第二功能时它就是普通的通用准双向I/O口。
引 脚 P3.0 P3.1 P3.2 P3.3 P3.4 P3.5 P3.6 P3.7
第 二 功 能
RxD: 串行口接收数据输入端 TxD: 串行口发送数据输出端 INT0: 外部中断0输入端 INT1: 外部中断1输入端 T0: 外部计数0脉冲输入端 T1: 外部计数1脉冲输入端 WR: 写外设控制信号输出端 RD: 读外设控制信号输出端
51单片机的8个特殊引脚
Vcc, GND: 电源端
XTAL1, XTAL2: 片内振荡电路输入、输出端 RESET: 复位端 正脉冲有效(宽度10 mS) EA/Vpp: 寻址外部ROM控制端。低有效 片内有ROM时应当接高电平。
ALE/PROG: 地址锁存允许控制端。
PSEN:选通外部ROM的读(OE)控制端。 低有效
51单片机的4个8位的I/O口
P0.0—P0.7:8位数据口和输出低8位地址复用口
(复用时是双向口;不复用时也是准双向口) P1.0—P1.7: 通用I/O口(准双向口) P2.0—P2.7: 输出高8位地址
(用于寻址时是输出口;不寻址时是准双向口) P3.0—P3.7: 具有特定的第二功能(准双向口)
注意:在不外扩ROM/RAM时,P0~P3均可作通用I/O口使用,而且都是准双向I/O口!
P0口需外接上拉电阻 P1—P3 可接也可不接 在用作输入时 都需要先置 ”1”
矩阵键盘
1. 键扫描
键扫描就是要判断有无键按下,当扫描到有键按下时再进行下一步处理,否则退出键盘处理程序。独立式键盘扫描只需读取IO口状态,而矩阵式键盘描通常有两种实现方法:逐行扫描法和线反转法。
(1) 逐行扫描法。依次从第一至最末行线上发出低电平信号, 如果该行线所连接的键没有按下的话, 则列线所接的端口得到的是全“1”信号, 如果有键按下的话, 则得到非全“1”信号。
(2)线反转法。
线反转法也是识别闭合键的一种常用方法, 该法比行扫描速度快, 但在硬件上要求行线与列线外接上拉电阻。
先将行线作为输出线, 列线作为输入线, 行线输出全“0”信号, 读入列线的值, 那么在闭合键所在的列线上的值必为0;然后从列线输出全“0”信号,再读取行线的输入值,闭合键所在的行线值必为 0。这样,当一个键被按下时, 必定可读到一对唯一的行列值。再由这一对行列值可以求出闭合键所在的位置。
(1)硬件消抖法:就是在键盘中附加去抖动电路,从根上消除抖动产生的可能性。右图所示电路实际上是由R-S触发器构成的单脉冲电路。当按钮开关按下时Q端输出低电平,当开关松开时Q端恢复高电平,即输出一个负脉冲,以此消除抖动。
(2)软件消抖法:键按下的时间与操作者的按键动作有关,约为十分之几到几秒不等。而键抖动时间与按键的机械特性有关,一般为5~10ms不等。软件消抖法即是采用延时(一般延时10~20ms)的方法,以避开按键的抖动,即在按键已稳定地闭合或断开时才读出其状态。
3. 计算键码
键码是每个按键的标识。被按键确定下来之后,接下来的工作是计算闭合键的键码,然后才能根据键码进行对应的操作。
为编程方便,键码通常都是以键的排列顺序安排,按照从左到右、从上向下的顺序编排。键码可根据行号列号以查表求得,也可通过计算得到。我们将结合实例加以介绍。
键盘接口的控制方式
在单片机的运行过程中,何时进行键盘扫描和处理,可有下列三种情况: 1.查询方式:单片机通过调用键盘扫描子程序,查询有无键按下。 2.定时扫描方式:每隔一定时间执行一次键盘扫描子程序。 3.中断方式:每当有键闭合时才向CPU发出中断请求,中断服务时进行键盘扫描和处理。
AT89S52单片机内部结构简图
AT89S52的引脚
Vcc, GND:正电源端与接地端(+5V)
XTAL1, XTAL2: 片内振荡电路输入、输出端 CPU都是按照一定的时钟节拍与时序进行工作: 时钟周期:
Tc=晶振频率fosc的倒数 机器周期:Tm==12个时钟周期(Tc)
指令周期: Ti:执行一条指令所需的机器周期(Tm)数
例: 晶振频率是12M 时 一个机器周期需要多长时间? Tc= 1/fosc=1/12Mhz
Tm=12XTc =12X1/12Mhz = 1us
Vcc, GND: 电源端 (+5V)
XTAL1, XTAL2: 片内振荡电路输入、输出端 RESET: 复位端(正脉冲有效,宽度10 mS)
EA/Vpp: 寻址外部ROM控制端/编程电源输入端。 低有效,片内无ROM时必须接地; 片内有ROM时应当接高电平;
因篇幅问题不能全部显示,请点此查看更多更全内容