找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 276|回复: 8
打印 上一主题 下一主题
收起左侧

求思路 系统有三个非自锁按键,分别为K1、K2和K3,控制显示器

[复制链接]
跳转到指定楼层
楼主
ID:1147689 发表于 2025-4-10 23:41 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
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。
注意:
①绘制详细的电路原理及编写相应的完整控制程序
②注意程序的缩进与对齐
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:108361 发表于 2025-4-16 17:40 | 只看该作者
这是学校设计吧,其实很简单,按K1之后,启动定时器0.5秒增加一下数值显示出来,增加到12就后下次就清0,重复0.5秒显示一次;按K2就停掉定时器;按K3就手动把数值清零
回复

使用道具 举报

板凳
ID:108361 发表于 2025-4-16 17:41 | 只看该作者
想要白嫖原理图和代码可不成
回复

使用道具 举报

地板
ID:320097 发表于 2025-4-16 22:52 | 只看该作者
要是连这幼儿园级别的代码都不想自己去弄,那还是趁早放弃得好
回复

使用道具 举报

5#
ID:69038 发表于 2025-4-17 07:13 | 只看该作者
对对对,网络上可没有奶妈。。
好歹画个图、说说你做到了那一步,又卡在了那一步。
一上来就开题目,伸手要可不是好习惯。。
难不成小海豚DeepSeek都断网了?
回复

使用道具 举报

6#
ID:291668 发表于 2025-4-17 09:52 | 只看该作者
这个要求很简单啊,而且你也是分步描述了,就按着这个思路分块去做就行了。无论对错好坏,做一个出来你再来请教,别人会给你建议或者意见,这样才能提高。可别把作业直接发上来让别人搞。
回复

使用道具 举报

7#
ID:1109793 发表于 2025-4-17 10:35 | 只看该作者
听说豆包也很好用呢
回复

使用道具 举报

8#
ID:624769 发表于 2025-4-17 17:48 | 只看该作者
贴到 作业帮 里面试试。
回复

使用道具 举报

9#
ID:1137639 发表于 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; }     
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表