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

基于STC89C51单片机八路抢答器设计摘要:本文基于STC89C51单片机,设计了一款八路抢答器。
该抢答器具有操作简便、反应迅速、功能齐全、便于维护等特点。
本文对该抢答器的硬件设计、软件设计以及测试结果进行了详细说明,并对其应用前景进行了展望。
关键词:STC89C51单片机;八路抢答器;硬件设计;软件设计;测试结果。
1. 引言抢答器是一种常见的竞赛设备,广泛应用于学校、培训机构、比赛等场合。
本文基于STC89C51单片机,设计了一款八路抢答器。
该抢答器不仅具有操作简便、反应迅速、功能齐全的特点,还具备便于维护和升级的优点。
本文将详细介绍该抢答器的硬件设计、软件设计和测试结果。
2. 硬件设计本文所设计的八路抢答器主要由单片机、按键、显示器组成。
2.1 单片机本文所选用的单片机为STC89C51,其主要特点是具有高速、低功耗、中断响应快等优点,以及资源丰富、易于扩展等特点,非常适合抢答器这类应用场景。
该单片机的主频为11.0592MHz,采用通过平板线连接下载程序。
2.2 按键抢答器共有8个按键,分别对应八个参赛选手,按下按键后,会立即向单片机发送一个信号,告诉单片机该选手按下按键。
2.3 显示器抢答器显示屏采用1602液晶显示屏,显示选手和得分数。
3. 软件设计本文所设计的八路抢答器的软件主要包括中断服务程序、按键扫描程序、显示程序等。
3.1 中断服务程序当有选手按下按键时,会触发外部中断,中断服务程序首先获取按下的按键编号,然后根据该编号更新相应选手的得分情况,最后根据得分情况更新显示器。
3.2 按键扫描程序按键扫描程序定时扫描每个按键是否按下,如果按下,则触发外部中断,更新对应选手的得分情况。
3.3 显示程序显示程序根据选手得分情况更新显示器上的显示内容。
4. 测试结果为了验证所设计的八路抢答器的效果,进行了多次测试。
测试结果表明,该抢答器具有反应快、稳定可靠、易于操作等特点,达到了预期的设计目标。
基于51单片机的8路抢答器

基于51单片机的8路抢答器摘要此次设计提出了用AT89S51单片机为核心控制元件,设计一个简易的抢答器,本方案以AT89S51单片机作为主控核心,与晶振、数码管、蜂鸣器等构成八路抢答器,利用了单片机的延时电路、按键复位电路、时钟电路、定时/中断等电路,设计的八路抢答器具有实时显示抢答选手的号码和抢答时间的特点,还有复位电路,使其再开始新的一轮的答题和比赛,同时还利用汇编语言编程,使其实现一些基本的功能。
本设计的系统实用性强、判断精确、操作简单、扩展功能强。
它的功能实现是比赛开始,主持人读完题之后按下总开关,即计时开始,此时数码管开始进行30s的倒计时,直到有一个选手抢答时,对应的会在数码管上显示出该选手的编号和抢答所用的时间,同时蜂鸣器也会发出声音,以提示有人抢答本题,如果在规定的60s时间内没有做出抢答,则此题作废,即开始重新一轮的抢答。
在抢答和回答时间的最后5s,蜂鸣器都会给予报警提示。
关键词:单片机、AT89S51、抢答器目录第一章前言 (1)第二章各模块的选择和论证 (3)2.1抢答器显示模块选择 (3)2.2 控制器选择 (4)2.3 键盘选择 (5)2.4 时钟频率电路的设计 (7)2.5 复位电路的设计 (7)2.6 报警电路 (8)2.7 AT89C51单片机简单概述 (8)2.7.1 AT89C51单片机的结构 (8)2.7.2 AT89C51单片机管脚说明 (9)第三章模块最终方案的设计 (12)3.1总体设计思路 (12)3.2 功能介绍 (12)3.3 抢答器的软件设计 (12)3.4 数码显示软件设计 (13)第四章系统调试与仿真 (15)4.1 软件调试问题分析 (15)4.2 Proteus 仿真 (16)第五章电路板的制作与检查 (17)5.1 焊接的问题及解决 (17)第六章总结 (18)6.1 论文总结 (18)6.2 工作展望 (19)参考文献、资料索引 (20)致谢 (21)附录 (22)附录一主程序清单 (22)附录二单片机八路智能抢答器原理图 (32)附录三 Proteus仿真原理图 (33)第一章前言单片机又称单片微控制器,它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。
基于51单片机的8路抢答器

基于51单片机的8路抢答器摘要抢答器作为一种工具,已广泛应用于各种智力和知识竞赛场合。
但抢答器的使用频率较低,且有的要么制作复杂,要么可靠性低。
作为一个单位,如果专门购一台抢答器虽然在经济上可以承受,但每年使用的次数极少,往往因长期存放使(电子器件的)抢答器损坏,再购置的麻烦和及时性就会影响活动的开展,因此设计了本抢答器。
本设计是以八路抢答为基本理念。
考虑到依需设定限时回答的功能,利用AT89C51单片机及外围接口实现的抢答系统,利用单片机的定时器/计数器定时和记数的原理,将软、硬件有机地结合起来,使得系统能够正确地进行计时,同时使数码管能够正确地显示时间。
用开关做键盘输出,扬声器发生提示。
同时系统能够实现:在抢答中,只有开始后抢答才有效,如果在开始抢答前抢答为无效;抢答限定时间和回答问题的时间可在1-99s设定;可以显示是哪位选手有效抢答和无效抢答,正确按键后有音乐提示;抢答时间和回答问题时间倒记时显示,满时后系统计时自动复位及主控强制复位;按键锁定,在有效状态下,按键无效非法。
关键词:51单片机,抢答器,时间设定目录1 抢答器设计功能分析 (1)1.1 数字抢答器的概述 (1)1.2 设计任务与要求 (1)2 方案设计 (2)3 硬件电路设计 (3)3.1 总体设计 (3)3.2 外部振荡电路 (3)3.3 复位电路的设计 (4)3.4 显示电路的设计 (4)3.5按钮输入电路的设计 (4)3.6 发声 (5)4 系统软件设计 (6)4.1 程序系统结构图 (6)4.2 程序流程图 (6)4.3 程序代码: (9)4.3.1 查询程序: (10)4.3.2 非法抢答处理程序: (10)4.3.3 倒计时程序(包括有效抢答程序): (11)4.3.4 正常抢答处理程序: (13)4.3.5 犯规抢答程序: (14)4.3.6 显示程序: (15)4.3.7 延时(显示和去抖动用到): (16)4.3.8 TO溢出中断(响铃程序): (17)4.3.9 T1溢出中断(计时程序): (17)总结 (18)参考文献 (19)1 抢答器设计功能分析1.1 数字抢答器的概述对于抢答器我们大家来说都不陌生,它是用于很多竞赛场合,真正实现先抢先答,让最先抢到题的选手来回答问题。
基于c51单片机八路抢答器设计

基于c51单⽚机⼋路抢答器设计前⾔单⽚机和其他微型机⼀样,也是由CPU(包括运算器和控制器)、存储器、输⼊设备、输出设备组成,只不过单⽚机是将CPU、RAM、ROM、定时/计数器,以及输⼊/输出(I/O)接⼝电路等计算机的主要部件集成在⼀⼩块硅⽚上的单⽚微型计算机。
它具有体积⼩、可靠性⾼、性价⽐⾼等优点,主要应⽤于⼯业检测与控制、计算机外设、只能仪器仪表、通讯设备、家⽤电器和机电⼀体化产品等领域。
题⽬15 ⼋路抢答器的设计★★设计任务及要求设计任务基于MCS-51系列单⽚机AT89C51,设计⼀个⼋路抢答器。
设计要求1)抢答器同时供⼋名选⼿或⼋个代表队⽐赛,分别⽤8个按钮K1~K8.2)设置⼀个系统清除和抢答控制开关K0,该开关由主持⼈控制。
3)抢答器具有锁存与显⽰功能。
即选⼿按动按钮,锁存相应的编号,并将优先抢答选⼿的编号⼀直保存到主持⼈将系统清除为⽌。
4)主持⼈按下抢答“开始”按钮,抢答开始。
5)当某⼀路抢答成功时,在数码管上显⽰成功信息和该路的号数。
6)当某⼀路抢答违规时,能在数码管上显⽰违规信息和该路的号数。
7)@具有定时抢答功能,且⼀次抢答的时间由主持⼈设定(如30秒)。
当主持⼈启动“开始”按键后,定时器进⾏减计时,同时扬声器发出短暂的声响,声响持续的时间0.5秒左右。
8)@参赛选⼿在设定的时间内进⾏抢答,抢答有效,定时器停⽌⼯作显⽰器上显⽰选⼿的编号和抢答的时间,并保持到主持⼈将系统清除为⽌。
9)@如果定时时间已到,⽆⼈抢答,本次抢答⽆效,系统报警并禁⽌抢答,定时显⽰器上显⽰00。
10)☆其他功能。
硬件设计芯⽚的选择VCC(40):+5V;GND(20):接地;P0⼝(39-32):不外接⽚外存储器及不扩展时可作为准双向输⼊/输出接⼝,扩展是分时复⽤为低8位地址总线;P1⼝(1-8):可作为准双向I/O接⼝使⽤;P2⼝(28-21):外接及扩展时⽤作⾼8位地址总线;P3⼝(10-17):有两种功能,优先选⽤第⼆功能;RST(9):复位输⼊。
基于单片机八路抢答器设计

基于单片机八路抢答器设计设计基于单片机的八路抢答器,需要考虑以下几个方面:硬件设计、软件设计以及抢答器工作流程。
硬件设计:1.单片机选择:可以选择一款具有较多IO引脚和较强处理能力的单片机,如STC89C51、这款单片机具有40个IO口,并且内部集成了PWM、ADC等模块,适合本次设计。
2.触发器设计:使用8个按钮作为触发器,每个按钮与一个IO口连接。
当有用户按下按钮时,会通过IO口向单片机发送一个高电平信号。
3.显示模块设计:可以使用LED灯作为显示模块,用于显示抢答的结果。
每个参与者对应一个LED灯,抢答成功的参与者对应的LED灯会亮起。
4.电源模块设计:使用适配器将220V交流电转换为5V直流电,供给单片机和LED灯。
5.电路连接:将按钮和LED灯与IO口连接,并接地,保持电路的正确连接。
软件设计:1.IO口初始化:将涉及到的IO口初始化为输入或输出口。
2.中断设置:将按钮连接到中断引脚,当按钮按下时,触发中断。
在中断函数内根据按下的按钮编号,判断抢答的结果。
3.抢答逻辑:设计一个数组来保存参与抢答者的结果。
当用户按下按钮后,根据按下按钮的编号,将结果保存到数组中。
根据题目的要求,可以选择先按下的为正确答案或者最后按下的为正确答案。
4.显示结果:根据抢答结果,控制相应的LED灯点亮或熄灭。
抢答器工作流程:1.开机初始化:开机后,进行硬件初始化,包括IO口的初始化和LCD屏幕的初始化。
2.抢答准备:显示等待抢答,等待用户按下按钮。
3.抢答开始:当用户按下按钮后,系统根据按下按钮的编号判断答案是否正确,并将结果保存到数组中。
4.结果显示:根据抢答结果,控制相应的LED灯点亮或熄灭,显示抢答结果。
5.重置抢答器:在每轮抢答结束后,将抢答器重置为初始状态,清空结果数组,准备下一轮抢答。
通过上述硬件设计、软件设计以及抢答器工作流程的设计,实现了基于单片机的八路抢答器。
抢答器的设计可以根据实际需求进行修改和扩展,例如增加显示屏幕显示更多信息、添加声音提示等,以满足不同的使用场景。
八路抢答器-基于单片机C语言

#include<reg51.h>#define uchar unsigned char#define uint unsigned intsbit k1=P1^0;sbit k2=P1^1;sbit k3=P1^2;sbit k4=P1^3;sbit k5=P1^4;sbit k6=P1^5;sbit k7=P1^6;sbit k8=P1^7; //选手按键sbit beep=P3^6; //蜂鸣器uchar code tab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77}; //0-9代码(共阴极)uchar shiwei,gewei,xuanshou,count,i,second;uchar score1,score2,score3,score4,score5,score6,score7,score8;//选手1~8的分数uint t,m,n,a,a1,a2,a3,a4,a5,a6,a7,a8;void Timer(){TMOD|=0x01;TH0=0xd8; //初值55536,计数10000次,每次1US,总计10msTL0=0xf0;IE=0x82; //这里是中断优先级控制EA=1(开总中断),ET0=1(定时器0允许中断),这里用定时器0来定时TR0=1;}void tim(void) interrupt 1 using 1 //为定时中断TR0{TH0=0xd8; //重新赋值TL0=0xf0;count++;if(count==100) //100*10ms=1秒{count=0;second--; //秒减1}}void delay(uint z) //延时函数{uint x,y;for(x=z;x>0;x--)for(y=110;y>0;y--);//延时1ms}void display (uchar shiwei,gewei,xuanshou) //显示函数{P2=0xfe; //打开显示时间十位的位选低电平有效1111 1110 P0=shiwei;//显示十位delay(5);P2=0xfd; //个位位选1111 1101P0=gewei;delay(5);P2=0xf7; //选手位选1111 0111P0=xuanshou;delay(5);}void dis(void)//调用显示函数{shiwei=tab[second/10];gewei=tab[second%10];xuanshou=tab[i];display (shiwei,gewei,xuanshou);}void init() //初始化函数{P2=0x04;//0000 0100P0=0x3f;//数码管共阴0011 1111显示0t=0;beep=0;//蜂鸣器i=0;second=29;score1=60;score2=60;score3=60;score4=60;score5=60;score6=60;score7=60;score8=60;a1=1;a2=1;a3=1;a4=1;a5=1;a6=1;a7=1;a8=1;}void main()//主函数{init();//调用初始化函数if(k==1){ m=0; if(k1==0) {delay(5);if(k1==0);while(!k1);beep=1;delay(500);beep=0;} // 违规抢答显示号码报警while(t){if(m==0) //开关,保证程序只执行一次{switch(t){case 1:{TR0=0;i=1;second=score1;beep=1;delay(500);beep=0;a1=0;a2=1;a3=1;a4=1;a5=1;a6=1;a7=1;a8=1;m=1;break; //有选手抢答时显示选手号码蜂鸣器响,时间为0,t和i对应}}} }if(k2==0) {delay(5);if(k1==0);while(!k1);t=2;beep=1;delay(500);beep=0;}if(k3==0) {delay(5);if(k1==0);while(!k1);t=3;beep=1;delay(500);beep=0;}if(k4==0) {delay(5);if(k1==0);while(!k1);t=4;beep=1;delay(500);beep=0;}if(k5==0) {delay(5);if(k1==0);while(!k1);t=5;beep=1;delay(500);beep=0;}if(k6==0) {delay(5);if(k1==0);while(!k1);t=6;beep=1;delay(500);beep=0;}if(k7==0) {delay(5);if(k1==0);while(!k1);t=7;beep=1;delay(500);beep=0;}if(k8==0) {delay(5);if(k1==0);while(!k1);t=8;beep=1;delay(500);beep=0;}}if(k==0){Timer();//中断定时器打开delay(10);while(!k);while(1){dis();m=0;n=0;if (second==29){beep=1;delay(500);beep=0;}if(second==0){TR0=0;n=1;if(k1==0){delay(5);if(k1==0);while(!k1);t=1;beep=1;delay(500);beep=0;} // 违规抢答显示号码报警if(k2==0){delay(5);if(k1==0);while(!k1);t=2;beep=1;delay(500);beep=0;}if(k3==0){delay(5);if(k1==0);while(!k1);t=3;beep=1;delay(500);beep=0;}if(k4==0){delay(5);if(k1==0);while(!k1);t=4;beep=1;delay(500);beep=0;}if(k5==0){delay(5);if(k1==0);while(!k1);t=5;beep=1;delay(500);beep=0;}if(k6==0){delay(5);if(k1==0);while(!k1);t=6;beep=1;delay(500);beep=0;}if(k7==0){delay(5);if(k1==0);while(!k1);t=7;beep=1;delay(500);beep=0;}if(k8==0){delay(5);if(k1==0);while(!k1);t=8;beep=1;delay(500);beep=0;}if(k==0){beep=1;delay(500);beep=0;second=29;TR0=1;m=1;}}//如果再次按下开始按钮,蜂鸣器响0。
基于80C51单片机的八路抢答器设计

基于80C51单片机的八路抢答器设计题目:基于80c51单片机的八路抢答器设摘要:八路智力抢答器是一个可供八个参赛组进行智力竞赛的电路装置,该装置主要就是由单片机最轻系统、控制电路(八个球手答对按钮;三个主持人控制按钮;四个修改按钮)、数码显示电路与蜂鸣器电路组成的。
单片机(mcu)就是目前在电气控制技术中广泛应用的关键元件。
它具备体积小,稳中求进定性高,应用范围广,控制能力强,升级改造容易等诸多优点。
本论文介绍使用atmel公司at89s52单片机设计八路智能抢答器。
软件使用汇编语言编程,汇编语言属于计算机领域的低级语言,具有简明易懂,执行效率高等的优点。
智能八路抢答器具备答对时间与答题时间调整,答对错误报警提示信息等功能,可以广泛应用于各类知识竞赛。
关键词:抢答器;单片机;硬件系统;软件编程一、系统概述与原理方框图在文中,我对八路抢答器的总体设计及其主要的功能特点展开直观的分析,并给出它的特点,实现的功能以及系统的简单操作,以对单片机及其控制系统的介绍。
(一)单片机技术发展的概述与系统问题的提出目前,单片机正朝着高性能和多品种方向发展,单片机的发展正朝着cmos化,低功耗,小体积,大容量,高性能,低价格和外围电路的内装化等发展。
近几年,由于其他原因chmos技术的进步,大大地推动了单片机的cmos化,此种芯片除了低功耗外,还具有功耗的可控性,使单片机可以工作在功乏细致管理状态,特别就是iic,api等串行总线的导入,可以并使单片机的插槽设计得更少,单片机系统结构更加简化及规范化。
我们设计出来的8路抢答器就是一种基于mcs-51单片机的硬件和软件设计及实现方法,这种电路设计具有按键有效提示,输入错误提示,控制报警电路,在线修正功能等多种功能,保密性弱,灵活性低,特别适用于于家庭!办公室!学生宿舍及宾馆等场所。
它具有全集成化,智能化,高精度,高性能,高可靠性和高价格等优点,就是一个应该推展的一种方法。
(完整版)基于51单片机的八路抢答器要点

题目鉴于单片机的八路抢答器学院名称信息工程学院指导老师X X X班级11级电信 2班学号学生姓名时间摘要在平常生活中,我们能够在电视,或许现实生活活动现场能够看到在答题或许游戏中,他总能第一时间测到谁是第一个,让我们的世界少了那些不用要的争议,那是什么,那就是抢答器。
经过一次又一次科学的进步,单片机在发展,各样功能运用到现实生活的各样领域让我们生活更为的靠近理想话以及经过简单的操作达成手工没法达成或许很难做到的事情,比如家电,通信,商业,工业,航空,航天,军事以及汽车方面。
自然此次我们做的是此中的一种那就是抢答器,它拥有很高的安全性、靠谱性,正确性,应用日趋宽泛。
本次设计使用 AT89C51 实现一鉴于单片机的抢答器设计,其主要拥有以下功能:(1)抢答时间调试,限不时间调试这两个功能都是要在最开始时调试。
能够改变调试抢答时间和限不时间。
(2)声光报警系统。
抢答时间倒计不时会报警闪耀,以及蜂鸣器报警还有时间提示。
(3)锁定功能。
为了很好的在第一时间锁定第一位,抢答器做了很好的反应功能,为此能够更为精准的锁定反应第一位抢答器是由一个 AT89C51、输出八段显示电路。
此外系统还有 LED 提示灯,报警蜂鸣器等。
抢答器的功能在于反应以及最快的时间做出选择:(1)限不时间调试·抢答时间调试功能:这是一个十分人性化的设计,他能够在不一样的场适用不一样的时间来限制抢答以及限不时间的调试。
(2)抢答锁定功能:当按下抢答键时,抢答器会判断第一个抢答的以及显示抢答人的编号。
(3)报警系统:当抢答倒计时到 5 秒时开始二极管开始闪耀报警蜂鸣器开始鸣叫。
主要的设计实行过程:第一,采纳 ATMEL 企业的单片机 AT89C51,以及选购其余电子元器件。
第二步,使用 Protel 设计硬件电路原理图,并设计 PCB图达成人工布线。
第三步,使用 Medwin 软件编写单片机的 C 语言程序、仿真、软件调试。
第四部,使用 PROTEUS软件进行模拟软、硬件调试。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
摘要在日常生活中,我们可以在电视,或者现实生活活动现场可以看到在答题或者游戏中,他总能第一时间测到谁是第一个,让我们的世界少了那些不必要的争议,那是什么,那就是抢答器。
通过一次又一次科学的进步,单片机在发展,各种功能运用到现实生活的各种领域让我们生活更加的接近理想话以及通过简单的操作完成手工无法完成或者很难做到的事情,例如家电,通信,商业,工业,航空,航天,军事以及汽车方面。
当然这次我们做的是其中的一种那就是抢答器,它具有很高的安全性、可靠性,准确性,应用日益广泛。
本次设计使用 AT89C51 实现一基于单片机的抢答器设计,其主要具有如下功能:(1)抢答时间调试,限时时间调试这两个功能都是要在最开始时调试。
可以改变调试抢答时间和限时时间。
(2)声光报警系统。
抢答时间倒计时时会报警闪烁,以及蜂鸣器报警还有时间提示。
(3)锁定功能。
为了很好的在第一时间锁定第一位,抢答器做了很好的反馈功能,为此能够更加精确的锁定反馈第一位抢答器是由一个AT89C51、输出八段显示电路。
另外系统还有 LED 提示灯,报警蜂鸣器等。
抢答器的功能在于反馈以及最快的时间做出选择:(1)限时时间调试·抢答时间调试功能:这是一个十分人性化的设计,他可以在不同的场合用不同的时间来限定抢答以及限时时间的调试。
(2)抢答锁定功能:当按下抢答键时,抢答器会判断第一个抢答的以及显示抢答人的编号。
(3)报警系统:当抢答倒计时到5秒时开始二极管开始闪烁报警蜂鸣器开始鸣叫。
主要的设计实施过程:首先,选用ATMEL公司的单片机AT89C51,以及选购其他电子元器件。
第二步,使用Protel设计硬件电路原理图,并设计PCB图完成人工布线。
第三步,使用Medwin 软件编写单片机的C语言程序、仿真、软件调试。
第四部,使用 PROTEUS 软件进行模拟软、硬件调试。
最后,联合软、硬件调试电路板,完成本次设计。
概述 (4)1总体设计方案 (4)1.1系统设计方案 (5)1.2系统总体结构框图 (5)1.3功能显示区 (6)2 软件设计 (6)2.1主程序流程图 (7)3仿真和调试 (7)4 附录 (9)随着科技的发展,单片机已不是一个陌生的名词,它的出现是近代计算机技术发展史上的一个重要里程碑,因为单片机的诞生标志着计算机正式形成了通用计算机系统和嵌入式计算机系统两大分支。
单片机单芯片的微小体积和低的成本,可广泛地嵌入到如玩具、家用电器、机器人、仪器仪表、汽车电子系统、工业控制单元、办公自动化设备、金融电子系统、舰船、个人信息终端及通讯产品中,成为现代电子系统中最重要的智能化工具。
本文所涉及的是市场占有率最高的是MCS—51系列,因为世界上很多知名的IC生产厂家都生产51兼容的芯片。
到目前为止,MCS—51单片机已有数百个品种,还在不断推出功能更强的新产品。
本设计是基于单片机的抢答器设计方案,根据要求,给出了该单片机抢答器的硬件电路和软件程序,同时给出了单片机型号的选择、硬件设计、软件流程图、单片机存储单元的分配、汇编语言源程序及详细注释等内容1总体设计方案方案一:采用数字电路控制。
采用数字显示电路的好处就是设计简单。
用以在P0口外接电阻做输出口并接数码管来显示时间,共设了8个用户输入键,当抢答的时候,其中只有1个是有效按键,其它的都是干扰按键,若按下干扰键,将无反应只显示第一位抢答编号,如果用户抢答的时间剩下5秒(一般情况下,用户不会超过5秒,若用户觉得不便,还可以修改)电路将报警。
电路由两大部分组成:显示器电路和主电源电源(UPS),其中设置时间调整是为了可以合理的调节时间更加的人性化和用于不同的场合。
方案二:采用一种是用以AT89C51为核心的单片机控制方案。
利用单片机灵活的编程设计和丰富的IO端口,及其控制的准确性,不但能实现基本的抢答器功能,还能添加调节功能等等。
通过比较以上两种方案,单片机方案有较大的活动空间,不但能实现所要求的功能而且能在很大的程度上扩展功能,故本次设计采用方案二。
1.1系统设计方案本方案采用一种是用以AT89C51为核心的单片机控制方案。
利用单片机灵活的编程设计和丰富的I/O端口,及其控制的准确性,实现基本的抢答显示功能。
初步设计思路如下:抢答器用按钮为了更加方便直观的使用。
LED数码管显示第一位抢答号以及抢答时间以及限时时间。
用发光二极管代替报警的电路,发光表示倒计时已经进入5秒计时。
到计时间到,系统报警。
打开电源后,显示器显示“F FF”,只要第一个按下抢答器的就会显示抢答号。
这样可预防抢答的时候出现不必要的麻烦。
按“复位”键,清除显示器为“F FF”。
按开始键开始抢答倒计时,当有人抢到第一个诞生那么主持人开始问问题,并且按下限时按钮开始倒计时,一共为二十秒,抢答人必须要在20秒内讲出答案如果进入最后5秒那么开始报警闪光提示,当闪光介绍那么就说明答题介绍并且蜂鸣器鸣叫以提示。
然后进入第二轮的抢答要按下复位按钮,来更好的完成接下来的任务。
1.2系统总体结构框图llAdnae本次设计主控制器为AT89C51单片。
e an dAl l t h i ng si nt he i rb ei n ga re go 1.3功能实现显示区在本次设计中,基于节省材料的原则,暂时用发光二极管代替提示系统,发光管亮,表示5秒倒计时;灭,表示倒计时介绍。
当P 口输出低电平时,二极管发光,提示答题即将结束。
硬件设计2.软件设计主要过程是LED 数码管提示开始倒计时和限时抢答号,通过按键抢答,同时LED 显示倒计时情况,按下抢答键后判断第一位抢答号,作出倒计时和抢答号已经报警提示处理。
由于采用多个按键来完成抢答,那么其中一个第一个完成按键的会在数码管上显示抢答号。
在抢答过程中,首先要进入开始抢答的步骤,接着根据抢答号由显示的抢答人来答题,直到回答出或者倒计时结束,才能完成抢答过程。
进入抢答号的判断比较处理状态并给出相应的处理过程。
e an dAl l t h i n g s i n t h e i r b e i n g a re go od fo r2.1程序流程图3 仿真和调试采用Keil 和Protues 软件相结合进行仿真。
数码管初始化显示“F FF”:e an dAl l t h i n g s i n t h e i r b e i n g a re go od fo rs o 按下开始按钮后,进入抢答倒计时:选手在20秒内抢答,如8号选手:进入倒计时(5s ):e an dAl l t h i ng si nt he i rb ei n ga re go od fo rs o 非正规抢答,如6号选手:4 附录(源代码:)#include<at89x51.h>#define uchar unsigned char #define uint unsigned int char s;uchar num=0;char time=20;//抢答时间char datitime=30;//答题限时时间uint tt,t1;//T0,T1定时器定一秒时bit flag,s_flag=1,b_flag,fall_flag;//标志位bit K_startcountflag,K_timecountflag;//时间调整标志位sbit K0=P3^0;sbit beep=P3^7; //蜂鸣器输出口sbit rled=P3^1;//指示灯输出口sbit K1=P1^0;sbit K2=P1^1;sbit K3=P1^2;sbit K4=P1^3;sbit K5=P1^4;sbit K6=P1^5;sbit K7=P1^6;sbit K8=P1^7;sbit K_Time=P3^2;//答题计时键sbit K_startcount=P3^3;//开始抢答时间调整键sbit K_timecount=P3^4;//答题计时时间调整键void delay(uchar ms){uchar y;for(;ms>0;ms--)for(y=120;y>0;y--);}uchar code tabledu[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};uchar code tablewe[]={0XFE,0XFD,0XFB,0XF7}; void T0_Init(void){TMOD=0X01;TH0=(65536-2000)/256;TL0=(65536-2000)%256;TH1=(65536-2000)/256;TL1=(65536-2000)%256;ET0=1;ET1=1;EA=1;P0=0;}void Key_Scan(void)//开始键扫描{if(K0==0){delay(10);if(K0==0){while(!K0);TR0=1;s=time;tt=0;flag=1;s_flag=1;b_flag=1;num=0;beep=1;rled=1;fall_flag=0;//清除违规标志位K_startcountflag=0;K_timecountflag=0;}}}void Scan(void)//八路热键扫描(哪个键先按下,哪个优先级最高) {if(K1==0){delay(10);if(K1==0){while(!K1);num=1;//数码管显示1号"1"TR0=0;//关闭定时器0,时间停止TR1=1;//打开定时器1,使扬声器响一声s_flag=0;//关闭开始键标志位,使再按其他七个键不会响应}}if(K2==0)//下面七个键的处理同上{delay(10);if(K2==0){while(!K2);num=2;TR0=0;TR1=1;s_flag=0;//重要}}if(K3==0){delay(10);if(K3==0){while(!K3);num=3;TR0=0;TR1=1;s_flag=0;}}if(K4==0){delay(10);if(K4==0){while(!K4);num=4;TR0=0;TR1=1;s_flag=0;}}if(K5==0){delay(10);if(K5==0){while(!K5);num=5;TR0=0;TR1=1;s_flag=0;}}if(K6==0){delay(10);if(K6==0){while(!K6);num=6;TR0=0;TR1=1;s_flag=0;}}if(K7==0){delay(10);if(K7==0){while(!K7);num=7;TR0=0;TR1=1;s_flag=0;}}if(K8==0){delay(10);if(K8==0){while(!K8);num=8;TR0=0;TR1=1;s_flag=0;}}}void display(void){if(flag==1)//开始键按下,开始计时抢答{if(num!=0)//如果有人抢答,则显示相应的几号{P0=tabledu[num];//显示几号抢到了P2=tablewe[0];delay(2);P0=0;P2=0XFF;}else//否则没人抢答,则前面不显示几号{P0=0;P2=0XFF;}P0=tabledu[s/10];//下面为显示抢答倒计时P2=tablewe[2];delay(2);P0=0;P2=0XFF;P0=tabledu[s%10];P2=tablewe[3];delay(2);P2=0XFF;P0=0;}else//如果开始键没有按下,则显示F FF(若有违规者,则显示违规号码及FF)或时间调整{if(fall_flag==1)//违规显示{if(num!=0){P0=tabledu[num];//显示几号违规了P2=tablewe[0];delay(2);P0=0;P2=0XFF;P0=tabledu[15];//下面显示FF,表示违规了P2=tablewe[2];delay(2);P0=0;//消隐P2=0XFF;P0=tabledu[15];P2=tablewe[3];delay(2);P0=0;P2=0XFF;}else{P0=0;P2=0XFF;}}else//没有人违规才显示调整时间{if(K_startcountflag==1){P0=0X6D;//第一位数码管显示"5(S)"(表示抢答时间调整)P2=tablewe[0];delay(2);P0=0;P2=0XFF;P0=tabledu[time/10];//下面显示调整的抢答时间P2=tablewe[2];delay(2);P0=0;P2=0XFF;P0=tabledu[time%10];P2=tablewe[3];delay(2);P0=0;P2=0XFF;}else if(K_timecountflag==1){P0=0X07;//第一位与第二位数码管合起来显示"T",表示答题时间调整P2=tablewe[0];delay(2);P0=0;P2=0XFF;P0=0X31;P2=tablewe[1];delay(2);P0=0;P2=0XFF;P0=tabledu[datitime/10];P2=tablewe[2];delay(2);P0=0;P2=0XFF;P0=tabledu[datitime%10];P2=tablewe[3];delay(2);P0=0;P2=0XFF;}else//否则显示F FF{P0=tabledu[15];P2=tablewe[0];delay(2);P0=0;P0=tabledu[15];P2=tablewe[2];delay(2);P0=0;//消隐P2=0XFF;P0=tabledu[15];P2=tablewe[3];delay(2);P0=0;P2=0XFF;}}}}void Time_Scan(void)//调整时间键扫描{if(K_startcount==0)//抢答时间调整{delay(10);if(K_startcount==0){while(!K_startcount);time++;if(time==50){time=20;}K_startcountflag=1;//将抢答时间标志位置1K_timecountflag=0;//同时关闭答题时间标志位}}if(K_timecount==0)//答题时间调整{delay(10);if(K_timecount==0){while(!K_timecount);datitime++;if(datitime==60){datitime=30;}K_timecountflag=1;K_startcountflag=0;}}}void main(void){T0_Init();while(1){Key_Scan();//开始键扫描if((flag==0)&(s_flag==1))//当开始键没按下及没有人违规时才可进行时间调整{Time_Scan();}if((flag==1)&(s_flag==0))//当开始键按下及有人抢答才进行开始回答计时倒计时{if(K_Time==0){delay(10);if(K_Time==0){while(!K_Time);s=datitime;TR0=1;tt=0;TR1=1;}}}if((flag==0)&(s_flag==1))//违规{Scan();if(num!=0)//开始键没有按下时,有人按下了抢答器,则置违规标志位{fall_flag=1;rled=0;}}if((flag==1)&(s_flag==1))//如果开始键按下且抢答键没有人按下,则进行八路抢答键扫描{Scan();}display();//显示到数码管上}}void timer0(void) interrupt 1{TH0=(65536-2000)/256;//2msTL0=(65536-2000)%256;if(b_flag)//开始(START)键按下,嘟一声(长1秒),表示开始抢答{beep=~beep;}elsebeep=1;if(s<5)//抢答时间快到报警,隔1秒响一声且红灯闪烁,响三声{if(s%2==0){b_flag=1;rled=0;}else{b_flag=0;rled=1;}}tt++;if(tt==500)//1秒{tt=0;s--;b_flag=0;//关闭开始键按下响一秒的嘟声if(s==-1){s=20;TR0=0;flag=0;//显示F FFs_flag=1;num=0;rled=1;}}}void timer1(void) interrupt 3//定时器1处理有人按下抢答器嘟一声(长1秒) {TH1=(65536-2000)/256;TL1=(65536-2000)%256;beep=~beep;t1++;if(t1==500){t1=0;TR1=0;}}。