500 likes | 644 Views
控制理论基础 (II). 课程负责人:杨汝清 教授 曹其新教授. 顾问: 王显正 教授. 交 通 大 学 精 品 课 程 系 列. 2007. 一 键 盘. 15.0 键盘控制的小例子. 15.1 单片机的人机接口. 15.2 按键开关的抖动问题. 15.3 键盘(独立按键)与单片机的连接方式. 15.4 键盘(矩阵式)与单片机的连接方式. 15.5 键输入程序设计方法. 二 显示器与单片机的接口. 15.6 LED 的结构原理. 15.7 LED 显示器的显示方式. 15.8 举例.
E N D
控制理论基础(II) 课程负责人:杨汝清 教授 曹其新教授 顾问: 王显正 教授 交通大学精品课程系列 2007
一 键 盘 15.0 键盘控制的小例子 15.1 单片机的人机接口 15.2 按键开关的抖动问题 15.3 键盘(独立按键)与单片机的连接方式 15.4键盘(矩阵式)与单片机的连接方式 15.5 键输入程序设计方法 二 显示器与单片机的接口 15.6 LED的结构原理 15.7 LED 显示器的显示方式 15.8 举例
15.0 键盘控制的小例子 指令发射机 人机接口 指令接受机
发送机程序设计可以分为三个模块 红外编码程序 液晶驱动程序 键盘扫描程序
一 键 盘 • 键盘是一组按键的组合,它是最常用的单片机输入设备,操作人员可以通过它实现简单的人机通信. • 键盘可以分为:编码键盘和非编码键盘. • 编码键盘:键盘上闭合键的识别由专用的硬件译码器实现,产生键编号或键值的键盘称为编码键盘, 如BCD键盘, ASII码键盘等. • 非编码键盘:靠软件识别的键盘. • 在单片机组成的测控系统和机电一体化产品中,用的最多的是非编码键盘.
15.1 单片机的人机接口 拨码盘与单片机的接口 • BCD拨码盘的结构及工作原理 由4根数据线和一根输入控制线, 如把接通定义为1,不通的定义为0,则拨码盘的数据线的状态与BCD码表示的十进制数一致。 4 8 2 1 A
单个拨码盘与单片机的连接 +5V 单片机P0口 G1 G2 244 RD + P2.7
P1.0 P1.1 P1.2 P1.3 +5V +5V +5V 与非门 +5V P1.4~P1.7 8 4 2 1 千 百 个 十 • 多个拨码盘与单片机的连接
电路说明: • 四个拨码盘的控制线连接在P1.4~P1.7用来选择4片拨码盘中的任意一个,与非门的输出取决于控制线为低电平的拨码盘的数据线的状态(控制线为0即选中); • 当某个拨码盘的控制线为高,则不论其处于什么位置,4根数据线总是为高电平; • 当控制线为低电平时,与控制线接通的数据线为低电平,而与控制线不接通的数据线为高电平。若将数据线的状态取反,则得到拨码盘位置的BCD码。 • P1.0~P1.3用来接收某个拨码盘的输入数据。
程序说明 • 拨码盘的数据存放在8031片内RAM的30H~33H单元中,某个单元的高4位为0,低4位为BCD码。 • R0为存放数据的地址指针; • R2为P1输出的控制字; • R3为BCD拨码盘的个数
MOV R0,#30H; MOV R2,#7FH; MOV R3,#04H; MOV A, R2; MOV P1, A; MOV A, P1; ANL A,#0FH; 屏蔽高4位 MOV @R0, A; INC R0; MOV A, R2; RR A ; 累加器循环右移动1位 MOV R2, A; DJNZ R3, LOOP; RET READ: 拨码盘的用户程序 LOOP:
按钮与单片机的接口 • 键盘是由若干按键组成的开关矩阵,它是微型计算机最常用的输入设备,用户可以通过键盘向计算机输入指令、地址和数据。 • 一般单片机系统中采用非编码键盘,非编码键盘是由软件来识别键盘上的闭合键,它具有结构简单,使用灵活等特点,因此被广泛应用于单片机系统。
15.2 按键开关的抖动问题 组成键盘的按键有触点式和非触点式两种,单片机中应用的一般是由机械触点构成的。在下图中,当开关S未被按下时,P1.0输入为高电平,S闭合后,P1.0输入为低电平。 VCC S P1.0
由于按键是机械触点,当机械触点断开、闭合时,会有抖动,P1.0输入端的波形如下图所示。这种抖动对于人来说是感觉不到的,但对计算机来说,则是完全可以感应到的,因为计算机处理的速度是在微秒级,而机械抖动的时间至少是毫秒级,对计算机而言,这已是一个“漫长”的时间了。由于按键是机械触点,当机械触点断开、闭合时,会有抖动,P1.0输入端的波形如下图所示。这种抖动对于人来说是感觉不到的,但对计算机来说,则是完全可以感应到的,因为计算机处理的速度是在微秒级,而机械抖动的时间至少是毫秒级,对计算机而言,这已是一个“漫长”的时间了。
为使CPU能正确地读出P1口的状态,对每一次按键只作一次响应,就必须考虑如何去除抖动,常用的去抖动的方法有两种:硬件方法和软件方法。单片机中常用软件法。为使CPU能正确地读出P1口的状态,对每一次按键只作一次响应,就必须考虑如何去除抖动,常用的去抖动的方法有两种:硬件方法和软件方法。单片机中常用软件法。 • 对于硬件方法有双稳态方法等,同学请参考教材。
软件法其实很简单,就是在单片机获得P1.0口为低的信息后,不是立即认定S1已被按下,而是延时10毫秒或更长一些时间后再次检测P1.0口,如果仍为低,说明S1的确按下了,这实际上是避开了按键按下时的抖动时间。软件法其实很简单,就是在单片机获得P1.0口为低的信息后,不是立即认定S1已被按下,而是延时10毫秒或更长一些时间后再次检测P1.0口,如果仍为低,说明S1的确按下了,这实际上是避开了按键按下时的抖动时间。 • 而在检测到按键释放后(P1.0为高)再延时5-10个毫秒,消除后沿的抖动,然后再对键值处理。
Keyin: MOV DPTR, #7FFFH; 键盘地址 MOVX A,@DPTR; 读键盘状态 ANL A,#1FH; 屏蔽高三位 MOV R3,A; 保存 LCALL D_10MS; 去抖 MOVX A,@DPTR; 读键盘状态 ANL A, #1FH; CJNE A, R3, PASS; 两次结果不同, 说明由抖动引起, 转PASS CJNE A, #1EH, TO_2; KEY1键未按下,转TO_2 LJMP KEY1; 是KEY1键按下,转键1处理程序
15.4 键盘(矩阵式)与单片机的连接方式 矩阵式键盘的结构: 每一水平线(行线)与每一垂直线(列线)的交叉处不相通,而当某一键按下,则该键对应的行线和列线被短路,即行线电平状态由与此行线相连的列线电平确定。利用N个行线和M个列线即可组成N×M个键的键盘。
单片机对非编码键盘扫描的控制方式 • 扫描方式有三种: • 1.程序控制扫描方式,即查询方式 • 2.定时扫描方式,利用单片机内部定时器产生中断, CPU响应中断对键盘进行一次扫描,定时扫描方式的硬件电路与查询扫描方式相同. • 3.中断扫描方式,引起外部中断后, CPU响应中断对键盘进行扫描. • 采用哪种方式是根据应用系统的CPU的“忙”,“闲”以及键数目的多少来确定.
矩阵式键盘的工作原理 1)识别是否有键按下:扫描 2)去抖: 延时 3)闭合键的键值确定:根据行线和列线的状态求得。 4)键的闭合与否:可通过高低电平状态的检测来确认 5)扫描方法:把全部列线置为低电平,然后将行线的电平状态读入A中,如有键按下,则至少有一根行线为低电平,从而使行输入不全为1。 键盘中哪一个键被按下是逐列置低电平后,检查行输入状态来判断的,所按下的键必在与0电平行线相交的那个键。
键值:键盘上的每个键都有一个键值,以代表键按下的特征信号。 键值赋值的最直接办法是将行线数据和列线数据按二进制顺序排列组合成键值。 8155/8156 组成的4*8矩阵式键盘(与单片机的连接方法)
15.5 键输入程序设计方法 8031外接一片8155 • 8155的RAM地址7E00~7EFFH(P2.7=0、P2.0=0); • I/O口的地址:7F00H~7F05H(P2.7=0、P2.0=1); • PA口为输出口(即键盘扫描口)、PC口为输入口(即PC0~PC3为键输入口)。 键输入程序应具有以下三个功能: 判断是否有键按下: MOV DPTR, #7F01H; 指向PA口 MOV A, #00H; 全扫描字送入PA口 MOVX @DPTR, A; INC DPTR; INC DPTR; 指向PC口 MOVX A, @DPTR; 读入PC口的状态 CPL A; 变正逻辑,以高电平表示有键按下 ANL A, #0FH; 屏蔽高4位 RET
消除键的抖动(软件消抖) 抖动时间的长短与开关的机械特性有关,一般为5~10ms,故可利用延时12ms子程序消抖。Fosc=12MHz Tcy=1us TM12S: MOV R7, #18H;一个机器周期 TM: MOV R6, #0FFH TM1: DJNZ R6, TM1; 2×256us DJNZ R7, TM; 2×256×24=12.288ms
判别闭合键并计算其键值 • 对键盘的列线进行扫描,扫描口PA0~PA7依次输出(见表1),同时按顺序读入PC口的可能状态,对每一个扫描字,PC0~PC3有四种可能状态(见表2) ,32个键共有64种组合(见表3): • 表1 表2
表3 闭合键值=行首键号+列号。 如PA=11111101时,PC0~PC3=1101,则1行1列相交的键处于闭合状态。第一行的首键号为8,列号为1,闭合键值=8+1=9。 CPU对键的一次闭合仅作一次处理,采用的方法是等待键释放后,再将键值送入累加器A中。
与单片机连接的几种典型电路 8255A扩展I/O口组成的4*8矩阵式键盘
继续 74LS373组成的2*8矩阵键盘
双功能键盘原理图 1 硬件: 上下档位开关对应键盘的两种状态 2 软件: 根据某个按键的次数,转到相应的子程序
判别键是否按下的一种简单方法: 线反转法 具体的步骤: • 1 将行线作为输入线,列线作为输出线,并使输出线全为0,则 由高电平变为低电平的行即为按键所在的行; • 2 将列线作为输入线,行线作为输出线,并使输出线全为0,则由高电平变为低电平的列即为按键所在的列; • 综合1、2即可得到按键
二 显示器与单片机的接口 • 键盘是单片机应用系统中常用的输入器件,显示器则是普遍使用的输出器件. • 显示器有发光二极管LED和数码管,前者多用于信号指示,后者用于数据输出.它们有足够亮度,耗电和发热都很少,可在单一+5v电源下工作. • LCD …
接法: 1 共阴极法; 2 共阳极法 f b 阳极 g g f e d c b a DP e c d 阴极 15.6 LED的结构原理 a
例子: 当数字量为00111111时, g和DP不发光,显示的字符为0,这种数字量称为段选码
15.7 LED 显示器的显示方式 • 一般情况下,都同时用几个8段的LED显示器,几位LED连接有两种显示方式: • 静态显示 • 动态显示
静态显示: • 每一位都有各自的8位输出口控制,在显示某个字符时,相应的段恒定的发光或不发光.
动态显示方式:将多个8段LED显示器的段选端并连在一起,由一个8位输出口控制,段选码同时加到各个显示器上,而共阴(或共阳)端分别由相应的I/O线控制,实现各位的分时选通,即每一瞬时只使某一位显示字符.动态显示方式:将多个8段LED显示器的段选端并连在一起,由一个8位输出口控制,段选码同时加到各个显示器上,而共阴(或共阳)端分别由相应的I/O线控制,实现各位的分时选通,即每一瞬时只使某一位显示字符.
15.8 举例 • 下图为8155扩展 I/O控制的6位共阴极LED 动态显示接口电路.图中,PB口输出段选码,PA口输出位选码. • 75452(或7406)是反向驱动器(30V高电压,OC门),这是因为8155PA口正逻辑输出的位控制与阴极LED 要求的低电平正好相反.
7407是同相OC门,作段选码驱动器. • 逐位轮流点亮各个LED,每位停留1ms,在10~20ms之内再一次点亮,重复不止.
动态扫描显示接口——补充 • 动态扫描显示接口是单片机中应用最为广泛的一种显示方式之一。 • 其接口电路是把所有显示器的8个笔划段a-h同名端连在一起,而每一个显示器的公共极COM是各自独立地受I/O线控制。CPU向字段输出口送出字形码时,所有显示器接收到相同的字形码,但究竟是那个显示器亮,则取决于COM端,而这一端是由I/O控制的,所以我们可以自行决定何时显示哪一位。 • 所谓动态扫描就是指我们采用分时的方法,轮流控制各个显示器的COM端,使各个显示器轮流点亮。
在轮流点亮扫描过程中,每位显示器的点亮时间是极为短暂的(约1ms),但由于人的视觉暂留现象及发光二极管的余辉效应,尽管实际上各位显示器并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,不会有闪烁感。在轮流点亮扫描过程中,每位显示器的点亮时间是极为短暂的(约1ms),但由于人的视觉暂留现象及发光二极管的余辉效应,尽管实际上各位显示器并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,不会有闪烁感。 • 动态扫描显示必须由CPU不断地调用显示程序,才能保证持续不断的显示。
改进型 • 上面的方法可以实现数字的显示,但不太实用,为什么呢?这里仅是显示数字,并没有做其他的工作,因此,两个数码管轮流显示1毫秒,没有问题,实际的工作中,不可能只显示数字,还要做其他的事情的,这样在二次调用显示程序之间的时间间隔就不一定了,如果时间间隔比较长,就会使显示不连续。而实际工作中是很难保证所有工作都能在很短时间内完成的。
我们可以借助于定时器,定时时间一到,产生中断,点亮一个数码管,然后马上返回,这个数码管就会一直亮到下一次定时时间到,而不用调用延时程序了,这段时间可以留给主程序干其他的事。到下一次定时时间到则显示下一个数码管。我们可以借助于定时器,定时时间一到,产生中断,点亮一个数码管,然后马上返回,这个数码管就会一直亮到下一次定时时间到,而不用调用延时程序了,这段时间可以留给主程序干其他的事。到下一次定时时间到则显示下一个数码管。
习题: 1 键盘去抖怎么解决? 2 显示分为哪几种方式?