要求:
1、八人抢答逻辑:只有一个最先抢答有效。
2、在主持人控制下,10秒内抢答有效。
3、采用数码管显示抢答10秒倒计时,若有抢答直接结束,显示结果。
4、抢答结束后用数码管显示抢答结果:抢答有效人编号;若有异常(提前抢答,犯规),显示抢答人编号和E,本次抢答结束 。
5、设主持人控制键、复位键。
控制键:启动抢答
复位键:系统复位
6、开始、正常结束、抢答结束、违规抢答采用声音提示。
7、最后5S开始倒计时的时候有滴滴滴的计时音。
------------整套下载链接在文章最后------------
零、课题研究的相关背景:
抢答器是一种应用非常广泛的设备,在各种竞赛、抢答场合中,它能迅速、客观地分辨出最先获得发言权的选手。早期的抢答器只由几个三极管、可控硅、发光管等组成,能通过发光管的指示辩认出选手号码。现在大多数抢答器均使用单片机(如MCS-51型)和数字集成电路,并增加了许多新功能,如选手号码显示、抢按前或抢按后的计时、选手得分显示等功能。
本课题利用AT89C51单片机及外围接口实现的抢答系统,利用单片机的定时器/计数器定时和记数的原理,将软、硬件有机地结合起来,使得系统能够正确地进行计时,同时使数码管能够正确地显示时间和选手号码。用开关做键盘输出,扬声器发生提示。系统达到要求:在抢答中,只有开始后抢答才有效,如果在开始抢答前抢答为无效;抢答限定时间和回答问题的时间可是在1-99s设定;可以显示是哪位选手有效抢答和无效抢答,键后有音乐提示;抢答时间和回答问题时间倒记时显示,时间完后系统自动复位;按键锁定,在有效状态下,按键无效非法。
一、Protues仿真图:
二、程序源码:
因为注释非常的全,这里就不再进行讲解了。
/*******************************************************************************================================================================================【平 台】STC89C51_sumjess平台【编 写】sumjess【E-mail 】1371129880@qq.com【软件版本】V2.0【最后更新】2019年06月10日【相关信息参考下列地址】【网 站】 https://blog.csdn.net/qq_38351824 http://www.51hei.com/bbs/mcu-2-1.html---------------------------------------------------------------------------------【dev.env.】MDK4.02及以上版本【Target 】STC89C51第一次修订:2019/05/09第二次修订:2019/05/21第三次修订:2019/06/10【problem 】 (1)库内补充的不全面; (2)库内解释部分不全面; (3)库内还存在一定的bug;【direction】 下一步的目标就是把库继续集成!【explain 】 为了方便使用,我也自己写了很多的库,和优化了算法和表示方式!【warning】 目前程序中暂无错误 ! ---------------------------------------------------------------------------------没有完美的代码,只有不断的奉献,大家一起努力;赠人玫瑰手留余香,欢迎大家反馈bug!================================================================================********************************************************************************/ #include#includesbit smg1=P2^4; //定义数码管第一位sbit smg2=P2^6; //定义数码管第二位sbit smg3=P2^7; //定义数码管第三位sbit smg4=P2^5;sbit keyks=P2^2; //定义开始按键sbit keytz=P2^1; //定义停止按键sbit keyqc=P2^0; //定义清除按键sbit key1=P1^4; //定义1号抢答选手 sbit k