基于MCS51单片机的四路抢答器课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《基于MCS51单片机的四路抢答器课件.ppt》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 MCS51 单片机 四路 抢答 课件
- 资源描述:
-
1、物理系08 超Protel课程设计基于MCS-51单片机的四路抢答器目录:硬件设计硬件设计各模块功能各模块功能程序设计程序流程图电路原理图和PCB制版硬件设计硬件设计 硬件电路应能完成以下功能:参加竞赛者对主持人提出的问题要在最短的时间内作出判断,并按下抢答按键回答问题。当第一个人按下按键后,则在显示器上显示此竞赛者的号码并进行声音提示,同时电路将其他抢答按键封锁,使其不起作用。若有人在可以抢答之前按键,应该有违规提示。电路应该具有倒计时功能,倒计时时间可以设置并显示,在规定时间内没有人抢答则本题作废。回答完或超时后,由主持人将所有按键恢复,重新开始下一轮。完成上述功能的电路包括时间设定开关、
2、声光显示、按键控制以及按键锁存等部分各模块功能各模块功能 单片机部分单片机部分 时间设定模块时间设定模块 按键模块按键模块 数码管显示模块数码管显示模块 蜂鸣器模块蜂鸣器模块单片机部分单片机部分 通过读取P3.7P3.3的状态决定倒计时时间;通过读取P1.3P1.0的状态读取按键情况;通过P2.4P2.2控制显示模块以显示按键者的号码和倒计时所剩时间;通过P0.1控制蜂鸣器 时间设定模块时间设定模块 以拨码开关U3作为倒计时时间的选择信号。若P3.7通过U3接地,倒计时时间为10s;若P3.6通过U3接地,倒计时时间为8s,若P3.5通过U3接地,倒计时时间为6s,若P3.4通过U3接地,倒计
3、时时间为4s。判断时P3.7优先级最高,P3.4优先级最低。按键模块按键模块 KEY1KEY4的信息可以直接传输到P1.3P1.0。单片机一旦检测到有按键按下,立即将P1.4置为低电平,将按键信息锁存,以免后来的按键对其产生影响。KEY1KEY4为抢答按键,KEY5为主持人控制按键 数码管显示模块数码管显示模块 数码管显示模块由一片MAX7219和3个数码管组成。其中U8用来显示按键者的编号,U6、U7在倒计时时显示还有多长时间,如果有人犯规抢答,U6U7显示“FF”。蜂鸣器模块蜂鸣器模块 蜂鸣器在主持人发出可以抢答信号、有人按下抢答按键和倒计时时间到等3种情况下发出蜂鸣声。程序流程图如下程序
4、流程图如下电路原理图及电路原理图及PCB制版图制版图 四路智力抢答器电路原理图四路智力抢答器PCB模块程序设计程序设计 抢答器工作过程如下抢答器工作过程如下 首先主持人选定倒计时时间,单片机扫描U3以获取此信息。如果没有人为设置,默认为10s。在按下抢答按键之前,3个数码管全部显示“0”。按下抢答按键之后,蜂鸣器响一声,单片机开始倒计时,数码管U6和U7显示倒计时时间,数码管U8显示“0”。如果有竞赛者率先在规定时间内按键,则蜂鸣器响一声,数码管U8显示该竞赛者的编号,U6和U7停止更新。如果在主持人未按下抢答按键的时候有选手抢答,则此时蜂鸣器响一声,U8显示犯规者的编号,U6和U7显示“FF
5、”以指示有人犯规。如果在规定时间内无人按键,则U8显示“0”,U6和U7显示“EE”以指示无人按键。无论是在规定时间内有人按键、在规定时间内无人按键或者是有人犯规,都需要主持人再按一下抢答按键,之后单片机根据U3状态决定倒计时时间,3个数码管全部显示“0”,恢复到初始状态,准备下一轮抢答。8051单片机控制的四路抢答器程序单片机控制的四路抢答器程序#include typedef unsigned char uchar;sbit LE=P14;sbit KEY5=P37;sbit DIN=P24;/定义P2.5控制MAX7219的串行数据输入端 sbit LOAD=P23;/定义P2.4控制M
6、AX7219的载入使能端 sbit CLK=P22;/定义P2.3控制MAX7219的时钟信号 sbit BUZ=P01;#define TIMER_HBYTE-50000/256 /定时50ms#define TIMER_LBYTE-50000%256 uchar intr_counter;/设定的时间用需要产生的中断次数表示 uchar bdata byte;/在bdata区定义一个变量,便于位操作 sbit byte_7=byte7;bit foul_flg;/是否有人犯规标志 bit time_over_flg;/是否倒计时超时标志 bit key_flg;/是否有人在规定时间内按键标
7、志 void max7219_reset(void);/初始化MAX7219 void write_reg(uchar,uchar);/向控制寄存器写数据 void write_digit(uchar,uchar);/向字型寄存器写数据 void send_data(uchar);/底层的硬件驱动 uchar set_time(void);/函数功能:设置倒计时时间 bit control_key(void);/函数功能:检测主持人是否按键 uchar get_key_num(void);/函数功能:检测哪个参赛者按键 void display_time(void);/函数功能:显示倒计时剩余
8、时间 void foul_handle(uchar);/函数功能:犯规处理 void key_handle(uchar);/函数功能:按键处理 void time_over_handle(void);/函数功能:超时处理 void init_t0(void);/函数功能:初始化T0定时器 void delay_20ms(void);/函数功能:延时20ms,按键去抖动 void buz_on(void)/函数功能:蜂鸣器响500msvoid buz_on(void)/函数功能:蜂鸣器响500msvoid main(void)uchar key_number;max7219_reset();/初
9、始化MAX7219 while(1)foul_flg=0;/设置初始环境 time_over_flg=0;TR0=0;/禁止T0运行 write_digit(DIGIT0,LED_code0 x0);/上电后3个数码管全部显示0 write_digit(DIGIT1,LED_code0 x0);write_digit(DIGIT2,LED_code0 x0);while(control_key()=1)&(foul_flg=0)/如果主持人没有按键 /如果主持人没有按键 key_number=getkey_num();/检查是否有人犯规 if(key_number=0)/如果没有,进行下一次循
展开阅读全文