一、 实验要求
- 利用单片.机开发板的矩阵键盘实现个人学号后8位的输入和.显示。
- 利用矩阵键.盘S1~S10输入.数字1~0。
- 利用数.码管LED8~LED1从左到右显示8位.学号.
二、 实验设计
1.整体思路
程序首先进行初始化,设置LED初始值、端口状态,以及一些必要的标志位。
主程序进入循环,不断读取矩阵键盘状态。在每次循环中,程序检查是否有按键按下。如果有按键按下,程序会根据按键的位置确定相应的数字,并更新LED显示。
为了确保稳定的按键检测,程序使用去抖动。去抖动用于解决按键可能因机械原因而产生的抖动问题,以确保只有有效的按键触发才被记录。在按键被按下的情况下,程序通过查表的方式将相应的数字加载到寄存器中,然后进行LED的移位操作,从而实现数字的从左到右的显示效果。
代码包含了删除(Delete)的功能,当按下删除键(S11)时,LED中的数字将向右移动,首位熄灭,最后一位被上一位覆盖。这样用户可以逐位删除输入的数字。
2.流程图
图1 流程图
3.主要模块设计思路及分析
- 初始化(ORG 0000H):
- 将寄存器A初始化为0AH,并复制给LED灯的寄存器R0到R7。
- 设置P1端口的高4位为输入,表示矩阵键盘的列,低4位为输出,表示矩阵键盘的行。
- 设置DPTR寄存器指向DISPLAY,该表包含LED灯显示数字的模式。
- 将F0标志位清零。
- 定义了一个KFC数据指针,存放R0的值。
- 主程序(MAIN)