电子电路设计——三人抢答电路(D触发器版)

一、设计思路:

1.复位开关:

复位键(s4)按下后,各触发器preset = 0, clear = 1,触发器均被置为“1状态”,此时三盏灯均熄灭。之后松开复位键开始抢答。

2.抢答按钮:

三人的抢答按钮(s1, s2, s3)均置于高电平,当按下抢答按键后,电位变为低电平,经过与非门电路后产生下降沿并输入至对应触发器中。

3.寄存器状态:

寄存器D端均为0电位,当CP端接收到下降沿信号时,触发器被置为“0状态”,此时Q非端输出高电平,点亮探针。

4.反馈系统:

当一方抢答成功后,需将其余两个触发器锁死。将另外两触发器Q非端接入第三个触发器CP端前的与非门,当另外两触发器有一个发生状态改变时,该与非门收到高电平信号,于是即便抢答按钮被摁下,也无法产生下降沿信号,该触发器被锁死。

二、电路图

在这里插入图片描述
若用JK触发器设计三人抢答电路,电路图详见博客:三人抢答(JK触发器)

  • 36
    点赞
  • 207
    收藏
    觉得还不错? 一键收藏
  • 20
    评论
D触发器制作三人抢答电路的程序取决于使用的硬件平台和编程语言。这里提供一个使用Arduino UNO并基于Arduino编程语言的程序示例。程序将使用三个数字引脚分别连接三个按钮,一个数字引脚连接D触发器的时钟输入CLK,一个数字引脚连接D触发器的数据输入端D,一个数字引脚连接D触发器的清零输入端CLR,一个数字引脚作为LED的输出。 ```arduino // 定义数字引脚 const int btn1Pin = 2; const int btn2Pin = 3; const int btn3Pin = 4; const int clockPin = 5; const int dataPin = 6; const int clearPin = 7; const int ledPin = 8; // 定义变量 int btn1State = 0; int btn2State = 0; int btn3State = 0; int prevState = 0; void setup() { // 初始化数字引脚 pinMode(btn1Pin, INPUT); pinMode(btn2Pin, INPUT); pinMode(btn3Pin, INPUT); pinMode(clockPin, OUTPUT); pinMode(dataPin, OUTPUT); pinMode(clearPin, OUTPUT); pinMode(ledPin, OUTPUT); // 初始化D触发器 digitalWrite(clearPin, HIGH); digitalWrite(clockPin, LOW); digitalWrite(dataPin, LOW); delay(100); digitalWrite(clearPin, LOW); } void loop() { // 检测按钮状态 btn1State = digitalRead(btn1Pin); btn2State = digitalRead(btn2Pin); btn3State = digitalRead(btn3Pin); // 按下任意一个按钮,将数据输入到D触发器 if (btn1State == HIGH || btn2State == HIGH || btn3State == HIGH) { digitalWrite(dataPin, HIGH); // 设置D触发器数据输入 digitalWrite(clockPin, HIGH); // 上升沿触发D触发器 delay(1); digitalWrite(clockPin, LOW); digitalWrite(dataPin, LOW); // 清空D触发器数据输入 } // 检测D触发器状态 int state = digitalRead(ledPin); if (state == HIGH && prevState == LOW) { // 抢答成功 digitalWrite(ledPin, LOW); delay(1000); // 重置D触发器状态 digitalWrite(clearPin, HIGH); delay(1); digitalWrite(clearPin, LOW); } // 更新状态 prevState = state; } ``` 在这个示例程序中,使用digitalRead()函数检测按钮的状态,使用digitalWrite()函数控制D触发器的状态和LED的状态。需要注意的是,这个示例程序仅仅是为了演示如何使用Arduino制作D触发器三人抢答电路,实际应用中还需要考虑去抖动等问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 20
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值