完美抢答器仿真图及程序_第1页
完美抢答器仿真图及程序_第2页
完美抢答器仿真图及程序_第3页
完美抢答器仿真图及程序_第4页
完美抢答器仿真图及程序_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、课程设计题目: 基于单片机的智能八路抢答器设计一、设计项目简介1. 设计意义及目的抢答器在现实生活中应用广泛,比如在各类娱乐节目中,像中央电视台的幸运52,开心辞典,因此做一个抢答器是具有现实意义的。抢答器具有人数限制,我们选择做八路抢答器。当某人抢答时,能够显示他的号码,限定他的答题时间,别人不能抢答,主持人要有启动和清空的权利。八路抢答器在抢答过程中,为了知道哪一组或哪一位选手先答题,必须要设计一个系统来完成这个任务。如果在抢答中,靠视觉是很难判断出哪组先答题。利用单片机系统来设计抢答器,使以上问题得以解决,即使两组的抢答时间相差几微秒,也可分辨出哪组优先答题。抢答组数可以在八组

2、以内任意使用,本系统采用AT89S52单片机作为核心,控制系统的四个模块分别为:单片机最小系统、显示模块、显示驱动模块、抢答开关模块。2. 系统功能描述设计一个具有特定功能的抢答器。该抢答器上电或按键复位后能自动显示系统提示符“P.”, 进入准备工作状态。主持人按下开始按钮后,抢答开始并限定时间30S;10S内无人抢答,蜂鸣器发出音响;主持人按下开始按钮之前有人按下抢答器,抢答违规,显示器显示违规台号,违规指示灯亮,其它按钮不起作用;正常抢答,显示器显示台号,蜂鸣器发出音响,其它抢答按钮无效;正常抢答下,从按下抢答按钮开始30S内,答完按钮没按下,则作超时处理,超时处理时,违规指示灯亮,数码管

3、显示违规台号。蜂鸣器发出音响;各台数字显示的消除,蜂鸣器音响及违规指示灯的关断,都要通过主持人按复位按钮。3. 设计达到目标我们在要求的基础上拓展了一些功能,比如增加倒数剩下5S的时候每秒响一声,最后一声比较悠长,以提示选手抢答或者回答时间将尽,还将抢答按键和答完按键做在了同一个按键上,抢答之后选手答完题目再次按下该抢答按键即是答完,使剩余时间与台号定格。总体上我们达到了:按该抢答器上电或按键复位后能自动显示系统提示符“P.”, 进入准备工作状态。主持人按下开始按钮后,抢答开始并限定时间30S;10S内无人抢答,蜂鸣器发出音响;最后5S倒计时蜂鸣器每秒响一声提示,最后一声比较悠长,提示抢答时间

4、到;主持人按下开始按钮之前有人按下抢答器,抢答违规,显示器显示违规台号,违规指示灯亮,其它按钮不起作用;正常抢答,显示器显示台号,蜂鸣器发出音响,其它抢答按钮无效;正常抢答下,从按下抢答按钮开始30S内,答完按钮没按下,则作超时处理,超时处理时,违规指示灯亮,数码管显示违规台号,和抢答期间一样,回答期间最后5S倒计时蜂鸣器每秒响一声提示,最后一声比较悠长,提示回答时间到;答完按钮设置在抢答按键上,再次按下抢答按键即是答完,此时蜂鸣器响一声,时间定格在答完题目之后剩下的时间;各台数字显示的消除,蜂鸣器音响及违规指示灯的关断,都要通过主持人按复位按钮。二、系统硬件设计1. 系统设计方案(1) 利用

5、译码芯片先根据74LS148的优先功能,确定了先抢答到的选手的编码号,再根据74LS279的锁存功能,将其信号保持下来,并实现了锁定功能,将选手的编码锁定。再者,根据74LS48的译码功能,将74LS279锁定的数字编译成二进制,将信号送到显示器中。这样就实现了抢答功能。原理框图如图1所示。 图 1 原理框图(2)利用单片机可以利用单片机的定时/计数器进行计时,设定抢答时间和答题时间;可以利用单片机的I/O口线接按键,通过按键按下后,所接口线电平的变化来判断那位选手按下键。我选择利用单片机做抢答器。1、仿真图2、 程序/*操作非常简单*主持人先按键,然后有30s的时间,等待选手按键*选手在30

6、s内按键,就显示选手的号数,及30s的回答倒计时*此时,其他选手按键无效,*只有抢答选手按键,才停止,并显示锁定*最后,按复位,进行新一轮抢答*/#include"reg52.h"#include"intrins.h"#include"absacc.h"#define uchar unsigned char#define uint unsigned int #define ulong unsigned long/* 定义定时器T0和T1时间常数和方式控制字 */#define v_th0 0x3c#define v_tl0 0xb0#

7、define v_tmod 0x11sbit P30=P30;sbit P36=P36;sbit P32=P32;sbit P31=P31;uchar led_buf8;/显示缓冲数组uchar code dispcode11=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x0c;/段码数组uchar keyzhi;uint m,time,time2; void delay(uint a) /延时程序while(a-);void led()/违规指示灯亮程序P32=0;delay(2000);delay(2000); void ring(

8、) /蜂鸣器程序P36=0;delay(10000);P36=1; void ledk() /P.显示程序 uchar dmask=0x01; /位控码初始化uchar pos;for(pos=0;pos<3;pos+)P2=dmask; /位控码输出到位控口P0=dispcode10; /取显示段码并输出到段控口delay(200); dmask=_crol_(dmask,1); /位控码左移一位 void led_buf_auto_flush(void) reentrant /显示缓冲区更新函数 led_buf0=m; /获得选手的号码led_buf1=time/10; /获得秒十位

9、led_buf2=time%10; /获得秒的个位 void timer0(void) interrupt 1 /定时器t0中断服务函数,选用定时器0工作方式为1 uchar j;static uchar click=0; TH0=v_th0;TL1=v_tl0;/设置初始值50ms为循环20次为1ms,12MHz+click;if(click=20) /定时器0定时中断次数-time;click=0; if(time=20)&&(j=0xff)ring();if(time<=5)&&(time!=0)&&(j=0xff) ring();i

10、f(time=0)&&(j=0xff)ring(); delay(1000); ring();led_buf_auto_flush(); /LED显示缓冲区时间值更新 void timer1(void) interrupt 3 /选用定时器1工作方式为1 uchar j; static uchar click=0; /定时器0定时中断次数TH1=v_th0;TL1=v_tl0; /设置初始值50ms为循环20次为1ms,12MHz+click;if(click=20) -time2;click=0;if(time2<=5)&&(time2!=0)&

11、&(j!=0xff) ring();if(time2=0)&&(j!=0xff)ring();delay(1000);ring();TR1=0;P32=0;time=time2;led_buf_auto_flush(); /LED显示缓冲区时间值更新void put_on_leds(void) /显示输出函数uchar dmask=0x01; /位控码初始化uchar pos;for(pos=0;pos<4;pos+)P2=dmask; /位控码输出到位控口P0=dispcodeled_bufpos; /取显示段码并输出到段控口delay(100); /延时del

12、ay(100);dmask=_crol_(dmask,1); /修改未控码 void init_sys(void) /进行初始化并接受用户的初始化时间设置TMOD=v_tmod; TH0=v_th0;TL0=v_tl0;TH1=v_th0;TL1=v_tl0; /设置时间初值TR0=0; EA=1; ET0=1;TR1=0;ET1=1; /开启中断,关闭定时器 uchar keychuli() /处理与键盘相连的P1口的内容,作为键值uchar k; k=P1; /P1口内容送Kreturn(k); /返回键值uchar key()/键盘扫描函数,函数返回值即键值uchar keyzhi,ke

13、yzhii; /电子钟键盘按键键值临时存放keyzhi=keychuli(); /调P1口处理函数if(keyzhi!=0xff) /有键动作延时去抖动,否则函数返回delay(100); /再次调P1口处理函数if(keyzhi!=0xff) /真正有键按下,取键值并暂存keyzhii=keyzhi;while(keyzhi!=0xff) /判按键是否释放,没有释放延时去抖动等待释放put_on_leds();put_on_leds();keyzhi=keychuli();keyzhi=keyzhii; /按键释放后恢复按键键值 return(keyzhi); /返回按键键值void mai

14、n() /主函数调用init_sys()函数对系统初始化,调用put_on_leds()函数 uchar j;uchar c=1;/C 1,2,31:无人违规合法抢答,2:有人违规,3: 允许答完uchar keyzhiii;while(1)keyzhiii=key(); /调键盘扫描函数得到按键键码ledk(); /调P.程序if(P30=0) /主持人是否按下启动键delay(100);if(P30=0) c=1; break;if(keyzhiii!=0xff)c=2;led();break;init_sys(); /调用init_sys()函数对系统初始化time=30;time2=3

15、0;TR0=1; /开定时器0while(1) put_on_leds(); /调显示函数delay(100); /调延时函数if(c=1) /判断有没有违规keyzhiii=key(); /调键盘扫描函数得到按键键码j=keyzhiii;if(c=3)keyzhiii=key(); /调键盘扫描函数得到按键键码if(time=0)while(1)TR0=0;put_on_leds();delay(100);if(c=1|c=2)switch(keyzhiii) /按键功能控制 case 0xfe: /1号选手抢答,抢答时间设定为三十秒 m=1;if(c=1)ring(); /有人正常按下,蜂

16、鸣器发出声音TR1=1; /开定时器1,关定时器0TR0=0;c=3;keyzhiii=0xff; if(c=2) /有人违规TR1=0;time=0; led_buf_auto_flush();put_on_leds();break;case 0xfd: /2号选手抢答 m=2;if(c=1)ring(); /有人正常按下,蜂鸣器发出声音TR1=1; /开定时器1,关定时器0TR0=0;c=3;keyzhiii=0xff; if(c=2) /有人违规TR1=0;time=0; led_buf_auto_flush();put_on_leds();break;case 0xfb: /3号选手抢

17、答 m=3;if(c=1)ring(); /有人正常按下,蜂鸣器发出声音TR1=1; /开定时器1,关定时器0TR0=0;c=3;keyzhiii=0xff; if(c=2) /有人违规TR1=0;time=0; led_buf_auto_flush();put_on_leds();break;case 0xf7: /4号选手抢答m=4;if(c=1)ring(); /有人正常按下,蜂鸣器发出声音TR1=1; /开定时器1,关定时器0TR0=0;c=3;keyzhiii=0xff; if(c=2) /有人违规TR1=0;time=0; led_buf_auto_flush();put_on_l

18、eds();break;case 0xef: /5号选手抢答 m=5;if(c=1)ring(); /有人正常按下,蜂鸣器发出声音TR1=1; /开定时器1,关定时器0TR0=0;c=3;keyzhiii=0xff; if(c=2) /有人违规TR1=0;time=0; led_buf_auto_flush();put_on_leds();break;case 0xdf: /6号选手抢答 m=6;if(c=1)ring(); /有人正常按下,蜂鸣器发出声音TR1=1; /开定时器1,关定时器0TR0=0;c=3;keyzhiii=0xff; if(c=2) /有人违规TR1=0;time=0; led_buf_auto_flush();put_on_leds();break;case 0xbf: /7号选手抢答 m=7;if(c=1)ring(); /有人正常按下,蜂鸣器发出声音TR1=1; /开定时器1,关定时器0TR0=0;c=3;keyzhiii=0xff; if(c=2) /有人违规TR1=0;time=0; led_buf_auto_flush();put_on_leds();break;case 0x7f: /8号选手抢答 m=8;

温馨提示

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

评论

0/150

提交评论