标题:
求思路 系统有三个非自锁按键,分别为K1、K2和K3,控制显示器
[打印本页]
作者:
wyj133
时间:
2025-4-10 23:41
标题:
求思路 系统有三个非自锁按键,分别为K1、K2和K3,控制显示器
2.系统有三个非自锁按键,分别为K1、K2和K3,控制显示器(七段数码管或LCD1602)显示信息,要求:
(1)按下K1后,显示器按如下规律开始显示
显示0,保持0.5秒;
显示1,保持0.5秒;
显示2,保持0.5秒;
……
显示11,保持0.5秒;
显示12,保持0.5秒;
显示0,保持0.5秒;
显示1,保持0.5秒;
显示2,保持0.5秒;
……
按如上无限循环。
(2)按下K2后, 显示器显示的数字保持不变化,即暂停。
(3)按下K3后, 显示器显示清零,即显示0。
注意:
①绘制详细的电路原理及编写相应的完整控制程序
②注意程序的缩进与对齐
作者:
powerdruy
时间:
2025-4-16 17:40
这是学校设计吧,其实很简单,按K1之后,启动定时器0.5秒增加一下数值显示出来,增加到12就后下次就清0,重复0.5秒显示一次;按K2就停掉定时器;按K3就手动把数值清零
作者:
powerdruy
时间:
2025-4-16 17:41
想要白嫖原理图和代码可不成
作者:
欧阳云天
时间:
2025-4-16 22:52
要是连这幼儿园级别的代码都不想自己去弄,那还是趁早放弃得好
作者:
zhuls
时间:
2025-4-17 07:13
对对对,网络上可没有奶妈。。
好歹画个图、说说你做到了那一步,又卡在了那一步。
一上来就开题目,伸手要可不是好习惯。。
难不成小海豚DeepSeek都断网了?
作者:
li64331218
时间:
2025-4-17 09:52
这个要求很简单啊,而且你也是分步描述了,就按着这个思路分块去做就行了。无论对错好坏,做一个出来你再来请教,别人会给你建议或者意见,这样才能提高。可别把作业直接发上来让别人搞。
作者:
xiaobendan001
时间:
2025-4-17 10:35
听说豆包也很好用呢
作者:
188610329
时间:
2025-4-17 17:48
贴到 作业帮 里面试试。
作者:
622323wjl
时间:
2025-4-17 21:04
#include <LiquidCrystal.h> // 定义LCD引脚 LiquidCrystal lcd(12, 11, 5, 4, 3, 2); // 定义按键引脚 const int K1 = 6; const int K2 = 7; const int K3 = 8; // 定义状态变量 bool isRunning = false; bool isPaused = false; int currentNumber = 0; // 定义时间间隔 const unsigned long interval = 500; unsigned long previousMillis = 0; void setup() { // 初始化LCD lcd.begin(16, 2); lcd.print("Press K1 to start"); // 初始化按键引脚为输入模式 pinMode(K1, INPUT_PULLUP); pinMode(K2, INPUT_PULLUP); pinMode(K3, INPUT_PULLUP); } void loop() { // 检测按键状态 checkButtons(); if (isRunning && !isPaused) { unsigned long currentMillis = millis(); if (currentMillis - previousMillis >= interval) { previousMillis = currentMillis; // 更新显示数字 updateDisplay(); } } } void checkButtons() { if (digitalRead(K1) == LOW) { delay(20); // 消抖 if (digitalRead(K1) == LOW) { isRunning = true; isPaused = false; while (digitalRead(K1) == LOW); // 等待按键释放 } } if (digitalRead(K2) == LOW) { delay(20); // 消抖 if (digitalRead(K2) == LOW) { isPaused = !isPaused; while (digitalRead(K2) == LOW); // 等待按键释放 } } if (digitalRead(K3) == LOW) { delay(20); // 消抖 if (digitalRead(K3) == LOW) { isRunning = false; isPaused = false; currentNumber = 0; updateDisplay(); while (digitalRead(K3) == LOW); // 等待按键释放 } } } void updateDisplay() { lcd.clear(); lcd.print(currentNumber); currentNumber = (currentNumber + 1) % 13; }
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1