ImageVerifierCode 换一换
格式:DOCX , 页数:21 ,大小:178.61KB ,
资源ID:6346368      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-6346368.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(八路抢答器设计.docx)为本站会员(b****4)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

八路抢答器设计.docx

1、八路抢答器设计物理与电子信息工程学院实验报告实验课程名称:电子综合设计实验实验项目名称:八路智力抢答器班 级: 0912241 姓 名: 学 号: 成 绩:_ 实 验 时 间: 2011.10.25 1. 实验目的(1)掌握八路抢答器的工作原理。(2)掌握单片机的使用方法。(3)掌握程序的编写、调试和下载方法。(4)学会分析、观察及调式电路。2. 仪器设备AT89C51单片机 1 个 11.0592M晶振 1个四位共阴极数码管 1个按键 10个Led 各1个22pF瓷片电容 2个10uF电解电容1个排阻 1k*8 2个10k电阻若干基于单片机的八路抢答器设计方案本题利用AT89C51单片机及外

2、围接口实现的抢答系统,利用单片机的定时器/计数器定时和记数的原理,将软、硬件有机地结合起来,使得系统能够正确地进行计时,同时使数码管能够正确地显示时间和选手号码。用开关做键盘输出,扬声器发生提示。系统达到要求:在抢答中,只有开始后抢答才有效,如果在开始抢答前抢答为无效;抢答限定时间和回答问题的时间可是在1-99s设定;可以显示是哪位选手有效抢答和无效抢答,正确按键后有音乐提示;抢答时间和回答问题时间倒记时显示,时间完后系统自动复位;按键锁定,在有效状态下,按键无效非法。抢答器的系统概述系统的主要功能:本系统是借用单片机采用模块化设计的八路抢答器,包括8路抢答按纽、计时显示、提示功能等(根据需要

3、可另设或多设相关功能)、开始与结束控制按钮、时限设定、各种相关显示调控功能等(根据需要也可另设或多设相关功能)。参赛者系统,除享有抢答按纽的权利功能外,还有人性化的提示功能和时间提示功能,也可设定由主控控制在参赛者终端表现的趣味性功能等;主控系统的控制按钮做开始与结束控制,根据活动参赛者的层次,对提前抡答者的行为设定为非法或阻隔,若设有非法抢答控制功能时,在主控处带有公示性显示的非法抡答者的台位号,对抢答限时及回答问题限时设为倒计时,并有显示提示。系统的主要功能模块方框图如图1所示:图1 系统主要功能模块本系统采用模块化设计的八路抢答器,在抢答比赛中广泛应用,各组分别有一个抢答按钮。一共有8个

4、按键输入,分别对应8路选手的抢答按键。主持人有开始和结束键。在后台主持人可以修改,抢答时间和选手回答问题的时间设置,原始状态下抢答时间为20s,回答问题时间为30s。通过加键和减键修改上述时间,改完后结束键确定。新时间开始有效,主持人按键开始后,选手开始抢答为有效,数码显示屏显示抢答时间倒计时和选手号,在最后五秒扬声器发生提示。如果主持人没有按下开始键而选手就抢答视为犯规,数码显示屏显示犯规者的代号,扬声器持续发生。主持人可按键结束,新一轮抢答开始。单片机是整个抢答器的核心,内部电路设计用汇编语言编写。它完成了时间参数的设定,抢按号码的译码,保存;显示;输出,抢按及答题倒计时功能等。本设计中,

5、有一个共阴的数码管组,四个数码管。其中两个显示时间,一个空位,一个显示抢答号码。主持人依次按下复位键(RESET),开始键后开始抢答。可以抢按:超时数码管显示“FFF”,当抢按超过规定时间或答题超过规定时间后数码管显示“FFF”。若有选手在规定时间内抢按成功,则可以答题,数码管显示抢答时间的同时也显示选手号码。若在按开始键前抢答表示违规,数码管显示“FF”并显示选手号码。系统需求分析1在抢答中,只有开始后抢答才有效,如果在开始抢答前抢答为无效。2抢答限定时间和回答问题的时间可以在199s设定。3可以显示是哪位选手有效抢答和无效抢答,正确按键后有音乐提示。4抢答时间和回答问题时间倒记时显示,时间

6、完后系统自动复位。5 抢答限定时间内使用锦囊回答时间将加到60s。6按键锁定,在有效状态下,按键无效非法。抢答器的工作流程抢答器的基本工作原理4:在抢答竞赛或呼叫时,有多个信号同时或不同时送入主电路中,抢答器内部的寄存器工作,并识别、记录第一个号码,同时内部的定时器开始工作,记录有关时间并产生超时信号。在整个抢答器工作过程中,显示电路、声音电路等还要根据现场的实际情况向外电路输出相应信号。抢答器的工作流程分为:系统复位、正常流程、违例流程等几部分,如图2所示,下面分别予以介绍。图2 抢答器工作流程抢答器的工作过程1、主持人按抢答开始键,会有红灯亮,并立刻进入抢答倒计时(预设20s抢答时间),如

7、有选手抢答,会有提示音和一个绿灯亮,并会显示0,不进行抢答查询,所以只有第一个按抢答的选手有效。 2、如倒计时期间,主持人想停止倒计时可以随时按“停止”按键,系统会自动进入准备状态,等待主持人按“抢答开始”进入下次抢答计时。3、如果主持人未按“抢答开始”键,而有人按了抢答按键,犯规抢答,LED上不断闪烁FF和犯规号数并响个不停,直到按下“停止” 键为止。总而言之,本课题利用AT89C51单片机及外围接口实现的抢答系统设计了抢答器,该抢答器增加了新功能、提高了系统的可靠性、简化了电路结构、节约了成本,是一个实用的工程设计。总体原理图图4 系统原理图图中U1为单片机AT89C51,U2为芯片74H

8、C30,U3为芯片74LS04。K1K8分别为8路抢答按键,分别接到单片机的P1.0P1.7中。开始按键与结束按键分别接到单片机的10、11脚,由于单片机的10、11脚既有串行接口RXD、TXD功能,又有P3.0、P3.1的IO端口功能,此处按键用到单片机10、11脚的IO端口功能。抢答时间调整按键和回答时间调整按键分别接到单片机的13、14管脚,加一按键和减一按键分别接到单片机的15、16管脚。4位七段数码管段选P0口。4位七段数码管的位选接P2口低3位,蜂鸣器输出为P3.7口。软件设计1.主程序系统结构图图13软件系统结构图2.程序流程图-主流程图如14所示:图14 程序设计流程图3.复位

9、图图15 复位显示三个FFF该图显示当单片机复位后,在4位七段数码管上显示的初始状态“F FF”字符。4.设置计时时间图16 计时时间为17秒该图显示通过加一按键操作后在4位数码管上显示的计时时间为17秒。5.非法抢答并显示座号图17 三号选手非法抢答该图显示的是若三号选手非法抢答时候,第一位字符显示单片机判定的非法选手“3”号选手,在4位数码管上的后两位显示非法抢答字符“FF”。6.抢答成功并显示倒计时图18 六号选手抢答图中显示的是若6号选手抢答成功的时候,4位数码管的第一显示是“6”号选手抢答成功,最后两位显示选手答题倒计时时间还有25秒。程序#include /*- 宏定义 -*/ #

10、define uint unsigned int #define uchar unsigned char /*- 共阴极数码管编码表 0 - f显示 -*/ unsigned char code table=0x3f,0x06,0x5b,0x4f,0x66, 0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c, 0x39,0x5e,0x79,0x71; sbit start_stop = P36; sbit reset = P37; sbit key1 = P10; sbit key2 = P11; sbit key3 = P12; sbit key4 = P13; sbit

11、 key5 = P14; sbit key6 = P15; sbit key7 = P16; sbit key8 = P17; sbit state = P34; sbit bao = P33;sbit xiang=P32;bit start_stop_flag = 0; bit key1_flag = 0; bit key2_flag = 0; bit key3_flag = 0; bit key4_flag = 0; bit key5_flag = 0; bit key6_flag = 0; bit key7_flag = 0; bit key8_flag = 0; bit reset_f

12、lag = 0; bit action = 0; uchar second = 20; uchar timer0_count = 0; uchar number = 0; uchar number_display = 0; void delay(uint z) uint x,y; for(x=z;x0;x-) for(y=110;y0;y-); void display(uchar number,uchar second) uchar second_first,second_second; second_first = second / 10; second_second = second %

13、 10; P2 = 0xfe; P0 = tablenumber; delay(2); P2 = 0xfd; P0 = 0x40; delay(2); P2 = 0xfb; P0 = tablesecond_first; delay(2); P2 = 0xf7; P0 = tablesecond_second; delay(2); void start_stop_keyscan() if(start_stop != 0)if(P1!=0xff) bao=0; xiang=0; delay(3000); xiang=1; if(start_stop = 0) delay(8); if(start

14、_stop = 0)&(!start_stop_flag) start_stop_flag = 1; action = 1; TR0 = 1; state = 0; / xiang=1; else start_stop_flag = 0; uchar key_scan8() if(key1 = 0) delay(8); if(key1 = 0)&(!key1_flag) key1_flag = 1; number = 1; number_display = number; else key1_flag = 0; number = 0; if(key2 = 0) delay(8); if(key

15、2 = 0)&(!key2_flag) key2_flag = 1; number = 2; number_display = number; else key2_flag = 0; number = 0; if(key3 = 0) delay(8); if(key3 = 0)&(!key3_flag) key3_flag = 1; number = 3; number_display = number; else key3_flag = 0; number = 0; if(key4 = 0) delay(8); if(key4 = 0)&(!key4_flag) key4_flag = 1;

16、 number = 4; number_display = number; else key4_flag = 0; number = 0; if(key5 = 0) delay(8); if(key5 = 0)&(!key5_flag) key5_flag = 1; number = 5; number_display = number; else key5_flag = 0; number = 0; if(key6 = 0) delay(8); if(key6 = 0)&(!key6_flag) key6_flag = 1; number = 6; number_display = numb

17、er; else key6_flag = 0; number = 0; if(key7 = 0) delay(8); if(key7 = 0)&(!key7_flag) key7_flag = 1; number = 7; number_display = number; else key7_flag = 0; number = 0; if(key8 = 0) delay(8); if(key8 = 0)&(!key8_flag) key8_flag = 1; number = 8; number_display = number; else key8_flag = 0; number = 0

18、; if(number_display != 0) return 1; else return 0; void reset_keyscan() if(reset = 0) delay(8); if(reset = 0)&(!reset_flag) reset_flag = 1; number_display = 0; state = 1; bao=1; else reset_flag = 0; void main() TMOD=0x01; TH0=(65536-50000)/256; TL0=(65536-50000)%256; EA=1; ET0=1; TR0=0; while(1) sta

19、rt_stop_keyscan(); reset_keyscan(); while(action) while(!key_scan8() display(number_display,second); if(second = 0) second = 20; break; TR0 = 0; second = 20; display(number_display,second); action = 0; break; display(number_display,second); void timer0() interrupt 1 TH0=(65536-50000)/256; TL0=(65536-50000)%256; timer0_count +; if(timer0_count = 20) timer0_count = 0; second -; if(second = 0) TR0 = 0; number_display = 0; state = 1; action = 0;

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

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