O02基于51单片机的8路抢答器设计(二)

1、简介
该设计在硬件方面主要采用AT89C51单片机作为主控核心,结合独立按键、数码管、蜂鸣器。抢答限定时间为10S,在按下复位后显示当前选手分数,再按下开始抢答才有效,当选手抢答后显示对应的抢答选手编码,在倒计时20S内评委对选手打分。

2、主要功能
a.主持人进行复位,依次显示8位选手的分数,8位选手分数显示结束后主持人按下抢答开始按键,抢答者才可以开始抢答,数码管抢答倒计时10S。

b.抢答者按下按键,数码管显示抢答者的编号和答题剩余时间倒计时20S

c.在20S内,抢答者答题正确,主持人按下加分按键,分数加一,答错主持人按下减分按键,分数减一。

3、环境搭建
资料清单:C程序+仿真+设计报告+使用说明+元件清单+操作视频
仿真版本:Proteus8.6及以上版本
编译平台:Keil C51
编程语言:C语言

4、源程序
使用keil C51软件实现程序编写与编译。

#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit k0=P1^0;		
sbit k1=P1^1;
sbit k2=P1^2;
sbit k3=P1^3;
sbit k4=P1^4;
sbit k5=P1^5;
sbit k6=P1^6;
sbit k7=P1^7;

sbit beep=P3^7;				/*蜂鸣器*/
sbit ks=P2^4;				/*开始计时*/
sbit jiayi=P2^5;			/*分数加1*/
sbit jianyi=P2^6;			/*分数减1*/
sbit fw=P2^7;				/*复位*/
int flg=1;
bit flg1=0;
int t=0,s=0;

uchar qiangdanum=0x0b;
uchar code table[]=
{0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00,0x00};
uchar ge=0,shi=0;
uint num,time=10, fs=0;
int nums[]={5,5,5,5,5,5,5,5};
void kyy(void) ;
void displayfs(); 
void display();                         /*显示函数*/
void kys();								/*设置按键函数*/
void kys2();							/*抢答按键函数*/
void delay(unsigned int z)              /*延迟函数*/
{
    unsigned int x,y;
    for(x=z;x>0;x--)
      for(y=110;y>0;y--);
} 
void intial()              
{
    TMOD=0X01;                     /*采用方式一,即十六位计数器*/
    TH0=(65536-50000)/256;         /*设置初始值,50ms中断一次*/
    TL0=(65536-50000)%256;                                         
    EA=1;ET0=1;                 /*开启总中断源,定时器中断*/ 

}  
void intia2()                                 
{	TMOD=0X10;                     /*采用方式一,即十六位计数器*/
    TH1=(65536-50000)/256;         /*设置初始值,50ms中断一次*/
    TL1=(65536-50000)%256;                                         
     EA=1;ET1=1;                 /*开启总中断源,定时器中断*/ 
	}
main()
{	intia2();
    intial();				    /*初始化*/
	beep=0;
	while(1)
	{ kys();

	if(flg1==1)
	    displayfs();
		else  
	    display();			   /*显示函数*/
	   
		if(flg==0)
		{  
		    kys2();
		}
	}	  
}

void kys2()							/*抢答按键函数*/
{
    if(k0==0)                               /*开关0按下*/
    {
	    delay(5);
        if(k0==0)                        
        {	flg=1;
		    qiangdanum=1; 	   /* 1号选手抢答成功,数码管显示1*/
			beep=1;
			delay(1000);
			beep=0;
		
			time=20;
	
		}

5、proteus8.6仿真
采用proteus8.6软件(内附安装包)实现仿真设计,如下图所示。proteus软件一般存在高低版本兼容问题,该仿真是通过proteus8.6导出的,所以请尽量使用proteus8.6打开文件,低于proteus8.6的版本不能够正常使用,高于proteus8.6的版本除了proteus8.8/8.9理论上可以正常使用。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

6、设计资料清单
设计资料主要包括C程序+仿真+设计报告+使用说明+元件清单+操作视频等,设计报告主要包括硬件电路、软件设计、仿真调试等等,仅供参考。由于不定期更新,最新的资料包不一定与下面图片完全一致,但主要资料都有。
在这里插入图片描述

在这里插入图片描述

7、获取方式
百度网盘链接:https://pan.baidu.com/s/1iK3iHUXeLQEVeKkMpdEkdQ?pwd=xzgj
有偿,非诚勿扰🙏

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值