四路抢答器的PLC控制线路的设定,毕业答辩求答案

四路抢答器的PLC控制线路的设定,毕业答辩求答案,第1张

五点输入分别是:

抢答开始按钮: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 的,这个十一四人抢答器电路的程序,能不能给解释一下等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/9316411.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-27
下一篇2023-04-27

发表评论

登录后才能评论

评论列表(0条)

    保存