89C51单片机实现非编码行列式键盘接口

5星 · 超过95%的资源 需积分: 36 34 下载量 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接口芯片的编程,这些都是嵌入式系统开发的基础技能。