基于51单片机的八路抢答器设计

发布者:科技飞翔最新更新时间:2021-10-29 来源: eefocus关键字:51单片机  八路抢答器 手机看文章 扫描二维码
随时随地手机看文章

一.硬件方案

本设计 利用STC89C52单片机及外围接口实现的抢答系统,利用单片机的定时器/计数器定时和记数的原理,将软、硬件有机地结合起来,使得系统能够正确地进行计时,同时使数码管能够正确地显示时间。用开关做键盘输出,扬声器发生提示。同时系统能够实现:在抢答中,只有开始后抢答才有效,如果在开始抢答前抢答为无效;抢答限定时间为60秒,倒计时为5秒时蜂鸣器报警,选手抢答成功后显示选手编号以及剩余时间。


主要由51单片机+最小系统+数码管+蜂鸣器+按键模块;如图:

二.设计功能

(1)采用4位数码管设计;下排按键一一对应八位选手。

(2)竖排三个按键,从上到下依次为:开始、暂停、复位。

(3)操作流程:上电后数码管显示“----”当主持人按下“开始”键后,60秒,开始计时,此时,八位选手就可以抢答,如有紧急情况需要停止的话,主持人按“暂停”键就可以,如果有选手抢答成功,数码管显示“1 25”,1表示是1号选手,25表示剩余还25秒,小于5秒时,蜂鸣器响,提示时间快要结束,当为0秒时,此题结束,表示没有任何选手抢答成功,主持人按“复位”键后从新开始。

(4)可以设定时间,在上电后,数码管显示“----”,此时按下1号选手对应的按键,进入时间设定状态,2号选手对应的按键为时间加,3号选手对应的按键为时间减,设定完成后再按1号选手键退出。


三.设计原理图

(1)原理图主要采用AD软件进行设计,如图:

(2)Protues仿真图如下:

(3)PCB图如下:

四.软件设计

主程序源码


void main()

{

int djs1=60;

Timer0_init(); //初始化定时器中断

spk=1;   //蜂鸣器不响

        djs=60; //倒计时赋值

while(1)

{


LOOP1:   djs=djs1;

djsxs22(); //LOOP1是标号,显示 -  --


if(key1==0) //在定时器运行状态下,key1==0 则说明1号选手按下按键

{

    delayms(3);

    if(key1==0)

   

    while(!key1);   //去除按键抖动后,重新在判断,是否确实按下

djs=60;

while(1)

  {

    TR0=0;   //定时器停止

djsxs();   

   if(key2==0)   //复位按下按下

           {

    delayms(8);    //去除抖动

    if(key2==0)    //再次判断是否按下复位按键

    {

do

    while(!key2); //如果按下复位键,则回到- --状态

delayms(5);

}

while(key2!=1);

djs++;

djs1=djs;

}

}

   if(key3==0)   //复位按下按下

           {

    delayms(8);    //去除抖动

    if(key3==0)    //再次判断是否按下复位按键

   

do

{

      while(!key3); //如果按下复位键,则回到- --状态

   delayms(5);

}

while(key3!=1);

djs--;

djs1=djs;

}

}

   if(key1==0)   //复位按下按下

           {

    delayms(3);    //去除抖动

    if(key1==0)    //再次判断是否按下复位按键

   

    while(!key1); //如果按下复位键,则回到- --状态

goto LOOP1;   //goto语句,回到loop1表号处

}

}    

  }

}

}

if(keyks==0)

{    

  //spk=0;

   delayms(3); //去除按键抖动

   if(keyks==0)

   { 

    while(!keyks);   //以上表示按下开始按键 

//spk=1;    //蜂鸣器不响

TR0=1;    //启动定时器 开始倒计时

while(1)

  {

    djsxs();

if(keytz==0)

{

    delayms(3); //此处表示出去抖动, 以后不一一标出

    if(keytz==0)

   

    while(!keytz);    //以上表示按下停止按键后 

{

     TR0=0;    //定时器停止

flag=0;//

spk=1;

}


}

}

   if(keyks==0)

{

    //spk=0;

    delayms(3);

    if(keyks==0)

   

    while(!keyks);    //以上表示按下清楚按键后 

//spk=1;    //蜂鸣器不响

    TR0=1;    //定时器启动


}

}

.......

  } 


  }


}

   }

 }

}

关键字:51单片机  八路抢答器 引用地址:基于51单片机的八路抢答器设计

上一篇:基于51单片机的脉搏体温监测仪
下一篇:基于51单片机的简易计算器设计

推荐阅读最新更新时间:2024-11-17 03:15

汇编写51单片机之循环点亮LED
二话不说,先上代码: ORG 0000H AJMP MAIN MAIN:SETB P1.0 LCALL DELAY CLR P1.0 LCALL DELAYA AJMP MAIN DELAY: MOV R7,#255 D1: MOV R6,#255 D2: DJNZ R6,D2 DJNZ R7,D1 RET DELAYA: MOV R7,#100 K1: MOV R6,#100 K2: DJNZ R6,K2 DJNZ R7,K1 RET END 让我从头到尾来分析这整个程序:首先,这段程序是用于循环点亮P1.0这个灯的。 ORG 0000H ;这句话我们说过他的作用了,不懂的往前看。 AJMP MAIN ;这句话分成两个部
[单片机]
51单片机测量脉冲周期
要求:测量脉冲的周期 思想:用定时器和外部中断(下降沿触发中断),当第一个下降沿时,触发外部中断,此时开始计时。当第二个下降沿时,此时停止计时,此时的时间就是脉冲的周期。 程序: #include reg51.h #include intrins.h #define uLint unsigned long int uLint cycle_t = 0 ;//脉冲周期时间 sbit in = P3^2 ; bit start = 0 ; void Int0 (void) interrupt 0 { if(start == 0)//第一次下降沿开始计时 { cycle_t = 0 ; TL0 = 0 ; }
[单片机]
<font color='red'>51单片机</font>测量脉冲周期
51单片机PID的算法实现程序C语言
/* 用整型变量来实现PID算法,由于是用整型数来做的,所以也不是很精确,但是对于很多的使用场合,这个精度也够了, 关于系数和采样电压全部是放大10倍处理的.所以精度不是很高. 但是也不是那么低,大部分的场合都够了. 实在觉得精度不够, 可以再放大10倍或者100倍处理,但是要注意不超出整个数据类型的范围就可以了.本程序包括PID计算和输出两部分. 当偏差 10度全速加热,偏差在10度以内为PID计算输出. 具体的参考代码参见下面: */ //================================================================ // pid.H // Operation abou
[单片机]
51单片机基础之外部中断(二)
代码: #include reg51.h typedef unsigned char u8; typedef unsigned int u16; sbit LED=P2^0; sbit KEY=P3^3; void delay(u16 i) { while(i--); } void EXIT1_Init(void) //外部中断初始化 { IT1=1;//跳变沿触发方式(下降沿),低电平触发 EX1=1;//打开INT0的中断允许,打开外部中断0允许 EA=1;//打开总中断 } void main(void) { EXIT1_Init();//打开外部中断 while(1)
[单片机]
51单片机中,中断函数与一般函数的调用区别?
中断函数的调用过程类似于一般函数调用,区别在于何时调用一般函数在程序中是事先安排好的;而何时调用中断函数事先却无法确定,因为中断的发生是由外部因素决定的,程序中无法事先安排调用语句。因此,调用中断函数的过程是由硬件自动完成的。 参考资料: (1)王静霞等. 单片机应用计数(C语言版)第3版 . 北京,电子工业出版社,2015:166.
[单片机]
51单片机-计时器-倒计时闹钟
1.视频 bilibili视频地址: https://www.bilibili.com/video/av91943244 51单片机-计时器-倒计时闹钟 2.文件 文件下载地址: https://download.csdn.net/download/weixin_43130546/12194355 3.说明 注意KeyScan()函数if语句! 蜂鸣器频率问题; 想到再补充。 4.代码 #include reg52.h sbit BUZZER = P2^3; sbit DULA = P2^6; sbit WELA = P2^7; sbit KEYOUT1 = P3^0; sbit KEYOU
[单片机]
基于51单片机开发板8*8LED矩阵的贪吃蛇程序
引语:过年的时候闲着无聊,恰好也刚学了点51开发板的东西,所以就想写一个贪吃蛇的小程序。在网上总结了一些关于贪吃蛇的算法,于是就有了以下的程序。 先来说以一下算法的原理:将8*8LED看作是直角坐标系,将左上角定为坐标原点。定义两个数组 snake_x ,snake_y 用来存储蛇的x,y轴坐标。因此,我们的核心算法就是小蛇惯性保持自己的运动姿态,产生食物,以及小蛇吃到食物后长度增加。 再来看一下我的开发板,我的开发板是德飞莱51开发板,这里不再讲解其8*8LED的工作原理,直接上代码 void Hc595SendByte() { unsigned char a; SRCLK=0; RCLK=0; for(a=
[单片机]
由FWl22-M构成的短距离无线数据通信系统
   摘要 利用AT89LV52单片机作控制器,实现基于RFWaves公司的射频芯片RFWl22-M的短距离无线数据通信系统;分析射频芯片RFWl22-M及其与单片机的接口芯片RFW-D100的特点;给出系统的硬件原理框图厦软件流程图。对应用于该装置的无线数据传输协议CSMA进行分析,并且在对固件的编程配置中加以实现,    关键词 无线数据通信系统 RFWl22-M RFW-D100 AT89LV52 CSMA协议   目前,短程射频通信技术是一种热门技术,已广泛应用于实际中。主要有无线局域网(WLAN)、个人区域网络(PAN)及无线短距离消费类产品(如中低速数据传输应用,有效范围在30m以内)。该通信技术的标准有ⅢEE80
[安防电子]

推荐帖子

芯灵思SinA33开发板配套的USB转TTL模块的驱动安装。
PL2303模块接入PC机后显示查找不到驱动,并且网盘中只有XP和win7的驱动,安装win7的驱动后,依旧查找不到COM口,因为PC机系统为win10系统,所以需要在网上下载win10的驱动,安装后解决问题。Win10驱动芯灵思SinA33开发板配套的USB转TTL模块的驱动安装。
babyking 嵌入式系统
关于sql server ce 2.0的问题
1.在PC机上只能用代码来创建SQL CE 2.0数据库吗?   2.我用VS(C#)来开发的,我根据微软的一个例子来用代码创建数据库,运行没问题,但是却找不到创建的数据库的库文件是怎么回事?3.在PC机到底需要安装CE 2.0吗,看到网上好多人说PC机上不能安装不了CE2.0的啊.如果可以 我安装了之后怎么就只有一个帮助文档.不能想SQL SERVER 2000那样在企业管理器里面创建呢.关于sql server ce 2.0的问题1好像是2少什么就去找喽,网上都有的3,不能
kangtc86 嵌入式系统
请版主解答
我欲采用你们的STM32F103ZCT6做产品,想请问一下价格和供货周期。如果采用我们每月至少有上K的量。现在听说你们的产品缺货严重是这样吗?这种144脚LQFP的芯片不同FLASH大小的价格差距多少?我的邮箱xiaoguohui@yqsh.com,望回复。谢谢!请版主解答也望其他知道的DX们说一下,谢谢!用量都是K级的啊打算做什么产品呢做消费终
jerohands stm32/stm8
Muscle SpikerBox电路原理图求分析
上面的是一个放大电路,我的算法如下,各位大侠给看看有没有什么问题我比较困惑的是,一级放大为什么是2.5×,而不是4×;二级计算时可以将电容当作隔直流电容,计算是忽略么?80倍增益是怎么算的?MuscleSpikerBox电路原理图求分析
cosmos1 模拟电子
【得捷电子Follow me第4期】基础任务二:建立TCP服务器,发送数据并显示,抓包数据
【Followme第4期任务】基础任务二:主控板建立TCPIP或UDP服务器,局域网PC使用TCPIP或UDP客户端进行连接并发送数据,主控板接收到数据后,送液晶屏显示(没有则通过串口打印显示);通过抓包软件抓取交互报文,展示并分析。(TCP和UDP二选一,或者全都操作)由于TCP个人感觉用的更多一些,这里选择使用TCP完成作业。1.建立TCP服务器关于TCP的说明可以参考WIZnet的官方文章说明:五、W5100S/W5500+RP2040之MicroPyth
电子烂人 DigiKey得捷技术专区
【Follow me第二季第2期】+项目总结
文章中各任务均由图片中物料实现物料清单: 厂商 厂商料号 名称 得捷链接 Arduino ABX00087 ArduinoUNOR4WiFi https://www.digikey.cn/zh/products/detail/arduino/ABX00087/20371539?s=N4IgTCBcDaIIICEAaAGNAOA7AApAXQF8g Adafruit 4991 A
superw DigiKey得捷技术专区
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved