第6章单片机的输入输出设备祥解.ppt

  1. 1、本文档共50页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第6章单片机的输入输出设备祥解.ppt

* 6.3 键盘接口 一、键盘分类、键值识别与键盘工作方式 1.键盘分类 键盘按结构分为线性(一维)键盘、矩阵(二维)键盘两种。 键盘按键值识别方法分编码键盘(专用硬件识别)、非编码键盘(软件识别)两种。 2.在软件识别的非编码矩阵键盘中,键值识别与键盘工作方式 键值识别的方法有逐行扫描法、行翻转法两种。 对键盘的扫描方式有程控随机方式、定时控制方式、中断控制方式三种。 二、键盘工作原理 见教材第100页4.1.7 1.矩阵键盘 键盘上的键按行列构成矩阵,在行列的交点上都对应有一个键。 所谓键实际上就是一个机械开关,被按下则其交点的行线和列线接通。非编码键的键盘接口技术的主要内容就是如何确定被按键的行列位置,并根据此产生键码。 2.键盘输入接口与软件应解决的任务 (1)键开关的可靠输入。 键抖动:按键按下和键释放的一瞬间其接触不可靠的现象。抖动时间一般为5~10ms左右。 抖动的处理有硬件处理和软件处理两种。 (2)按键编码与键号定义。 (3)键盘检测与编制键盘程序。 3.矩阵式键盘电路的结构及工作原理 一个4×4的行、列结构可以构成一个含有16个键的键盘。 逐行扫描的方法:先令列线Y0为低电平“0”,其余3根列线Y1、Y2、Y3都为高电平“1”,读行线状态。如果X0、X1、X2、X3都为高电平,则Y0这一列上没有键闭合,如果读出的行线状态不全为高电平,则为低电平的行线和Y0相交的键处于闭合状态;如果Y0这一列上没有键闭合,接着使列线Y1为低电平,其余列线为高电平。用同样的方法检查Y1这一列上有无键闭合,依次类推,最后使列线Y3为低电平,其余列线为高电平,检查Y3这一列有无键闭合。 三、键盘接口方法与程序设计 见教材第184页5.4.3 1.接口电路 以下是采用8155作接口的4×8键盘接口电路。本电路是由前述6位动态显示器接口进行扩展而得到。PA既是显示扫描输出口,也是键盘扫描输出口,控制键盘8根列线Y0~Y7的电平;PB为显示段数据输出口;PC口为键盘4根行线X0~X3电平的输入口。 此键盘共有4×8=32键,键名分别为0#~31#,其中0#、8#、16#、24#称为行首键号(每行的第一个键) 2.逐行扫描法键输入程序设计方法 ⑴判别键盘上有无键闭合 方法:扫描口PA0~PA7输出全“0”,读PC口状态,若PC0~PC3为全“1”(所有行线全为高电平),表明无键按下(闭合);若PC0~PC3不为全“1”,则有键处于闭合状态。 ⑵去除键的机械抖动 方法:在判别到有键按下后,延时一段时间(10ms左右)后再判别键盘状态,若仍有键闭合,则确认键处于稳定的闭合期;否则就认为是键抖动。 ⑶判别闭合键的键号 方法:对键盘的列线进行扫描,扫描口PA0~PA7依次输出: 再相应地顺次读出PC口的状态,若PC0~PC3为全“1”表明列线输出为“0”的这一列没有键闭合;否则有键处于闭合状态。闭合键的键号等于为低电平的列号加上为低电平的行的首键号。 例如:PA输PC输入1011,相当4列2行相交的键处于闭合状态,2行首键号16,所以: 键号N=行首键号16+列号4=20 ⑷使CPU对键的一次闭合仅作一次处理 方法:等待闭合键释放以后再判别新的键输入。 3.逐行扫描法键盘程序设计 ⑴键盘状态判别子程序 KEYSTAT:SETB P2.0 ;I//M=1,选择为I/O方式 MOV R1,#1 ;全“0”扫描键盘,0→PA口 CLR A; MOVX @R1,A; MOV R1,#3 ;PC口→A MOVX A,@R1; ANL A,#0FH ;屏蔽高4位 CJNE A,#0FH,KEY_Y; SETB C ;PC0~3为全“1”,无键,1→C RET; KEY_Y: CLR C ;PC0~3非全“1”,有键,0→C RET; 逐行扫描法读闭合键键号子程序框图 ⑵读闭合键键号子程序 KEYI:SETB P2.0 ;选择为I/O方式 MOV R2,#0FEH ;扫描模式字初值0FEH→R2 MOV R4,#0 ;0→列号寄存器R4 K_0: MOV R1,#1 ;R1指向PA口 MOV A,R2 ;取模式字→A MOVX @R1,A ;模式字→PA口 MOV R1

文档评论(0)

love + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档