当前位置: 首页 > news >正文

实验扩充 LED显示4*4键位值

代码功能概述

  1. 键盘扫描
    • 使用 KeyPort(定义为 P1)作为键盘输入端口。
    • 扫描 4x4 矩阵键盘,检测按键并返回按键编号(0~15)。
  2. 数码管显示
    • 根据按键编号,从 SegCode 数组中获取对应数码管段码,并通过 P2 输出显示。
  3. 延时
    • 使用简单的循环实现按键消抖。
      #include <reg51.h>
      #define uchar unsigned char
      #define uint unsigned int#define KeyPort P1
      #define INIT_DISPLAY 0x8C  // 初始显示状态// 数码管段码定义(0~15)
      uchar code SegCode[] = {0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8, 0x80, 0x90,0x88, 0x83, 0xC6, 0xA1, 0x86, 0x8E};
      // 列扫描码定义
      uchar code ColCode[] = {0xFE, 0xFD, 0xFB, 0xF7};// 延时函数
      void delay(uchar m) {uchar j;while (m--) {for (j = 120; j > 0; j--);}
      }// 键盘扫描函数
      uchar keyscan() {uchar temp, row, col, i;KeyPort = 0xF0;  // 设置行高电平,列低电平delay(10); temp = KeyPort & 0xF0;if (temp != 0xF0) {  // 检测到按键按下delay(10);       // 消抖temp = KeyPort & 0xF0;if (temp != 0xF0) {  // 再次确认按键按下// 确定行号switch (temp) {case 0x70: row = 3; break;  // 第一行case 0xB0: row = 2; break;  // 第二行case 0xD0: row = 1; break;  // 第三行case 0xE0: row = 0; break;  // 第四行default: return 16;          // 错误情况}// 确定列号for (i = 0; i < 4; i++) {KeyPort = 0xF0 | ColCode[i] & 0x0F;  // 确保高 4 位为 1,低 4 位为列扫描码temp = KeyPort & 0xF0;if (temp != 0xF0) {    // 检测到按键col = i;break;}} return (row * 4 + col);  // 返回按键编号	             	}     }return 16;  // 无按键按下
      }
      void main(void) {uchar keyNum;P2 = INIT_DISPLAY;  // 初始状态while (1) {keyNum = keyscan();if (keyNum < 16) {P2 = SegCode[keyNum];  // 显示按键编号对应的数码管段码} else {P2 = INIT_DISPLAY;  // 无按键按下时恢复初始状态}}}

相关文章:

  • 单片机毕业设计选题物联网计算机电气电子类
  • Java使用javacv实现的多种音视频格式播放器
  • Qt编写推流程序/支持webrtc265/从此不用再转码/打开新世界的大门
  • ReSearch:基于强化学习的大语言模型推理搜索框架
  • JavaSpring 中使用 Redis
  • PostgreSQL 常用客户端工具
  • DataWhale AI春训营 问题汇总
  • Map和Set相关练习
  • 【Java面试系列】Spring Boot微服务架构下的分布式事务处理与性能优化 - 2025-04-19详解 - 3-5年Java开发必备知识
  • Linux 桌面环境 LXQt 2.2 发布
  • Http基础
  • docker架构
  • Java调用LLM大模型 - 基于 Spring AI 实现
  • 中间件--ClickHouse-11--部署示例(Linux宿主机部署,Docker容器部署)
  • 研一自救指南 - 07. CSS面向面试学习
  • MySQL如何实现行行比较
  • php多种方法实现xss过滤
  • 工厂模式具体应用在什么场景?
  • End-to-End从混沌到秩序:基于LLM的Pipeline将非结构化数据转化为知识图谱
  • 【计算机视觉】三维视觉项目 - Colmap二维图像重建三维场景
  • 我们的免疫系统,是世界上最好的“医生”
  • 宁波一季度GDP为4420.5亿元,同比增长5.6%
  • 浙江一季度GDP为22300亿元,同比增长6.0%
  • 深一度|中国花样滑冰因何大滑坡
  • 文旅部:今年中国旅游日活动合作单位扩大至60多家
  • 一周人物| 萨韦利上海画展,陆永安“从董源到塞尚”