【资源下载】下载地址如下1554:
https://docs.qq.com/doc/DTlRSd01BZXNpRUxl
①供6组选手参赛,编号分别为1--6,按钮的编号与选手编号相对应。
②主持人控制开关可用来控制系统的清零和开始。按下"开始"键时,进入正常工作。
③具有数据锁存和显示的功能。若有选手抢答,抢答电路和定时电路停止工作,禁止其它选手抢答,同时显示该选手编号和抢答时刻时间。
④定时抢答:一次抢答时间设定为30S,"开始"后电路依次递减并显示。附加功能:抢答时间可调节。
#include <at89x51.h>
#define uchar unsigned char
#define uint unsigned int
char s;
uchar num = 0;
char time = 30; /* 抢答时间 */
uint tt, t1; /* T0,T1定时器定一秒时 */
bit flag, s_flag = 1, b_flag, fall_flag; /* 标志位 */
bit K_startcountflag, K_timecountflag; /* 时间调整标志位 */
sbit K0 = P3 ^ 0;
sbit beep = P3 ^ 7; /* 蜂鸣器 */
sbit rled = P3 ^ 1; /* 指示灯 */
sbit K1 = P1 ^ 0;
sbit K2 = P1 ^ 1;
sbit K3 = P1 ^ 2;
sbit K4 = P1 ^ 3;
sbit K5 = P1 ^ 4;
sbit K6 = P1 ^ 5;
sbit K7 = P1 ^ 6;
sbit K8 = P1 ^ 7;
sbit DE = P0 ^ 7;
sbit K_startcount = P3 ^ 3; /* 开始抢答时间调整键 */
sbit K_timecount = P3 ^ 2; /* 清零 */
void delay( uchar ms )
{
uchar y;
for (; ms > 0; ms-- )
for ( y = 120; y > 0; y-- )
;
}
uchar code tabledu[] = { 0x3f, 0x06, 0x5b, 0x4f,
0x66, 0x6d, 0x7d, 0x07,
0x7f, 0x6f, 0x77, 0x7c,
0x39, 0x5e, 0x79, 0x71 };
uchar code tablewe[] = { 0XFE, 0XFD, 0XFB, 0XF7 };
void T0_Init( void )
{
TMOD = 0X01;
TH0 = (65536 - 2000) / 256;
TL0 = (65536 - 2000) % 256;
TH1 = (65536 - 2000) / 256;
TL1 = (65536 - 2000) % 256;
ET0 = 1;
ET1 = 1;
EA = 1;