
这么简单的问题还要用PLC?太浪费了,只要四个继电器就可解决。三个答题人各有一个按钮开关,控制各自的继电器(四触点),继电器的两付常闭接点分别接入另外两个答题人的继电器回路,当他按下按钮时,继电器励磁并自保,常闭接点打开,另外两个答题人的按钮就失去作用,强答人起作用的继电器回路也有另外两个答题人的 继电器常闭接点。主持人控制的继电器有三个常闭接点分别接入三个答题人的继电器回路,当答题完成后主持按动按钮,他的继电器励磁(不带自保),常闭接点断开,原答题人的继电器被释放恢复初始状态,新一轮答题重新开始。如果你的钱多也可以用这个结构画成梯形图,只要调用PLC中的接点模块组合就行了。
#include <AT89X52H>
unsigned char Con,leddata=45;
unsigned int spe;
unsigned char Msel,Secs;
unsigned char keywait;
unsigned char LED_Disp;
unsigned char code LEDCODE[11]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0xbf};
unsigned char data disp_data[2]={0x00,0x00}; //显示单元数据,共2个数据void key(void);void main(void)
{
TMOD = 0x01;
TH0 = 0xf8; //12M晶振 定时中断 2Ms
TL0 = 0x30;
EA = 1;
ET0 = 1;
TR0 = 1;
while(1)
{
;
}
}
void Timer0Interrupt(void) interrupt 1
{
unsigned char con=0x01;
TH0 = 0xf8;
TL0 = 0x30;
key();
if(++LED_Disp>=2)
LED_Disp=0;
if(++Msel>=10)
{
Msel=0;
if(++Secs>=50) //1000Ms
{
Secs=0;
if(Con==0x0f)
{
if(disp_data[1])
disp_data[1]--;
else
{
if(disp_data[0])
{
disp_data[0]--;
disp_data[1]=9;
}
else
{
Con=0;
spe=1000;
}
}
}
else
{
if(Con>0x0f)
{
Con=0;
spe=1000;
disp_data[0]=0;
disp_data[1]=0;
}
}
}
}
if(spe){spe--;P3_7=0;}
else P3_7=1;
con<<=LED_Disp;
P2=0xf0|con;
P0=LEDCODE[disp_data[LED_Disp]];
}void key(void)
{
unsigned char keydata;
keydata=P1&0x7f;
if(keydata!=0x7f)
{
if(++keywait>=100)keywait=100;
if(keywait==2)
{
switch(keydata)
{
case 0x7e:if(!Con)
{
if(++leddata>60)
leddata=0;
}
disp_data[0]=leddata/10;
disp_data[1]=leddata%10;
break;
case 0x7d:Con=0;
disp_data[0]=leddata/10;
disp_data[1]=leddata%10;
P3=(P3&0xf0)|0x0f;
break;
case 0x7b:if(!Con)
{
Con=0x0f;spe=100;
P3=(P3&0xf0)|0x0f;
disp_data[0]=leddata/10;
disp_data[1]=leddata%10;
}
break;
case 0x77:if(Con==0x0f){Con++;P3_0=0;}break;
case 0x6f:if(Con==0x0f){Con++;P3_1=0;}break;
case 0x5f:if(Con==0x0f){Con++;P3_2=0;}break;
case 0x3f:if(Con==0x0f){Con++;P3_3=0;}break;
}
}
}
else
keywait=0;
}
兄弟~我只懂用汇编语言编写~因为这个星期我刚好做这到题
ORG 0000H
AJMP START
ORG 0030H
START:MOV P0,#00H;显示
MOV P2,#0FFH;
JNB P10,PULSE;开始
LOOP:;MOV P3,#0FFH
JNB PI0,LOOP5
JNB P11,LOOP1; 判断指令
JNB P12,LOOP2
JNB P13,LOOP3
JNB P14,LOOP4
AJMP START;跳转指令
ZHT0:MOV P0,#00H;显示
SE1: MOV P2,#0FEH
JNB P15,ZHT0
AJMP SE1
SE2:MOV P2,#0FDH
JNB P15,ZHT0
AJMP SE2
SE3:MOV P2,#0FBH
JNB P15,ZHT0
AJMP SE3
SE4:MOV P2,#0F7H
JNB P15,ZHT0
AJMP SE4
LOOP1: MOV P0,#01H
MOV P2,#7EH;1号LED亮,发出警告
LCALL DELAY;延时05S
MOV P2,#0FFH;1号LED灭,警告停止
LCALL DELAY;延时05s
AJMP START;跳转指令
LOOP2: MOV P0,#02H
MOV P2,#7DH;2号LED亮,发出警告
LCALL DELAY;延时05S
MOV P2,#0FFH;2号LED灭,警告停止
LCALL DELAY;延时05s
AJMP START;跳转指令
LOOP3:MOV P0,#03H
MOV P2,#7BH;3号LED亮,发出警告
LCALL DELAY;延时05s
MOV P2,#0FFH;3号LED灭,警告停止
LCALL DELAY;延时05s
AJMP START;跳转指令
LOOP4:MOV P0,#04H
MOV P2,#77H;4号LED亮,发出警告
LCALL DELAY;延时05s
MOV P2,#0FFH;4号LED灭,警告停止
LCALL DELAY;延时05s
AJMP START;跳转指令
LOOP5:MOV P2,#00H
MOV TMOD,#01H
MOV DPTR,#TABLE
PULSE:MOV P2,#0FFH
MOV TMOD,#01H
MOV DPTR,#TABLE;连数
NEXT:MOV A,#00H
MOVC A,@A+DPTR
MOV P0,A
JNB P11,SE1;判断1号抢答器是否打开
JNB P12,SE2;判断2号抢答器是否打开
JNB P13,SE3;判断3号抢答器是否打开
JNB P14,SE4;判断4号抢答器是否打开
MOV R3,#20
LCALL DELAY1
INC DPTR
CJNE A,#0FFH,NEXT
MOV P0,#0FFH
AJMP START;跳转到START处循环
DELAY:MOV R5,#250
D1:MOV R6,#20
D2:MOV R7,#248
DJNZ R7,$
DJNZ R6,D2
DJNZ R5,D1
RET
DELAY1:SETB TR0
AGAIN: MOV TL0,#LOW(65536-50000)
MOV TH0,#HIGH(65536-50000)
TEST1: JBC TF0,TEST2
JMP TEST1
TEST2:DJNZ R3,AGAIN
CLR TR0
RET
TABLE:DB 20H,19H,18H,17H,16H,15H,14H,13H,12H,11H
DB 10H,09H,08H,07H,06H,05H,04H,03H,02H,01H,00H
DB 0FFH
END
电路原理如附图,它由IC1和一个编码开关以及控制器等组成。编码开关是由IC1中的输入端A、B、C、D与二极管和按键组成。
验证编码开关是否正确,只要按住任意一个按键。使它有一个正电平输入,数码管就会显示相应的数字来。A、B、C、D这四条编码线。
分别是1、2、4、8。3则是由1+2同时输入一个正电平获得,5则由1+4获得,6则由2+4获得,7则由1+2+4获得,二极管是起反向截止作用的。
扩展资料:
抢答器,原理:如果为四路,当其中任一路控下后,其他几路即失效,结果为第一次按下的,可以用数码管或是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。
参考资料来源:百度百科-抢答器
以上就是关于设计一个抢答器电路程序。出题人提出问题,3个答题人按动按钮,仅仅是最早按的人面前的信号灯亮,然后出题全部的内容,包括:设计一个抢答器电路程序。出题人提出问题,3个答题人按动按钮,仅仅是最早按的人面前的信号灯亮,然后出题、4路抢答器设计,急!!! 程序 解释 设计思路 和仿真图!!!、四路电子抢答器的程序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)