第8章--键盘控制LED灯数码管课件

上传人:txadgkn****dgknqu... 文档编号:241972403 上传时间:2024-08-08 格式:PPT 页数:30 大小:253.75KB
返回 下载 相关 举报
第8章--键盘控制LED灯数码管课件_第1页
第1页 / 共30页
第8章--键盘控制LED灯数码管课件_第2页
第2页 / 共30页
第8章--键盘控制LED灯数码管课件_第3页
第3页 / 共30页
点击查看更多>>
资源描述
,*,第八章,键盘控制LED灯、数码管,第8章 键盘控制LED灯、数码管,8.1,功能要求,8.2 任务分析,8.3,键盘接口技术,8.3.1,键盘工作特性,8.3.2 独立式键盘接口电路,8.3.3 矩阵式键盘接口电路,8.4,键盘接口程序设计,8.4.1,本项目使用的键盘接口,8.4.2,独立式键盘控制LED灯,8.4.3 矩阵式键盘控制数码管,第8章 键盘控制LED灯、数码管8.1 功能要求,1,8.1,功能要求,一基本要求,能用独立式键盘控制LED灯。,二发挥部分,能用矩阵式键盘输入数据和命令,当键入数字键时,数码管显示相应数字,当输入功能键时,完成相应的功能。,回目录,8.1功能要求 一基本要求回目录,2,8.2,任务分析,要完成此任务,主要需解决如下四方面的问题:,为什么要软件延时去抖动;,独立式和矩阵式键盘接口电路的设计方法;,独立式和矩阵式键盘程序的设计方法。,回目录,8.2 任务分析 要完成此任务,主要需解决如下四方面的问题,3,8.3.1,键盘工作特性,键盘是一组按键的组合,它是单片机最常用的输入设备,单片机中的键盘一般通过按键开关自己设计焊接,当然也可到厂家定制,如图81 c)所示。本节主要讲解通过按键开关自己设计键盘的方法,根据按键开关与单片机接口的连接方式,可以分为独立式键盘和矩阵式键盘,。,8.3,键盘接口技术,回目录,8.3.1 键盘工作特性 8.3 键盘接口技术回目录,4,按键开关介绍,单片机中的键盘通常由按键开关组成,按键开关的外形和参数如下图所示,它是一种常开型按键开关,为了便于安装固定,它有四个管脚,其管脚说明如下图中的文字所示,在常态时开关触点(1和2)处于断开状态,只有按下按键时开关触点才闭合短路,所以可以用万用表检测开关的管脚排列、好坏和质量。,回目录,按键开关介绍 回目录,5,按键闭合、断开时的抖动,回目录,在单片机中,按键通常与I/O端口相连,如下图左边所示。,当按键开关K1未按下时,P1.0输入为高电平,而当按键K1闭合时,P1.0输入为低电平,由于开关为机械弹性开关,当机械触点断开、闭合时,由于机械触点的弹性作用,一个机械开关闭合时不会马上稳定的闭合接通,断开时也不会马上断开,而是在闭合、断开的瞬间伴随有一连串的抖动,如下图右边所示,抖动时间的长短与开关的机械特性决定,一般为510ms。,按键闭合、断开时的抖动 回目录在单片机中,按键通常与I/O端,6,按键抖动消除办法,按键抖动是一种普遍的现象,如电流较大的电器开关闭合时,我们有时可以见到电火花,按键抖动将形成干扰和造成误动作。如上页图所示,抖动将造成I/O端口输入的高低电平多次变化,使单片机系统误动作,一次按键产生多次按键效果,因此必须采取措施消除。,按键抖动消除可以采用硬件和软件方法消除,硬件去抖动电路如RS触发器等,由于硬件去抖动电路需要额外的硬件电路,使产品成本增加,硬件电路复杂,所以一般应用较少。在单片机中广泛采用的是软件延时去抖动,由图84可知,按键闭合时存在前沿抖动,一般时间为510ms,因此我们可在按键按下后,延时10ms左右避开前沿抖动,然后再判断按键是否按下,即P1.0是否仍为低电平,如果仍为低电平,此时才确认为一次完整有效的按键闭合,否则认为只是抖动或干扰,系统对此不作出响应。,按键抖动消除办法,7,8.3.2 独立式键盘接口电路,独立式键盘的结构如下图所示,组成键盘的各按键相互独立,每个按键独立地与一个I/O端口相连,结构简单,其中图左图适合于端口内部有上拉电阻的端口,如P1、P2、P3口,所以外部不用上拉电阻,电路更简单,成本更低。右图适合于端口内部没有上拉电阻地端口,如P0口,所以外部必须使用上拉电阻,成本稍高,所以一般尽量使用左图的形式。,8.3.2 独立式键盘接口电路,8,8.3.3 矩阵式键盘接口电路,独立式键盘虽然硬件、软件结构简单,但在按键数量较多的情况下,将占有较多的I/O端口,所以在按键数量较多的情况下,一般采用可以有效减少I/O端口数量的矩阵式键盘。矩阵式键盘又称为行列式键盘,采用行、列线结构,按键设置在行列线的交叉点上,如下图所示,H0H3为四条行线,L0L3为四条列线,在行列相交的每个交点上通过按键来连通,按键开关的一个触点连行线,一个触点连列线,从而组成44矩阵16键键盘,回目录,8.3.3 矩阵式键盘接口电路回目录,9,2,独立式和矩阵式键盘比较,独立式键盘硬件结构简单,软件编程较简单,但每个按键独自占用一个I/O端口,在按键数量较多的情况下,将占有较多的I/O端口。所以,独立式键盘一般运用于按键数量不多的场合。,矩阵式键盘能有效的减少I/O端口的占用量,但因为各按键不是单独的占有I/O端口,从而给按键的判断带来难度,造成编程难度加大。,2独立式和矩阵式键盘比较独立式键盘硬件结构简单,软件编程较,10,84 键盘接口程序设计,8.4.1 本项目使用的键盘接口,本项目使用的键盘接口如下图所示,它是23的矩阵式键盘接口电路,我们选P2口的低五位作为矩阵式键盘的列线和行线,其中P2.3、P2.4作为矩阵式键盘的行线,P2.0、P2.1、P2.2作为矩阵式键盘的列线,选用六个按键主要是为了降低试验板成本和焊接的难度。,回目录,84 键盘接口程序设计 回目录,11,8.4.2 独立式键盘控制LED灯,本项目基本任务为利用独立式键盘控制LED灯,为了不增加试验板的成本,我们在上页图的矩阵式键盘电路中,将P2.0设置为低电平,相当于键盘K1、K4一端触点接地,从而使按键K1、K4相当于组成独立式键盘,等效电路如下图所示。,回目录,8.4.2 独立式键盘控制LED灯 回目录,12,一、独立式键盘任务分析,本任务要求按下K1时,D1D8全亮,按下K4时,D1D8全灭。本任务的关键为设计独立式键盘的控制程序,它必须解决以下几个问题:,(1)检测有无按键按下。,先将各按键相连的I/O端口置为高电平1,然后检测各I/O端口是否仍全为高电平,如果不是,表明有按键按下。,(2)如果有键按下,运用软件去抖动,在有键按下的情况下,延时10ms,再次检测是否有键按下,如果是,表明确实有键按下,否则表示只是干扰或抖动。,(3)确认有键按下,暂存键值,等键释放,这主要是为了保证一次按键仅执行一次按键功能,防止按住按键不放时,执行多次按键功能。,(4)判断按键情况,执行相应的按键功能,既如果按键K1按下,D1D8全亮,按键K4按下,D1D8全灭。,。,一、独立式键盘任务分析,13,二、独立式键盘程序流程图设计,通过以上分析,独立式按键程序思路大致如下:,(1)首先进行程序初始化。,P1.0清零,使开关K1、K4一端接低电平;置位P2.3、P2.4作为输入口,同时使P2.3、P2.4输出高电平。,(2)判断是否有键按下。,读入P2.3、P2.4的状态,判断是否全为高电平1,否则表明有按键按下。,(3)延时去抖动。,延时10ms,再次读入P2.3、P2.4的状态,判断是否仍然有键按下,如果有,表明确实有键按下,否则表明只是抖动或干扰信号。,(4)暂存当前按键状态,等待按键释放。,在等待按键弹起的过程中,必须将前面的按键状态保存下来,以便后面取出判断具体的按键号。等待按键弹起的方法为延时一段时间,再次检测按键的状态,直到无键按下为止。,二、独立式键盘程序流程图设计,14,二、独立式键盘程序流程图设计,(5)判断具体按键号,执行相应的按键功能。,取出前面暂存的按键状态,并判断具体是那个按键按下,执行相应的功能,如果是P2.3为低电平,表明K1按下,置P1为低电平,D1D8全亮,如果是P2.4为低电平,表明K4按下,置P1为高电平,D1D8全灭。,回目录,二、独立式键盘程序流程图设计回目录,15,三、独立式键盘程序清单,(1),ORG 0000H,LJMP MAIN,ORG 0050H,MAIN:,CLR P2.0,;P2.0清0,使K1、K4一端触点接低电平,SETB P2.3,;P2.3置1,作为输入口,SETB P2.4,;P2.4置1,作为输入口,MAINHUI:LCALL KEY,;调用按键处理子程序,LJMP MAINHUI,;反复执行,三、独立式键盘程序清单(1),16,LJMP KEYHUI,;否则,表示没有键按下,键处理程序返回,DYS:LCALL DELAY,;键去抖动,延时10ms左右,MOV A,P2,;再次取出P2口状态,ANL A,#00011000B,;取出P2.3,P2.4位,CJNE A,#00011000B,DJTQ,;确认有键按下,跳到等待按键弹起,LJMP KEYHUI,;无键按下,表明只是干扰或键抖动,DJTQ:MOV R2,A,;暂存当前按键状态,DENDAI:LCALL DELAY,;延时10ms,再次取出当前按键状态,MOV A,P2,ANL A,#00011000B,;取出P2.3,P2.4位,三、独立式键盘程序清单(2),LJMP KEYHUI,17,CJNE A,#00011000B,DENDAI,;按键没有弹起,继续等待,MOV A,R2,;取出暂存在R2中的按键状态,PJZ:JNB ACC.3,K1,;ACC.3为0,表示K1按下,跳到K1处,JNB ACC.4,K4,;ACC.4为0,表示K4按下,跳到K4处,LJMP KEYHUI,;如果K1、K4都没按下,跳到键处理子程序返回,K1:MOV P1,#00H,;按键K1按下处理,D1D8全亮,LJMP KEYHUI,;跳到键处理子程序返回,K4:MOV P1,#0FFH,;按键K4按下处理,D1D8全灭,KEYHUI:RET,;键处理子程序返回,三、独立式键盘程序清单(3),CJNE A,#0001,18,DELAY:,;延时子程序,MOV R7,#0FH,;二层循环延时程序,LOOP2:MOV R6,#0FFH,LOOP1:DJNZ R6,LOOP1,DJNZ R7,LOOP2,RET,三、独立式键盘程序清单(4),DELAY:,19,8.4.3 矩阵式键盘控制数码管,一、任务分析,本任务要求能用矩阵式键盘输入数据,当按下按键时,数码管显示相应的键值。矩阵式键盘接口电路图如下图所示。,与基本任务相比,这个任务的难度有所增加,本任务关键问题为具体键号的判断,既键的识别问题,对矩阵式按键的识别通常有二种方法,一种为常用的逐行(或列)扫描查询法,另一种为速度较快的反转法。,回目录,8.4.3 矩阵式键盘控制数码管 与基本任务相比,这个任务,20,二、逐行(或列)扫描查询法工作原理,(1)判断有无按键按下,方法为将所有列线置为低电平“0”,所有行线置为高电平“1”,作为输入口,然后读入所有行线的状态,如果行线全为高电平1,说明没有按键按下,否则说明有键按下(虽然暂时无法具体判断是哪个按键按下)。因为如果有按键按下,则按键所在的行、列线将短路,由于所有列线已经预置为低电平“0”,近似接地,则与该按键相连的行线必定被拉低为低电平“0”,所以由行线是否全为高电平“1”,就能判断是否有键按下。,(2)按键延时去抖动,在判断有按键按下后,为了去除按键机械抖动的影响,延时10ms左右再次检测是否仍有按键按下,判断方法和步骤(1)相同,如果仍有按键按下,表示确实有按键按下,否则表示只是干扰或抖动。,提示 此处延时程序利用显示程序代替,主要是利用显示程序执行时间既实现延时,又显示数据,防止显示间断。,二、逐行(或列)扫描查询法工作原理,21,(3)判断按键列号,并暂存列值和行状态。,依次设置各列为低电平,读入行状态,如果将某一列设置为低电平0后,读入的行状态不全为高电平1,说明按下的按键在该列,将该列列值暂存起来,以便后面计算键值。同时将当前的行状态暂存起来,以便后面判断行号。,(4)等待按键释放。,将列值和行状态暂存下来后,将等待按键释放,以保证按键按下一次,只执行一次按键功能,本处的延时程序仍以显示程序代替,在延时的同时保证显示不间断,。,(5)判断按键行号。,将暂存的行状态取出,依次判断按键在哪一行。方法为检测该行是否为低电平,如果是,表明按键在该行,并将行值暂存下来。,(6)计算键值。,取出前面保存的列值、行值,利用如下公式计算键值:,键值行值列数列值,键值计算出来后,可以根据各按键要求,完成相应的按键功能。,(3)判断按键列号,并暂存列值和行状态。,22,三、矩阵式按键逐行扫描程序流程图,三、矩阵式按键逐行扫描程序流程图,23,程序中30H单元为显示缓冲区,保存需显示的数据,40H为键值暂存单元,41H为列值暂存单元,42H为行值暂存单元。,ORG 0000H,LJMP MAIN,ORG 0050H,MAIN:MOV 30H,#00H,;显示缓冲区清0,MOV 40H,#00H,;键值暂存单元清0,MOV 41H,#00H,;列值暂存单元清0,MOV 42H,#00H,;行值暂存单元清0,MAINHUI:LCALL KEY,;调用按键处理子程序,MOV 30H,40H,;将键值送显示缓冲单元显示,LCALL XIANSHI,;调用显示子程序,LJMP MAINHUI,;反复执行,三、矩阵式按键逐行扫描程序清单(1),程序中30H单元为显示缓冲区,保存需显示的数据,40H为键值,24,KEY:,;键处理子程序,MOV P2,#11111000B,;将列线全设为0,行线全设为1,数码管熄灭,MOV A,P2,;P2口键盘状态送入累加器A,ANL A,#00011000B,;取出P2.3,P2.4位,行线状态,CJNE A,#00011000B,DYS,;如果行线不全为1,表示有键按下,,跳到键去抖动处理,LJMP KEYHUI,;无键按下,键处理子程序返回,DYS:LCALL XIANSHI,;延时去抖动,MOV A,P2,;P2口键盘状态送入累加器A,ANL A,#00011000B,;取出P2.3,P2.4位,行线状态,CJNE A,#00011000B,PANLIE,;如果行线不全为1,,表示确实有键按下,跳去判断哪一列,LJMP KEYHUI,;无键按下,键处理子程序返回,,表示只是干扰或抖动,三、矩阵式按键逐行扫描程序清单(2),KEY:,25,PANLIE:MOV P2,#11111110B,;将第0列设为0,判断是否第0列,MOV A,P2,;P2口键盘状态送入累加器A,ANL A,#00011000B,;取出P2.3,P2.4位,行线状态,CJNE A,#00011000B,LIE0,;如果行线不全为1,,表示该列有键按下,跳到LIE0处,MOV P2,#11111101B,;判断是否第1列,MOV A,P2,;P2口键盘状态送入累加器A,ANL A,#00011000B,;取出P2.3,P2.4位,行线状态,CJNE A,#00011000B,LIE1,;如果行线不全为1,,表示该列有键按下,跳到LIE1处,MOV P2,#11111011B,;判断是否第2列,MOV A,P2,ANL A,#00011000B,CJNE A,#00011000B,LIE2,LJMP KEYHUI,;所有列线无键按下,跳到键处理子程序返回,三、矩阵式按键逐行扫描程序清单(3),PANLIE:MOV P2,#11111110B,26,LIE0:MOV 41H,#00H,;保存列值0,MOV 42H,A,;保存行值,此时A中为行线的状态,暂存到42H单元,LJMP DENDAI,;跳到等待按键弹起,LIE1:MOV 41H,#01H,;保存列值1,MOV 42H,A,LJMP DENDAI,LIE2:MOV 41H,#02H,;保存列值2,MOV 42H,A,;保存行状态,DENDAI:LCALL XIANSHI,;等待按键弹起,在等待时调用显示程序作延时,,防止按键按下时数码管熄灭,MOV P2,#11111000B,;将列线全设为0,行线全设为1,数码管熄灭,MOV A,P2,ANL A,#00011000B,CJNE A,#00011000B,DENDAI,;行线不全为1,表面按键未弹起,继续等待,三、矩阵式按键逐行扫描程序清单(4),LIE0:MOV 41H,#00H,27,MOV A,42H,;取出保存的行状态,判具体是哪一行,JNB ACC.3,HANG0,JNB ACC.4,HANG1,LJMP KEYHUI,HANG0:MOV 42H,#00H,;第0行,42H单元送0,LJMP QJZ,;跳到求键值QJZ处,HANG1:MOV 42H,#01H,;第1行,42H单元送1,QJZ:MOV A,42H,;求出按键数值,键值行值列数列值,MOV B,#03H,;B中为列数,MUL AB,;行值列数,ADD A,41H,;加列值,MOV 40H,A,;将键值送40H单元暂存,KEYHUI:RET,;键处理子程序返回,三、矩阵式按键逐行扫描程序清单(5),MOV A,42H,28,XIANSHI:,;显示子程序,SETB P2.7,;第二个数码管亮,CLR P2.6,;第一个数码管熄灭,MOV A,30H,;取出显示数据,ANL A,#0FH,;取出显示值的个位(即低四位),LCALL CHABIAO,;调用查表显示程序,LCALL DELAY,;调用延时程序,SETB P2.6,;第二个数码管灭,CLR P2.7,;第一个数码管熄亮,MOV A,30H,;取出显示数据,ANL A,#0F0H,;取出显示值的十位(即高四位),SWAP A,;高、低四位对调,以便于查表取段码,LCALL CHABIAO,;调用查表显示程序,LCALL DELAY,;调用延时程序,RET,;显示子程序返回,三、矩阵式按键逐行扫描程序清单(6),XIANSHI:,29,CHABIAO:,;查表子程序,MOV DPTR,#TABLE1,;DPTR用于保存表的首地址,(即到哪一个表中取数),MOVC A,A+DPTR,;查表指令,,MOV P1,A,;将取得的段码送到P1口显示,RET,;查表子程序返回,DELAY:,;二层循环延时子程序,MOV R7,#0FH,LOOP2:MOV R6,#0FFH,LOOP1:DJNZ R6,LOOP1,DJNZ R7,LOOP2,RET,;延时子程序返回,TABLE1:DB 0COH,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,三、矩阵式按键逐行扫描程序清单(7),CHABIAO:,30,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 教学培训


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!