13_(第十二章)键盘电路编程.ppt
文本预览下载声明
大连理工大学 电信学院 陈育斌 PIC18系列单片机原理及实践(第十二章 键盘电路编程) 参考资料:《PIC技术宝典》 PIC Microcontroller and Embedded Systems [美] Rolin D.Mckinlay 著 课件编写:大连理工大学 电工电子实验中心 陈育斌 2009年8月 第十二章 键盘电路编程 本章内容 键盘的基础操作; 按键和检测机制; PIC18的4×4键盘的汇编语言和C语言编程。 12.1 键盘接口 键盘电路是一个系统实现人机交互的界面,了解键盘电路的工作原理是非常重要的; 系统构造键盘电路有两种方式: 采用专用的键盘扫描(兼顾LED数码显示)集成电路; 利用单片机的端口构造一个扫描电路(矩阵结构)。 本章将分析后者:端口构成的矩阵扫描电路的结构、键值检测原理、介绍PIC18的RB端口键盘电路的设计。 12.1.1 键盘和PIC18的接口 两种键盘电路的各自特点: 采用专用键盘扫描芯片。特点:连接容易、编程简单并具备硬件防抖功能。只要按下某一个按键,芯片就会自动将键值输出。缺点:设计成本较高; 采用端口的“矩阵”结构。用单片机的口线分别构成“行线”和“列线”,在行线与列线的交叉点上安置按键。 优点:结构简单、成本低廉,设计灵活。 缺点:需编制一个软件---计算键值(包含 “软件防抖”) 。 RB端口的非编码键盘电路 RB口构成4×4键盘电路; RB0~RB3 行输出线: 扫描输出时:输出“0”; RB4~RB7 列输入线; 当没有按键操作时,列线输入值为“1111B”; 当有按键操作时对应列线输入为“0”并引发RB中断,用中断服务来读取键值。 矩阵键盘编程原理及步骤 确保矩阵电路处于空闲状态:行线输出0000B,对列线输入电平RB4~7进行检测。当RB4~7=1111B时,表明所有按键均已释放; 当键被按下,则引发RB电平变化中断。在ISR中首先完成“软件防抖” (延时20ms),并保存列值到col单元; 确定按键所在的“行 ”:即对4条行线“逐行扫描 ” ,用行值来设定键值表 的行号 。利用列值确定键值表 的列号 ; 利用所确定的行值、列值实现查表、得到该按键的“键值ASCII码”。 键盘扫描流程 键盘扫描编程 D15mH EQU D’100’ ;15ms延时高位时间初值 D15mL EQU D’255’ ;15ms延时低位时间初值 COL EQU 0x08 ;列值单元 DR15mH EQU 0x09 ;15ms延时高位寄存器单元 DR15mL EQU 0x0A ;15ms延时低位寄存器单元 ORG 0000H GOTO MAIN ORG 0008H BTFSC INTCON,RBIF ;是否为RB中断? BRA RB_ISR RETFIE ORG 0100H MAIN CLRF TRISD ;RD口为输出 BCF INTCON2,RBPU ;使能RB端口的上拉功能 MOVLW 0xF0 ;RB3~0为行线,输出 MOVWF TRISB ;RB7~4为列线,输入 MOVWF PORTB ; 行线拉低(RB=F0H) KEYOPEN CPFSEQ PORTB ;PORTB=F0H?相等时skip BRA KETOPEN ;有按键时返回等待 ;没有按键时继续执行 MOVLW upper(KCODE0) ;向TBLPTR装载键值 MOVWF TBLPTRU ;表的表头地址 MOVLW high(KCODE0) ;以备查表操作TBLRD*+ MOVWF TBLPTRH MOVF PORTB,F ;结束适配条件 BCF INTCON,RBIF ;清除RBIF标志 BSF INTCON,RBIE ;开中断 BSF INTCON,GIE LOOP BRA LOOP ;等待按键的电平变化中断 ;电平变化ISR 子程序 RB_ISR CALL DELAY ;软件防抖 MOVFF PORTB,COL ;将列值(RB高4位)送COL ;开始逐行扫描 确定行值 MOVLW 0xFE ;(扫描第一行) MOVWF PORTB ; ---- 从RB0开始 CPFSEQ PORTB
显示全部