1.功能介绍
多功能八路抢答器是基于51单片机来设计的,除了可以实现最基本功能——8路抢答外,还具有自动处理犯规选手,抢答时间调整,还可以进行答题,计分,并且可以查询或修改分数。

2.硬件设计
该抢答器的硬件由五个部分组成,包括单片机、按键电路、数码管显示电路、指示灯电路和声音提示电路。硬件框图如下

(2)硬件原理图
由于每个部分的硬件电路都比较简单,就不做介绍了,大家直接看图。


3.软件设计
(1)软件流程图

(2)程序源码
由于本例程代码比较多,所以只贴出主程序代码

void main()
{ uint j;//用来构成循环TMOD=0x11;//T0设置为16位定时方式TH0=0x3c;    TL0=0xb0;//50msIE= 0x82;  //允许T0中断TR0=0;     //关闭定时开关
while(1){     while(1) { LED01=1;LED02=1;LED03=1;LED04=1;LED05=1;LED06=1;LED07=1;LED08=1;//监视灯初始化为灭if(KS1==0) {ks1=1;break;}//开始抢答倒计时if(KS2==0)     {ks2=1;break;}//开始答题倒计时if(ADD1==0)  {delaynms(20);  if(ADD1==0)  dtime++;if(dtime>=1000) dtime=0;}//答题时间调整if(MIN1==0)  {delaynms(20);  if(MIN1==0)  dtime--;if(dtime<0) dtime=999;}if(ADD10==0) {delaynms(20);    if(ADD10==0) dtime=dtime+10;if(dtime>=1000) dtime=0;}if(MIN10==0) {delaynms(20);     if(MIN10==0) dtime=dtime-10;if(dtime<0) dtime=999;}shumasm(LED[qdtime_2],dtime);//数码管动态扫描4位  if(B_score==0){   delaynms(20);if(B_score==0)while(1){ if(B_score==0){ delaynms(20);if(B_score==0) break;}//再次按下B_score退出分数调节   shumasm(LED_num[num],score[num]);        //数码管动态扫描4位,显示选手编号和对应分数if(next==0){ delaynms(20);if(next==0) num++; if(num==9) num=0;}//显示下一位选手编号和对应分数if(last==0){ delaynms(20);if(last==0)  num--; if(num<0) num=8;}//显示上一位选手编号和对应分数if(REST==0)  {delaynms(20); if(REST==0) score[num]=0; }//将当前选手分数清零if(ADD1==0)  {delaynms(20);  if(ADD1==0)  score[num]++;if(score[num]>=1000) score[num]=0;}//调节数码管上对应选手分数,分数范围0-999if(MIN1==0)  {delaynms(20);  if(MIN1==0)  score[num]--;if(score[num]<0) score[num]=999;}if(ADD10==0) {delaynms(20);     if(ADD10==0) score[num]=score[num]+10;if(score[num]>=1000) score[num]=0;}if(MIN10==0) {delaynms(20);     if(MIN10==0) score[num]=score[num]-10;if(score[num]<0) score[num]=999;}  }}}if(ks1==1)    //开始抢答倒计时{ ks1=0;TR0=1;//开始倒计时count=0;//计数标记位归零second=qdtime_2;P2=0xef;//选通最低位K[1]=0;K[2]=0;K[3]=0;K[4]=0;K[5]=0;K[6]=0;K[7]=0;K[8]=0;//选手按钮按下标记位归零while(1){   P0=LED[second];if(second==0) {TR0=0;P0=LED[0];break;}if(second<=4)  BEEP();//提示抢答快要开始                           if(K1==0&&K[1]==0) {LED01=0;K[1]=1;}//选手监视,并用红灯标记犯规选手if(K2==0&&K[2]==0) {LED02=0;K[2]=1;}if(K3==0&&K[3]==0) {LED03=0;K[3]=1;}if(K4==0&&K[4]==0) {LED04=0;K[4]=1;}if(K5==0&&K[5]==0) {LED05=0;K[5]=1;}if(K6==0&&K[6]==0) {LED06=0;K[6]=1;}if(K7==0&&K[7]==0) {LED07=0;K[7]=1;}if(K8==0&&K[8]==0) {LED08=0;K[8]=1;}if(END==0) {delaynms(10); if(END==0) { END_mark=1;break;}}//可按结束键随时结束抢答环节       }if(END_mark==1)  {END_mark=0;continue;}//若结束键按下则结束抢答环节if(K[1]==1&&K[2]==1&&K[3]==1&&K[4]==1&&K[5]==1&&K[6]==1&&K[7]==1&&K[8]==1)      //若所有选手均犯规则报警一段时间后自动结束本次抢答{ for(j=0;j<22;j++)BEEP2();continue;}qdtime=score[0];count=0;//计数标记位归零second=qdtime;num_mark=0;while(1){ if(END==0) {delaynms(10); if(END==0) {END_mark=1;break;}}switch((uchar)!(K1||K[1])*1+(uchar)!(K2||K[2])*3+(uchar)!(K3||K[3])*5+(uchar)!(K4||K[4])*10+(uchar)!(K5||K[5])*20+(uchar)!(K6||K[6])*40+(uchar)!(K7||K[7])*80+(uchar)!(K8||K[8])*160){  case 1:  num_mark=1;break;case 3:  num_mark=2;break;case 5:  num_mark=3;break;case 10: num_mark=4;break;case 20: num_mark=5;break;case 40: num_mark=6;break;case 80: num_mark=7;break;case 160:num_mark=8;break;}if(num_mark!=0)  break;//有人抢答成功则结束抢答     if(qdtime!=0)//抢答时间不为0秒时则启动抢答倒计时  {   if(second<=6) BEEP();TR0=1;shumasm(LED[num_mark],second);if(second==0)  {TR0=0;break;}    } }while(1){ if(END_mark==1) {END_mark=0;break;}P2=0xef;P0=LED[num_mark];if(num_mark!=0)   BEEP3();//提示抢答成功else  BEEP2(); //警告音if(END==0) {delaynms(10); if(END==0) break;}//可按结束键继续下一轮抢答或进入答题}}else if(ks2==1)   //开始答题倒计时{   ks2=0;TR0=1;num=num_mark;//将抢答成功选手编号给numcount=0;//计数标记位归零second=dtime;while(1){  shumasm(0xff,second);//即用后三位显示答题倒计时if(second<10) BEEP();//提示答题时间将到if(second==0) {  TR0=0;break;}if(END==0) {delaynms(10); if(END==0) {while(!END);  //释放检测break;}}//可按结束键随时结束答题}while(1){  shumasm(LED_num[num],score[num]);         //数码管动态扫描4位,进入抢答成功选手分数调节if(END==0) {delaynms(10); if(END==0) break;}//可按结束键继续下一轮抢答或进入答题                   if(ADD1==0)  {delaynms(20);  if(ADD1==0)  score[num]++;if(score[num]>=1000) score[num]=0;}//调节数码管上对应选手分数,分数范围0-999if(MIN1==0)  {delaynms(20);  if(MIN1==0)  score[num]--;if(score[num]<0) score[num]=999;}if(ADD10==0) {delaynms(20);    if(ADD10==0) score[num]=score[num]+10;if(score[num]>=1000) score[num]=0;}if(MIN10==0) {delaynms(20);     if(MIN10==0) score[num]=score[num]-10;if(score[num]<0) score[num]=999;}  }}}
}

源码+PCB+AD原理图 下载:关注公众号,首页回复“抢答器”获取资料

基于51单片机的多功能八路抢答器相关推荐

  1. 基于51单片机的4位竞赛抢答器的设计

    设计编号:Q001 资料下载 功能要求: 以单片机为核心,设计一个4位竞赛抢答器:同时供4名选手或4个代表队比赛,分别用4个按钮S0-S4表示. 1.设置一个系统清除和抢答控制开关S,开关由主持人控制 ...

  2. 详细教程||基于51单片机开发的十路抢答器设计

    一.设计要求 (1)抢答器同时供10名选手或10个代表队比赛. (2)设置一个系统清除和抢答控制开关S,该开关由主持人控制. (3)抢答器具有锁存与显示功能.即选手按动按钮,锁存相应的编号,并在LED ...

  3. 单片机8位抢答器实训机电报告_单片机课程设计报告八路抢答器

    单片机课程设计报告八路抢答器 <单片机原理及接口技术 > 课程设计 报告 课题名称 题目 15八路抢答器设计 ★★ 学院 自动控制与机械工程学院 专业 电气工程及其自动化 班级 姓名 学号 ...

  4. 基于51单片机的多功能智能语音循迹避障小车

    目录 一.功能介绍及硬件准备 二.电机控制及调速 三.小车循迹方案 四.跟随功能实现 五.测速功能实现 六.OLED显示车速 七.摇头避障功能实现 八.SU-03T语音模块介绍 九.语音切换小车模式+ ...

  5. 基于51单片机实现计算器功能

    题目要求: 1.根据开发板设计10以内的加法计算器,用LED数码管显示数字和计算结果.(必做). 2.根据开发板设计100以内的计算器,用LED数码管显示数字和计算结果,要求可实现加法.减法.乘法和除 ...

  6. 基于51单片机实现红绿灯功能

    设计目标: 1.东西方向.南北方向均有红.黄.绿三种信号灯,初始红灯30秒,黄灯闪烁3秒,绿灯30秒,东西方向红灯时刻,南北方向绿灯,南北方向绿灯,东西方向红灯. 2.按键调节与控制功能,通过按键,可 ...

  7. 基于51单片机的多功能洗碗机(Protues仿真)

    本项目是以AT89C51最小系统为核心,外接DS18B20温度传感器.OVEN加热棒.LCD1604显示屏.ADC0832模数转换器模拟浊度传感器.L298和MOTOR当电机模块.电机模块用于模拟洗碗 ...

  8. 基于51单片机的多功能视力保护台灯

    目录 摘要. 1 1弓I言 1 1.1 选 题 背 景 1 2 视力保护器的现状 2 1.3 本文主要研究内容 3 2系统硬件 设计 3 1 89c52 单片机简介 4 2.2 超声波测距报警 电路 ...

  9. 基于51单片机的多功能时钟温度计proteus仿真原理图

    本系统是由AT89S52单片机为控制核心,具有在线编程功能,低功耗,能在3V超低压环境中工作:时钟电路由内部时钟电路外接晶振提供,它是一种高性能.低功耗.带RAM的可随时调整时钟电路,工作电压为3V- ...

最新文章

  1. MySQL中的条件赋值
  2. Lighting System Design UVA 11400 (dp+思维)
  3. Echarts4+EchartsGL 3D迁徙图(附源码)
  4. php如何在微信跳转支付宝支付,微信支付成功了怎么跳转到我指定的信息提示页? - 码支付...
  5. 飘逸的python - 简明gzip模块压缩教程
  6. Spark sql读取数据库和ES数据进行处理代码
  7. HDU 6043 Balala Power! 思维 + 码力
  8. Flutter实战之Android混合开发初探
  9. 莫烦 Python 基础
  10. onenote2019导入_将OneNote 2007笔记本导入Evernote
  11. python里的def方法中->代表什么意思
  12. html使用highcharts绘制饼图,Highcharts绘制饼图的简单实例
  13. 计算机取证之Xplico ——合天网安实验室学习笔记
  14. 摊销本月技术支持部服务器运维成本会计分录,摊销本月报刊费会计分录_摊销本月报刊费_摊销报刊费的会计分录...
  15. [Codeup]1814 问题 A: 剩下的树
  16. TTN服务器LoRaWAN网关配置流程
  17. 浅谈垃圾渗滤液处理设计要点
  18. python 最准确的图片转文字软件,图片转文字软件哪个好?5款好用的图片转文字软件推荐...
  19. 字节跳动暑期实习生一面面经 大三
  20. 群联PS2251-67成功量产教程

热门文章

  1. 用标准理性的思维找女朋友
  2. CTF训练-牛刀小试-聪明的小羊
  3. Bugku:加密 聪明的小羊
  4. DNSLog使用方法
  5. python运维脚本面试_运维开发工程师 面试题 shell编程
  6. python 一行代码(不包含导包)实现1到10的累加_笔试题汇总,含参考答案(持续更新中。。。)...
  7. P2331 [SCOI2005]最大子矩阵 题解
  8. 电信c语言笔试,中国电信测评类笔试题
  9. C++数组的逆序输出
  10. ffmpeg 命令参数详解