键盘接口技术应用课件_第1页
键盘接口技术应用课件_第2页
键盘接口技术应用课件_第3页
键盘接口技术应用课件_第4页
键盘接口技术应用课件_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

按键的特点及工作原理独立式按键矩阵式按键键盘

接口

技术应用

本章内容PC机除了主机以外还需要哪些部分呢?单片机电路有时候也需要键盘、显示等外设。按键的特点及工作原理按键的分类:触点式:机械;无触点式:电气键输入原理:

通过按键的接通与断开,产生两种相反的逻辑状态低电平“0”与高电平“1”。键功能的实现:对于一组键或一个键盘,需通过接口电路与单片机相连。可采用查询或中断方式测试有无键按下,再确定是哪一个键按下,将该键号送入累加器ACC,然后判断是数字键还是功能键,若是数字键,则将键号对应的数字送入相关输入缓冲区;若是功能键,则通过跳转指令转入执行该键的功能程序,执行完后再返回主程序。

独立式按键接口电路:特点:一线一键,按键识别(编程)简单;但占用较多口线,适合8键以下使用。例1:用P1口检测三个按键的状态并完成相应的功能解:资源分配:用P1口的低3位检测3个按键的输入,为1则表示按键没有按下,为0则表示相应按键被按下。流程图:ORG0000HKB:MOVP1,#0FFHMOVA,P1CPLAANLA,#07HJZKBLCALLD10MSMOVA,P1CPLAANLA,#07HJZKB编程:按三个按键中的任一键都对应一个特定功能。判断按键是否按下?CJNEA,#01H,KB01LCALLPGM1SJMPKBKB01:CJNEA,#02H,KB02LCALLPGM2SJMPKBKB02:CJNEA,#04H,KBLCALLPGM3SJMPKBPGM1:……RET判断具体哪个键按下并转去执行相应功能键盘扫描子程序一般包括以下内容:1.判别有无键按下;2.扫描获取闭合键的行、列值;3.用计算法或查表法得到键值;4.判断闭合键释放否,如没释放则继续等待;5.保存闭合键号。键按下/释放判断

KS:MOVA,#00H MOVP1,A ;全扫描字#00H送P1口MOVP1,#0FHMOVA,P1;读入P1口状态CPLA;变正逻辑,高电平表示有键按下ANLA,#0FH;取低4位RET ;返回,A≠0表示有键按下

按键识别——扫描法

流程:

当第0列处于低电平时,逐行查找是否有行线变低,若有,则第0列与该行的交叉点按键按下;若无,则表示第0列无键按下,再让下一列处在低电平,依此循环,这种方式称为键盘扫描。

键号=行首键号(0、4、8、12)+列号(0、1、2、3)

原理:

在某一时刻只让一条列线处于低电平,其余列线均处于高电平,则当这一列有键按下时,该键所在的行电平将会由高电平变为低电平,可判定该列相应的行有键按下。

AJMPTRYK

LINE3:JBACC.3,LINE4

MOVA,#0CH

AJMPTRYK

LINE4:INCR3

MOVA,R2

RL A

JNBACC.0,BACK

MOVR2,A

AJMPLINE0

TRYK:ADDA,R3

BACK:RET 定时扫描方式定时扫描方式就是每隔一段时间对键盘扫描一次,它利用单片机内部的定时器产生一定时间(例如10ms)的定时,当定时时间到就产生定时器溢出中断。CPU响应中断后对键盘进行扫描,并在有键按下时识别出该键,再执行该键的功能程序。中断扫描方式为提高CPU工作效率,可采用中断扫描工作方式。其工作过程如下:当无键按下时,CPU处理自己的工作,当有键按下时,产生中断请求,CPU转去执行键盘扫描子程序,并识别键号。LED显示和按键的应用停车场计数器硬件电路设计显示部分:静态显示(StaticDisplay)连接?动态显示(DynamicDisplay)连接?课堂练习1:尝试完成上述功能的显示电路连接。计数部分:实际电路采用传感器,这里我们可以用按键模拟代替。单片机adpP2.1P2.0P2.6P2.7bg+5Vadpbg。。。。。。P0.1P0.0P0.6P0.7+5VP3.3+5VP3.2进车出车停车场计数器程序设计基本功能单片机adpP2.1P2.0P2.6P2.7bg+5Vadpbg。。。。。。P0.1P0.0P0.6P0.7+5VP3.3+5VP3.2进车出车编写程序的基本思路主程序完成单片机的初始设定、初始显示等。两个按键可采用查询或者中断方式,本例子采用中断方式。MAIN主程序流程TAB: DB0C0H,0F9H,0A4H,0B0H DB99H,92H,82H,0F8H,80H,90H主程序

ORG 0100HMAIN: MOV IE,#85H

MOV NUM,#00H MOV NUM_H,#00H MOV NUM_L,#00H MOV DPTR,#TABDISP: MOV A,NUM_H MOVC A,@A+DPTR MOV P2,A MOV A,NUM_L MOVC A,@A+DPTR MOV P0,A

SJMP DISP中断初始化初始车数设为0设置查表首地址十位显示(P2口)个位显示(P0口)FLOWCHART进车中断子程序

(模拟“进车”按键按下后)进车中断子程序CAR_IN: INC NUM

MOV A,NUM MOV B,#10

DIV AB MOV NUM_H,A MOV NUM_L,B

RETI返回除操作后,A、B分别是什么?想一想:出车后,中断子程序如何编写?课堂练习2:请完成出车中断子程序的编写!车数加1车数除以10得到十位和个位十位送NUM_H个位送NUM_L出车中断子程序CAR_OUT:

INC NUM ;车数减1 MOV A,NUM MOV B,#10 DIV AB ;除以10,得到十位和个位 MOV NUM_H,A ;高位送到NUM_H MOV NUM_L,B ;低位送到NUM_H

RETI思考程序的改进:怎样实现计数到99后的清0?当停车场可容纳车位数目增多,需三位计数时,电路和软件如何修改?当设计秒表(或数字钟)时,该应用程序有何借鉴之处?动态显示和按键编程实例-秒表问题1:秒表的基本功能有哪些?启动、停止、清0秒的加1计数显示的不断更新问题2:上述功能需要通过什么相应的资源和软件来实现?按键、显示器定时器显示缓冲区的不断更新实现步骤一:显示和秒的加1计数程序设计分析主程序-实现两位LED的动态显示定时器中断子程序-判断是否到1S,若到,更新显示缓冲区的内容!课堂练习2:请写指令,完成上述两部分程序的基本架构。ORG 0000HLJMP MAINORG 000BHLJMP CONTORG 0100HMAIN: 初始化部分

动态显示程序部分CONT: 定时器中断处理显示缓冲区更新处理 RETI初始化部分程序MAIN: MOV P0,#00H MOV 40H,#00H MOV 41H,#00H MOV TMOD,#01H MOV TH0,#3CH MOV TL0,#0B0H

MOV DPTR,#TAB MOV R7,#02H MOV BYTE,#01H MOV R0,#40H简易秒表主程序的设计初始化P0选中LED的一位(BYTE)查表送该位的字型码(P2)延时位左移指向下一位R1加1指向显示缓冲区的下一位2位显示完?MAIN: 略,见上页NEXT-BY

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论