您当前的位置:五五电子网电子知识单元电路娱乐-游戏电路采用MCS-51单片机设计的四路抢答器 正文
采用MCS-51单片机设计的四路抢答器

采用MCS-51单片机设计的四路抢答器

点击数:7633 次   录入时间:03-04 11:55:44   整理:http://www.55dianzi.com   娱乐-游戏电路

  抢答器是为智力竞赛参赛者答题时进行抢答而设计的一种优先判决器电路,广泛应用于各种知识竞赛、文娱活动等场合。实现抢答器功能的方式有多种,可以采用前期的模拟电路、数字电路或模拟与数字电路相结合的方式,但这种方式制作过程复杂,而且准确性与可靠性不高,成品面积大,安装、维护困难。下面介绍一种利用8051单片机作为核心部件进行逻辑控制及信号产生的四路抢答器。
  
  系统完成的功能:主持人提出问题后,按动启动按钮。参加竞赛者要在最短的时间内对问题作出判断,并按下抢答按键回答问题。当第一个人按下按键后,在显示器上显示此竞赛者的号码并进行声音提示,同时对其他抢答按键封锁,使其不起作用。若有人在可以抢答之前按键,应该有违规提示。系统还具有定时抢答功能,定时时间可由主持人设定。在抢答过程中,倒计时显示定时时间,若在规定时间内没有人抢答,则本题作废。回答完或超时后,主持人按动清除按钮将系统恢复初态,以便开始下一轮抢答。
  
  单片机系统中常用的显示方式是LED数码管显示,其驱动方式较多,系统采用专用LED驱动芯片MAX7219。MAX7219是一种四线串行接口的共阴极显示驱动器,它可以连接8个LED数码管显示器,也可以连接64个独立的LED。它内部集成B型BCD编码器、多路扫描回路、段字驱动器,还有一块8x8可独立寻址的静态RAM区来存储显示数据。在向内部RAM区写入数据时,用户可以选择编码或者不编码。MAX7219与SPI、QSPI以及MICROWIRE相兼容。

  MAX7219采用SPI接口与微处理器相连,其串行时序如下图所示。

  微处理器每次要向MAX7219传送16位二进制数D15~D0,串行数据格式如下表所示。

  根据系统功能,硬件电路可分为显示电路、声音提示电路、键盘电路、设置电路及单片机电路等。整个硬件电路如下图所示。

四路抢答器原理图


  
  1.数码管显电路
  
  数码管显示模块由一片MAX7219和3个数码管组成。数码管是共阴极,3个阴极分别与MAX7219的DIGO、DIG1、DIG2相接。流过数码管的电流由R9控制,本设计中约为130mA。MAX7219的DIN、CLK、LOAD分别与单片机的P2.4、P2.2、P2.3相接。U5用来显示按键者的编号,U6、U7在倒计时时显示还有多长时间,如果有人犯规抢答,U6~U7显示“FF”。
  
  2.时间设定电路
  
  以拨码开关U3作为倒计时时间的选择信号。拨码开关上有4个开关,这4个开关的一端接地,另一端分别与单片机的P3.7、P3.6、P3.5、P3.4相接,倒计时时间分别为lOs、8s、6s、4s。设置时间时,P3.7优先级最高,P3.4优先级最低。
  
  3.按键电路
  
  系统按键采用独立式接法。KEY1~KEY4为抢答按键,KEY5为主持人控制按键。

  4.声音提示电路
  
  声音提示电路由蜂鸣器和三极管构成。在主持人发出可以抢答信号时、在有人按下抢答按键时、在倒计时时间到等3种情况下发出蜂鸣声。

  5、单片机电路
  
  单片机电路根据键盘输入控制数码管显示或声音提示。通过读取P3.7~P3.3的状态决定倒计时时间;通过读取P1.3~Pl.0的状态读取按键情况;通过P2.4~P2.2控制显示模块以显示按键者的号码和倒计时所剩时间;通过PO.1控制蜂鸣器。
  
  程序设计
  
  系统的工作过程如下。
  
  ·主持人通过拨码开关选定倒计时时间,默认为l0s。按下抢答按键之后,蜂鸣器响一声,开始倒计时,数码管U6和U7显示倒计时时间,数码管U5显示“0”。
  
  ·如果有竞赛者率先在规定时间内按键,则蜂鸣器响一声,数码管U5显示该竞赛者的编号。
  
  ·如果在主持人未按下抢答按键的时候有选手抢答,则此时蜂鸣器响一声,U5显示犯规者的编号,U6和U7显示“FF”以指示有人犯规。
  
  ·如果在规定时间内无人按键,则U5显示“0”,U6和U7显示“EE”。
  
  ·在答题完毕后,主持人需按一下抢答按键,3个数码管全部显示“0”,恢复到初始状态,准备下一轮抢答。
  
  因此,系统软件分为按键扫描程序模块、显示程序模块、报警程序模块及主程序等。其中,显示模块有关程序前面章节有介绍,此处不再介绍,只给出所引用子程序的功能介绍。
  
  1.显示程序

  2.按键扫描程序
  
  按键扫描程序模块主要扫描键盘,读取按键值。判断主持人是否按动启动键,是否有竞赛者按动答题键以及对相应按键进行处理的函数。
  
  controLkey(void)用于检测主持人是否按动启动按键。当程序检测到单片机P3.7引脚变为低电平后,延时去抖,返回1表明按动启动按键;否则,程序返回0。程序代码如下:

  子程序get_key_num()用于检测是否有参赛者按动答题按键。程序读取Pl口的值,按照从P1.0~P1.3的顺序逐个检测,当某个引脚值为0时,表明有按键按下。程序代码如下:

  子程序key_handle()用于对答题按键进行处理。当竞赛者按动答题按键时,函数显示竞赛者号码,并控制蜂鸣器发声。程序代码如下:

 



www.55dianzi.com

  3.报警程序模块
  
  报警程序模块主要控制蜂鸣器发出报警声,包括以下子程序。
  
  子程序buz_on(void)用于控制蜂鸣器发声500ms,代码如下:

  子程序foul_handle()用于当有人犯规时报警处理。程序调用write_digit()函数显示犯规者号码,同时控制蜂鸣器发声。代码如下:

  子程序time_over_handle(void)用于处理超时情况,即主持人按动启动按键后,并且预设的答题时间到,仍然没有人按答题按键。子程序调用相关函数显示0,同时控制蜂鸣器发声。
  
  代码如下:

  4.主程序模块
  
  主程序主要调用相关子程序实现系统初始化,键盘扫描、信息显示等功能。
  
  子程序set_time(void)根据拨码开关状态设置答题时间。代码如下:

[1] [2]  下一页


本文关键字:单片机  抢答器  娱乐-游戏电路单元电路 - 娱乐-游戏电路