八路抢答器设计论文

更新时间:2024-05-31 16:24:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

《单片机原理与应用》大作业

题 目 八人智能抢答器 院 系 信息科学与技术学院 专 业 姓 名 班级学号 指导教师

二○一一年十二月

信息科学与技术学院

单片机大作业任务书

作业名称

基于AT89C52单片机的八路抢答器

专业 学号 姓 名 院(系) 班级 电话 QQ号 1、设计任务:基于AT89S52单片机设计制作一个抢答器,晶振采用12MHz 2、设计要求

1. 抢答器同时供8名选手或8个代表队比赛,分别用8个按钮S1 ~ S8表示。 2. 设置一个系统清除和抢答控制开关S,该开关由主持人控制。

3. 抢答器具有锁存与显示功能。即选手按动按钮,锁存相应的编号,并在优先抢答选手

的编号一直保持到主持人将系统清除为止。

4. 抢答器具有定时抢答功能,且一次抢答的时间由主持人设定(如,30秒)。当主持人启

动\开始\键后,定时器进行减计时。

5. 参赛选手在设定的时间内进行抢答,抢答有效,定时器停止工作,显示器上显示选手

的编号和抢答的时间,并保持到主持人将系统清除为止。

6. 如果定时时间已到,无人抢答,本次抢答无效,系统通过一个指示灯报警并禁止抢答,

定时显示器上显示00。

完成时间 2011-2012学年第一学期

目 录

- 1 -

引言……………………………………………………………1 第一章 设计任务…………………………………………………(1) 设计要求……………………………………………………(2) 功能要求…………………………………………………… 第二章 主要器件介绍……………………………………………

AT89C52/AT89C51 ……………………………………………… 第三章 设计方案?????????????????? (1) 抢答功能设计????????????????(2) 定时功能设计及其总方案???????????. 第四章 电路实现及仿真????????????? 第五章 结论 ???????????????????? 第六章 参考文献??????????????????

附录1:数码管引脚图?????????????????

附录2:仿真图???????????????????? 附录3.源程序代码?????????????????

- 2 -

引言

数字电路产品在生活中有着极其广泛的应用,包括计算机、数字通信、智能仪器仪表、自动控制及航天等领域中。这些给人们带来了生活,工作等方面带来了极大的方便。工厂、学校和电视台等单位常举办各种智力竞赛, 抢答器是必要设备。在我校举行的各种竞赛中我们经常看到有抢答的环节,举办方多数采用让选手通过举答题板的方法判断选手的答题权,这在某种程度上会因为主持人的主观误断造成比赛的不公平性。为解决这个问题,我们小组准备就本次课设的机会制作一个低成本但又能满足学校需要的八路数显抢答器。抢答器在比赛等场合中不可缺少的设备。本文就是从数字电路芯片的功能简介开始,利用功能不同的数字电路芯片的组合来实现多路抢答器的功能。首先简要的介绍了数字电路的发展和演变。然后介绍几个主要集成芯片的管脚功能和用法。最后介绍多路抢答器的原理和设计过程。总结与改进部分,讲一些电路在实际设计调试中的不足,并加以改进。智力竞赛是一种生动活泼的教育方式,而抢答就是智力竞赛中非常常见的一种答题方式。抢答能引起参赛者和观众的极大兴趣,并且能在极短的时间内,使人们迅速增加一些科学知识和生活常识。但是,在这类比赛中,对于谁先谁后抢答,在何时抢答,如何计算答题时间等等问题,若是仅凭主持人的主观判断,就很容易出现误判。所以,我们就需要一种具备自动锁存,置位,清零等功能智能抢答器来解决这些问题。

- 3 -

第一章 设计任务

(1) 设计要求

1. 抢答器同时供8名选手或8个代表队比赛,分别用8个按钮S1 ~ S8表示。

2. 设置一个系统清除和抢答控制开关S,该开关由主持人控制。 3. 抢答器具有锁存与显示功能。即选手按动按钮,锁存相应的编号,并在优先 抢答选手的编号一直保持到主持人将系统清除为止。 4. 抢答器具有定时抢答功能,且一次抢答的时间由主持人设定(如,30秒)。当主持人启动\开始\键后,定时器进行减计时。

5. 参赛选手在设定的时间内进行抢答,抢答有效,定时器停止工作,显示器上显示选手的编号和抢答的时间,并保持到主持人将系统清除为止。

6. 如果定时时间已到,无人抢答,本次抢答无效,系统通过一个指示灯报警并禁止抢答,定时显示器上显示00。

- 4 -

止、禁止二次抢答、定时器显示剩余时间。如果再次抢答必须由主持人再次操作\清除\和\开始\状态开关。

第四章 电路实现及电路调试

3块实验电路板分别做成数字抢答器电路、可预置时间的定时电路、报警电路及时序控制电路,根据EWB仿真电路及工程上的可操作性布置芯片、元件、导线等。可以通过很多电路仿真软件进行,通过对以上进行了解,到仿真电路中去,以上都可以很好的实现其功能 电路调试:(针对抢答功能) 第1点(图1):依次按S1至S8键,每按完进行清除,达到数码管(显示选手号码)显示的数字一一与按键对应,达到效果,反之,查找问题所在:第2点(总体方案):模拟抢答过程,(1)预设时间倒记时开始,依次按S1至S8键数码管(显示选手号码)没有数字显示并且报警发光二极管亮起表示成功,有则找出问题所在:(2)倒记时结束,抢答开始,同时或者只按S1至S8任意键,发光二极管亮起,数码管显示号码,在把所有键依次按一遍看显示号码会不会改变,不改变则完成调试,反之则找出问题。

第五章 结论

抢答器丰富了我们的生活,社会中本来就充满着竞争。只是没有很明显的表现出来,通过运用它我们可以很好的证明自己的胆识和自信,所以做起抢答器来,也很想去了解它,对于八路抢答器原理也只

- 10 -

是几个芯片的合成体,也没什么复杂性,所以很好的做出来,但实践中就有些小小的麻烦,就是电压在实践中很难把握。

总之,这次实践是非常成功的,我们追求的是理论与实践并存,课程设计就很好的为大学生表现自己综合能力提供有力的平台。实践中有很多电路原理弄不清楚,这说明学的不太好,从中也反映了我们在那些知识的不足,我们也应通过老师和自己查资料弥补,这是理想的学习过程。

第六章

参考文献

[1] 康华光,《电子技术基础.数字部分(第四版)》[M],北京:高等教育出版社,2003.

[2] 李广弟,《单片机基础》[M],北京:北航出版社,2001. [3] 梁超,一款基于单片机技术的电子抢答器[J ],机电工程技术,2005,34 (1).

[4] 李朝青,单片机原理及接口技术[M],北京:北京航空航天大学出版社,1999.

[5] 齐向东,多功能数字显示抢答器[J ] . 黄石高等专科学院学报,1996.

附录1:数码管引脚图

- 11 -

图1 数码管引脚图

8421BCD码对应显示图

附录2:仿真图

- 12 -

- 13 -

附录3.源程序代码

#include sbit p3_0=P3^0; sbit p3_4=P3^4; sbit p3_5=P3^5; unsigned char key,num; unsigned char x,y; unsigned char count; unsigned char keycode; unsigned

charLED_T[10]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,0xff,0xff};//P1口LED表 flag=0; start=0; flagl=0;

void delay()//延时 {

- 14 -

unsigned int i; i=500; while(i--); }

int keyscan()//键盘扫描 {

unsigned char read,recode,keyvalue; P2=0xf0; read=P2; if(read!=0xf0) { delay(); if(read!=0xf0) { P2=0x0f; recode=P2;

keyvalue=read+recode; return keyvalue; } } return 0; }

void display()//显示 { unsigned

char code Table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; //数码管断码表 switch(num) {

case 0:{x=0;y=0;break;} case 1:{x=1;y=0;break;}

- 15 -

case 2:{x=2;y=0;break;} case 3:{x=3;y=0;break;} case 4:{x=4;y=0;break;} case 5:{x=5;y=0;break;} case 6:{x=6;y=0;break;} case 7:{x=7;y=0;break;} case 8:{x=8;y=0;break;} case 9:{x=9;y=0;break;} case 10:{x=0;y=1;break;} } p3_4=0; p3_5=0; P0=Table[x]; p3_4=0; p3_5=1; delay(); p3_4=0; p3_5=0; P0=Table[y]; p3_4=1; p3_5=0; delay(); }

unsigned char decode() //解码按键 {

switch(key) {

case 0xb7:return 1; case 0xbb:return 2; case 0xbd:return 3; case 0xbe:return 4;

- 16 -

case 0xd7:return 5; case 0xdb:return 6; case 0xdd:return 7; case 0xde:return 8; } return 0; }

void main() { while(1) {

while(start==0)//P3.0自锁开关按下,程序跳出循环,开始初始化中断{ num=10; P1=LED_T[9]; display(); if(p3_0==0) start=1; } EA=1; TMOD=0x01; TH0=0xd8; TL0=0xf0; ET0=1; TR0=1; count=100; num=9;

while(flag==0&&p3_0==0)//flag=0且P3.0按下时执行此循环 {

if(flagl==1) //若中断里检测到按键,P1口对应LED亮起

- 17 -

P1=LED_T[num-1]; display(); } start=0; flag=0; flagl=0; } }

void timer_1(void) interrupt 1 { TH0=0xD8; TL0=0xf0;

if(p3_0==1) //中断途中抬起P3.0自锁开关,关中断 { TR0=0; flag=0; }

key=keyscan();//检测到按键,解码按键至对应case,并且显示对应数字,关中断,防止再次进入中断,保证锁住状态 if(key!=0) {

num=decode(); display(); TR0=0; flag=0; flagl=1; }

count--; //10秒倒计时 if(count==0) {

- 18 -

num--; if(num==0) { TR0=0; flag=0; }

count=100; } }

- 19 -

本文来源:https://www.bwwdw.com/article/bu06.html

Top