基于51单片机的矩阵按键

一、 实验要求

  1. 利用单片.机开发板的矩阵键盘实现个人学号后8位的输入和.显示。
  2. 利用矩阵键.盘S1~S10输入.数字1~0。
  3. 利用数.码管LED8~LED1从左到右显示8位.学号.

二、 实验设计

1.整体思路

程序首先进行初始化,设置LED初始值、端口状态,以及一些必要的标志位。

主程序进入循环,不断读取矩阵键盘状态。在每次循环中,程序检查是否有按键按下。如果有按键按下,程序会根据按键的位置确定相应的数字,并更新LED显示。

为了确保稳定的按键检测,程序使用去抖动。去抖动用于解决按键可能因机械原因而产生的抖动问题,以确保只有有效的按键触发才被记录。在按键被按下的情况下,程序通过查表的方式将相应的数字加载到寄存器中,然后进行LED的移位操作,从而实现数字的从左到右的显示效果。

代码包含了删除(Delete)的功能,当按下删除键(S11)时,LED中的数字将向右移动,首位熄灭,最后一位被上一位覆盖。这样用户可以逐位删除输入的数字。

2.流程图

bbdbc66061739fa731abb553a4b89afa.png

图1 流程图

3.主要模块设计思路及分析

  1. 初始化(ORG 0000H:
    • 将寄存器A初始化为0AH,并复制给LED灯的寄存器R0到R7。
    • 设置P1端口的高4位为输入,表示矩阵键盘的列,低4位为输出,表示矩阵键盘的行。
    • 设置DPTR寄存器指向DISPLAY,该表包含LED灯显示数字的模式。
    • 将F0标志位清零。
    • 定义了一个KFC数据指针,存放R0的值。
  2. 主程序(MAIN
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值