51单片机单击按键,数码管显示学号;双击按键,数码管显示全8

2024-06-10 09:52

本文主要是介绍51单片机单击按键,数码管显示学号;双击按键,数码管显示全8,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1、功能描述

单击按键,数码管显示学号;双击按键,数码管显示全8

2、实验原理

按键输入检测:通过检测按键的电平变化来识别按键是否被按下。当按键被按下时,电平从高变低,单片机通过外部中断或轮询方式检测这一变化。

数码管显示控制:数码管是一种七段显示器,通过控制每个段的亮灭来显示数字或字符。C51单片机通过输出不同的编码来控制数码管显示相应的数字。

3、编程思路

初始化:定义相关的宏、变量和数码管显示数字的编码。

显示控制:通过一个循环来控制8位数码管的显示,根据按键的状态切换显示模式。

按键处理:使用延时和状态变化来区分单击和双击事件,并根据结果切换显示模式。

4、代码

#include <REGX52.h>  // 包含C51单片机的寄存器定义头文件#define uchar unsigned char  // 定义简化数据类型
#define uint unsigned int    // 定义简化数据类型sbit LED = P2 ^ 0;  // 定义LED灯接口,连接到P2端口的第0位
sbit KEY = P3 ^ 1;  // 定义按键接口,连接到P3端口的第1位uchar code table1[] = { 0x5B,0x5B,0x5B,0x06,0x3F,0x3F,0x4F,0x3F };  // 定义数码管显示数字的编码数组void Delay(int x)  // 定义延时函数
{while (x--);  // 递减x直到0,实现延时
}void main()  // 主函数
{uchar k, model = 0, latter = 0, former = 0, o = 0, flag = 1;  // 定义变量while (1)  // 主循环{for (k = 0; k <= 7; k++)  // 循环控制8位数码管{P0 = model ? table1[8] : table1[k];  // 根据model的值选择显示全8或预设数字序列// 根据k的值设置位选信号,选择当前的数码管switch (k){case 0: P2_4 = 1; P2_3 = 1; P2_2 = 1; break;  // 选择第1位数码管case 1: P2_4 = 1; P2_3 = 1; P2_2 = 0; break;  // 选择第2位数码管case 2:P2_4 = 1;  P2_3 = 0; P2_2 = 1; break;case 3:P2_4 = 1;  P2_3 = 0; P2_2 = 0; break;case 4:P2_4 = 0;  P2_3 = 1; P2_2 = 1; break;case 5:P2_4 = 0;  P2_3 = 1; P2_2 = 0; break;case 6:P2_4 = 0;  P2_3 = 0; P2_2 = 1; break;case 7: P2_4 = 0; P2_3 = 0; P2_2 = 0; break;  // 选择第8位数码管}// 检测按键状态if (!KEY){Delay(200);  // 延时去抖动latter = !KEY ? 1 : 0;  // 检测按键是否被按下}else{Delay(200);  // 延时去抖动latter = 0;  // 按键未被按下}// 根据按键状态变化判断是否发生了单击或双击if (latter == 0 && former == 1 && o != 0)flag = 2;  // 双击if (latter == 0 && former == 1 && o == 0){flag = 1;  // 单击o = 500;  // 设置延时计数}former = latter;  // 更新按键状态if (o > 0) o--;  // 递减延时计数}// 根据flag的值切换显示模式if (o == 0 && flag == 1)model = 0;  // 显示预设数字序列if (flag == 2)model = 1;  // 显示全8}
}

这篇关于51单片机单击按键,数码管显示学号;双击按键,数码管显示全8的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1047838

相关文章

51单片机学习记录———定时器

文章目录 前言一、定时器介绍二、STC89C52定时器资源三、定时器框图四、定时器模式五、定时器相关寄存器六、定时器练习 前言 一个学习嵌入式的小白~ 有问题评论区或私信指出~ 提示:以下是本篇文章正文内容,下面案例可供参考 一、定时器介绍 定时器介绍:51单片机的定时器属于单片机的内部资源,其电路的连接和运转均在单片机内部完成。 定时器作用: 1.用于计数系统,可

JAVA读取MongoDB中的二进制图片并显示在页面上

1:Jsp页面: <td><img src="${ctx}/mongoImg/show"></td> 2:xml配置: <?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001

零基础STM32单片机编程入门(一)初识STM32单片机

文章目录 一.概要二.单片机型号命名规则三.STM32F103系统架构四.STM32F103C8T6单片机启动流程五.STM32F103C8T6单片机主要外设资源六.编程过程中芯片数据手册的作用1.单片机外设资源情况2.STM32单片机内部框图3.STM32单片机管脚图4.STM32单片机每个管脚可配功能5.单片机功耗数据6.FALSH编程时间,擦写次数7.I/O高低电平电压表格8.外设接口

据阿谱尔APO Research调研显示,2023年全球髓内钉市场销售额约为4.7亿美元

根据阿谱尔 (APO Research)的统计及预测,2023年全球髓内钉市场销售额约为4.7亿美元,预计在2024-2030年预测期内将以超过3.82%的CAGR(年复合增长率)增长。 髓内钉市场是指涉及髓内钉制造、分销和销售的行业。髓内钉是一种用于整形外科手术的医疗器械,用于稳定长骨骨折,特别是股骨、胫骨和肱骨。髓内钉通常由不銹钢或钛等材料制成,并插入骨的髓管中,以在愈合过程中提供结构支

vue+elementUI下拉框联动显示

<el-row><el-col :span="12"><el-form-item label="主账号:" prop="partyAccountId" :rules="[ { required: true, message: '主账号不能为空'}]"><el-select v-model="detailForm.partyAccountId" filterable placeholder="

温湿度采集及OLED显示

目录 软件I2C和硬件I2C每隔2秒钟采集一次温湿度数据,显示到OLED上,同时通过串口发送到上位机的“串口助手”软件 软件I2C和硬件I2C "I2C"代表Inter-Integrated Circuit,是一种用于在数字电路之间进行通信的串行通信协议。软件I2C和硬件I2C是两种实现这种协议的方式。 软件I2C是通过软件来模拟I2C通信协议的实现方式。在这种情况下,微控制

Linux之时间显示

在linux中使用使用date的方式来显示时间,但是如果想按照自己想要的格式展示,那就需要加上一点参数了 显示当前时间 date 2024年 06月 23日 星期日 23:21:42 CST 显示当前年份 date +%Y 2024 显示当前月份 date +%m 6 显示当前日期 date +%d 23 自定义显示格式 date "+%Y-%m-%d

STM32单片机PWR电源控制详解

文章目录 1. PWR概述 2. 电源结构框图 3. 上电复位和掉电复位 4. 可编程电压监测器 5. 低功耗模式 6. 模式选择 6.1 睡眠模式 6.2 停止模式 6.3 待机模式 7. 代码示例 1. PWR概述 PWR(Power Control)电源控制,负责管理STM32内部的电源供电部分,可以实现可编程电压监测器和低功耗模式的功能。 可编程电压监测器

【QML】用 Image(QQuickPaintedItem) 显示图片

大体功能: 频繁地往界面推送图片,帧率达到视频效果。捕获画布上的鼠标事件和键盘事件。 代码如下: // DrawImageInQQuickPaintedItem.pro 代码如下:QT += quick# You can make your code fail to compile if it uses deprecated APIs.# In order to do so, uncom

【单片机毕业设计选题24024】-房间自动除湿控制系统

系统功能: 系统分为手动和自动模式,上电默认为自动模式。自动模式下如果获取到湿度 值大于设定的湿度值则自动打开风扇,手动模式下手动开关风扇。 系统上电后显示“欢迎使用除湿控制系统请稍后”,两秒钟后进入主页面显示。 第一行显示系统模式,手动或自动模式 第二行显示获取到的温湿度 第三行显示设置的湿度阈值 第四行显示风扇状态和系统报警状态,风扇状态有开关状态,系统状态和OK和 NG状态。