单片机智能抢答器综合设计报告

上传人:dg****3 文档编号:70632998 上传时间:2022-04-06 格式:DOC 页数:13 大小:55KB
收藏 版权申诉 举报 下载
单片机智能抢答器综合设计报告_第1页
第1页 / 共13页
单片机智能抢答器综合设计报告_第2页
第2页 / 共13页
单片机智能抢答器综合设计报告_第3页
第3页 / 共13页
资源描述:

《单片机智能抢答器综合设计报告》由会员分享,可在线阅读,更多相关《单片机智能抢答器综合设计报告(13页珍藏版)》请在装配图网上搜索。

1、-综合控制系统工程设计任务书基于单片机的智能抢答器系统设计一、设计任务利用单片机的定时器/计数器定时和计数的原理,结合显LED数码管、按键和声光报警等相应的外围电路来设计一个智能抢答器系统。此抢答器可供8个代表队参加比赛,当主持人按键宣布开场时,各个选手开场在限定时间可以进展按键抢答。假设有选手按动抢答按钮,其相应的选手编号和倒计时时间显示在LED数码管上,同时伴随声音提示。此时制止其他选手抢答,直到主持人将系统清零。二、设计容与要求基于MCS-51系列单片机的抢答器根本要求如下:1系统支持8名选手或8个代表队参加比赛,编号为1、2、3、4、5、6、7、8,各用一个按钮控制;2. 设置5个控制

2、开关,分别控制系统清零、抢答的开场、抢答限制时间和答题限制时间以及各种时间的调节控制等各个环节都有相应的时间限制如:抢答的时间设定为60秒,最后5秒有声音提示等3. 主持人按下抢答按钮后,倒计时开场,选手抢答方可开场。在倒计时间选手抢答实行优先锁存,抢答后显示优先抢答者序号,同时发出提示声音并在LED上显示抢答选手的编号,一直保持到主持人将系统恢复为止。4 当抢答时间到,而无人抢答时,本次抢答无效,扬声器报警发出声音,并制止抢答。LED显示无效编号0*FF。5. 其他创新功能。三、设计报告要求1. 完成课程设计任务,提交完整的设计论文字数3000-5000;2. 系统方案设计3. 系统硬件设计

3、4. 系统软件设计5. 系统仿真与调试6. 总结与设计体会参考文献综合控制系统工程设计基于单片机的智能抢答器系统设计一 设计概述本综合控制系统工程设计的是较为复杂、更为实用的智能抢答器,具有时间限制、用时提醒、违规提醒等功能。且通过声光信号进展提示。其功能更为全面,实用性更强。二 系统设计方案基于单片机的智能抢答器系统设计主要采用于/2单片机带时间和声光提示的抢答器,由控制核心AT89S51单片机、8名选手按键、主持人按键、声光提示和数码显示等局部组成,系统框图如下列图1 所示:图1 基于AT89S51单片机的智能抢答器系统框图三 系统硬件设计本设计基于AT89S51单片机为主控器,采用12M

4、晶振。复位电路采用上电按键复位。抢答器用4位七段共阴的数码管与P1口和P2口相连作为显示装置。由P3.1口与P3.2口接74LS07后与一个蜂鸣器和一个发光二极管构成声光提示电路。其基于AT89S51单片机的智能抢答器的电路原理图如图2所示。图2 智能抢答器原理图三 系统软件设计3.1 程序流程图 图3 基于AT89S51单片机的智能抢答器的程序流程图程序见附录:程序清单四 系统仿真与调试五 总结参考文献(3-5篇)1 广第等编著,单片机原理与应用,:航天航空大学,2002.072 , 等,文章名称,发表的杂志,时间不要网页!附录:程序清单* include* define uchar uns

5、igned char* define uint unsigned intchar s;uchar num=0;char time=20; /抢答时间char datitime=30; /答题限时时间uint tt,t1; / T0、T1定时器定1s时bit flag.s_falg=1,b_flag,fall_flag; / 标志位bit K_startcountflag,K_timecountflag; / 时间调整标志位sbit K0=P30; sbit beep=P37; / 蜂鸣器sbit rled=P31; / 指示灯sbit K1=P10;sbit K2=P11;sbit K3=P1

6、2;sbit K4=P13;sbit K5=P14; sbit K6=P15;sbit K7=P16;sbit K8=P17; sbit K_Time=P32; / 答题计时键sbit K_startcount=P33; /开场抢答时间调整键sbit K_timecount=P34; /答题即使时间调整键void delay(uchar ms) uchar y; for(;ms0;ms-) for(y=120;y0;y-)uchar code tabledu=0*3f,0*06,0*5b,0*4f,0*66,0*6d,0*7d,0*07,0*7f,0*6f,0*77,0*7c,0*39,0*5

7、e,0*79,0*71;uchar code tablewe=0*FE,0*FD,0*FB,0*F7;void T0_Init(void) TMOD=0*01;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

8、=1; num=0; beep=1; rled=1; /清楚违规标志为 fall_flag=0; K_startcountflag=0; K_timecountflag=0;void Scan(void) /8路热键扫描哪个键先按下,哪个优先级最高 if(K1=0) delay(10); if(K1=0); while(!K1);/数码管显示1号1 num=1;/关闭定时器0,时间停顿 TR0=0;/翻开定时器1.使扬声器响一声 TR1=1; /关闭开场键标志位,使再按其他7个键不会响应 s_flag=0; if (K2=0) /下面7个键的处理同上 delay(10); if(K2=0) w

9、hile(!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

10、(!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=tabledunum; P2=tablewe0;/显示几号抢到了 delay(2

11、); P0=0; P2=0*FF; else/否则没人抢答,则前面不显示几号 P0=0; P2=0*FF; P0=tabledus/10; /下面为显示抢答倒计时 P2=tablewe2; delay(2); P0=0; P2=0*FF; P0=tabledus%10; P2=tablewe3; delay(2); P2=0*FF; P0=0;else /如果开场键没有按下,则/显示F FF假设有违规者,则显示违规及FF/或者时间调整 /违规显示 if(fall_flag=1) if(num!=0) /显示几号违规了 P0=tabledunum;P2=tablewe0;delay(2);P0=

12、0;P2=0*FF; /下面显示FF,表示违规了P0=tabledu15; P2=tablewe2; delay(2); P0=0; /消隐 P2=0*FF; P0=tabledu15; P2=tablewe3; delay(2); P0=0; P2=0*FF; else P0=0; P2=0*FF;else /没有人违规才显示调整时间 if(K_startcountflag=1)P0=0*6D; /第一位数码管显示5s表示抢答时间调整 P2=tablewe0; delay(2); P0=0; P2=0*FF; P0=tabledutime/10; /下面显示调整的抢答时间 P2=tablew

13、e2; delay(2); P0=0; P2=0*FF;P0=tabledutime%10; P2=tablewe3; delay(2); P0=0; P2=0*FF;else if(K_startcountflag=1) P0=0*07; /第一位与第二位数码管合起来显示T,表示答题时间调整 P2=tablewe0; delay(2); P0=0; P2=0*FF;P0=0*31; P2=tablewe1; delay(2); P0=0; P2=0*FF;P0=tabledudatitime/10; P2=tablewe2; delay(2); P0=0; P2=0*FF;P0=tabled

14、udatitime%10; P2=tablewe3; delay(2); P0=0; P2=0*FF; else /否则显示F FF P0=tabledu15; P2=tablewe0; delay(2); P0=0;P0=tabledu15;P2=tablewe2;delay(2); P0=0; /消隐 P2=0*FF;P0=tabledu15;P2=tablewe3;delay(2); P0=0; P2=0*FF;void display(void) if(flag=1) /开场键按下,开场计时抢答 if(num!=0)/如果有人抢答,则显示相应的记号 P0=tabledunum; P2=

15、tablewe0;/显示几号抢到了 delay(2); P0=0; P2=0*FF; else/否则没人抢答,则前面不显示几号 P0=0; P2=0*FF; P0=tabledus/10; /下面为显示抢答倒计时 P2=tablewe2; delay(2); P0=0; P2=0*FF; P0=tabledus%10; P2=tablewe3; delay(2); P2=0*FF; P0=0;/如果开场键没有按下,则显示F FF假设有违规者,则显示违规及FF else /或者时间调整 /违规显示 if(fall_flag=1) if(num!=0) /显示几号违规了 P0=tabledunum

16、;P2=tablewe0;delay(2);P0=0;P2=0*FF; /下面显示FF,表示违规了P0=tabledu15; P2=tablewe2; delay(2); P0=0; /消隐 P2=0*FF; P0=tabledu15; P2=tablewe3; delay(2); P0=0; P2=0*FF; else P0=0; P2=0*FF;else /没有人违规才显示调整时间 if(K_startcountflag=1) /第一位数码管显示5s表示抢答时间调整P0=0*6D; P2=tablewe0; delay(2); P0=0; P2=0*FF; P0=tabledutime/1

17、0; /下面显示调整的抢答时间 P2=tablewe2; delay(2); P0=0; P2=0*FF;P0=tabledutime%10; P2=tablewe3; delay(2); P0=0; P2=0*FF;else if(K_startcountflag=1) P0=0*07; /第一位与第二位数码管合起来显示T,表示答题时间调整 P2=tablewe0; delay(2); P0=0; P2=0*FF;P0=0*31; P2=tablewe1; delay(2); P0=0; P2=0*FF;P0=tabledudatitime/10; P2=tablewe2; delay(2)

18、; P0=0; P2=0*FF;P0=tabledudatitime%10; P2=tablewe3; delay(2); P0=0; P2=0*FF; else /否则显示F FF P0=tabledu15; P2=tablewe0; delay(2); P0=0;P0=tabledu15;P2=tablewe2;delay(2); P0=0; /消隐 P2=0*FF;P0=tabledu15;P2=tablewe3;delay(2); P0=0; P2=0*FF; /调整时间键扫描void Time_Scan(void) /抢答时间调整 if(K_startcountflag=0) del

19、ay(10); if(K_startcountflag=0) while(!K_startcount);time+;if(time=50) time=20; /将抢答时间标志位置1K_startcountflag=1; /同时关闭答题时间标志位K_timecountflag=0; /答题时间调整 if(K_timecount=0) delay(10);if(K_timecount=0) while(!K_startcount); time+; if(time=60) datitime=30; K_startcountflag=1; K_timecountflag=0; void main(vo

20、id) T0_Init();while(1) Key_Scan(); /开场键扫描 if(flag=0)&(s_flag=1) /当开场键没按下及没有人违规时才可进展时间调整 Time_Scan(); 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=0)&(s_flag=1) /

21、如果开场键按下且抢答键没有人按下,则进展8路抢答键扫描 Scan(); display(); /显示到数码管上void timer0(void) interrupt 1 /2ms TH0=(65536-2000)/256; TL0=(65536-2000)%256; if(b_flag) /开场START键按下,嘟的一声长1s表示开场抢答 beep=beep; else beep=1; if(s5); /抢答时间快到时报警,隔1s响一声且红灯闪烁,响3声 if(s%2=0) b_flag=1; rled=0; else b_flag=0; rled=1; tt+; if(tt=500) /1s tt=0; s-; b_flag=0; /关闭开场键按下响1s的嘟声 if(s=-1) s=20; TR0=0; flag=0; /显示F FF s_flag=1; num=0; rled=1; void timer1(void)interrupt 3/定时器1处理有人按下抢答器发出嘟的一声长1s TH1=(65536-2000)/256; TL1=(65536-2000)%256; beep=beep; t1+; if(t1=500) t1=0;TR1=0; . z

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!