按键及数码管显示 一、实验目的 按键是单片机常用的输入设备,操作人员可以通过按键输入指令和数据。在使用按键 是单片机要正确识别按键是否被按下和按下的次数等状态,才能正确执行相关操作。本实 验要实现对按键状态的正确检测并显示相关内容。本实验的知识要点: 1.复习显示、延时等程序,延时程序在按键程序中的使用。 2.掌握查表、I/O 口状态的判断及按键去抖动的处理方法。 二、实验预备知识 1.单片机输入端口的处理 按键用于向单片机输入信号,因此按键所接的I/O 口工作于输入状态。单片机的I/O 要作为输入端使用,必须先把该端口置“1”,否则会导致输入实效,甚至损坏单片机I/O 口。 2.按键去抖动 按键是操作人员向单片机系统输入指令的基本元件,在单片机、计算机系统中广泛使 用。机械式按键靠机械触点的接触与断开产生信号,在单片机系统中广泛应用,本实验中 采用的就是机械式按键。如下图所示,由于机械式按键在接通和断开时会产生抖动现象, 因此在按一次按键时会产生多个脉冲信号。如果不进行任何处理,则按一次按键,会使单 片机认为按了多次按键,从而产生错误的结果。 
a 理想波形 b 实际的按键波形 图3-3 按键闭和、断开时的波形 要使单片机正确识别按键的信息就必须进行去抖动处理。去抖动要进行软件和硬件的 处理,图3-1 中的电容C1~C4 并联在按键两端,是一种简单的硬件去抖动措施,用单稳态 电路可以得到更好的去抖动效果。在实际运用中,光靠硬件去抖动很难满足要求,还需通 过软件进行处理。 软件去抖动处理一般采用延时和边沿检测两种方法,延时去抖动程序实例如下: LOOP: JB P1.0 ,$ ;P1.0 接按键,如果按键没有按下。 LCALL DELAY ;检测到低电平延时一段时间再检测,调延时程序。 JB P1.0 ,LOOP ;如果还是低电平,确认按键按下,否则返回重新检测。 ;执行按键按下后应执行的程序。 …… 在该程序中,通过延时避开按键在闭合瞬间的抖动现象。在该方式中,延时时间的长 短是去抖动效果的关键因素,延时时间太短则会出现按一次执行多次操作的现象,延时时 间长则会导致有时快速按按键无效的情况。 2.查表程序 查表是单片机常用的一种数据处理方式,查表指令有固定的格式,具体如下: ① 建立数表 把被查的数据按特定顺序和一定的格式写在一起,并在数表前写一个标号。数表一般 放置在程序的结束处,如果不放置在程序结束处,则在程序中必须用跳转指令跳过数表。 数表的具体例子见实验程序中的数表TAB。 ② 把数表的首地址赋给数据指针DPTR。 ③ 把需查表的数据赋给累加器A ④ 执行查表指令MOVC A ,@A+DPTR,查表结果在累加器A 中。 另外,还可以用MOVC A ,@A+PC 查表。 三、实验内容 1.硬件连接 本实验仍然使用按键显示模块,连接方法与前面实验相同。 2.程序补充并调试 以下程序是用按键控制显示,每按一下,显示的内容加1,从0 开始,加到9 后又回 到0,循环显示。程序空缺部分根据注释文字和程序功能由实验者添加,后运行该程序, 直到达到要求为止。程序如下: ORG 0000H SJMP MAIN ;程序从0030H 单元存放 MAIN: MOV R0 , #00H CLR P3.5 LOOP: ;把数表的首地址赋给DPTR MOV A , R0 MOVC A , @A+DPTR ;查段码表 MOV P0 , A TEST: JB P1.1 , $ ;判断按键是否按下 LCALL DELAY JB P1.1 , TEST ;R0 的内容加1 CJNER0 , #10 , NEXT ;判断R0 的内容是否到10 MOV R0 , #00H ;R0 清零 NEXT: ;无条件跳转到LOOP 处 DELAY:MOV R4 , #01H DEL1: MOV R3,#200 DEL2:MOV R2,#123 DEL3:DJNZ R2,DEL3 DJNZ R3,DEL2 DJNZ R4,DEL1 RET TAB:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H DB 90H,88H,83H,0C6H,0A1H,86H,8EH END 3.修改程序 在调试好程序后,修改程序,要求每按下一次按键,显示内容加1,实现显示0~F。 四、思考题 1.R0 在程序中起何作用? 2.如何提高按键检测程序的可靠性? 3.单片机I/O 口作为输入口使用时,为什么先必须置“1”? 五、扩展内容 1.编写程序,实现每按一次案件显示内容加2,显示范围0~F。 2.根据按键电路,按键在按下时会产生下降沿,而按键弹起时会产生上升沿,用检 测按键按下和弹起时的下降沿河上升沿的方法检测按键会更可靠。编写程序,用这种方法 检测按键是否按下。 …… SETB P1.0 ;把P1.0 置1 作为输入端。 |
评论