411 基于单片机可调八路抢答器仿真设计(仿真 程序代码 )

1、当主持人按下按键,抢答开始,抢答时间会自动开始倒计时,如果有选手按下按键,数码管则会对应的显示出该选手的编号和答题时间开始倒计时,在倒时时间的最后5s蜂鸣器会发出声音提示。
2、当主持人没有按下按键,如果有选手按下按键,则视为违规抢答,数码管上会显示“FF”和违规选手的编号并蜂鸣器报警提示。
3、可以设置抢答时间和答题时间,设置的参数具有掉电保存功能,保存在单片机内部。
4、第一次按设置键可以设置抢答时间,第二次按下设置键可以设置答题时间,再按8号和7号键就可以加减设置的时间。

 完整版 电路图和程序代码 下载地址

https://pan.baidu.com/s/1kNaPK19EJ_wHW81UlWZ65w?pwd=3456

部分代码展示
#include<reg52.h>
#include <intrins.h>
#define uint unsigned int
#define uchar unsigned char
uchar time,aa,man,shi,ge,num,start,noman,antime,mod,fuwei;
uchar data qsj,asj;
uchar code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x8e,0xff};
sbit START=P3^0;
sbit SET=P3^1;
sbit JIA=P3^2;
sbit JIAN=P3^3;
sbit RESET=P3^4;
sbit BEEP=P3^5;
sbit SCL=P3^6;         
sbit SDA=P3^7; 
void delay(uint z);
void display(uchar num,uchar shi,uchar ge);
void init();
void answer();
void set();
void display2(uchar mod,uchar shi,uchar ge);
void reset();
void beep();
void nop();
void init2();
void ready();
void stop();
void writebyte(uchar j);
uchar readbyte();
void clock();
uchar read24c02(uchar address);
void write24c02(uchar address,uchar info);
void save();
void load();
void main()
{	
	init();
	load();
	while(1)
	{
		if(RESET==0)
			reset();
		if(START==0&&fuwei==1)
		{
			time=qsj;
			start=1;
			num=11;
			noman=1;
			fuwei=0;
		}
		if(SET==0&&fuwei==1)
			set();
		if(aa==20)
		{
			aa=0;
			if(time>0&&fuwei==0)
			{
				time--;
				shi=time/10;
				ge=time%10;
				if(time<=5)
					beep();
			}
			else
			{
				shi=10;
				ge=10;
				if(fuwei==0)
					noman=0;
			}
		}
		if(noman==1)
			man=P1;
		switch(man)
		{
			case 0xfe:num=1;answer();break;
			case 0xfd:num=2;answer();break;
			case 0xfb:num=3;answer();break;
			case 0xf7:num=4;answer();break;
			case 0xef:num=5;answer();break;
			case 0xdf:num=6;answer();break;
			case 0xbf:num=7;answer();break;
			case 0x7f:num=8;answer();break;
			default:break;
		}
		display(num,shi,ge);
		if(start==0&&num!=11)
			beep();	
	}
}
void delay(uint z)
{
	uint x,y;
	for(x=z;x>0;x--)
	for(y=110;y>0;y--); 
}
void display(uchar num,uchar shi,uchar ge)
{
    
		P2=0x01;  
		P0=table[num];
		delay(3);
	
		if(start==1)
		{	
			P2=0x08; 
			P0=table[ge];
		}
		else if(start==0)
		{
			P2=0x08; 
			P0=table[10];
		}
		delay(3);
 
		if(start==1)
		{
			P2=0x04;
			P0=table[shi];
		}
		else if(start==0)
		{
			P2=0x04;
			P0=table[10];
		}
		delay(3); 	
}       

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值