




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、课 程 设 计设计题目智力竞赛抢答器学生姓名学 号专业班级指导教师2011 年 月 日 课程设计任务书设计题目智力竞赛抢答器成绩课程设计主要内容1 课题概述2 设计要求3 设计方案:1)方案论证,2)设计原理4 工作原理及程序流程图5 课程设计总结6 参考文献指导教师评语建议:从学生的工作态度、工作量、设计(论文)的创造性、学术性、实用性及书面表达能力等方面给出评价。签名: 200 年 月 日单片机智力竞赛抢答器设计概述随着科学技术的不断发展,促使人们学科学、学技术、学知识的手段多种多样。抢答器作为一种工具,已广泛应用于各种智力和知识竞赛场合。目前大多数抢答器均使用单片机及外围接口实现,基于单
2、片机的智力竞赛抢答器系统框图如下图所示。 抢答开关电路分别设定选手抢答键若干个、主持人开始抢答键和复位键,每位选手对应一个抢答指示灯。系统工作后,首先由主持人按下开始键,单片机进入30秒倒计时,选手们开始抢答,如果在30秒内无人抢答,则自动放弃,进入下一题;若有人抢答,则单片机自动检测最先抢答选手信息并做出处理,封锁输入电路,禁止其他选手抢答,使选手对应的抢答指示灯点亮,led显示器上同步显示抢答选手的编号,同时扬声器发声提示,表示抢答成功。此后,单片机进入90秒回答问题倒计时,若选手在90秒内回答完问题并回答正确,主持人按加分键,led显示器上显示选手的得分;若选手回答完问题超时或回答错误,
3、则主持人按减分键,led显示器上显示选手的得分。主持人按下复位键,系统返回到抢答状态,进行下一轮抢答。在主持人按下开始抢答键前,有选手提前按下抢答键时,视为抢答犯规,系统红色报警灯点亮,led显示器显示超前抢答报警信息,同时扬声器发声提示抢答犯规。当有几位选手同时按下抢答键时,由于在时间上必定存在先后,系统将自动锁存最先按键选手信号。一、 课程设计任务与要求1.课题概述用单片机实验装置模拟智力竞赛抢答器系统工作。本课题的硬件部分可以利用现有的目标板实验装置,实验箱上28矩阵键盘、led显示器、k0k7开关电路、l0l7发光二极管和蜂鸣器电路等。具体安排如下:(1)抢答器可同时供8名选手或者8个
4、代表队参加比赛。抢答开关电路设计方案:采用实验箱44矩阵键盘电路(参照本书第1部分第4章“图4.13 8279、键盘及led显示电路示意图”),分别设置8个抢答键、主持人开始键和复位键; (2)8个选手抢答指示灯由实验箱l0l7发光二极管电路构成,单片机p1.0p1.7分别接l0l7;实验箱led显示器共有6个led管(参照本书第1部分第4章“图4.13 8279、键盘及led显示电路示意图”),一个显示抢答选手编号,2个显示到计时时间,2个显示选手的分数,1个显示第几题等提示信息。(3)单片机定时器et0,中断tr0。(4)单片机p3.2接实验箱扬声器。2设计要求(1)基本要求本课题硬件部分
5、要求画出系统模块连接图,在实验平台上设计组成智力竞赛抢答器系统,并在其上调试自己设计、编制的程序,直到正确、完善达到要求为止。在软件程序设计方面,要完成以下基本内容:设计编写系统各模块的软件程序并调试通过,画出各程序模块的流程图。实现数据(选手编号)锁存和显示、超前抢答报警、抢答时间和回答问题时间倒记时显示、扬声器发生提示等基本功能。(2)附加要求附加要求则是根据学生学习单片机掌握和运用的情况选作,这给同学们开动脑筋发挥自己的创造性思维留出了空间。系统还可以增加以下功能:1)抢答限时倒计时和答题限时倒计时在达到最后5秒时进行声光报警,提示选手抢答剩余时间和答题剩余时间,扬声器每秒响一次,红色发
6、光二极管闪烁点亮,频率为2hz,占空比50%。2)抢答倒计时到达0时,报警,并锁定抢答开关禁止选手抢答。3)增加计分功能,当答题结束后,根据选手的答题情况给选手进行相应的加减分。二、设计方案1.方案论证在设计初期,根据所参阅的书目,提出使用8个开关来分别控制8个抢答的方案,但后来经过实践发现,这样就使主持人的主开关无法再设置,试验箱没有多余的可用开关,而且,参考硬件电路中需要用到反相器,这也是试验箱不能提供的,综上,这就使我们放弃这种方案,而决定使用键盘来代表八路抢答的选手代号,而主持人主开关使用开关控制,通过p1显示选手的信息。 2.设计原理该系统采用51系列单片机at89c51作为控制核心
7、,该系统可以完成运算控制、信号识别以及显示功能的实现。主要模块由单片机控制,时序控制,数码管显示,led灯及响铃的逻辑控制,键盘控制及8279芯片的使用,基本框图如图1所示图1 设计原理框图三、工作原理及程序流程图 工作原理为:接通电源后,主持人将开关拨到“清除”状态,抢答器处于禁止状态,编号显示器显示为0,定时器显示初始设定时间;主持人将开关置“开始”状态(低电平启动),宣布“开始”抢答器工作。定时器开始倒计时,扬声器给出声响提示。选手在定时时间(在程序中设定为30秒)内抢答时,抢答器完成:优先判断、编号锁存、编号显示、扬声器提示。当第一轮抢答之后,定时器停止计时、禁止二次抢答、定时器显示剩
8、余时间。如果在倒计时结束仍未有选手抢答,则响铃报警。再次抢答必须由主持人再次操作开始、停止状态开关,并且初始状态全部清零。 主程序流程图主程序主持人按开始按钮定时器及并行口初始化将时间计数器及启动标志值1开中断采并行口数据为0吗?启动标志m=0吗?判断抢答组号将抢答组发光二极管点亮判断哪一组为抢答组将抢答组号送显示抢答时间到了吗?输出响铃信号提示超时继续抢答比赛吗?系统返回nyyynyn 抢答过程:挡主持人按复位键后,还没开始抢答,有选手按抢答器时,系统报警,led显示器上显示哪位选手犯规:若没人按键,主持人按下开始键,即m=0,,开始抢答,倒计时30s,若在30s内没人抢答,则系统报警:若有
9、人抢答,系统则锁定第一个抢答选手,即n=1,m=1,禁止抢答。开始回答问题,进行90s倒计时,在90s内回答完毕,且正确,主持人给选手加1分;否则,在90s内没回答出来,或者回答错误,主持人将会给选手减1分。刚开始抢答第一道题时,led显示器上将显示为1,在90s倒计时结束后,在led显示器上将会显示题目会自动加1,显示为2,主持人将进行第二题的抢答,后面依次一样。四、课程设计总结这次课程设计,更多的锻炼了自己的动手操作能力和汇编语言的软件编程思想,同时也是对所学单片机知识的综合运用,学以致用的效果。随着科学技术的迅猛发展,单片机在现代生活中的应用越来越广泛。这次的课程设计就给了我们一个很好的
10、创造平台,来锻炼自己查阅文献,独立研究的能力。在进行设计同时,也发现理论与实际还是有一定差距的,自己还需要很多的实践经验来充实自己,达到举一反三的效果。刚拿到课程设计的题目时,看起来非常复杂,有一种无从下手的感觉。在搜集了一定的资料后,才有了一定的了解,在网上搜索了一些相关的知识,发现其中的程序有很大的问题存在,程序也比较繁琐,好多都没用,而且功能不全。最后找了一个程序,编译没错误,但是不能运行,在反复的查看中发现程序不全,其中大抢答功能不全,没法改,只能重新编程序,请教同学,最后编译成功。经过这次的课程设计,可以说经过了多天的学习, 课程设计不仅仅是让我们把所学的理论知识与实践相结合起来,提
11、高自己的实际动手能力和独立思考的能力,更重要的是这次的课程设计收获的知识很多。发现、提出、分析、解决问题和实践能力的提高都会受益与我在以后的学习、工作和生活中。五、参考文献单片机原理及应用/王琼编著.合肥工业大学出版社单片机原理及应用实验教程/王琼编著.合肥工业大学出版社单片机课程设计指导/杨居义编著.清华大学出版社单片机接口模块应用与开发实例详解/薛小玲,刘志群,贾俊荣编著.北京航天航空大学出版社 单片机系统设计与实例分析/冯育长编著.西安电子科技大学出版社单片机原理及c51开发技术/潘育山编著.西南交通大学出版社程序:#include#include#include#define ucha
12、r unsigned char#define uint unsigned int#define d8279 xbyte0x5eff /8279 数据口地址#define c8279 xbyte0x5fff /8279 状态/命令口地址sbit beep=p32; /蜂鸣器sbit l1=p10;sbit l2=p11;sbit l3=p12;sbit l4=p13;sbit l5=p14;sbit l6=p15;sbit l7=p16;sbit l8=p17;uchar code tab = 0xc0,0xf9,0xa4,0xb0,0x99, 0x92,0x82,0xf8,0x80,0x90,
13、0x88,0x83,0xc6,0xa1,0x86, 0x8e,0x8c,0xc1,0x89,0xc7, 0xbf,0x91,0x00,0xff;/led显示常数表uchar xuanshou,second,count;uchar score1,score2,score3,score4,score5,score6,score7,score8,score,xianshi;/选手18的分数uint t,m,n,a1,a2,a3,a4,a5,a6,a7,a8,i;uchar idata huanchong5=0,0,0,0,0;/显示缓冲shijian,fenshu,xuanshouunsigned
14、char timu=1;unsigned char disbuf6=0x17,0x17,0x17,0x17,0x17,0x17;bit bdata kbz; /anjianbiaozhiweivoid delay(uint z);void timer();void disled(void);void dis();void init();uchar readkey();void delay(uint z) /延时函数uint x,y;for(x=z;x0;x-)for(y=110;y0;y-);uchar readkey() uchar key;if(c8279&0x07)=0x00) kbz=
15、0; /无键按下,置标志else kbz=1; c8279=0x40; /读fifo ram命令 key=d8279; key=(key&0x0f); /取键盘数据4?位 return(key); void tim(void) interrupt 1 using 1 /为定时中断tr0th0=0x3c; /重新赋值tl0=0xb0;count+;if(count=20) /20*50ms=1秒count=0;second-; /秒减1if(second=0&m=1)beep=0;delay(500);beep=1; timu+; disbuf0=timu; tr0=0; disbuf1=dis
16、buf2=disbuf3=disbuf4=disbuf5=23; if(readkey()=0x0f)tr0=0;xuanshou=0;t=0;beep=1;score=0;second=29; a1=1;a2=1;a3=1;a4=1;a5=1;a6=1;a7=1;a8=1;l1=1;l2=1;l3=1;l4=1;l5=1;l6=1;l7=1;l8=1;m=1;n=1;void disled(void) /将缓冲区值显示出来 c8279=0x92; for(i=0;i6;i+) xianshi=huanchongi; d8279=tabxianshi;/-显示处理-void dis() hua
17、nchong5=timu; huanchong4=xuanshou;/shijian gewei huanchong3=score/10;/shijian shiwei huanchong2=score%10;/fenshu gewei huanchong1=second/10;/fenshu shiwei huanchong0=second%10;/xuanshouhao disled();void init() /初始化函数 t=0;beep=1;xuanshou=0;score=0;second=29;score1=10;score2=10;score3=10;score4=10;sco
18、re5=10;score6=10;score7=10;score8=10;a1=1;a2=1;a3=1;a4=1;a5=1;a6=1;a7=1;a8=1;l1=1;l2=1;l3=1;l4=1;l5=1;l6=1;l7=1;l8=1;n=1;m=1; c8279=0xdc; /清除 led 显示 delay(1);tmod|=0x01;th0=0x3c; /初值55536,计数10000次,每次1us,总计10mstl0=0xb0;ie=0x82; /这里是中断优先级控制ea=1(开总中断),et0=1(定时器0允许中断),这里用定时器0来定时 c8279=0x02; /置8279工作方式/y
19、ouduaua/shuru c8279=0x34; /置键盘扫描速率 px1=1;pt0=1;et1=1;xianshi=0;void main() init();/初始化, while(1) if(readkey()=0x0f)tr0=0;xuanshou=0;t=0;beep=0;delay(200);beep=1;score=0;second=29;m=1;n=1; a1=1;a2=1;a3=1;a4=1;a5=1;a6=1;a7=1;a8=1; l1=1;l2=1;l3=1;l4=1;l5=1;l6=1;l7=1;l8=1;dis(); if(readkey()=0x01&n=1) x
20、uanshou=1;score=score1;dis();l1=0;beep=0; else if(readkey()=0x02&n=1) xuanshou=2;score=score2;dis();l2=0;beep=0; else if(readkey()=0x03&n=1) xuanshou=3;score=score3;dis();l3=0;beep=0; else if(readkey()=0x04&n=1) xuanshou=4;score=score4;dis();l4=0;beep=0; else if(readkey()=0x05&n=1) xuanshou=5;score=
21、score5;dis();l5=0;beep=0; else if(readkey()=0x06&n=1) xuanshou=6;score=score6;dis();l6=0;beep=0; else if(readkey()=0x07&n=1) xuanshou=7;score=score7;dis();l7=0;beep=0; else if(readkey()=0x08&n=1) xuanshou=8;score=score8;dis();l8=0;beep=0; else if(readkey()=0x0e) beep=0;delay(200);beep=1;tr0=1; m=0;n
22、=0; if(n=0) if(m=0)dis(); if(second=0) t=0; beep=1;delay(500);beep=0;/30秒定时到tr0=0;n=1;/关中断,并使n等于1dis();if(readkey()=0x0f)tr0=0;xuanshou=0;t=0;beep=0;delay(500);beep=1;score=0;second=29;m=1;n=1; a1=1;a2=1;a3=1;a4=1;a5=1;a6=1;a7=1;a8=1; l1=1;l2=1;l3=1;l4=1;l5=1;l6=1;l7=1;l8=1;dis(); if(m=0)/m等于零即处于抢答状
23、态,查询选手键 if(readkey()=0x01) t=1; else if(readkey()=0x02) t=2; else if(readkey()=0x03) t=3; else if(readkey()=0x04) t=4; else if(readkey()=0x05) t=5; else if(readkey()=0x06) t=6; else if(readkey()=0x07) t=7; else if(readkey()=0x08) t=8; else if(readkey()=0x0f)tr0=0;xuanshou=0;t=0;beep=0;delay(500);bee
24、p=1;score=0;second=29;m=1;n=1; a1=1;a2=1;a3=1;a4=1;a5=1;a6=1;a7=1;a8=1; l1=1;l2=1;l3=1;l4=1;l5=1;l6=1;l7=1;l8=1;dis(); while(t) if(readkey()=0x0f)xuanshou=0;tr0=0;i=0;t=0;beep=0;delay(200);beep=1;score=0;second=29;m=1;n=1;/ a1=1;a2=1;a3=1;a4=1;a5=1;a6=1;a7=1;a8=1; l1=1;l2=1;l3=1;l4=1;l5=1;l6=1;l7=1;
25、l8=1;dis(); if(m=0) /开关,保证程序只执行一次switch(t)case 1:tr0=0;xuanshou=1;second=0;beep=0;delay(500);beep=1; a1=0;a2=1;a3=1;a4=1;a5=1;a6=1;a7=1;a8=1;m=1;l1=0;second=90;tr0=1;break;/跳出循环case 2:tr0=0;xuanshou=2;second=0;beep=0;delay(500);beep=1; a2=0;a1=1;a3=1;a4=1;a5=1;a6=1;a7=1;a8=1;m=1;l2=0;second=90;tr0=1
26、;break; case 3:tr0=0;xuanshou=3;second=0;beep=0;delay(500);beep=1; a3=0;a1=1;a2=1;a4=1;a5=1;a6=1;a7=1;a8=1;m=1;l3=0;second=90;tr0=1;break;case 4:tr0=0;xuanshou=4;second=0;beep=0;delay(500);beep=1; a4=0;a1=1;a2=1;a3=1;a5=1;a6=1;a7=1;a8=1;m=1;l4=0;second=90;tr0=1;break; case 5:tr0=0;xuanshou=5;second=
27、0;beep=0;delay(500);beep=1; a5=0;a1=1;a2=1;a3=1;a4=1;a6=1;a7=1;a8=1;m=1;l5=0;second=90;tr0=1;break;case 6:tr0=0;xuanshou=6;second=0;beep=0;delay(500);beep=1; a6=0;a1=1;a2=1;a3=1;a4=1;a5=1;a7=1;a8=1;m=1;l6=0;second=90;tr0=1;break; case 7:tr0=0;xuanshou=7;second=0;beep=0;delay(500);beep=1; a7=0;a1=1;a
28、2=1;a3=1;a4=1;a5=1;a6=1;a8=1;m=1;l7=0;second=90;tr0=1;break;case 8:tr0=0;xuanshou=8;second=0;beep=0;delay(500);beep=1; a8=0;a1=1;a2=1;a3=1;a4=1;a5=1;a6=1;a7=1;m=1;l8=0;second=90;tr0=1;break; case 12:tr0=0;m=1;beep=0;delay(500);timu+; disbuf0=timu; disbuf2=disbuf3=disbuf4=disbuf5=23;tr0=1;break; if(a
29、1=0) /选手1的分数 dis(); if(second=0)/定时到tr0=0;n=1;/关中断,并使n等于1,禁止抢答if(readkey()=0x0f)tr0=0;xuanshou=0;t=0;beep=0;delay(500);beep=1;score=0;second=29;m=1;n=1; a1=1;a2=1;a3=1;a4=1;a5=1;a6=1;a7=1;a8=1; l1=1;l2=1;l3=1;l4=1;l5=1;l6=1;l7=1;l8=1;dis(); if(readkey()=0x0a) beep=0;delay(100);beep=1;score1+=1; else
30、 if(readkey()=0x0b) beep=0;delay(100);beep=1;score1-=1; score=score1; dis(); else if(a2=0) dis(); if(second=0) /30秒定时到 tr0=0;n=1;/关中断,并使n等于1,禁止抢答 if(readkey()=0x0f)/若此时再按下开始键,响铃提示,定时30s, tr0=0;xuanshou=0;t=0;beep=0;delay(500);beep=1;score=0;second=29;m=1;n=1; a1=1;a2=1;a3=1;a4=1;a5=1;a6=1;a7=1;a8=1;
31、 l1=1;l2=1;l3=1;l4=1;l5=1;l6=1;l7=1;l8=1;dis(); if(readkey()=0x0a) beep=0;delay(100);beep=1;score2+=1; else if(readkey()=0x0b) beep=0;delay(100);beep=1;score2-=1; score=score2; dis(); else if(a3=0) dis(); if(second=0) /30秒定时到tr0=0;n=1;/关中断,并使n等于1,禁止抢答if(readkey()=0x0f)/若此时再按下开始键,响铃提示,定时30s, tr0=0;xu
32、anshou=0;t=0;beep=0;delay(500);beep=1;score=0;second=29;m=1;n=1; a1=1;a2=1;a3=1;a4=1;a5=1;a6=1;a7=1;a8=1; l1=1;l2=1;l3=1;l4=1;l5=1;l6=1;l7=1;l8=1;dis(); if(readkey()=0x0a) beep=0;delay(100);beep=1;score3+=1; else if(readkey()=0x0b) beep=0;delay(100);beep=1;score3-=1; score=score3; dis(); else if(a4=
33、0) dis(); if(second=0) /30秒定时到tr0=0;n=1;/关中断,并使n等于1,禁止抢答if(readkey()=0x0f)/若此时再按下开始键,响铃提示,定时30s,tr0=0;xuanshou=0;t=0;beep=0;delay(500);beep=1;score=0;second=29;m=1;n=1; a1=1;a2=1;a3=1;a4=1;a5=1;a6=1;a7=1;a8=1; l1=1;l2=1;l3=1;l4=1;l5=1;l6=1;l7=1;l8=1;dis(); if(readkey()=0x0a) beep=0;delay(100);beep=1
34、;score4+=1; else if(readkey()=0x0b) beep=0;delay(100);beep=1;score4-=1; score=score4; dis(); else if(a5=0) dis(); if(second=0) /30秒定时到tr0=0;n=1;/关中断,并使n等于1,禁止抢答if(readkey()=0x0f)/若此时再按下开始键,响铃提示,定时30s, tr0=0;xuanshou=0;t=0;beep=0;delay(500);beep=1;score=0;second=29;m=1;n=1; a1=1;a2=1;a3=1;a4=1;a5=1;a
35、6=1;a7=1;a8=1; l1=1;l2=1;l3=1;l4=1;l5=1;l6=1;l7=1;l8=1;dis(); if(readkey()=0x0a) beep=0;delay(100);beep=1;score5+=1; else if(readkey()=0x0b) beep=0;delay(100);beep=1;score5-=1; score=score5; dis(); else if(a6=0) dis(); if(second=0) /30秒定时到tr0=0;n=1;/关中断,并使n等于1,禁止抢答if(readkey()=0x0f)/若此时再按下开始键,响铃提示,定时30s,tr0=0;xuanshou=0;t=0;beep=0;delay(500);beep=1;score=0;second=29;m=1;n=1; a1
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 公司预收资金管理办法
- 农村暂住人员管理办法
- 制定直达资金管理办法
- 公司注销登记管理办法
- 养老机构管理办法南京
- 劳务资金进度管理办法
- 前厅接待管理办法细则
- 创作灵感销售管理办法
- 化工园区认证管理办法
- 六横出租房屋管理办法
- T/CEMIA 026-2021湿电子化学品技术成熟度等级划分及定义
- MZ调制器完整版本
- 空压机改造合同协议
- 2025公安局招聘辅警考试笔试题及答案
- 诉前调解协议书模板
- 房建项目施工组织设计
- 2025届高考英语语法复习倒装句专项练习(含答案)
- 热带作物品种审定规范 葛编制说明
- 2025年上海新金山投资控股集团有限公司招聘笔试参考题库含答案解析
- 导播理论知识培训班课件
- 原材料检验员知识培训
评论
0/150
提交评论