智力竞赛抢答器单片机课设.docx

上传人:b****1 文档编号:15012434 上传时间:2023-06-29 格式:DOCX 页数:15 大小:88.88KB
下载 相关 举报
智力竞赛抢答器单片机课设.docx_第1页
第1页 / 共15页
智力竞赛抢答器单片机课设.docx_第2页
第2页 / 共15页
智力竞赛抢答器单片机课设.docx_第3页
第3页 / 共15页
智力竞赛抢答器单片机课设.docx_第4页
第4页 / 共15页
智力竞赛抢答器单片机课设.docx_第5页
第5页 / 共15页
智力竞赛抢答器单片机课设.docx_第6页
第6页 / 共15页
智力竞赛抢答器单片机课设.docx_第7页
第7页 / 共15页
智力竞赛抢答器单片机课设.docx_第8页
第8页 / 共15页
智力竞赛抢答器单片机课设.docx_第9页
第9页 / 共15页
智力竞赛抢答器单片机课设.docx_第10页
第10页 / 共15页
智力竞赛抢答器单片机课设.docx_第11页
第11页 / 共15页
智力竞赛抢答器单片机课设.docx_第12页
第12页 / 共15页
智力竞赛抢答器单片机课设.docx_第13页
第13页 / 共15页
智力竞赛抢答器单片机课设.docx_第14页
第14页 / 共15页
智力竞赛抢答器单片机课设.docx_第15页
第15页 / 共15页
亲,该文档总共15页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

智力竞赛抢答器单片机课设.docx

《智力竞赛抢答器单片机课设.docx》由会员分享,可在线阅读,更多相关《智力竞赛抢答器单片机课设.docx(15页珍藏版)》请在冰点文库上搜索。

智力竞赛抢答器单片机课设.docx

智力竞赛抢答器单片机课设

智力竞赛抢答器

一、项目概述

现如今电视节目日益丰富其中的竞赛环节也越来越多,其中智力抢答器是不可或缺的器材。

在本学期学习了单片机这门课之后,我们小组成员觉得可以试着自己来实现抢答器的功能,令它能准确、公正、直观地判断出第一抢答者,并通过抢答器的数码管显示和蜂鸣器报警指出抢答组别。

我们最终做出一种数字式抢答器的设计方案,通过Proteus设计完成,利用Keil软件编辑程序,仿真验证,适用于多种竞赛场合。

二、项目要求

设计一个用于智力竞赛的抢答器,其功能的实现是由单片机控制的,满足

(1)设置两个功能键:

开始键、复位键

(2)按下按键后可以进行抢答,按下复位键恢复初始状态

(3)能允许2-6组抢答能显示抢答组号,并给出状态指示灯信号

(4)比赛结束时,能发出报警声

三、设计原理

采用AT89C51,它主要负责控制各个部分协调工作。

P3.7 P3.6 P3.5由主持人控制,分别是结束 复位和开始键。

P3.0—P3.4是5组抢答的输入口,按下对应按钮即为抢答。

P1口为显示组别数码管的段选口,位选口用的是P2.5口。

P2.6为蜂鸣器的控制口外部还接有蜂鸣器用来发出报警音。

显示分数数码管采用7SEG-MPX6-CC显示,它是共阴极的由高电平点亮。

系统仿真用到了Keil和Proteus软件,通过仿真可以显示所设计系统的功能,对于程序的调试等有很大的帮助。

 

实验原理图:

芯片引脚连接:

蜂鸣器及开始结束复位电路:

晶体振荡电路:

组别显示:

记分显示:

四、软件设计

#include

#defineuintunsignedint

#defineucharunsignedchar

sbitQ1=P2^0;

sbitQ2=P2^1;

sbitQ3=P2^2;

sbitQ4=P2^3;

sbitQ5=P2^4;

sbitQ6=P2^5;

sbitfeng=P2^6;

sbitk1=P3^0;

sbitk2=P3^1;

sbitk3=P3^2;

sbitk4=P3^3;

sbitk5=P3^4;

sbitbegin=P3^5;

sbitreset=P3^6;

sbitjieshu=P3^7;

unsignedcharcodetable[10]={0x0c0,0x0f9,

0x0a4,0x0b0,

0x99,0x92,

0x82,0x0f8,

0x80,0x90};//共阳数码管

unsignedcharcodetable1[16]={0x3f,0x06,0x5b,

0x4f,0x66,0x6d,0x7d,

0x07,0x7f,0x6f,0x77,

0x7c,0x39,0x5e,0x79,0x71};//共阴数码管代码表"0-F"

ucharnum;

ucharxms;

ucharBUZZ,a,b,c,d,e;

ucharjishu;//储存抢答时间值

voiddelayms(ucharxms)//延时语句

{

uchari,j;

for(i=xms;i>0;i--)

for(j=110;j>0;j--);

}

 

voidtimer_init(void)

{

TMOD=0x01;//T0定时器,M1M0=01,工作方式1(16位方式)

TH0=0x15;//设置初值5536(6MHz晶振,一个机器周期1us)

TL0=0x0a0;//16进制为15A0H

ET0=1;//T0中断

EA=1;//总中断

}

 

voidkeyscan()

{

ucharflag=1;

while(flag)

{

if(k1==0)//按键按下

{

num=1;flag=0;break;

}

if(k2==0)

{

num=2;flag=0;break;

}

if(k3==0)

{

num=3;flag=0;break;

}

if(k4==0)

{

num=4;flag=0;break;

}

if(k5==0)

{

num=5;flag=0;break;

}

}

}

voiddisplay(ucharnumdis)//显示子函数

{

Q6=0;delayms(5);

P1=0xff;

Q6=1;//消影

Q6=0;

delayms

(1);

Q6=1;

P1=table[numdis];

}

voiddisplay1(ucharx)

{

Q1=1;

P0=table[x];

Q1=1;

delayms

(1);

Q1=0;

}

voiddisplay2(ucharx)

{

Q2=1;

P0=table[x];

Q2=1;

delayms

(1);

Q2=0;

}

voiddisplay3(ucharx)

{

Q3=1;

P0=table[x];

Q3=1;

delayms

(1);

Q3=0;

}

voiddisplay4(ucharx)

{

Q4=1;

P0=table[x];

Q4=1;

delayms

(1);

Q4=0;

}

voiddisplay5(ucharx)

{

Q5=1;

P0=table[x];

Q5=1;

delayms

(1);

Q5=0;

}

voidinit()

{

P0=0x000;

P1=0x0ff;

P2=0x0ff;

P3=0x0ff;

}

 

voidmain()

{

while

(1)

{if(jieshu==1)

{

if(reset==0)

{

display(0);

}

else

{

if(begin==0)

{

keyscan();

display(num);

switch(num)

{

case1:

a=a+1;break;

case2:

b=b+1;break;

case3:

c=c+1;break;

case4:

d=d+1;break;

case5:

e=e+1;break;

}

display1(a);

delayms

(2);

display2(b);

delayms

(2);

display3(c);

delayms

(2);

display4(d);

delayms

(2);

display5(e);

}

}

}

else

{

feng=0;

a=0;

b=0;

c=0;

d=0;

e=0;

Q1=0;

Q2=0;

Q3=0;

Q4=0;

Q5=0;

Q6=0;

}

}

}

五、仿真结果

没有开始前显示:

 

当其中某一组按键按下则显示组别,答对问题可以选择加一分:

记分功能,可以认为判断是否正确进行加分减分操作:

六、心得体会

通过本次的课程设计,我们对单片机的使用有了更深入的了解,在将所学知识应用到实践的过程中,对知识的理解更加透彻。

同时,在做课设的过程中我们也遇到了许多问题,解决问题的过程也让我们受益良多,不仅是知识上的,同时也培养了我们的团队协作能力。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 自然科学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2