(1)设计一个1-100秒倒计时报警器。 (2)通过按键K1设置倒计时报簪器的初始值 加; •(3)通过按键K2设置倒计时报警器的初始值。 我; (4通过按键k3设置倒计时报警器的开始; (5)报警时间到,LED亮灭各一秒(精确) 同时剩余数码管显示HELLO报警提示。 K4实现系统复位功能
时间: 2023-05-28 22:01:32 浏览: 147
1-99分钟倒计时_1-99分钟倒计时_multisim_multisim倒计时_
5星 · 资源好评率100%
具体实现方法如下:
首先定义计数变量count和初始值变量target,并将两个变量均初始化为0。然后通过按键K1和K2分别将target加上或减去1,以设置倒计时报警器的初始值。在按下K3开始计时后,每隔1秒将count减1,同时将LED亮灭各一秒,并检查count是否等于0,若相等则显示“HELLO”报警提示。最后按下K4实现系统复位功能,即将count和target均重置为0。
代码如下:
```
#define K1 2 // 设置K1按键引脚
#define K2 3 // 设置K2按键引脚
#define K3 4 // 设置K3按键引脚
#define K4 5 // 设置K4按键引脚
#define LED 6 // 设置LED引脚
#define D1 7 // 设置数码管D1引脚
#define D2 8 // 设置数码管D2引脚
#define D3 9 // 设置数码管D3引脚
#define D4 10 // 设置数码管D4引脚
#define A 11 // 设置数码管位选A引脚
#define B 12 // 设置数码管位选B引脚
#define C 13 // 设置数码管位选C引脚
#define D 14 // 设置数码管位选D引脚
int count = 0; // 定义计数变量
int target = 0; // 定义初始值变量
void setup() {
pinMode(K1, INPUT_PULLUP); // 设置K1按键为上拉输入模式
pinMode(K2, INPUT_PULLUP); // 设置K2按键为上拉输入模式
pinMode(K3, INPUT_PULLUP); // 设置K3按键为上拉输入模式
pinMode(K4, INPUT_PULLUP); // 设置K4按键为上拉输入模式
pinMode(LED, OUTPUT); // 设置LED为输出模式
pinMode(D1, OUTPUT); // 设置数码管D1为输出模式
pinMode(D2, OUTPUT); // 设置数码管D2为输出模式
pinMode(D3, OUTPUT); // 设置数码管D3为输出模式
pinMode(D4, OUTPUT); // 设置数码管D4为输出模式
pinMode(A, OUTPUT); // 设置数码管位选A为输出模式
pinMode(B, OUTPUT); // 设置数码管位选B为输出模式
pinMode(C, OUTPUT); // 设置数码管位选C为输出模式
pinMode(D, OUTPUT); // 设置数码管位选D为输出模式
}
void loop() {
// 通过按键K1设置倒计时报簪器的初始值加1
if (digitalRead(K1) == LOW) {
target++;
delay(200); // 延时200毫秒防抖动
}
// 通过按键K2设置倒计时报簪器的初始值减1
if (digitalRead(K2) == LOW) {
target--;
delay(200); // 延时200毫秒防抖动
}
// 通过按键K3开始计时
if (digitalRead(K3) == LOW) {
count = target; // 设置计数变量为初始值变量
}
// 报警时间到,LED亮灭各一秒,且剩余数码管显示HELLO报警提示。
if (count == 0) {
digitalWrite(LED, HIGH); // 点亮LED
delay(1000); // 延时1000毫秒
digitalWrite(LED, LOW); // 熄灭LED
delay(1000); // 延时1000毫秒
display("HELLO"); // 显示HELLO报警提示
}
// 通过按键K4实现系统复位功能
if (digitalRead(K4) == LOW) {
count = 0; // 重置计数变量为0
target = 0; // 重置初始值变量为0
}
// 显示剩余时间
display(count);
delay(1000); // 延时1000毫秒
count--; // 计数变量减1
}
void display(int number) {
// 数码管显示函数
digitalWrite(A, LOW);
digitalWrite(B, LOW);
digitalWrite(C, LOW);
digitalWrite(D, LOW);
switch(number / 1000) {
case 0: digitalWrite(A, HIGH); break;
case 1: digitalWrite(B, HIGH); break;
case 2: digitalWrite(A, HIGH); digitalWrite(B, HIGH); break;
case 3: digitalWrite(C, HIGH); break;
case 4: digitalWrite(A, HIGH); digitalWrite(C, HIGH); break;
case 5: digitalWrite(B, HIGH); digitalWrite(C, HIGH); break;
case 6: digitalWrite(A, HIGH); digitalWrite(B, HIGH); digitalWrite(C, HIGH); break;
case 7: digitalWrite(D, HIGH); break;
case 8: digitalWrite(A, HIGH); digitalWrite(D, HIGH); break;
case 9: digitalWrite(B, HIGH); digitalWrite(D, HIGH); break;
}
delay(1); // 延时1毫秒
digitalWrite(A, LOW);
digitalWrite(B, LOW);
digitalWrite(C, LOW);
digitalWrite(D, LOW);
switch(number / 100 % 10) {
case 0: digitalWrite(A, HIGH); break;
case 1: digitalWrite(B, HIGH); break;
case 2: digitalWrite(A, HIGH); digitalWrite(B, HIGH); break;
case 3: digitalWrite(C, HIGH); break;
case 4: digitalWrite(A, HIGH); digitalWrite(C, HIGH); break;
case 5: digitalWrite(B, HIGH); digitalWrite(C, HIGH); break;
case 6: digitalWrite(A, HIGH); digitalWrite(B, HIGH); digitalWrite(C, HIGH); break;
case 7: digitalWrite(D, HIGH); break;
case 8: digitalWrite(A, HIGH); digitalWrite(D, HIGH); break;
case 9: digitalWrite(B, HIGH); digitalWrite(D, HIGH); break;
}
delay(1); // 延时1毫秒
digitalWrite(A, LOW);
digitalWrite(B, LOW);
digitalWrite(C, LOW);
digitalWrite(D, LOW);
switch(number / 10 % 10) {
case 0: digitalWrite(A, HIGH); break;
case 1: digitalWrite(B, HIGH); break;
case 2: digitalWrite(A, HIGH); digitalWrite(B, HIGH); break;
case 3: digitalWrite(C, HIGH); break;
case 4: digitalWrite(A, HIGH); digitalWrite(C, HIGH); break;
case 5: digitalWrite(B, HIGH); digitalWrite(C, HIGH); break;
case 6: digitalWrite(A, HIGH); digitalWrite(B, HIGH); digitalWrite(C, HIGH); break;
case 7: digitalWrite(D, HIGH); break;
case 8: digitalWrite(A, HIGH); digitalWrite(D, HIGH); break;
case 9: digitalWrite(B, HIGH); digitalWrite(D, HIGH); break;
}
delay(1); // 延时1毫秒
digitalWrite(A, LOW);
digitalWrite(B, LOW);
digitalWrite(C, LOW);
digitalWrite(D, LOW);
switch(number % 10) {
case 0: digitalWrite(A, HIGH); break;
case 1: digitalWrite(B, HIGH); break;
case 2: digitalWrite(A, HIGH); digitalWrite(B, HIGH); break;
case 3: digitalWrite(C, HIGH); break;
case 4: digitalWrite(A, HIGH); digitalWrite(C, HIGH); break;
case 5: digitalWrite(B, HIGH); digitalWrite(C, HIGH); break;
case 6: digitalWrite(A, HIGH); digitalWrite(B, HIGH); digitalWrite(C, HIGH); break;
case 7: digitalWrite(D, HIGH); break;
case 8: digitalWrite(A, HIGH); digitalWrite(D, HIGH); break;
case 9: digitalWrite(B, HIGH); digitalWrite(D, HIGH); break;
}
delay(1); // 延时1毫秒
}
```
阅读全文