用multisim仿真电路设计一个抢答器,带有电路原理图和设计原理
1条回答 默认 最新
关注让阿豪来帮你解答,本回答参考chatgpt3.5编写提供,如果还有疑问可以评论或留言
电路原理图:  设计原理: 该抢答器电路主要由三部分组成:时钟电路、抢答按钮和多路选择器。- 时钟电路:通过555定时器构成的稳定的时钟电路,可以控制LED灯闪烁的速度,即抢答器的速度。在实际操作中,我们可以通过改变R1和C1的值来调整闪烁速度。
- 抢答按钮:通过按下按钮,将一个高电平信号送入多路选择器的输入端口,表示有人按下抢答器,多路选择器会将该信号输出给LED灯。
- 多路选择器:当有多个抢答器同时按下时,多路选择器会按照先后顺序依次输出不同的抢答器编号来区分哪个抢答器最先按下。在本电路中,我们通过74HC151实现四位十六进制编码,即最多可以支持16个抢答器,如果需要支持更多抢答器,可以通过扩展器进行扩展。 案例: 以下为抢答器的代码实现,其中我们使用了一个4位七段数码管来表示抢答器击中的编号,可以根据实际需要进行修改:
#include <MySevenSeg.h> #include <cd74hc151.h> MySevenSeg seg(A0, A1, A2, A3, A4, A5, A6, A7); CD74HC151 decoder(D2, D3, D4, D5, D6, D7, D8, D9); byte code[16] = {0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07, 0x7F, 0x6F, 0x77, 0x7C, 0x39, 0x5E, 0x79, 0x71}; // 0~9, A~F void setup() { decoder.begin(); seg.begin(); } void loop() { if (decoder.poll()) { byte val = decoder.read(); if (val != 0 && val <= 16) { seg.write(code[val - 1]); } } }这段代码中,我们使用了一个自定义的七段数码管库和74HC151扩展器库。在
setup()函数中,我们调用两个库的begin()方法初始化过程。 在loop()函数中,我们不停地轮询74HC151扩展器,如果有抢答器按下,就会返回相应的编号,然后我们将编号转化为七段数码管的显示码,并调用write()方法显示出来。如果只有一个抢答器按下,则直接显示其编号;如果有多个抢答器按下,则显示最先按下的抢答器的编号。解决 无用评论 打赏 举报