04矩阵键盘实现计算器操作

需求:矩阵键盘实现计算器操作

在这里插入图片描述

main.c 代码如下:

#include <STC89C5XRC.H>
#include "ApplicationProgram.h"
#include "Int_DigitalTube.h"
#include "Int_MatrixKeyboard.h"


void main()
{
   
    u8  KeyPress;
    App_Initialize();
    while (1) {
   
        KeyPress = Int_MatrixKeyboard_Counter();
        if(KeyPress != 10) {
   
            App_KeyFunction(KeyPress);
        }
        Int_DigitalTube_Refresh();
    }
}

Int_MatrixKeyboard.h 代码如下:

#ifndef __INT_MATRIXKEYBOARD_H__
#define __INT_MATRIXKEYBOARD_H__
#include "Util.h"

/**
 * @brief 数字
 * 
 * @return u8 返回数字 0 - 9
 * 
 *            返回 10 代表错误
 * 
 *            返回 11 代表 +
 *            返回 12 代表 -
 *            返回 13 代表 *
 *            返回 14 代表 /
 *            返回 15 代表 =
 *            返回 16 代表 清零
 */
u8 Int_MatrixKeyboard_Counter();

#endif

Int_MatrixKeyboard.c 代码如下:

#include "Int_MatrixKeyboard.h"
#include <STC89C5xRC.H>

#define KEYIN P2

u8 Int_MatrixKeyboard_Counter()
{
   
    // 将P20 置为 0 ;则P27 - P20分别为1111 1110  0xFE
    KEYIN = 0xFE;
    // SW5 按下 ;则P27 - P20分别为1110 1110  0xEE
    if (KEYIN == 0xEE) {
   
        // 消前抖
        Com_Util_Delay1ms(10);
        if (KEYIN == 0xEE) {
   
            // SW5 已经被按下等待抬起
            while (1) {
   
                if (KEYIN == 0xFE) {
   
                    // 消后抖
                    Com_Util_Delay1ms(10);
                    if (KEYIN == 0xFE) {
   
                        return 1;
                    }
                }
            }
        }
    }

    // SW6 按下 ;则P27 - P20分别为1101 1110  0xDE
    if (KEYIN == 0xDE) {
   
        // 消前抖
        Com_Util_Delay1ms(10);
        if (KEYIN == 0xDE) {
   
            // SW5 已经被按下等待抬起
            while (1) {
   
                if (KEYIN == 0xFE) {
   
                    // 消后抖
                    Com_Util_Delay1ms(10);
                    if (KEYIN == 0xFE) {
   
                        return 2;
                    }
                }
            }
        }
    }
    // SW7 按下 ;则P27 - P20分别为1011 1110  0xBE
    if (KEYIN == 0xBE) {
   
        // 消前抖
        Com_Util_Delay1ms(10);
        if (KEYIN == 0xBE) {
   
            // SW5 已经被按下等待抬起
            while (1) {
   
                if (KEYIN == 0xFE) {
   
                    // 消后抖
                    Com_Util_Delay1ms(10);
                    if (KEYIN == 0xFE) {
   
                        return 3;
                    }
                }
            }
        }
    }
    // SW8 按下 ;则P27 - P20分别为0111 1110  0x7E
    if (KEYIN == 0x7E) {
   
        // 消前抖
        Com_Util_Delay1ms(10);
        if (KEYIN == 0x7E) {
   
            // SW5 已经被按下等待抬起
            while (1) {
   
                if (KEYIN == 0xFE) {
   
                    // 消后抖
                    

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/528124.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

外贸企业版本自适应通用型外贸英文多语言网站

外贸网站模板&#xff1a;自适应通用型大气外贸英文多语言网站主要是以文字内容为主导&#xff0c;将页面的设计杂乱的图片和元素进行最小化或者去除&#xff0c;从而使整个页面更加简洁、清晰&#xff0c;突出信息的呈现。 下面介绍一下外贸网站模板: 自适应通用型大气外贸英…

第46期 | GPTSecurity周报

GPTSecurity是一个涵盖了前沿学术研究和实践经验分享的社区&#xff0c;集成了生成预训练Transformer&#xff08;GPT&#xff09;、人工智能生成内容&#xff08;AIGC&#xff09;以及大语言模型&#xff08;LLM&#xff09;等安全领域应用的知识。在这里&#xff0c;您可以找…

如何使用群晖Synology Drive结合cpolar内网穿透实现同步Obsidian笔记文件

文章目录 一、简介软件特色演示&#xff1a; 二、使用免费群晖虚拟机搭建群晖Synology Drive服务&#xff0c;实现局域网同步1 安装并设置Synology Drive套件2 局域网内同步文件测试 三、内网穿透群晖Synology Drive&#xff0c;实现异地多端同步Windows 安装 Cpolar步骤&#…

无人机倾斜摄影技术在智慧城市中的应用

随着智慧城市的不断发展和完善&#xff0c;新兴热门技术也不断崛起。无人机技术作为其中之一&#xff0c;具有操作简单、应用灵活等优势&#xff0c;受到了各个行业的青睐。现阶段&#xff0c;无人机技术与5G移动通信系统、人工智能系统深度融合&#xff0c;实现了无人机技术的…

启明智显M系列--工业级HMI芯片选型表

本章主要介绍启明智显M系列HMI主控芯片&#xff1a; 纯国产自主&#xff0c; RISC-V 内核&#xff0c;配备强大的 2D 图形加速处理器、PNG/JPEG 解码引擎、H.264解码&#xff1b;工业宽温&#xff0c;提供全开源SDK&#xff1b;1秒快速开机启动的特性&#xff0c;极大地提高了…

数据结构——双向循环链表

目录 前言 一、链表的分类 二、双向循环链表 2.1 开辟新的节点 2.2 链表初始化 2.3 打印链表 2.4 链表的尾插 2.5 链表的头插 2.6 链表的尾删 2.7 链表的头删 2.8 查找链表 2.9 在pos位置之后插入数据 2.10 删除pos位置的数据 三、完整代码实现 四、顺序表和双向…

使用 R.swift(生成不了R.generated.swift)

今天算是正儿八经创建第一个swift工程&#xff0c;照着视频引用R.swift pod R.swift 工程配置 "$PODS_ROOT/R.swift/rswift" generate "$SRCROOT/R.generated.swift" $TEMP_DIR/rswift-lastrun $SRCROOT/R.generated.swift * 注意 Run角本要放在 Che…

半导体的主要四大应用

半导体是现代信息社会的基石&#xff0c;是现代工业的“粮食”&#xff0c;是电子设备产品生产制造的核心&#xff0c;它与我们的生活紧密相关。涉及到方方面面&#xff0c;半导体芯片、智能汽车、智慧电网、5G通信、航空航天、国防军工、医疗卫生等等。半导体的主要应用都有哪…

大型语言模型如何助力推荐系统:综述研究

论文地址&#xff1a;https://arxiv.org/pdf/2306.05817.pdf 这篇论文主要探讨了推荐系统&#xff08;RS&#xff09;如何从大型语言模型&#xff08;LLM&#xff09;中获益。论文首先指出&#xff0c;随着在线服务和网络应用的快速发展&#xff0c;推荐系统已成为缓解信息过载…

药店药品进销存管理系统软件可以对有效期管理查询以及对批号库存管理

药店药品进销存管理系统软件可以对有效期管理查询以及对批号库存管理 一、前言 以下软件操作教程以&#xff0c;佳易王药店药品进销存管理软件为例说明 软件文件下载可以点击最下方官网卡片——软件下载——试用版软件下载 软件可以对药品有效期进行管理查询&#xff0c;可以…

Python构建复杂数据管道库之luigi使用详解

概要 在大数据时代,处理海量数据已经成为许多应用和业务的基本需求。为了有效地管理和处理这些数据,需要强大的工具来构建可靠的数据管道。Python Luigi 就是这样一种工具,它提供了一个简单而强大的框架,用于构建复杂的数据处理流程。本文将深入探讨 Python Luigi 的核心概…

使用yolov8实现自动车牌识别(教程+代码)

该项目利用了一个被标记为“YOLOv8”的目标检测模型&#xff0c;专门针对车牌识别任务进行训练和优化。整个系统通常分为以下几个核心步骤&#xff1a; 数据准备&#xff1a; 收集包含车牌的大量图片&#xff0c;并精确地标记车牌的位置和文本信息。数据集可能包含各种环境下的…

基于java+springboot+vue实现的旅游管理系统(文末源码+Lw)23-234

摘 要 如今社会上各行各业&#xff0c;都喜欢用自己行业的专属软件工作&#xff0c;互联网发展到这个时候&#xff0c;人们已经发现离不开了互联网。新技术的产生&#xff0c;往往能解决一些老技术的弊端问题。因为传统旅游管理系统信息管理难度大&#xff0c;容错率低&#…

设计模式之解释器模式(上)

解释器模式 1&#xff09;概述 1.定义 定义一个语言的文法&#xff0c;并且建立一个解释器来解释该语言中的句子&#xff0c;这里的“语言”是指使用规定格式和语法的代码。 2.结构图 3.角色 AbstractExpression&#xff08;抽象表达式&#xff09;&#xff1a;在抽象表达…

PQMII-T20-C-A的控制功能

PQMII-T20-C-A 是一款电力质量监测仪器&#xff0c;它能够提供三相系统的连续监控。 以下是关于PQMII-T20-C-A的一些详细信息&#xff1a; 多参数测量&#xff1a;该设备具备测量电流、电压、有功功率、无功功率、能源使用、电力成本、功率因数和频率等关键电力参数的能力。波…

阿里云2024年优惠券获取方法及使用教程详解

阿里云是阿里巴巴集团旗下的云计算服务提供商&#xff0c;是全球领先的云计算及人工智能科技公司之一。提供免费试用、云服务器、云数据库、云安全、云企业应用等云计算服务&#xff0c;以及大数据、人工智能服务、精准定制基于场景的行业解决方案。 阿里云2024年优惠券的获取方…

jeecg-boot 3.6使用微服务启动详细配置

1&#xff1a;运行sql文件 2&#xff1a;配置host 路径如下 127.0.0.1 jeecg-boot-redis 127.0.0.1 jeecg-boot-mysql 127.0.0.1 jeecg-boot-nacos 127.0.0.1 jeecg-boot-gateway 127.0.0.1 jeecg-boot-system 127.0.0.1 jeecg-boot-xxljob 127.0.0.1 jeecg-boot-rabbitmq 3…

基于springboot现服装销售平台系统项目【项目源码+论文说明】

基于springboot实现服装销售平台系统演示 摘要 随着信息互联网购物的飞速发展&#xff0c;一般企业都去创建属于自己的电商平台以及购物管理系统。本文介绍了“衣依”服装销售平台的开发全过程。通过分析企业对于“衣依”服装销售平台的需求&#xff0c;创建了一个计算机管理“…

系统架构评估_3.ATAM方法

架构权衡分析方法&#xff08;Architecture Tradeoff Analysis Method&#xff0c;ATAM&#xff09;是在SAAM的基础发展起来的&#xff0c;主要针对性能、实用性、安全性和可修改性&#xff0c;在系统开发之前&#xff0c;对这些质量属性进行评价和折中。 &#xff08;1&#x…