基于单片机控制的智能抢答器研究

2011-05-21 00:42邹显圣
电子设计工程 2011年13期
关键词:抢答器汇编语言低电平

邹显圣

(大连职业技术学院 辽宁 大连 116037)

抢答器又称第一信号鉴别器,广泛地应用于知识竞赛和文娱活动等场合[1],通过抢答器,选手做抢答题时,抢到题的选手来回答问题。传统的抢答器普遍使用基本的数字电路或者接触器或者PLC作为控制核心部件,有很多诸如可靠性差、体积大、价格昂贵、操作不方便等缺点。

笔者所研究的是以AT89C51单片机为主要的控制核心部件,完成8位选手(或者8个代表队)智能型抢答器设计。该系统具有快速识别选手的按键操作信息、记忆并显示成功抢答选手的编号、屏蔽其他没有成功抢答选手的按键操作等特点。

1 智能抢答器硬件控制电路

智能抢答器的硬件控制电路如图1所示,包括按键抢答输入电路、选手抢答成功的声光提示电路、抢答成功选手编号显示电路、时钟电路、复位电路等[2]。图1中抢答器输入电路由S1~S8 8个独立按键与8个10 kΩ上拉电阻共同组成。当没有抢答键被按下时,P0.0~P0.7的采样均为高电平,当S1~S8中有一个键被按下时,对应的P0.0~P0.7口线就会采样到低电平信号,AT89C51单片机将根据采样到的低电平信号完成相应的后续处理工作。P0口作为智能抢答器按键的采样输入口,所以在编程的过程中,要向P0口的每位口线先写入“1”。图1中抢答器声光提示电路由发光二极管、七段数码管及蜂鸣器组成,发光二极管DS1为选手抢答成功指示灯,当P1.0输出为低电平时,发光二极管DS1亮;七段数码管DS2为抢答成功选手的编号指示器(共阴型),用以显示选手编号。当AT89C51单片机通过P2口输出共阴型字形码时,DS2就可以将选手的编号显示到七段数码管上。声音提示器由蜂鸣器B1和相应的放大电路组成,用以提示选手抢答成功信息。当P1.7输出低电平信号时,声音提示电路工作,同时蜂鸣器就会发出声音提示信息。图1中抢答器时钟电路采用内部时钟方式,由石英晶体振荡器和电容组成,石英晶体的振荡频率为6 MHz。图1中抢答器复位电路采用按键手动方式,RESET为复位按键,当AT89C51单片机的RST引脚采样到两个机器周期的高电平时,就会实现整个智能抢答器控制系统的复位操作。RESET键在完成整个控制系统复位操作的同时还兼做上一轮抢答的结束功能和新一轮抢答的开始功能[3]。

图1 抢答器电路原理图Fig.1 Circuit schematic diagram of rush-answer machine

整个控制系统的工作原理为:当主持人按下RESET键时,智能抢答器系统立即完成复位操作,此时抢答器进入正常的工作状态(等待选手按键);当主持人宣布抢答开始时,参赛选手开始进行抢答按键操作,当其中的某一个选手成功按下抢答键时(例如S4按键被按下),AT89C51单片机P0口对应的口线P0.3就由高电平变为低电平[4]。当CPU检测到该口线为低电平时,将P1.0口线由原来的高电平状态切换为低电平状态,发光二极管DS1亮,同时P1.7口线也由原来的高电平状态切换为低电平状态,蜂鸣器B1发出响声,提示主持人和现场观众已经有选手成功地实现了抢答操作[5]。与此同时,CPU立即将成功进行抢答操作的选手编号通过P2口进行输出,将选手的编号显示在由七段数码管构成的选手编号指示器上。这样一来无论是参赛选手、现场观众,还是主持人都会很清楚地观察到成功实现抢答操作的选手的编号,进而由该选手进行现场答题。

2 汇编语言源程序设计及技巧

根据智能抢答器系统的控制要求,结合如图1所示的硬件电路原理图,绘制出了系统的软件设计流程图,如图2所示[6]。

按照图2所示的程序流程图,可以采用C语言和汇编语言两种方法实现控制系统的软件设计工作。基于AT89C51单片机的智能抢答器控制系统不需要进行复杂的数据处理及复杂的算术和逻辑运算,加之C语言在生成AT89C51单片机可执行目标代码的速度比汇编语言慢,所以本智能抢答器控制系统的软件设计过程采用汇编语言实现。笔者在实践的过程中,进行了汇编语言主程序设计。在进行主程序设计的过程中要解决的核心问题是8个参赛选手按键的 “自锁”与“互锁”操作,即:抢答器控制系统要保存好成功实现抢答操作的选手按键信息,与此同时要屏蔽抢答期间其他选手的按键操作,以保证每一轮的抢答操作只有一名选手能够成功实现抢答。在使用接触器、继电器为核心控制部件的抢答器控制系统中,可以利用接触器的常开触点和常闭触点在控制电路中加以实现。然而,在以单片机为核心控制部件的抢答器控制系统中,如果使用了接触器、继电器,就增加了硬件电路的开销。为了解决这一矛盾,作者在主程序的设计中,采用了软件的形式,成功地解决了按键的“自锁”与“互锁”问题。

图2 程序流程图Fig.2 Flow chart of program

另外,单片机在实际的工作过程中不需要进行大量的运算和数据处理,所以在程序设计的去抖动环节中,采用了软件延时的方法,利用延时程序段的重复执行实现了10 ms的延时操作。

汇编语言源程序的主程序清单如下:

MAIN: SETB P1.0 ;//关闭选手抢答提示灯

SETB P1.7 ;//关闭选手抢答声音提示

MOV P2,#00H ;//关闭哪位具体选手抢答指示器

MOV P0,#0FFH

MOV A,P0

CJNE A,#0FFH,MAIN

LCALL DELAY ;//延时,去按键抖动

CJNE A,#0FFH,MAIN

JNB P0.0,KEY1 ;//查询具体是哪个选手的按键被按下,下同

JNB P0.1,KEY2

JNB P0.2,KEY3

JNB P0.3,KEY4

JNB P0.4,KEY5

JNB P0.5,KEY6

JNB P0.6,KEY7

JNB P0.7,KEY8

KEY1: CLR P1.0 ;//打开选手抢答提示灯

CLR P1.7 ;//打开选手抢答声音提示

MOV A,#01H

MOV DPTR,#TAB

MOVC A,@A+DPTR ;//查表操作,获取1号选

手的数码管显示数据

MOV P2,A ;//打开1号选手抢答指示器

SJMPWAIT ;//程序进入等待状态,程序编制的技巧所在

KEY2: CLR P1.0

CLR P1.7

MOV A,#02H

MOV DPTR,#TAB

MOVC A,@A+DPTR

MOV P2,A

SJMPWAIT

KEY3: ┋

KEY4: ┋

KEY6: ┋

KEY7: ┋

KEY8: ┋

WAIT: SJMPWAIT ;//等待过程中,其他选手的按键操作无效

延时程序清单如下:

DELAY: MOV R7,#01H ;//10 ms延时子程序

DL1:MOV R6,#26H

DL0:MOV R5,#82H

DJNZ R5,$

DJNZ R6,DL0

DJNZR7,DL1

RET

在进行汇编语言源程序设计过程中,采用一体化设计方法,可以有效地节约系统时间,提高系统的响应速度。同时在汇编语言主程序设计过程中,巧妙地运用了原地踏步语句(WAIT:SJMP WAIT)。正是由于该语句的存在,保证了某位选手在抢答成功之后,让程序自动进入到等待(暂时的死循环)状态。此时,整个以单片机为核心的控制系统不会对任何其他选手的按键操作进行响应,这也是程序设计过程中的技巧所在。利用这一特点,成功地解决了多个选手按键操作同时响应的问题,即起到了成功抢答选手按键的 “自锁”与“互锁”问题。

3 结 论

上述所研究的以单片机为核心控制部件的智能抢答器系统,是以实际电路作为最终成果形式,该电路允许8人同时参赛。在系统的开发与调试阶段,分别通过了万能电路板上硬件电路和WAVE汇编软件的联合调试。该控制系统可以在复杂的环境下长期稳定地工作,并且能够实时地显示和保存每个参加竞赛选手的抢答信息,同时能够实时屏蔽其他选手的抢答操作。本抢答器控制系统具有可靠性高、抗干扰能力强、价格低廉、操作方便等特点,具有一定的应用价值。

[1]龚昌来.单片机控制的智能型抢答器设计[J].广东自动化与信息工程,2003,3(3):28-30.GONG Chang-lai.Design of intelligent first signal discriminator based on single chip microcomputer[J].Automation&Information Engineering of Guangdong,2003,3(3):28-30.

[2]李鹏辉.基于PLC技术的抢答器设计 [J].电气技术,2010,9(9):76-77.LI Peng-hui.Snatched the answering programming based on the PLC intelligence[J].Electrical Engineering,2010,9(9):76-77.

[3]宋春华,刘江涛,王贵恩,等.基于单片机控制的数字抢答器[J].河南机电高等专科学校学报,2005,9(5):28-29.SONG Chun-hua,LIU Jiang-tao,WANG Gui-en et al.Digital calling implement based on single chip controller[J].Journal of Henan Mechanical and Electrical Engineering College,2005,9(5):28-29.

[4]韩满林.用触摸屏和PLC实现四人抢答器的控制设计[J].电子工程师,2007,33(12):77-80.HAN Man-lin.Design of use touching screen and PLC to control the Four-way vying answer machine[J].Electronic Engineer,2007,33(12):77-80.

[5]周功明,周陈琛.基于单片机AT89C2051的九路多功能智力竞赛抢答器的设计[J].现代电子技术,2006,10(20):4-6.ZHOU Gong-ming,ZHOU Chen-chen.Design of nine groups multi-purpose intelligence competitions viing to answer first based on single chip AT89C2051[J].Modern Electronics Technique,2006,10(20):4-6.

[6]薛顶柱,张洪阳.一种新型无线智能抢答器的研究和设计[J].长春师范学院学报:自然科学版,2010,5(10):38-42.XUE Ding-zhu,ZHANG Hong-yang.Research and design on a new type of wireless intelligent answering device[J].Journal of Changchun Normal University:Natural Science,2010,5(10):38-42.

猜你喜欢
抢答器汇编语言低电平
声光报警多路抢答器电路的改造分析
高等学校计算机专业课程教学改革实践——以汇编语言与接口技术课程为例
汇编语言与C语言的混合程序设计技术研究
2017款凯迪拉克2.8L/3.0L/3.2L/3.6L车型低电平参考电压总线电路图
4路抢答器的设计与研发
提高《汇编语言程序设计》教学效率的思考与实践
15-MeV电子直线加速器的低电平系统
试论汇编语言与C语言的混合程序设计技术
多路竞赛抢答器电路的仿真设计
集成电路静态参数测试