89C51单片机实现非编码行列式键盘接口
5星 · 超过95%的资源 需积分: 36 67 浏览量
更新于2024-11-04
3
收藏 523KB DOC 举报
"89C51单片机键盘实验,8255扩展接口,行列式非编码键盘,数码管显示"
在这个实验中,主要目标是学习如何使用89C51单片机的I/O口来实现非编码行列式键盘的功能,并通过8255扩展接口进行键盘和显示的控制。89C51是一种广泛应用的微控制器,具有丰富的I/O端口,适合于简单的控制系统。
实验内容涉及以下关键知识点:
1. **行列式键盘设计**:
- 键盘通常分为编码键盘和非编码键盘。编码键盘硬件会生成按键的键值,而非编码键盘则需要软件来识别按键。
- 实验中的键盘是4x4行列式非编码键盘,由行线和列线交叉组成,按键闭合时形成通路,软件通过扫描行线和列线的电平变化来确定按下的键。
2. **键盘扫描**:
- 扫描过程包括检测是否有键被按下(通过行线发送全“0”并检查列线数据是否全“1”),去除按键抖动(多次检查以确认键的稳定状态),以及识别键号(根据低电平的行和列号计算键号)。
3. **8255扩展接口**:
- 8255是通用可编程接口芯片,可以扩展单片机的I/O能力。在这个实验中,8255用于控制键盘输入和LED数码管的显示。
- 通过设置8255的控制字(如代码中的#88H)来配置其工作模式。
4. **实验要求**:
- 使用89C51的P1口作为键盘的行列口,实现四位扫描和读取,将键号存入内存缓冲区。
- 在数码管上显示特定字符,如学号。
- 当按下小键盘的0~F键时,对应的数值应在LED数码管上显示。
5. **实验步骤**:
- 连接电路,确保89C51的P0和P1口正确连接到键盘和数码管模块。
- 设置和初始化8255,通过DPTR和MOVX指令写入控制字。
- 编写程序,包括键盘扫描、按键识别和数码管显示的逻辑。
实验代码中,`ORG`指令用于设定程序的起始地址,`SJMP`和`LJMP`是跳转指令,`SETB`用于置位寄存器或位,`MOV`用于数据传输,`DPTR`是双字节寄存器用于间接寻址,`A`是累加器,`#`表示立即数。`START`标签后的部分是程序的主入口,设置中断允许和优先级,以及8255的初始化。
通过这个实验,学生可以深入理解单片机I/O接口的使用,键盘扫描技术,以及8255接口芯片的编程,这些都是嵌入式系统开发的基础技能。
2020-10-20 上传
2013-09-23 上传
2021-10-06 上传
点击了解资源详情
2015-01-26 上传
2012-01-02 上传
2012-08-07 上传