8位竞赛抢答器的设计
第1章 需求分析抢答比赛是一个参赛者与观众都喜爱的富有激情的比赛,在主持人宣布开始答题后,选手要在规定的时间内,以抢答的方式来回答问题。过去,人们抢答比赛仅依靠主持人人为的判断来判定到底哪个选手是最快抢答成功的,这种抢答方式不仅精准性低而且效率也不高,所以抢答比赛就需要有抢答器来进行辅助比赛,精准选出抢答成功的选手。
本次我们要设计的是一个8位竞赛抢答器,可以同时供8名选手或8支队伍比赛。抢答器要求能快速地锁定抢答选手或队伍的编号,抢答的信息要能迅速显示在数码管上,并且要能为主持人提供方便的比赛操作,可以灵活地进行比赛时间调节与操作比赛的开始与结束,保证整场比赛的公平性与灵活性。考虑到比赛运营的费用与投入的成本,抢答器整套系统的成本也不能太高,所选用芯片的价格要求要适中,这样才能保证抢答器系统的价格在可以普遍应用的范围内。
第2章 系统概要设计
2.1 8位竞赛抢答器的整体设计8位竞赛抢答器可以同时提供 8 名选手参加比赛,使用AT89C52单片机芯片的P1^1 – P1^7口作为抢答按钮的接口,与8个按钮相连接,模拟选手的抢答按键。并在P2^0口与P2^1口分别设置一个抢答开始按键与抢答时间设置按键,提供给主持人进行比赛的控制,再利用系统的复位功能,重置系统模拟进入下一题,重新设置计时时间与计时抢答工作的准备。数码管的显示驱动由MAX7219显示芯片带动,使用AT89C52单片机芯片的P3^0(RXD)与P3^1(TXD)口分别与MAX7219芯片的DIN口与LOAD口连接,进行串行通信与数据装载,传送当前的抢答时间与抢答成功选手编号,CLK时钟序列输入口与AT89C52芯片的INT0口(外部中断口)进行连接,提供控制信息。
2.2 8位竞赛抢答器功能流程接通电源后,主持人可以按抢答时间设置按键进行抢答时间的设置,在设置好抢答时间后,按开始按键即可开始计时抢答,此时选手可以通过自己的按键进行抢答。在一个选手成功之后,系统会进行选手编号与抢答时间的锁定,数码管就会显示当前抢答选手的编号与抢答时间。系统流程图如下所示:

图2-1 8位竞赛器系统流程图
第3章 仿真电路设计
3.1 仿真电路总体设计8位竞赛抢答器使用了AT89C52芯片和MAX7219芯片进行设计,AT89C52是一种带4K字节闪烁可编程可擦除只读存储器的低电压,高性能CMOS,8位微处理器,俗称单片机,用于抢答逻辑电路的设计。MAX7219是一种集成化的串行输入/输出共阴极显示驱动器,它连接微处理器与8位数字的7段数字LED显示,也可以连接条线图显示器或者64个独立的LED,拥有10MHz连续串行口与独立的LED段控制,用于显示抢答成功选手编号显示与抢答时间显示。
系统的总体电路如下图所示:
图3-1 总体电路图
3.2 单元电路设计为了更好的设计8位竞赛抢答器,我们根据各个部分的功能将总电路划分成为晶振电路、抢答电路、显示电路以及主持人控制电路,以下是对各个单元电路的详细说明。
3.2.1 晶振电路与复位电路该晶振电路使用的是内部时钟电路,晶振的频率为12MHZ ,提供AT89C52芯片的时钟脉冲使AT89C52芯片工作。复位电路使用的是按键与上电复位,复位电路可以使单片机重置,使单片机重新开始执行程序。当复位开关按下 RST 口由低电平变为高电平,触发复位功能,系统重置。晶振电路电路图如下图红圈区域,复位电路如下图蓝圈区域,如图:

图3-2 晶振电路电路图
3.2.2 抢答电路抢答电路使用AT89C52的P1^0 - P1^7作为选手的抢答按键,选手编号分别1到8,当选手按下按键时,按键对应的接口由高电平变为低电平,程序不断扫描P1各个口电平的变化,在扫描到有接口变为低电平后,迅速锁定该口的编号,模拟抢答成功情形。抢答电路电路图如下图红圈区域所示:

图3-3 抢答电路电路图
3.2.3 显示电路显示电路由MAX7219芯片进行显示驱动,两个10引脚的LED数码管进行选手编号的显示与抢答时间显示,由DIN接口(串行数据输入端口)进行串行数据的输入,LOAD口进行数据的装载,再通过DIG0~DIG7口进行片选信号的输出,对LED数码管进行控制。显示电路电路图如下图红圈区域所示:

图3-4 显示电路电路图
3.2.4 控制电路控制电路由AT89C52芯片的P2^0与P2^1口进行实现,通过与两个按键进行连接,实现开始计时与抢答时间的设置。控制电路电路图如下图所示:

图3-5 控制电路电路图
第4章 系统软件设计4.1 软件主程序设计
图4-1 主程序流程图
程序Main函数
- <font style="font-size: 12pt">void main()
- {
- while(1)
- {
- do
- {
- holderscan();
- }
- //while(begin);//开始前进行设置,若未按下开始键 主持人是否把开始按键按下
- while (begin)
- delay_ms(10);//防抖
- while(!begin);
- max7219_init(); //芯片初始化
- timer_init(); //中断初始化
- TR0=1; //开始中断
- do
- {
- time_display(second);
- people=keyscan();//扫描选手按键
- scare_display(people);
- }
- while((!people)&&(second));//运行直到抢答结束或者时间结束
- TR0=0;
- }
- }</font>
复制代码
第5章 仿真结果分析
5.1仿真结果分析系统仿真时首先要在使用KeilC编译器,把所写的程序进行编译,同时在仿真器里设置生成 hex 文件,编译无错误时使用 Proteus软件仿真。电路启动仿真结果如下所示:

图5-1 电路启动仿真图
按下START按键后,抢答开始,开始30s倒计时,仿真结果如下所示:
图5-2 倒计时仿真图
点击任意选手按钮,倒计时暂停,显示选手编号,仿真结果如下所示:

图5-3 选手抢答仿真图
若该选手打错,继续倒计时,选手编号清零,仿真结果如下所示:
图5-4 继续抢答仿真图
一轮答题结束后,点击复位按钮,倒计时复位,选手编号清零,仿真结果如下所示:

图5-5 复位仿真图
第6章 课程设计总结在这次课程设计中,通过完成8位竞赛抢答器的设计,我们对书本上的知识有了进一步的了解。将以前学习过的模电知识与proteus软件的操作结合起来。本次课程设计我们选择8位竞赛抢答器设计的原因是这看起来是个相对简单一点的课题,但当我们真正开始设计的时候,发现这个课题并没有我们想象中的那么简单,在设计电路的过程中遇到了不少的问题。虽然我们通过查阅书本和网上的资料在proteus上成功画出本次设计所需要的电路图,但我们在电路仿真的时候发现电路中的电阻及电容参数设置错误,导致仿真过程中电路无法正常运行,当我们改正后再次仿真的时候又发现了定时器的初值设置有误以及其他元器件的参数都有点小问题,经过几次修改,电路成功仿真并达到了我们预期设想的结果。
本次的课程设计使我们受益匪浅。加深了我们对单片机和数字电路的认识,相信这在以后的学习和工作中碰到这些基础元器件我们会更加得心易手。我们还学习到了一些课堂上学不到的东西,这些知识可能对于我们将来的毕设、学习或者工作来说,都是很有帮助的。希望以后我们还能更多这样的机会来学习更多的知识。
致 谢经过一周的努力,我们成功完成本次课程设计的课题,以单片机为核心设计出一个8位竞赛抢答器。虽然还存在一些小问题,但基本达到本次课程设计的设计要求。
在这一周的课程设计中,我们在设计过程中遇到一些曲折。在编写程序和完成电路仿真时,几次因无法实现设计所要求的结果或错漏百出,我们只好重新设计一个新的方案。好在得到老师和周围同学及好友的帮助,我们才能坚持下去并成功完成本次课程设计。在此我们要感谢罗泽鹏老师对我们的指导,老师知识渊博,做事严谨,平近易人。向老师请教问题时,老师细心地解答我们的问题,还经常帮忙指出我们没有发现的错误并提出改善的建议。我们还要感谢周围的同学,在完成本次课程设计的过程中得到他们不少的帮助和支持。不过我们最想感谢的还是我们自己,正是因为我们组员互帮互助、团结友爱、坚持不懈的精神,我们才能在本次课程设计画下一个完美的句号。
附录总电路图

电路元器件图表
完整的Word格式文档51黑下载地址(含源码):
《8位竞赛抢答器的设计》课程设计报告.docx
(650.02 KB, 下载次数: 562)