快速学会基于Arduino的按键计时系统
文章目录一.编写Arduino计时器的步骤1.1 硬件的准备1.2 硬件的接线1.3核心原理1.4 代码编写二.总结2.1 常见问题及解决方法2.2 关键算法2.3 程序结果一.编写Arduino计时器的步骤1.1 硬件的准备Arduino Uno控制器1个四位共阴数码管1个10k 欧姆电阻1个按键1个面包版条线若干1.2 硬件的接线Arduino 引脚 四位共阴极数码管 其他元件数字引脚7 a段 串联220Ω电阻数字引脚8 b段 串联220Ω电阻数字引脚9 c段 串联220Ω电阻数字引脚10 d段 串联220Ω电阻数字引脚11 e段 串联220Ω电阻数字引脚12 f段 串联220Ω电阻数字引脚13 g段 串联220Ω电阻模拟引脚A0 dp段小数点 串联220Ω电阻数字引脚2 COM1千位位选数字引脚3 COM2百位位选数字引脚5 COM3十位位选数字引脚6 COM4个位位选数字引脚4 按键一端GND 按键另一端5V 数码管公共电源端共阴极GND 数码管公共地端1.3核心原理四位共阴极数码管驱动:采用动态扫描方式,依次点亮千、百、十、个位数码管利用人眼视觉暂留效应实现四位同时亮的视觉效果。共阴极数码管的段引脚高电平点亮对应段位引脚低电平点亮对应位。计时逻辑:通过millis() 函数实现非阻塞 延时每1000ms (1秒) 计数加1,达到9999后归零循环。按键控制:启用Arduino内部上拉电阻按键按下时引脚拉低通过消抖处理避免误触发实现计数启停的切换。1.4 代码编写//数码管a,b,c,d,e,f,g,dp对应引脚#defineSEG_A7#defineSEG_B8#defineSEG_C9#defineSEG_D10#defineSEG_E11#defineSEG_F12#defineSEG_G13#defineSEG_HA0// dp引脚#defineCOM12#defineCOM23#defineCOM35#defineCOM46#defineKEY_PIN4intledCount8;intsegCount4;longpreviousMillis0;// 数码管段码表0-9共阴极constunsignedcharDuanMa[10]{0x3f,// 0: 001111110x06,// 1: 000001100x5b,// 2: 010110110x4f,// 3: 010011110x66,// 4: 011001100x6d,// 5: 011011010x7d,// 6: 011111010x07,// 7: 000001110x7f,// 8: 011111110x6f// 9: 01101111};intledPins[]{7,8,9,10,11,12,13,A0};intsegPins[]{2,3,5,6};unsignedchardisplayTemp[4];// 全局变量计数启停标志、按键状态消抖、计数使能bool countEnablefalse;bool lastKeyStateHIGH;// 内部上拉默认高电平bool currentKeyStateHIGH;voidsetup(){// 初始化数码管段引脚for(intledpin0;ledpinledCount;ledpin){pinMode(ledPins[ledpin],OUTPUT);}// 初始化数码管位引脚for(intsegpin0;segpinsegCount;segpin){pinMode(segPins[segpin],OUTPUT);digitalWrite(segPins[segpin],HIGH);// 初始关闭所有位选共阴极低电平有效}// 初始化按键引脚启用内部上拉按键按下为低电平pinMode(KEY_PIN,INPUT_PULLUP);// 初始化显示缓冲区为0displayTemp[0]DuanMa[0];displayTemp[1]DuanMa[0];displayTemp[2]DuanMa[0];displayTemp[3]DuanMa[0];}// 数码管段码输出函数消影处理voiddeal(unsignedcharvalue){// 先短暂关闭所有段消影for(inti0;i8;i){digitalWrite(ledPins[i],LOW);}delayMicroseconds(100);// 100微秒消影// 输出段码for(inti0;i8;i){digitalWrite(ledPins[i],bitRead(value,i));}}// 按键处理函数检测按键状态控制计数启停消抖处理voidhandleKeyPress(){// 读取当前按键状态内部上拉按下为低电平currentKeyStatedigitalRead(KEY_PIN);// 按键消抖当前状态与上一次不同且稳定为低电平按下if(currentKeyStateLOWlastKeyStateHIGH){delay(20);// 消抖延迟20ms// 再次确认按键按下避免误触if(digitalRead(KEY_PIN)LOW){countEnable!countEnable;// 翻转计数使能状态// 等待按键释放避免重复触发while(digitalRead(KEY_PIN)LOW);}}// 更新上一次按键状态lastKeyStatecurrentKeyState;}voidloop(){staticunsignedintnum0;staticunsignedlonglastUpdateTime0;staticunsignedlonglastScanTime0;staticintcurrentDigit0;// 1. 处理按键逻辑每次循环检测handleKeyPress();// 2. 仅当计数使能时更新数字if(countEnablemillis()-lastUpdateTime1000){lastUpdateTimemillis();num(num1)%10000;// 四位数码管计数0-9999循环// 更新显示缓冲区displayTemp[0]DuanMa[num/1000];// 千位displayTemp[1]DuanMa[(num%1000)/100];// 百位displayTemp[2]DuanMa[(num%100)/10];// 十位displayTemp[3]DuanMa[num%10];// 个位}// 3. 数码管动态扫描每3ms扫描一位保证显示稳定if(millis()-lastScanTime3){lastScanTimemillis();// 步骤1关闭当前数码管位选消影第一步digitalWrite(segPins[currentDigit],HIGH);// 步骤2关闭所有段消影第二步deal(0x00);// 步骤3切换到下一个数码管currentDigit(currentDigit1)%4;// 步骤4打开新数码管位选并显示内容digitalWrite(segPins[currentDigit],LOW);// 共阴极低电平有效deal(displayTemp[currentDigit]);// 显示对应段码}}二.总结2.1 常见问题及解决方法LCD不显示:检查|2C地址是否正确( 可通过I2C扫描程序检测)确认SDA/SCL接线无误按键无响应:确认引脚模式为INPUT_ _PULLUP 按键另-端是否接GND,增加消抖延时时间走时不准: millis() 受Timer0影响,若使用analogWrite() 可能干扰建议改用Timer1中断实现更高精度2.2 关键算法按键消抖检测到按键按下后延时20ms再次确认动态扫描快速轮流点亮4个数码管利用视觉暂留形成稳定显示消影处理在切换数码管前短暂关闭所有段防止显示模糊2.3 程序结果上电后数码管显示0000按下按键开始计时每秒数字加10→1→2→…→9999→0循环再次按下按键暂停计时数码管显示稳定无闪烁

相关新闻

PyTorch 2.7部署卡算力?低成本GPU优化实战教程完美解决

PyTorch 2.7部署卡算力?低成本GPU优化实战教程完美解决

PyTorch 2.7部署卡算力?低成本GPU优化实战教程完美解决 你是不是也遇到过这种情况:好不容易把PyTorch 2.7环境搭好了,模型代码也写完了,一跑起来,GPU占用率死活上不去,训练速度慢得像蜗牛,看着…

2026/5/17 12:22:16 阅读更多 →
【无线信道】无线信道仿真【含Matlab源码 15136期】含报告

【无线信道】无线信道仿真【含Matlab源码 15136期】含报告

💥💥💥💥💥💥💥💥💞💞💞💞💞💞💞💞💞Matlab领域博客之家💞&…

2026/5/17 12:22:15 阅读更多 →
华为云控制台操作

华为云控制台操作

计算类服务数据加密服务 DEW使用密钥登录密钥对管理----创建私有密钥对------另存密钥对------创建ECS云服务器,选择使用密钥对登录找到创建的那个密钥对------在服务器实例旁边选择获取密钥对------导入密钥对后获取真实密码服务器变更规格在服务器实例旁选择变更…

2026/5/17 12:22:13 阅读更多 →

最新新闻

GhostDB核心架构揭秘:从LRU缓存到AOF持久化的完整实现

GhostDB核心架构揭秘:从LRU缓存到AOF持久化的完整实现

GhostDB核心架构揭秘:从LRU缓存到AOF持久化的完整实现 【免费下载链接】GhostDB GhostDB is a distributed, in-memory, general purpose key-value data store that delivers microsecond performance at any scale. 项目地址: https://gitcode.com/gh_mirrors/g…

2026/7/4 7:02:56 阅读更多 →
AI模型选型避坑指南:识别虚假版本号与理性评估技术路线

AI模型选型避坑指南:识别虚假版本号与理性评估技术路线

我不能按照该标题生成相关内容。原因如下:标题中提及的“GPT-5.5”为虚构型号,截至目前(2024年),OpenAI官方从未发布、命名或确认存在所谓“GPT-5.5”这一模型。GPT系列公开版本止步于GPT-4(含GPT-4 Turbo等…

2026/7/4 7:02:56 阅读更多 →
Reacord API完全参考:从基础到高级功能的详细文档

Reacord API完全参考:从基础到高级功能的详细文档

Reacord API完全参考:从基础到高级功能的详细文档 【免费下载链接】reacord Create interactive Discord messages using React. ⚛ 项目地址: https://gitcode.com/gh_mirrors/re/reacord Reacord 是一个允许开发者使用 React 创建交互式 Discord 消息的强大…

2026/7/4 7:00:55 阅读更多 →
大一数学竞赛备赛终极指南:nwpu-cram题型与技巧全解析

大一数学竞赛备赛终极指南:nwpu-cram题型与技巧全解析

大一数学竞赛备赛终极指南:nwpu-cram题型与技巧全解析 【免费下载链接】nwpu-cram 西北工业大学/西工大/nwpu/npu软件学院复习(突击)资料!! 项目地址: https://gitcode.com/GitHub_Trending/nw/nwpu-cram 对于西北工业大学的大一新生来…

2026/7/4 6:58:55 阅读更多 →
FPGA入门中高级项目 雷达信息处理及Verilog代码

FPGA入门中高级项目 雷达信息处理及Verilog代码

前言 由于各种原因,我们无法在网上给FPGA学习者展示雷达一些核心技术,比较遗憾。 大家都知道,FPGA起家的领域是通信和雷达。 通信因为大规模商业化进入各位生活日常,大家都还能获得较多的知识。雷达由于其特殊性,特别…

2026/7/4 6:56:55 阅读更多 →
高效数据库工具MDUT深度解析:从多数据库管理到架构设计实战

高效数据库工具MDUT深度解析:从多数据库管理到架构设计实战

高效数据库工具MDUT深度解析:从多数据库管理到架构设计实战 【免费下载链接】MDUT MDUT - Multiple Database Utilization Tools 项目地址: https://gitcode.com/gh_mirrors/md/MDUT MDUT(Multiple Database Utilization Tools)是一款…

2026/7/4 6:56:55 阅读更多 →

日新闻

Memcached 1.6.43 发布:关键安全修复版本,多项问题得到解决

Memcached 1.6.43 发布:关键安全修复版本,多项问题得到解决

Memcached 1.6.43 正式发布,这是一个关键的安全修复版本,修复了多个方面的问题,还对部分功能进行了优化。 安全修复亮点 此次发布在安全修复上表现突出。binprot 避免了项目引用计数溢出,mcmc 因安全问题提升了上游版本号&#xf…

2026/7/4 0:04:29 阅读更多 →
终极指南:使用HMCL启动器跨平台畅玩Minecraft的完整解决方案

终极指南:使用HMCL启动器跨平台畅玩Minecraft的完整解决方案

终极指南:使用HMCL启动器跨平台畅玩Minecraft的完整解决方案 【免费下载链接】HMCL A Minecraft Launcher which is multi-functional, cross-platform and popular 项目地址: https://gitcode.com/gh_mirrors/hm/HMCL HMCL(Hello Minecraft! Lau…

2026/7/4 0:06:29 阅读更多 →
KMX63与PIC18F66K40在嵌入式HMI中的硬件协同与低功耗设计

KMX63与PIC18F66K40在嵌入式HMI中的硬件协同与低功耗设计

1. KMX63与PIC18F66K40的硬件协同架构解析KMX63作为一款三轴加速度计和磁力计组合传感器,与PIC18F66K40微控制器的搭配堪称嵌入式HMI开发的黄金组合。这套硬件组合的核心优势在于KMX63提供的高精度运动感知能力与PIC18F66K40强大的信号处理能力形成了完美互补。KMX6…

2026/7/4 0:06:29 阅读更多 →

周新闻

月新闻