单片机应用和原理课件 AT89S51与输入 输出外部设备的接口 演示文稿

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
15
10.2 键盘接口原理 键盘具有向单片机输入数据、命令等功能,是人与单片机 对话的主要手段。下面介绍键盘的工作原理和键盘的工作方 式。 10.2.1 键盘输入应解决的问题 1.键盘的任务 任务有三项: (1) 判别是否有键按下?若有,进入下一步工作。 (2)识别哪一个键被按下,并求出相应的键值。 (3)根据键值,找到相应键值的处理程序入口。
5
6
表10-1只列出了部分段码,读者可以根据实际情况选用, 或重新定义。除 “8”字型的LED数码管外,市面上还有 “±1”型、“米”字型和“点阵”型LED显示器,如图 10-2。本章以“8”字型的数码管为例。
图10-2 其他各种字型的LED显示器
7
10.1.2 LED数码管工作原理
图10-3为显示4位字符的数码管的结构原理图。N位位 选线和8 N条段码线。段码线控制显示字型,而位选线 控制着该显示位的LED数码管的亮或暗。
KEY1: MOV C,P1.1;读P1.1的按键状态 JC KEY2 ;P1.1为高,该键未按下,跳KEY2, ;判下一个键 LJMP PKEY1 ;P1.1的键按下,跳PKEY1处理
24
KEY2: MOV C,P1.2 JC KEY3
LJMP PKEY2 KEY3: MOV C,P1.3
…… …… KEY7: MOV C,P1.7 JC RETURN
LJMP PKEY7 RETURN: RET
;读P1.2的按键状态 ;P1.2为高,该键未按下,跳 ;KEY3,判下一个键 ;P1.2的键按下,跳PKEY2处理 ;读P1.3的按键状态
;读P1.7的按键状态 ;P1.7为高,该键未按下,跳 ;RETURN处 ;P1.7的键按下,跳PKEY7处理 ;子程序返回
20
图10-8 独立式键盘接口电路
对于图10-8的键盘,图中上拉电阻保证按键释放时,输入 检测线上有稳定的高电平。
当某一按键按下时,对应检测线就变成低电平,与其它按 键相连的检测线仍为高电平,只需读入I/O输入线的状态, 判别哪一条I/O输入线为低电平,很容易识别哪个键被按下。
优点:电路简单,各条检测线独立,识别按下按键的软件 编写简单。适用于键盘按键数目较少的场合,不适用于键盘 按键数目较多的场合,因为将占用较多I/O口线。
① 扫描法。第1步,识别键盘有无键按下;第2步,如有 键被按下,识别出具体的键位。
以图10-9所示的键3按下为例,说明识别过程。
28
第1步,识别键盘有无键按下。先把所有列线均置0,然后 检查各行线电平是否都为高,如果不全为高,说明有键按下, 否则无键被按下。
例如,当键3按下时,第1行线为低,还不能确定是键3被按 下,因为如果同一行的键2、1或0之一被按下,行线也为低电 平。只能得出第1行有键被按下的结论。
第2步,识别出哪个按键被按下。采用逐列扫描法,在某一 时刻只让一列线处于低电平,其余列线处于高电平。
当第1列为低电平,其余各列为高电平时,因为是键3被按 下,第1行的行线仍处于高电平;
29
当第2列为低电平,其余各列为高电平时,第1行的行线仍处 于高电平;
直到让第4列为低电平,其余各列为高电平时,此时第1行的 行线电平变为低电平,据此,可判断第1行第4列交叉点处 的按键,即键3被按下。
12
图10-5 4位8段LED动态显示电路
13
虽然这些字符是在不同时刻出现,而在同一时刻,只有一 位显示,其他各位熄灭,由于余辉和人眼的“视觉暂留”作 用,只要每位显示间隔足够短,则可以造成“多位同时亮” 的假象,达到同时显示的效果。
LED不同位显示的时间间隔(扫描间隔)应根据实际情况 而定。显示位数多,将占大量的单片机时间,因此动态显示 的实质是以牺牲单片机时间来换取I/O端口的减少。
综上所述,扫描法思想:先把某一列置为低电平,其余各列 置为高电平,检查各行线电平的变化,如果某行线电平为 低电平,则可确定此行此列交叉点处的按键被按下。
② 线反转法。扫描法要逐列扫描查询,有时则要多次扫 描。而线反转法则很简练,无论被按键是处于第一列或最后 一列,均只需经过两步便能获得此按键所在的行列值,下面 以图10-10的矩阵式键盘为例,介绍线反转法的具体步骤。 让行线编程为输入线,列线编程为输出线,并使输出线输 出为全低电平,则行线中电平由高变低的所在行为按键所在 行; 再把行线编程为输出线,列线编程为输入线,并使输出线 输出为全低电平,则列线中电平由高变低所在列为按键所在 列。
图10-6所示为8位LED动态显示2009.10.10的过程。图106(a)所示为显示过程,某一时刻,只有一位LED被选通显 示,其余位则是熄灭的;图10-6(b)所示为实际的显示结 果,人眼看到的是8位稳定的同时显示的字符。
14
图10-6 8位LED动态显示过程和结果
动态显示优点:硬件电路简单,数码管越多,优势越明显。 缺点:显示亮度不如静态显示的亮度高。如果“扫描”速率 较低,会出现闪烁现象。
26
图10-9 矩阵式键盘接口
27
矩阵中无键按下时,行线为高电平;当有键按下时,行线 电平状态将由与此行线相连的列线的电平决定。列线电平如 为低,则行线电平为低;列线电平如果为高,则行线电平也 为高,这是识别按键是否按下的关键所在。
由于矩阵式键盘中行、列线为多键共用,各按键彼此将相 互发生影响,所以必须将行、列线信号配合,才能确定闭合 键位置。下面讨论矩阵式键盘按键的识别方法。
第10章 AT89S51单片机与输入/输 出
外设的接口
1
内容概要 大多数的单片机应用系统,都要配置输入外设和输出外设。 常用的输入外设有键盘、BCD码拨盘等;常用的输出外设有 数码管、LCD显示器、打印机等。 本章介绍AT89S51与各种输入外设、输出外设的接口设 计以及软件编程。
2
10.1 LED数码管的显示原理 LED(Light Emitting Diode)发光二极管缩写。LED数码
22
识别某一键是否按下的子程序:
KEYIN: MOV P1,0FFH;P1口写入1,设置P1口为输入状态
MOV A,P1
;读入8个按键的状态
CJNE A,#0FFH,QUDOU;有键按下,跳去抖动
LJMP RETURN
;无键按下,返回
QUDOU:MOV R3,A
;8个按键的状态送R3保存
LCALL DELAY10
9
图10-4为4位LED数码管静态显示器电路,各位可独立显 示,静态显示方式接口编程容易,但是占用口线较多。对图 10-4电路,若用I/O口线接口,要占用4个8位I/O口。显示位 数较多,所需的电流比较大,对电源要求也就随之增高,这 时一般都采用动态显示方式。
2.LED动态显示方式 无论在任何时刻只有一个LED数码管处于显示状态,即单 片机采用“扫描”方式控制各个数码管轮流显示。
3
图10-1 8段LED数码管结构及外形
4
为了使数码管显示不同的符号或数字,要把某些段发光二 极管点亮,就要为LED数码管提供段码(字型码)。
LED数码管共计8段。正好是一个字节。习惯上是以“a” 段对应段码字节的最低位。各段与字节中各位对应关系如表 10-1所示。
按上述格式,显示各种字符的8段LED数码管的段码如表 10-2所示。
3.按键的识别 键的闭合与否,行线输出电压上就是呈现高电平或低电平。 高电平,表示键断开,低电平则表示键闭合,通过对行线电 平的高低状态的检测,可确认按键按下以及按键释放与否。 为了确保对一次按键动作只确认一次按键有效,必须消除抖 动期t1和t3的影响。
18
4.如何消除按键的抖动 去抖动方法两种: 一种软件延时,思想:在检测到有键按下时,该键所对应 的行线为低电平,执行延时10ms子程序后,确认该行线电 平是否仍为低电平,如果仍为低电平,则确认该行确实有键 按下。当按键松开时,行线的低电平变为高电平,执行延时 10ms子程序后,检测该行线为高电平,说明按键确实已经 松开。采取本措施,可消除两个抖动期t1和t3的影响。 另一种是采用专用的键盘/显示器接口芯片,这类芯片中 都有自动去抖动的硬件电路。
;调用延时子程序,软件去键抖动
MOV A,P1
;再一次读入8个按键的状态
CJNE A,R3,RETURN;两次键值比较,不同, ;是抖动引起,转RETURN
23
KEY0: MOV C,P1.0;有键按下,读P1.0的按键状态 JC KEY1 ;P1.0为高,该键未按下,跳KEY1, ;判下一个键 LJMP PKEY0 ;P1.0的键按下,跳PKEY0处理
10
图10-4 4位LED静态显示电路
11
在多位LED显示时,为简化硬件电路,将各显示位的段 码线的相应段并联在一起,由一个8位I/O口控制,而各位的 共阳极或共阴极分别由相应的I/O线控制,形成各位的分时选 通。
图10-5所示为一个4位8段LED动态显示电路。其中段码 线占用一个8位I/O口,而位选线占用一个4位I/O口。须采用 动态的“扫描”显示方式。即在某一时刻,只让某一位的位 选线处于选通状态,而其他各位的位选线处于关闭状态,同 时,段码线上输出相应位要有显示的字符的段码。
图10-3 4位LED数码管的结构原理图
8
数码管有静态显示和动态显示两种显示方式。 1.静态显示方式 无论多少位LED数码管,同时处于显示状态。 静态显示方式,各位共阴极(或共阳极)连接在一起并接 地(或接+5V);每位的段码线(a~dp)分别与一个8位的 I/O口锁存器输出相连。如果送往各个LED数码管所显示字符 的段码一经确定,则相应I/O口锁存器锁存的段码输出将维 持不变,直到送入另一个字符的段码为止。正因为如此,静 态显示方式的显示无闪烁,亮度都较高,软件控制较容易。
管是由发光二极管构成的。
10.1.1 LED数码管的结构 常见的LED数码管为“8”字型,共8段。每一段对应一
个发光二极管。有共阳极和共阴极两种,如图10-1。共阴极 发光二极管的阴极连在一起,通常公共阴极接地。当阳极为 高电平时,发光二极管点亮。
同样,共阳极LED数码管的发光二极管的阳极连接在一起, 公共阳极接正电压,当某个发光二极管的阴极接低电平时, 发光二极管被点亮,相应的段被显示。
19
10.2.2 键盘的工作原理 键盘可分为两类:非编码键盘和编码键盘。 非编码键盘是利用按键直接与单片机相连接而成,这种键盘 通常用在按键数量较少的场合。使用这种键盘,系统功能通常 比较简单,需要处理的任务较少,但是可降低成本、简化电路 设计。按键的信息通过软件来获取。 1.非编码键盘 常见的为两种结构:独立式键盘和矩阵式键盘。 (1)独立式键盘 特点是:一键一线,各键相互独立,每个键各接一条I/O口 线,通过检测I/O输入线的电平状态,可容易地判断哪个按键 被按下。如图10-8。
25
软件延时10ms子程序编写,参见第4章。 8个按键的键处理程序PKEY0~ PKEY7,根据按键的功能 要求编写。注意,在进入键处理程序后,需先等待按键释放, 再执行键处理功能。在键处理程序完成后,一定要跳向 RETURN标号处返回。 (2)矩阵式键盘 矩阵式(行列式)键盘用于按键数目较多的场合,由行线 和列线组成,按键位于行、列的交叉点上。如图10-9所示, 一个44的行、列结构可构成一个16键键盘。在键数目较多 场合,要节省较多I/O口线。
16
2.键盘输入的特点 常见:触摸式键盘、薄膜键盘和按键式键盘。 常用按键式键盘,实质就是一个开关。如图10-7(a)所 示,按键开关的两端分别连接在行线和列线上,通过键盘开 关机械触点的断开、闭合,其行线电压输出波形如图10-7 (b)所示。
图10-7 键盘开关及其行线波形 17
图10-7(b)的t1和t3分别为键的闭合和断开过程中的抖动 期(呈现一串负脉冲),抖动时间长短与开关的机械特性有 关,一般为5~10ms,t2为稳定的闭合期,其时间由按键动 作确定,一般为十分之几秒到几秒,t0、t4为断开期。
31
两步即确定按键所在的行和列,从而识别出所按的键。
图10-10 采用线反转法的矩阵式键盘
32
假设键3被按下。 第一步,P1.0~P1.3输出全为“0”,然后,读入P1.4~ P1.7线的状态,结果P1.4=0,而P1.5~P1.7均为1,因此, 第1行出现电平的变化,说明第1行有键按下; 第二步,让P1.4~P1.7输出全为“0”,然后,读入 P1.0~P1.3位,结果P1.0=0,而P1.1~P1.3均为1,因此第 4列出现电平的变化,说明第4列有键按下。 综上所述,即第1行、第4列按键被按下,此按键即键3按 下。线反转法简单适用,但要按键去抖动处理。
相关文档
最新文档