按键及数码管显示
一、实验目的
按键是单片机常用的输入设备,操作人员可以通过按键输入指令和数据。在使用按键
是单片机要正确识别按键是否被按下和按下的次数等状态,才能正确执行相关操作。本实
验要实现对按键状态的正确检测并显示相关内容。本实验的知识要点:
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 作为输入端。
拥抱AI时代神州数码打造通讯业极致客户体验
WTN6系列语音芯片支持多种串口控制模式:特征优势与应用场景解析
介绍一款Linux、数据库、Redis、MongoDB统一管理平台
无人机电池续航电路设计优化方案
iPhone省电技巧 中度使用一天还是没有什么问题的
按键及数码管显示
如何引入简单的辅助电路来降低LED照明应用的待机功耗
人工智能未来的技术前景怎么样
为加强模拟技术Waymo收购了AI创企Latent Logic
超声波焊接机漏气如何解决
米家智能摄像机云台版体验 价格合理但难掩平庸
YOKOGAWA发布高精度、高效率压力校准器CA700
TVS管和稳压二极管的详细知识点对比
keil逻辑分析仪不能添加引脚?
展会巡礼|华润微参展2023慕尼黑上海电子展
变频器扭矩对应问题处理
select......for update会锁表还是锁行?
poe供电距离多少米_poe供电的缺点
皮尔斯振荡器电路如何工作
光绘中遇到的问题与解决方法