目录
摘要—————————————————————————————2
一、绪论—————————————————————————————2
1、单片机抢答器的背景—————————————————————2
2、单片机的应用————————————————————————3
3、抢答器的应用————————————————————————4
二、方案设计——————————————————————————4
1、总方案设计—————————————————————————4
2、基本功能——————————————————————————5
3、扩展功能——————————————————————————5
三、硬件电路设计————————————————————————6
1、单片机的选择————————————————————————6
2、各模块设计—————————————————————————8 2.1、单片机最小系统——————————————————————8 2.
2、抢答按键电路———————————————————————8 2.3、显示器电路————————————————————————9 2.
4、蜂鸣器音频输出电路————————————————————10
四、软件设计——————————————————————————11
1、程序设计——————————————————————————11
2、主程序设计—————————————————————————12
五、调试—————————————————————————————12
1、仿真测试——————————————————————————12 1.1、初始状态仿真———————————————————————12 1.
2、抢答开始仿真———————————————————————13 1.3、抢答成功仿真———————————————————————13 1.
4、抢答违规仿真———————————————————————14 1.5、抢答过时仿真———————————————————————14
2、仿真结果分析————————————————————————15
六、心得体会——————————————————————————15
附录
1.程序清单——————————————————————————16 2.硬件图———————————————————————————23 3.参考文献——————————————————————————23
基于单片机的多路抢答器设计—硬件设计
摘要
此次设计使用AT89C51单片机为核心控制元件,设计一个简易的抢答器,与数码管、报警器等构成八路抢答器,利用了单片机的延时电路、按键复位电路、时钟电路、定时/中断电路等。设计的抢答器具有实时显示抢答选手的号码和抢答时间的特点,而复位电路,则使其能再开始新的一轮答题和比赛,与此同时还利用汇编语言编程,使其能够实现一些基本的功能。
本次设计系统实用性强、判断精确、操作简单、扩展功能强等。它的功能实现是比赛开始,主持人读完题之后按下总开关,则计时开始,此时数码管开始进行1s的减计时,直到有一个选手按下抢答按钮,这时对应的数码管上会显示出该选手的编号和抢答所用的时间,同时该选手的报警器也会发出声音,来提示有人抢答本题。如果在规定的30s时间内没有选手做出抢答,则此题作废,即开始重新一轮的抢答。
关键词:单片机、抢答器、数码管、报警器
一、绪论
1、单片机抢答器的背景
二十世纪跨越了三个“电”的时代,即电气时代、电子时代和现已进入的电脑时代。这种电脑,通常是指个人计算机,简称PC机。它由主机、键盘、显示器等组成。还有一类计算机,大多数人却不怎么熟悉。这种计算机就是把智能赋予各种机械的单片机(亦称微控制器)。单片机的最小系统只用了一片集成电路,即可进行简单运算和控制。因为它体积小,通常都藏在被控机械的“肚子”里。它在整个装置中,起着有如人脑的作用,要是它出了毛病,那么整个装置就将瘫痪。现在,这种单片机的使用领域已十分广泛,如智能仪表、实时工控、通讯设
- 14.在计算机网络和通信领域中的应用
现代的单片机普遍具备通信接口,可以很方便地与计算机进行数据通信,为在计算机网络和通信设备间的应用提供了极好的物质条件,现在的通信设备基本上都实现了单片机智能控制,从手机,电话机、小型程控交换机、楼宇自动通信呼叫系统、列车无线通信、再到日常工作中随处可见的移动电话,集群移动通信,无线电对讲机等。
5.单片机在医用设备领域中的应用
单片机在医用设备中的用途亦相当广泛,例如医用呼吸机,各种分析仪,监护仪,超声诊断设备及病床呼叫系统等等。
此外,单片机在工商,金融,科研、教育,国防航空航天等领域都有着十分广泛的用途。
3、抢答器的应用
随着我国经济和文化事业的发展,在很多的公开竞争场合要求有公正的竞争裁决,诸如证券、股票交易及各种智力竞赛等,因此出现了抢答器。抢答器一般是由很多电路组成的,线路复杂,可靠性不高,功能也比较简单,特别是当抢答路数很多时,实现起来就更为困难。因此我们设计了以单片机为核心的新型智能的抢答器,在保留原始抢答器的基本功能的同时又增加了数码管显示电路实现了其它功能。抢答器又称为第一信号鉴别器,因此能广泛应用于各种知识竞赛、文艺活动等场合。
二、方案设计
1、总方案设计
抢答器的工作原理是采用单片机最小系统(时钟电路、复位电路),用查询式键盘进行抢答。采用动态显示组号。主持人按下开始抢答键后选手才可以开始抢答。若主持人没有按下开始抢答按纽(P3.0),而有选手抢答则为抢答违规,此时报警器响起并显示此选手的组号,需要主持人按下开始抢答开关重新抢答。在主持人按下开始抢答按纽(P3.0),蜂鸣响声提示,且数码管进行30秒倒计时(30秒内抢答有效),有选手在30秒抢答,蜂鸣器响声提示并显示他的组号,同时开始60秒倒计时(60秒内必须回答完问题),60秒后主持人按下复位开关为下一题的抢答做准备;若此30秒内没有选手抢答,则此次抢答作废,由主持人按下复位开关进行下一轮重新抢答。此次设计包括单片机最小系统、抢答按键模块(8个按键)、显示模块、抢答开关模块、蜂鸣器音频输出模块。如下图所示为总体方框图。
图1 总方框图
2、基本功能
(1)、设计一个智力竞赛抢答器,可同时供8名选手或8个代表队参加比赛,他们的编号分别为0、
1、
2、
3、
4、
5、
6、7,各用一个抢答按钮,按钮的编号与选手的编号相对应,分别为S0-S7。
(2)、给节目主持人设置一个控制开关,用来控制系统的清零(编号显示数码管灭灯)和抢答的开始。
(3)、抢答器具有数据锁存和显示的功能。抢答开始后,若有选手按动抢答按钮,编号立即锁存,并在LED数码管行显示出选手的编号,扬声器给出音响提示,同时封锁输入电路,禁止其他选手抢答。优先抢答的选手的编号一直保持到主持人将系统清零为止。
(4)、如果主持人未按\"抢答开始\"键,而有人按了抢答按键,此为犯规抢答,LED上不断闪烁FF和犯规报警器并响个不停,直到主持人按下\"停止\" 键为止。
3、扩展功能
- 45 P1.0~P1.7:P1口8位口线,通用I/O接口无第二功能。
P2.0~P2.7:P2口8位口线,第一功能作为通用I/O接口,第二功能作为存储器扩展时传送高8位地址。
P3.0~P3.7:P3口8位口线,第一功能作为通用I/O接口,第二功能作为单片机的控制信号。
2、各模块设计
2.1、单片机最小系统
单片机的最小系统由时钟电路和复位电路组成。时钟电路中电容器C起稳定振荡频率、快速起振的作用,电容值一般为5~33pF。本设计中采用大小为30pF的电容和12MHz的晶振,晶振提供89C51的时钟脉冲使其工作。复位电路是使单片机初始化,即使单片机重新开始执行程序。当复位开关按下,RST由高电平变为低电平,则程序从头开始执行。通常选择C=10~30μF,R=1K,本设计采用的电容值为22μF的电容和电阻为1K的电阻。在此次课程设计电路中当一个问题结束主持人后按下复位开关后进行下一题的准备。如下图所示。
图3 单片机最小系统
2.2、抢答按键电路
抢答电路的功能有两个:一是能分辨出选手按键的先后,并锁存优先抢答者的编号,供译码显示电路用;二是要使其他选手的按键操作无效。89C51的P1口做一个八路抢答按键。P1口P1.0至P1.7对应1~8号8位选手,当主持人按下开始按钮后,电平由高电平变成低电平传入P3口,此时选手可以开始抢答。此电路中采用10K的电阻起保护作用。当某一选手按下抢答按钮后,电平由高电平变成低电平传入P1口,经单片机处理后从P0输出由数码管显示抢答者编号,扬声器给出音响提示。当有一人抢答以后,由于系统已经接收到了一个电平信号,同一时间内它将不再接受另外的电平信号,所以其他选手将不好再抢答。如图所示。
图4 抢答按键电路
4.3、显示器电路
数码管的显示可以分为两种:静态显示和动态显示。静态显示的段选位和位选位均单独连接,因此占用的I/O接口多,无法扩展多个数码管。而数码管动态显示接口是单片机中应用最为广泛的一种显示方式之一,动态驱动是将所有数码管的8个显示笔划的同名端连在一起,当单片机输出字形码时,所有数码管都接收到相同的字形码,但究竟是那个数码管会显示出字形,取决于单片机对位选通COM端电路的控制,通过分时轮流控制各个数码管的COM端,就使各个数码管轮流受控显示,这就是动态驱动。数码显示管分为共阳数码管和共阴数码管两种。本设计采用共阴极数码显示管做显示电路。由于采用的是共阴的数码显示管,所以只要数码管的各引脚为高电平,那么其对应的二极管就会发光。数码管要显示抢答违规者编号、正常抢答者编号、抢答倒计时和回答问题时间倒计时,数码管采用动态显示。段选位接P0口,P0口显示的是抢答者的编号;位选位接P2口,
- 8
图6 蜂鸣器音频输出电路
四、软件设计
1、程序设计
程序设计(Programming)是指设计、编制、调试程序的方法和过程。在进行微机控制系统设计时,除了系统硬件设计外,大量的工作就是如何根据每个生产对象的实际需要设计应用程序。在单片机控制系统中,大体上可分为数据处理、过程控制两个基本类型。数据处理包括:数据的采集、数字滤波、标度变换等。过程控制程序主要是使单片机按一定的方法进行计算,然后再输出。
为了完成上述任务,在进行软件设计时,通常把整个过程分成若干个部分,每一部分叫做一个模块。把一个程序分成具有多个明确任务的程序模块,分别编制、调试后再把它们连接在一起形成一个完整的程序,这样的程序设计方法称为模块化程序设计。所谓“模块”,实质上就是能完成一定功能,并相对独立的程序段,这种程序设计方法称为模块程序设计法。
模块程序设计法的主要优点是:
(1)单个模块比起一个完整的程序易编写、调试及修改。 (2)程序的易读性好。 (3)程序的修改可局部化。
(4)模块可以共存,一个模块可以被多个任务在不同条件下调用。 (5)模块程序允许设计者分割任务和利用已有程序,为设计者提供方便。 本系统软件采用模块化结构,由主程序﹑键盘子程序、显示驱动子程序等构成。
2、主程序设计
为了能够达到抢答的公平、公正、合理,应该在主持人发布抢答命令之前必须先设定抢答的时间,因而在编开始抢答前的程序得先编写设定时间的程序,当时间设好了之后,主持人按开始键发布抢答命令,若在主持人未按开始键之前,有选手提前答题,则为违规抢答,蜂鸣器会发出警告声,并在显示器上显示犯规的选手编号。当有选手抢答成功,则程序打开定时中断开始倒计时,然后调用键盘扫描子程序,编写键盘扫描程序,其他选手在此之后按键无效。当在扫描到有人按下了抢答键,马上关闭T0、调用显示程序、封锁键盘。
五、调试
1、仿真测试
由keil软件编译生成hex文件,将此文件导入单片机中,进行硬件仿真。 1.1、初始状态仿真
主持人未按开始按钮且选手都处于准备状态时。仿真结果如图7。
图7 初始状态仿真图
- 111.4、抢答违规仿真
若在主持人还未按下开始按钮时,选手就抢答则为抢答犯规。图为4号选手在主持人未宣布开始时就抢答,从而造成犯规。仿真结果如图10。
图10 抢答违规仿真图
1.5、抢答过时仿真
主持人按下开始按钮后,开始30秒抢答倒计时,如果在这30秒中无人抢答,此次抢答算作失败,系统又将恢复为初始状态。仿真结果如图11
图11 抢答过时仿真图
- 13附录
1、程序清单
OK EQU 20H ; 抢答开始标志位 RING EQU 22H ; 响铃标志位 ORG 0000H AJMP MAIN ORG 0003H AJMP INT0SUB ORG 000BH AJMP T0INT ORG 0013H AJMP INT1SUB ORG 001BH AJMP T1INT ORG 0040H MAIN: MOV R1,#30 ; 初设抢答时间为30s MOV R2,#60 ; 初设答题时间为60s MOV TMOD,#11H ; 设置未定时器/模式1 MOV TH0,#0F0H MOV TL0,#0FFH ; 越高发声频率越高,越尖 MOV TH1,#3CH MOV TL1,#0B0H ; 50ms为一次溢出中断 SETB EA SETB ET0 SETB ET1 SETB EX0 SETB EX1 ; 允许四个中断,T0/T1/INT0/INT1 CLR OK CLR RING SETB TR1 SETB TR0 ; 一开始就运行定时器,以开始显示FFF.如果想重新计数,重置TH1/TL1就可以了 ;=====查询程序===== START: MOV R5,#0BH MOV R4,#0BH MOV R3,#0BH ACALL DISPLAY ; 未开始抢答时候显示FFF JB P3.0,NEXT ACALL DELAY JB P3.0,NEXT ; 去抖动,如果\"开始键\"按下就向下执行,否者跳到非法抢答查询
ACALL BARK ; 按键发声 MOV A,R1
- 15 MOV R5,A MOV R4,B MOV R3,#0AH ACALL DISPLAY ; 先在两个时间LED上显示R1 JNB P3.4,INC0 ; 3.4为+1s键,如按下跳到INCO JNB P3.5,DEC0 ; 3.5为-1s键,如按下跳到DECO JNB P3.1,BACK0 ; 3.1为确定键,如按下跳到BACKO AJMP INT0SUB INC0: MOV A,R1 CJNE A,#63H,ADD0 ; 如果不是99,R2加1,如果加到99,R1就置0,重新加起。 MOV R1,#00H ACALL DELAY1 AJMP INT0SUB ADD0: INC R1 ACALL DELAY1 AJMP INT0SUB DEC0: MOV A,R1 JZ SETR1 ; 如果R1为0, R1就置99, DEC R1 ACALL DELAY1 AJMP INT0SUB SETR1: MOV R1,#63H ACALL DELAY1 AJMP INT0SUB BACK0: RETI ;=====INT1(回答时间R2调整程序)===== INT1SUB: MOV A,R2 MOV B,#0AH DIV AB MOV R5,A MOV R4,B MOV R3,#0AH ACALL DISPLAY JNB P3.4,INC1 JNB P3.5,DEC1 JNB P3.1,BACK1 JMP INT1SUB INC1: MOV A,R2 CJNE A,#63H,ADD1 MOV R2,#00H ACALL DELAY1 AJMP INT1SUB ADD1: INC R2 ACALL DELAY1
- 17继续倒数(这里起到锁抢答作用) AJMP RECOUNT ACCOUT:JNB P1.0,TRUE1 JNB P1.1,TRUE2 JNB P1.2,TRUE3 JNB P1.3,TRUE4 JNB P1.4,TRUE5 JNB P1.5,TRUE6 JNB P1.6,TZ3 JNB P1.7,TZ4 AJMP RECOUNT TZ3: JMP TRUE7 TZ4: JMP TRUE8 QUIT: CLR OK ; 如果按下了\"停止键\"执行的程序 CLR RING AJMP START ;=====正常抢答处理程序===== TRUE1: ACALL BARK ; 按键发声 MOV A,R2 MOV R6,A;抢答时间R2送R6 MOV R3,#01H CLR OK ; 因为答题的计时不再查询抢答,所以就锁了抢答 AJMP COUNT TRUE2: ACALL BARK; MOV A,R2 MOV R6,A MOV R3,#02H CLR OK AJMP COUNT TRUE3:ACALL BARK; MOV A,R2 MOV R6,A MOV R3,#03H CLR OK AJMP COUNT TRUE4:ACALL BARK; MOV A,R2 MOV R6,A MOV R3,#04H CLR OK AJMP COUNT TRUE5: ACALL BARK; MOV A,R2 MOV R6,A
- 19 CLR OK AJMP START ;=====显示程序===== DISPLAY:MOV DPTR,#DAT1 ; 查表显示程序,利用P0口做段选码口输出/P2低三位做位选码输出, MOV A,R3 MOVC A,@A+DPTR MOV P2,#0feH MOV P0,A ACALL DELAY MOV DPTR,#DAT2 MOV A,R5 MOVC A,@A+DPTR MOV P2,#0fdH MOV P0,A ACALL DELAY MOV A,R4 MOVC A,@A+DPTR MOV P2,#0fbH MOV P0,A ACALL DELAY RET DAT1:DB 00h,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh,00H,71H ; \"灭\",\"1\",\"2\",\"3\",\"4\",\"5\",\"6\",\"7\",\"8\",\"9\",\"灭\",\"F\" DAT2:DB 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh,00H,71H ; 第一个为零,其他与上相同,因为十位如果为零显示熄灭 ;====加减时间延时(起到不会按下就加N个数)====== DELAY1: MOV 35H,#08H LOOP0: ACALL DISPLAY DJNZ 35H,LOOP0 RET ;=====延时(显示和去抖动用到)===== DELAY: MOV 32H,#12H LOOP: MOV 33H,#0AFH LOOP1: DJNZ 33H,LOOP1 DJNZ 32H,LOOP RET ;=====发声程序===== BARK: SETB RING ACALL DELAY1 ACALL DELAY1 CLR RING ; 按键发声 RET ;=====TO溢出中断(响铃程序)=====
- 2122 -