
五点输入分别是:
抢答开始按钮:I00
1#抢答按钮:I01
2#抢答按钮:I02
3#抢答按钮:I03
4#抢答按钮:I04
但是输出,我这里有点问题了,你说的组别输出信号和倒计时输出信号,你是指用那种LED数码管显示的么?那么就要用到BCD码了!如果是用触摸屏之类的显示,那么就不用了。你这个输出点就不好确定了。
点位不多,控制简单,也是基本的逻辑程序。
我曾经做过一个当时的要求如下
一 设计任务
数字式竞赛抢答器
二 设计条件
本设计基于学校实验室Multisim80仿真软件和计算机
三 设计要求
1、 设计制作一个可容纳4组的数字式抢答器,每组设置一个抢答按钮供抢答者使用。
2、 根据数字式抢答器的功能和使用步骤,设计抢答者的输入抢答锁定电路、抢答者序号编码、译码和显示电路。
3、 设计定时电路,声、光报警或音乐片驱动电路。
4、 设计控制逻辑电路,启动、复位电路。
我的 设计内容
1.设计思想
根据设计的要求分块设计抢答、锁存、计时、显示、和报警功能。
(1)抢答和锁存电路要求能够对信号进行存储和所定,可用触发器组成。
(2)对于显示部分就直接用编码器、七段数码管驱动译码器和七段数码管组成。
(3)计时电路是按秒进行倒计时,所以计时电路可以减法计数器、秒脉冲生成电路、和显示电路。由于电路对秒脉冲信号的占空比要求的不高所以可以用555定时器构成多谐振荡电路来实现
(4)报警电路,按题目要求可采用声、光报警,光报警用发光二极管电路实现声报警用蜂鸣器来实现。
各个模块设计好后要把各个模块组合起来进行调试,主要是解决题目中要求的多个锁定问题:
(1)抢答后抢答电路的锁定功能。
(2)抢答后计时器的锁定功能。
(3)计时结束后无人抢答时抢答电路的锁定功能。
(4)计时结束后无人抢答时计时器的锁定功能。
下载地址>
/
(1)实现一四人抢答器,有人抢答成功后,其他人再抢答无效;
(2)通过蜂鸣器响1秒来提示抢答成功,并在数码管上显示抢答者的序号;
(3)主持人通过按键清除抢答信息,并开始 30 秒的答题倒计时,当倒计时
结束时,通过蜂鸣器响 1 秒来提示回答问题时间到,此时可以开始新一轮的抢答
/
module qiangda(rst,clk,ina,inb,inc,ind,judge,clk_1hz,wei,duan,beep,wei1,duan1,clk_1khz);
input clk,clk_1hz;
input ina,inb,inc,ind,judge;
output[3:0] wei;
output[7:0] duan;
input rst,clk_1khz;
output [3:0] wei1;
output [7:0] duan1;
output beep;
reg[3:0] wei;
reg[7:0] duan;
reg flag;
reg [5:0] shi,ge,data;
reg [4:0] count;
reg [3:0] wei1;
reg [7:0] duan1;
reg beep;
reg yu;
reg [1:0] count3;
always @(posedge clk)
begin
if(!rst) //系统复位,个人认为复位不够完整
begin
yu = 0;
end
if(!judge) //主持人控制按键
begin
flag=0; //允许抢答
wei=4'b1111; //数码管全不亮
//个人认为分成duan1和duan,wei1和wei的数码管数据总线不经济
duan=8'hff;
yu=1; //重新开始倒计时
end
else
begin
if(ge==6'b000000&&shi==6'b000000) //处于等待状态,实际上是等主持人按键(!judge),
;
else
begin
if(!ina) //若a抢答
begin
if(!flag) //若无人抢答成功
begin
wei=4'b1101;
duan=8'hf9; //数码管显示1,代表a抢答成功
flag=1; //抢答标志位有效
end
end
else if(!inb) //b抢答处理电路
begin
if(!flag)
begin
wei=4'b1101;
duan=8'ha4; //数码管显示2,代表b抢答成功
flag=1;
end
end
else if(!inc)
begin
if(!flag)
begin
wei=4'b1101;
duan=8'hb0; //数码管显示3
flag=1;
end
end
else if(!ind)
begin
if(!flag)
begin
wei=4'b1101;
duan=8'h99; //数码管显示4
flag=1;
end
end
end
end
end
always@(posedge clk_1hz or negedge rst)
begin
if(!rst)
begin
count = 0;
end
else if(count >= 5'd30) //计时达到30秒,停止计时
count = count;
else if(yu==1) //触发条件yu=1时,重新开始计数那不是变成从30开始数?感觉该段有些问题
count = count+5'b1;
end
//以下always过程块为shi和ge的译码电路,完成倒计时功能
always @(count)
begin
if(count>=5'b10101) //count>20时
begin
shi = 5'b00000; //shi=0
ge = 5'b11110-count; //ge = 30-count
end
else if(count>=5'b01011) //10<count<=20时
begin
shi=5'b00001; //shi=1
ge=5'b10100-count; //ge = 20-count
end
else if(count>=5'b00001) //0<count<=10时
begin
shi=5'b00010; //shi=2
ge=5'b01010-count; //ge = 10-count
end
else //其它情况,ie count = 0
begin
shi=5'b00011; //shi=3
ge=5'b0; //ge = 0
end
end
//以下always过程块为蜂鸣器发声驱动电路
always@(posedge clk_1hz)
if(flag|(shi==0&&ge==0)) //flag==1,有人抢答成功
//shi==0&&ge==0,倒计时结束
begin //上述两种情况下蜂鸣器响一秒
if(count3==2'b1)
begin
beep<=0;
count3<=count3;
end
else
begin
beep<=1;
count3<=count3+2'b1;
end
end
else
begin
beep<=0;
count3<=0;
end
//以下always过程块是数码管动态刷新电路,动态显示倒计时信息(shi和ge)
always @(clk_1khz)
begin
if(!rst)
wei1 = 4'b0000;
else if(clk_1khz)
begin
wei1=4'b0111;
data=ge;
end
else
begin
wei1=4'b1011;
data=shi;
end
end
always @(data) //数字显示译码,共阳极数码管(duan1)
begin
case(data)
6'b000000: duan1=8'b1100_0000;
6'b000001: duan1=8'b1111_1001;
6'b000010: duan1=8'b1010_0100;
6'b000011: duan1=8'b1011_0000;
6'b000100: duan1=8'b1001_1001;
6'b000101: duan1=8'b1001_0010;
6'b000110: duan1=8'b1000_0010;
6'b000111: duan1=8'b1111_1000;
6'b001000: duan1=8'b1000_0000;
6'b001001: duan1=8'b1001_0000;
default:duan1=8'b1111_1111;
endcase
end
endmodule
module dj(a,b,c,d,clk,res,led1,led2,led3,led4);
input a,b,c,d;
input clk,res;
output led1,led2,led3,led4;
reg led1,led2,led3,led4;
reg k;
always @(clk)
begin
if(res==0)
begin
led1<=0;
led2<=0;
led3<=0;
led4<=0;
k<=0;
end
else
begin
if(k==0)
begin
if(a)
begin
led1<=1;
k<=1;
end
else
if(b)
begin
led2<=1;
k<=1;
end
else
if(c)
begin
led3<=1;
k<=1;
end
if(d)
begin
led4<=1;
k<=1;
end
end
end
end
endmodule
>
原理图:
工作原理
抢答器由74LS148、74LS279、74LS48组成,LED显示器 开始时,当支持人按钮还未按是,CLR为0,所以输出Q1~Q4为0;
放光二极管全为灭的,当主持人按钮按下时CLR为1,可以输入,谁先抢答,相应的谁的灯亮,利用74LS279和74LS148输出的是cp等于0,锁存其他的,不能使其他的输出。
扩展资料:
利用51单片机建立四路抢答器
单片机,当然不只是51,51单片机是一种稍通用型的单片机,通过I/O口的定义,可以实现多种控制功能。
抢答器,原理:如果为四路,当其中任一路控下后,其他几路即失效,结果为第一次按下的,可以用数码管或是LED灯来显示,当然这里只是讲原理与编程,具体可以根据抢答器路数及显示方式更改程序即可。
源程序如下:
<div class="blockcode"><blockquote>/用的是AT89S52开发板,独立按键接口如下,就用这四路。先按下的用LED灯来显示,对应第一个到第四个LED灯,其他再按无效,如果想再次实现,可手动复位单片机/
#include <reg52h>
sbit key1=P3^0; //定义按键,根据需要连接线路,如独立按键(4路)
sbit key2=P3^1;
sbit key3=P3^2;
sbit key4=P3^3;
/void delay(unsigned int cnt) //如果有抖动或是干扰,可以用个小延时去抖
{
while(--cnt);
}/
void main()
{
bit Flag;
while(!Flag)
{
if(!key1)
{
P1=0xFE;
Flag=1;
}
/LED灯来显示按下的键,第一个灯,我这里是8位LED灯,即:0111 1111,反过来读数为:1111 1110 即:0xFE ,P1口对应LED灯,给P1赋值/
else if(!key2)
{
P1=0xFD;
Flag=1;
}
//第二个灯亮
else if(!key3)
{P1=0xFB;Flag=1;}
//第三个灯亮
else if(!key4)
{
P1=0xF7;
Flag=1;
}
//第四个灯亮,意味着第四路首先按下
}
while(Flag); //可以再加个I/O,控制Flag,这样初始化,继续抢答,还可以设计按下时的声音
}
以上就是关于四路抢答器的PLC控制线路的设定,毕业答辩求答案全部的内容,包括:四路抢答器的PLC控制线路的设定,毕业答辩求答案、数字电路课程设计 设计一个四人抢答器,要求如下:、有没有大神懂Verilog HDL 的,这个十一四人抢答器电路的程序,能不能给解释一下等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)