四路抢答器单片机

目录

前言 2

2 系统设计 3 2.1 系统总体设计 3 2.2 器件选型详细清单 3 2.3系统功能要求 4 2.4系统原理图 4 2.4.1时钟频率电路的设计 5 2.4.2复位电路的设计 5 2.4.3显示电路的设计 6 2.4.4控制开关设计 7 3系统程序设计 8 3.1程序流程图 8 3.2程序清单 9 4 Proteus仿真系列组图 16 4.1 上电、禁止或复位 17 4.2 抢答或答题时间设定 17 4.3违规抢答并显示座号 17 4.4抢答成功并显示倒计时 18 结束语 19 参考文献 20

前言

抢答器是为智力竞赛参赛者答题时进行抢答而设计的一种优先判决器电路,广泛应用于各种知识竞赛、文娱活动等场合。随着现代娱乐节目及其它游戏环节的需要,也为了完善节目的紧张气氛和观众的互动,出现了多路抢答器。抢答器的出现给人们带来极大的方便,它能准确无误的从若干名参赛中确定出最先抢答者,并且有显示,声效等功能。

考虑到依需设定限时回答的功能,利用AT89C51单片机及外围接口实现的抢答系统,利用单片机的定时器/计数器定时和记数的原理,将软、硬件有机地结合起来,使得系统能够正确地进行计时,同时使数码管能够正确地显示时间。用开关做键盘输入,扬声器发生提示。同时系统能够实现:在抢答中,只有开始后抢答才有效,如果在开始抢答前抢答为无效;抢答限定时间和回答问题的时间可在1-99s 设定;可以显示是哪位选手有效抢答和无效抢答,正确按键后有音乐提示;抢答时间和回答问题时间倒记时显示,满时后系统计时自动复位及主控强制复位;按键锁定,在有效状态下,按键无效非法。本系统采用模块化设计智能抢答器,在抢答比赛中广泛应用,各组分别有一个抢答按钮。主持人有开始和禁止、复位键。主持人可以修改抢答时间和回答问题的时间,原始状态下抢答时间为15s ,回答问题时间为45s 。通过加键和减键修改上述时间,改完后结束键确定。新时间开始有效,主持人按键开始后,选手开始抢答为有效,数码显示屏显示抢答时间倒计时和选手号,在最后五秒时每秒扬声器均有提示。如果主持人没有按下开始键而选手就抢答视为犯规,数码显示屏显示犯规者的代号,扬声器持续发声。主持人可按复位键结束,开始新一轮抢答。

2 系统设计

2.1 系统总体设计

本系统是借用单片机采用模块化设计的4路抢答器,包括4路抢答按纽、计时显示、开始、禁止和复位控制按钮、时限设定、各种相关显示调控功能。系统的主要功能模块方框图如下图所示。

系统功能模块图

2.2 器件选型详细清单

单片机

芯片

AT89C51 74LS04 74HC20

电阻 电容 晶振 按钮

600×8 200×5 30PF 10u 12MHZ

1 1 1 13 3 1 11

数码管 扬声器 LED 灯

74EG-MP ×4-CC SPEAKER LED-BIRG

1 1 4

2.3系统功能要求

1、具有清零装置和抢答控制,可由主持人操纵,避免有人在主持人说“开始”前提前抢答违反规则。

2、具有定时功能,在15秒内无人抢答表示所有参赛选手获参赛队对本题弃权。 3、15秒时仍无人抢答其报警电路工作表示抢答时间耗尽并禁止抢答。 4、如果想调节抢答时间或答题时间, 按" 抢答时间设定" 键或" 答题时间设定" 键进入调节状态, 此时会显示现在设定的抢答时间或回答时间值, 如想加一秒按一下" 加一" 键, 如果想减一秒按一下" 减一" 键,数码管上会显示改变后的时间,调整

范围为0s~99s, 0s时再减1s 会跳到99,99s 时再加1s 会变到0s 。

5、主持人按" 开始" 键,会有提示音,并立刻进入抢答倒计时(预设15s 抢答时间),如有选手抢答,会有提示音,并会显示其号数并立刻进入回答倒计时(预设45s 回答时间),不进行抢答查询,所以只有第一个按抢答的选手有效。倒数时

间到小于5s 会每秒响一下提示音。

6、如倒计时期间,主持人想停止倒计时可以随时按" 复位" 键,系统会自动进

入准备状态,等待主持人按" 开始" 进入下次抢答计时。

7、如果主持人未按" 开始" 键,而有人按了抢答按键,犯规抢答,LED 上不断闪烁FF 和犯规号数并响个不停,直到按下" 复位" 键为止。

2.4系统原理图

U1为单片机AT89C51,U2为芯片74HC20,U3为芯片74LS04。开始按键与禁止按键分别接到单片机的10、11脚,由于单片机的10、11脚既有串行接口RXD 、TXD 功能,又有P3.0、P3.1的IO 端口功能,此处按键用到单片机10、11脚的IO 端口功能。抢答时间调整按键和回答时间调整按键分别接到单片机的13、14管脚,加一按键和减一按键分别接到单片机的15、16管脚。4位七段数码管段选P0口。4位七段数码管的位选接P2口低3位,蜂鸣器输出为P3.7。原理图见附录。

2.4.1时钟频率电路的设计

单片机必须在时钟的驱动下才能工作。在单片机内部有一个时钟振荡电路,只需要外接一个振荡源就能产生一定的时钟信号送到单片机内部的各个单元,决定单片机的工作速度。本设计采用12MHZ 晶振。电路图如下:

外部振荡源电路

一般选用石英晶体振荡器。此电路在加电大约延迟10ms 后振荡器起振,在XT AL2引脚产生幅度为3V 左右的正弦波时钟信号,其振荡频率主要由石英晶振的频率确定。电路中两个电容 C1,C2的作用有两个:一是帮助振荡器起振;二是对振荡器的频率进行微调。C1,C2的典型值为30PF 。

2.4.2复位电路的设计

单片机的第9脚RST 为硬件复位端,只要将该端持续4个机器周期的高电平即

可实现复位,复位后单片机的各状态都恢复到初始化状态,其电路图如下图

复位电路

图中由按键以及电解电容C3、电阻R8构成按键及上电复位电路。由于单片机是高电平复位,所以当按键复位按下时候,单片机的9脚RESET 管脚处于高电平,此时单片机处于复位状态。当上电后,由于电容的缓慢充电,单片机的9脚电压逐步由高向低转化,经过一段时间后,单片机的9脚处于稳定的低电平状态,此时单片机上电复位完毕,系统程序从0000H 开始执行。

2.4.3显示电路的设计

4位七段数码管显示电路如下图所示。图中数码管采用的是4位七段共阴数码管,位选码COM1、COM3、COM4分别接到单片机的P2.0、P2.1、P2.2,由单片机来决定当前该显示的是哪一位。在图中还有7个600欧的电阻,连接在P0口上,用作P0口的上拉电阻,保证P0口没有数据输出时候处于高电平状态。

显示电路

2.4.4控制开关设计

开始、禁止按键 去抖电路和扬声器

在图中,开始及禁止按键接到单片机的10、11脚,这里用到了单片机10、11脚复合功能中的IO 端口功能,单片机通过读取10、11脚的P3.0、P3.1的IO 端口值来判断当前是否处于抢答开始状态或抢答禁止状态。按键的触点在闭合和断开时均会产生抖动,这时触点的逻辑电平是不稳定的,如不妥善处理,将会引起按键命令的错误执行或重复执行。现在一般均用软件延时的方法来避开抖动阶段,这一延时过程一般大于5ms ,例如取10-20ms 。如果监控程序中的读键操作安排在主程序(后台程序)或键盘中断(外部中断)子程序中,则该延时子程序便可直接插入读键过程中。如果读键过程安排在定时中断子程序中,就可省去专门的延时子程序,利用两次定时中断的时间间隔来完成抖动处理。4个按键的输入电平靠74HC20输入与非门和74LS04反向器组成的电路改变输入电平。图中单片机的14脚输出具有复合功能,此处用到了单片机17脚的IO 端口功能,单片机通过内部定时器的操作实现交替变换的波形输出驱动扬声器发声。

3系统程序设计

3.1程序流程图

3.2程序清单

EQU 20H ;抢答开始标志位 EQU 22H ;响铃标志位 EQU 36H ;抢答按键口数据存放地址

ORG 0000H

AJMP MAIN ORG 0003H AJMP INTT0 ORG 000BH AJMP T0INT ORG 001BH AJMP T1INT ORG 0040H

MAIN: MOV R1,#15 ; MOV R2,#45 ; MOV 38H,#60 ; MOV TMOD,#11H ; MOV TH0,#0F0H

MOV TL0,#0FFH ; MOV TH1,#3CH

MOV TL1,#0B0H ;50ms SETB EA SETB ET0

SETB ET1 ; CLR OK CLR RING SETB TR1

SETB TR0 ;FFF.

START: MOV DATA0,#0FFH ; MOV R5,#0BH MOV R4,#0BH MOV R3,#0BH

ACALL DISPLAY ;初设抢答时间为15s 初设答题时间为45s 求助时时间从60s 倒计时 设置未定时器/模式1 越高发声频率越高, 越尖 为一次溢出中断 允许二个中断,T0/T1 一开始就运行定时器, 以开始显示初始化 未开始抢答时候显示FFF

JNB P3.4,TZ3 ;倒计时调整 JB P3.0,NEXT

ACALL DELAY

JB P3.0,NEXT ;去抖动, 如果" 开始键" 按下就向下执 行, 否者跳到违规抢答查询 SETB EX0 ;开放INT0

ACALL BARK ;按键发声 MOV A,R1

MOV R6,A ;送R1->R6,因为R1中保存了抢答时间 SETB OK ;抢答标志位, 在求助时用作判断是抢答倒计时还是回答倒计时

MOV R3,#0AH ;抢答只显示计时, 灭号数 AJMP COUNT ;进入倒计时程序," 查询有效抢答的程序" 在COUNT 里面 NEXT: JNB P1.0,FALSE1 JNB P1.1,FALSE2 JNB P1.2,TZ1 JNB P1.3,TZ2 AJMP START TZ1: AJMP FALSE3 TZ2: AJMP FALSE4 TZ3: AJMP SELSUB1 AJMP START FALSE1: MOV R3,#01H AJMP ERROR FALSE2: MOV R3,#02H AJMP ERROR FALSE3: MOV R3,#03H AJMP ERROR FALSE4: MOV R3,#04H AJMP ERROR SELSUB0: MOV A,R1 MOV B,#0AH DIV AB MOV R5,A MOV R4,B MOV R3,#0AH

JNB P3.5,INC0 ;P3.5为+1s键, 如按下跳到INCO JNB P3.6,DEC0 ;P3.6为-1s 键, 如按下跳到DECO JNB P3.1,BACK0 ;P3.1为确定键, 如按下跳到BACKO AJMP SELSUB0 INC0: MOV A,R1

CJNE A,#63H,ADD0 ;如果不是99,R2加1, 如果加到99,R1就置0,重新加起。

MOV R1,#00H ACALL DELAY1 AJMP SELSUB0 ADD0: INC R1 ACALL DELAY1 AJMP SELSUB0 DEC0: MOV A,R1

JZ SETR1 ; DEC R1 ACALL DELAY1 AJMP SELSUB0 SETR1: MOV R1,#63H ACALL DELAY1 AJMP SELSUB0 BACK0: AJMP START SELSUB1: MOV A,R2 MOV B,#0AH DIV AB MOV R5,A MOV R4,B MOV R3,#0AH ACALL DISPLAY JNB P3.5,INC1 JNB P3.6,DEC1 JNB P3.1,BACK1 AJMP SELSUB1 INC1: MOV A,R2 CJNE A,#63H,ADD1 MOV R2,#00H

如果R1为0, R1就置99,

AJMP SELSUB1 ADD1: INC R2 ACALL DELAY1 AJMP SELSUB1 DEC1: MOV A,R2 JZ SETR2

DEC R2 ACALL DELAY1 AJMP SELSUB1 SETR2: MOV R2,#63H ACALL DELAY1 AJMP SELSUB1 BACK1: AJMP START

REPEAT:MOV A,38h ; MOV R6,A

CLR RING ;助能消除蜂鸣

COUNT: MOV R0,#00H ; MOV TH1,#3CH

MOV TL1,#0B0H ;RECOUNT:MOV A,R6 ;R6答时间或回答时间给R6 MOV B,#0AH

DIV AB ; MOV 30H,A ; MOV 31H,B ; MOV R5,30H ; MOV R4,31H ; MOV A,R6 SUBB A,#07H

JNC LARGER ;5s 会提醒 MOV A,R0

CJNE A,#0AH,FULL ;1s CLR RING AJMP CHECK

求助时重新计时 当倒计时进入最后5秒的时候,求重置定时器中断次数 重置定时器

保存了倒计时的时间, 之前先将抢除十分出个位/十位 十位存于(30H) 个位存于(31H) 取十位 取个位 大于5s 跳到LARGER, 小于等于中0.5s 向下运行

R0, 重新计

SETB RING MOV A,R6

JZ QUIT ;计时完毕 MOV R0,#00H

DEC R6 ;一秒标志减1 AJMP CHECK LARGER: MOV A,R0

CJNE A,#14H,CHECK ;如果1s 向下运行, 否者跳到查" 停/显示"

DEC R6 ;计时一秒R6自动减1 MOV R0,#00H

CHECK: JNB P3.1,QUIT ;如按下停止键退出 JNB OK,CHECKK ;只在回答倒计时才有效 AJMP NEXTT

CHECKK:JNB P3.0,REPEAT ;判断是否求助 NEXTT:

ACALL DISPLAY

JB OK,ACCOUT;如果是抢答倒计时, 如是则查询抢答, 否则跳过查询继续倒数(这里起到锁抢答作用) AJMP RECOUNT ACCOUT:MOV A,DATA0 JNB ACC.0,TRUE1 JNB ACC.1,TRUE2 JNB ACC.2,TZ7 JNB ACC.3,TZ8 AJMP RECOUNT TZ7: AJMP TRUE3 TZ8: AJMP TRUE4 AJMP RECOUNT

QUIT: CLR OK ;如果按下了" 停止键" 执行的程序 CLR RING AJMP START TRUE1: ACALL BARK MOV A,R2

MOV R6,A ;抢答时间R2送R6 MOV R3,#01H

了抢答

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 ERROR: MOV R0,#00H MOV TH1,#3CH MOV TL1,#0B0H

MOV 34H,R3 ;HERE: MOV A,R0

CJNE A,#06H,FLASH ;0.3s CLR RING MOV R3,#0AH MOV R4,#0AH

MOV R5,#0AH ; AJMP CHECK1

FLASH: CJNE A,#0CH,CHECK1 ;SETB RING

MOV R0,#00H

MOV R3,34H ; MOV R5,#0BH

犯规号数暂存与(34H) 向下运行->灭并停响 三灯全灭 下面是0.8s 的情况, 响并显示号数并清R0 取回号数

AJMP CHECK1 CHECK1: JNB P3.1,QUIT1 ACALL DISPLAY AJMP HERE QUIT1: CLR RING 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 ; 第一个为零, 其他与上相同, 因为十位如果为零显示熄灭 DELAY1: MOV 35H,#08H LOOP0: ACALL DISPLAY DJNZ 35H,LOOP0 RET

DELAY: MOV 32H,#12H LOOP: MOV 33H,#0AFH

DJNZ 32H,LOOP RET BARK: SETB RING ACALL DELAY1 ACALL DELAY1

CLR RING ;按键发声 RET

T0INT: MOV TH0,#0ECH MOV TL0,#0FFH JNB RING,OUT;

CPL P3.7 ;RING标志位为1时候P3.7口不断取反使喇叭发出一定频率的声音 OUT: RETI

T1INT: MOV TH1,#3CH MOV TL1,#0B0H INC R0 RETI INTT0:MOV DATA0,P1 CLR EX0 RETI END

4 Proteus仿真系列组图

4.1 上电、禁止或复位时显示三个FFF

4.2 抢答或答题时间设定

最大设定99S ,99s 后再加一置零。按抢答时间设定键,显示15S ,按加一或减一,相应时间变化,如下图所示:

答题时间的设定步骤与上类似。

4.3违规抢答并显示座号

抢答未开始时,若有人抢先抢答,给予显示。下图为一号违规抢答,同时Led 灯显示。一号正常抢答成功,其相应的绿灯也会亮起。

4.4抢答成功并显示倒计时

成功后若选手求助,计时器会重新计时60S 。下图为二号成功后,又向他人求助,第一个数字显示组号,后两个显示还剩余53S 。

结束语

通过这次设计,使我对单片机这门课程的内容有了更深的理解,对相关电器元件的性能和参数有了更进一步的认识。同时也锻炼了自己的独立动手能力和分析解决问题的能力。这是我第二个独立完成的课设作业,相信能对我的毕业设计和以后的工作有莫大的帮助。

参考文献

[1]51单片机原理与实践/高卫东,辛友顺,韩彦征编著. 北京航空航天大学出版社,

2004.1

[2]刘红玲、邵晓根,《微机原理与接口技术》,中国电力出版社,2006年第一版 [3]冯博琴,《微型计算机原理及接口技术》,清华大学出版社 [4]艾德才,《微型计算机原理与接口技术》,高等教育出版社 [5]沈美明,《IBM-PC 汇编语言程序设计》,清华大学出版社 [6] 任致程,《经典集成电路400例》机械工业出版社,2002 [7] 薛栋梁,《单片机原理及应用》,中国水利水电出版社,2001

[4] 谢筑森, 张辉等,《单片机开发与典型应用设计》,中国科学技术大学出版社

单片机原理及应用课程设计

- 21 -

目录

前言 2

2 系统设计 3 2.1 系统总体设计 3 2.2 器件选型详细清单 3 2.3系统功能要求 4 2.4系统原理图 4 2.4.1时钟频率电路的设计 5 2.4.2复位电路的设计 5 2.4.3显示电路的设计 6 2.4.4控制开关设计 7 3系统程序设计 8 3.1程序流程图 8 3.2程序清单 9 4 Proteus仿真系列组图 16 4.1 上电、禁止或复位 17 4.2 抢答或答题时间设定 17 4.3违规抢答并显示座号 17 4.4抢答成功并显示倒计时 18 结束语 19 参考文献 20

前言

抢答器是为智力竞赛参赛者答题时进行抢答而设计的一种优先判决器电路,广泛应用于各种知识竞赛、文娱活动等场合。随着现代娱乐节目及其它游戏环节的需要,也为了完善节目的紧张气氛和观众的互动,出现了多路抢答器。抢答器的出现给人们带来极大的方便,它能准确无误的从若干名参赛中确定出最先抢答者,并且有显示,声效等功能。

考虑到依需设定限时回答的功能,利用AT89C51单片机及外围接口实现的抢答系统,利用单片机的定时器/计数器定时和记数的原理,将软、硬件有机地结合起来,使得系统能够正确地进行计时,同时使数码管能够正确地显示时间。用开关做键盘输入,扬声器发生提示。同时系统能够实现:在抢答中,只有开始后抢答才有效,如果在开始抢答前抢答为无效;抢答限定时间和回答问题的时间可在1-99s 设定;可以显示是哪位选手有效抢答和无效抢答,正确按键后有音乐提示;抢答时间和回答问题时间倒记时显示,满时后系统计时自动复位及主控强制复位;按键锁定,在有效状态下,按键无效非法。本系统采用模块化设计智能抢答器,在抢答比赛中广泛应用,各组分别有一个抢答按钮。主持人有开始和禁止、复位键。主持人可以修改抢答时间和回答问题的时间,原始状态下抢答时间为15s ,回答问题时间为45s 。通过加键和减键修改上述时间,改完后结束键确定。新时间开始有效,主持人按键开始后,选手开始抢答为有效,数码显示屏显示抢答时间倒计时和选手号,在最后五秒时每秒扬声器均有提示。如果主持人没有按下开始键而选手就抢答视为犯规,数码显示屏显示犯规者的代号,扬声器持续发声。主持人可按复位键结束,开始新一轮抢答。

2 系统设计

2.1 系统总体设计

本系统是借用单片机采用模块化设计的4路抢答器,包括4路抢答按纽、计时显示、开始、禁止和复位控制按钮、时限设定、各种相关显示调控功能。系统的主要功能模块方框图如下图所示。

系统功能模块图

2.2 器件选型详细清单

单片机

芯片

AT89C51 74LS04 74HC20

电阻 电容 晶振 按钮

600×8 200×5 30PF 10u 12MHZ

1 1 1 13 3 1 11

数码管 扬声器 LED 灯

74EG-MP ×4-CC SPEAKER LED-BIRG

1 1 4

2.3系统功能要求

1、具有清零装置和抢答控制,可由主持人操纵,避免有人在主持人说“开始”前提前抢答违反规则。

2、具有定时功能,在15秒内无人抢答表示所有参赛选手获参赛队对本题弃权。 3、15秒时仍无人抢答其报警电路工作表示抢答时间耗尽并禁止抢答。 4、如果想调节抢答时间或答题时间, 按" 抢答时间设定" 键或" 答题时间设定" 键进入调节状态, 此时会显示现在设定的抢答时间或回答时间值, 如想加一秒按一下" 加一" 键, 如果想减一秒按一下" 减一" 键,数码管上会显示改变后的时间,调整

范围为0s~99s, 0s时再减1s 会跳到99,99s 时再加1s 会变到0s 。

5、主持人按" 开始" 键,会有提示音,并立刻进入抢答倒计时(预设15s 抢答时间),如有选手抢答,会有提示音,并会显示其号数并立刻进入回答倒计时(预设45s 回答时间),不进行抢答查询,所以只有第一个按抢答的选手有效。倒数时

间到小于5s 会每秒响一下提示音。

6、如倒计时期间,主持人想停止倒计时可以随时按" 复位" 键,系统会自动进

入准备状态,等待主持人按" 开始" 进入下次抢答计时。

7、如果主持人未按" 开始" 键,而有人按了抢答按键,犯规抢答,LED 上不断闪烁FF 和犯规号数并响个不停,直到按下" 复位" 键为止。

2.4系统原理图

U1为单片机AT89C51,U2为芯片74HC20,U3为芯片74LS04。开始按键与禁止按键分别接到单片机的10、11脚,由于单片机的10、11脚既有串行接口RXD 、TXD 功能,又有P3.0、P3.1的IO 端口功能,此处按键用到单片机10、11脚的IO 端口功能。抢答时间调整按键和回答时间调整按键分别接到单片机的13、14管脚,加一按键和减一按键分别接到单片机的15、16管脚。4位七段数码管段选P0口。4位七段数码管的位选接P2口低3位,蜂鸣器输出为P3.7。原理图见附录。

2.4.1时钟频率电路的设计

单片机必须在时钟的驱动下才能工作。在单片机内部有一个时钟振荡电路,只需要外接一个振荡源就能产生一定的时钟信号送到单片机内部的各个单元,决定单片机的工作速度。本设计采用12MHZ 晶振。电路图如下:

外部振荡源电路

一般选用石英晶体振荡器。此电路在加电大约延迟10ms 后振荡器起振,在XT AL2引脚产生幅度为3V 左右的正弦波时钟信号,其振荡频率主要由石英晶振的频率确定。电路中两个电容 C1,C2的作用有两个:一是帮助振荡器起振;二是对振荡器的频率进行微调。C1,C2的典型值为30PF 。

2.4.2复位电路的设计

单片机的第9脚RST 为硬件复位端,只要将该端持续4个机器周期的高电平即

可实现复位,复位后单片机的各状态都恢复到初始化状态,其电路图如下图

复位电路

图中由按键以及电解电容C3、电阻R8构成按键及上电复位电路。由于单片机是高电平复位,所以当按键复位按下时候,单片机的9脚RESET 管脚处于高电平,此时单片机处于复位状态。当上电后,由于电容的缓慢充电,单片机的9脚电压逐步由高向低转化,经过一段时间后,单片机的9脚处于稳定的低电平状态,此时单片机上电复位完毕,系统程序从0000H 开始执行。

2.4.3显示电路的设计

4位七段数码管显示电路如下图所示。图中数码管采用的是4位七段共阴数码管,位选码COM1、COM3、COM4分别接到单片机的P2.0、P2.1、P2.2,由单片机来决定当前该显示的是哪一位。在图中还有7个600欧的电阻,连接在P0口上,用作P0口的上拉电阻,保证P0口没有数据输出时候处于高电平状态。

显示电路

2.4.4控制开关设计

开始、禁止按键 去抖电路和扬声器

在图中,开始及禁止按键接到单片机的10、11脚,这里用到了单片机10、11脚复合功能中的IO 端口功能,单片机通过读取10、11脚的P3.0、P3.1的IO 端口值来判断当前是否处于抢答开始状态或抢答禁止状态。按键的触点在闭合和断开时均会产生抖动,这时触点的逻辑电平是不稳定的,如不妥善处理,将会引起按键命令的错误执行或重复执行。现在一般均用软件延时的方法来避开抖动阶段,这一延时过程一般大于5ms ,例如取10-20ms 。如果监控程序中的读键操作安排在主程序(后台程序)或键盘中断(外部中断)子程序中,则该延时子程序便可直接插入读键过程中。如果读键过程安排在定时中断子程序中,就可省去专门的延时子程序,利用两次定时中断的时间间隔来完成抖动处理。4个按键的输入电平靠74HC20输入与非门和74LS04反向器组成的电路改变输入电平。图中单片机的14脚输出具有复合功能,此处用到了单片机17脚的IO 端口功能,单片机通过内部定时器的操作实现交替变换的波形输出驱动扬声器发声。

3系统程序设计

3.1程序流程图

3.2程序清单

EQU 20H ;抢答开始标志位 EQU 22H ;响铃标志位 EQU 36H ;抢答按键口数据存放地址

ORG 0000H

AJMP MAIN ORG 0003H AJMP INTT0 ORG 000BH AJMP T0INT ORG 001BH AJMP T1INT ORG 0040H

MAIN: MOV R1,#15 ; MOV R2,#45 ; MOV 38H,#60 ; MOV TMOD,#11H ; MOV TH0,#0F0H

MOV TL0,#0FFH ; MOV TH1,#3CH

MOV TL1,#0B0H ;50ms SETB EA SETB ET0

SETB ET1 ; CLR OK CLR RING SETB TR1

SETB TR0 ;FFF.

START: MOV DATA0,#0FFH ; MOV R5,#0BH MOV R4,#0BH MOV R3,#0BH

ACALL DISPLAY ;初设抢答时间为15s 初设答题时间为45s 求助时时间从60s 倒计时 设置未定时器/模式1 越高发声频率越高, 越尖 为一次溢出中断 允许二个中断,T0/T1 一开始就运行定时器, 以开始显示初始化 未开始抢答时候显示FFF

JNB P3.4,TZ3 ;倒计时调整 JB P3.0,NEXT

ACALL DELAY

JB P3.0,NEXT ;去抖动, 如果" 开始键" 按下就向下执 行, 否者跳到违规抢答查询 SETB EX0 ;开放INT0

ACALL BARK ;按键发声 MOV A,R1

MOV R6,A ;送R1->R6,因为R1中保存了抢答时间 SETB OK ;抢答标志位, 在求助时用作判断是抢答倒计时还是回答倒计时

MOV R3,#0AH ;抢答只显示计时, 灭号数 AJMP COUNT ;进入倒计时程序," 查询有效抢答的程序" 在COUNT 里面 NEXT: JNB P1.0,FALSE1 JNB P1.1,FALSE2 JNB P1.2,TZ1 JNB P1.3,TZ2 AJMP START TZ1: AJMP FALSE3 TZ2: AJMP FALSE4 TZ3: AJMP SELSUB1 AJMP START FALSE1: MOV R3,#01H AJMP ERROR FALSE2: MOV R3,#02H AJMP ERROR FALSE3: MOV R3,#03H AJMP ERROR FALSE4: MOV R3,#04H AJMP ERROR SELSUB0: MOV A,R1 MOV B,#0AH DIV AB MOV R5,A MOV R4,B MOV R3,#0AH

JNB P3.5,INC0 ;P3.5为+1s键, 如按下跳到INCO JNB P3.6,DEC0 ;P3.6为-1s 键, 如按下跳到DECO JNB P3.1,BACK0 ;P3.1为确定键, 如按下跳到BACKO AJMP SELSUB0 INC0: MOV A,R1

CJNE A,#63H,ADD0 ;如果不是99,R2加1, 如果加到99,R1就置0,重新加起。

MOV R1,#00H ACALL DELAY1 AJMP SELSUB0 ADD0: INC R1 ACALL DELAY1 AJMP SELSUB0 DEC0: MOV A,R1

JZ SETR1 ; DEC R1 ACALL DELAY1 AJMP SELSUB0 SETR1: MOV R1,#63H ACALL DELAY1 AJMP SELSUB0 BACK0: AJMP START SELSUB1: MOV A,R2 MOV B,#0AH DIV AB MOV R5,A MOV R4,B MOV R3,#0AH ACALL DISPLAY JNB P3.5,INC1 JNB P3.6,DEC1 JNB P3.1,BACK1 AJMP SELSUB1 INC1: MOV A,R2 CJNE A,#63H,ADD1 MOV R2,#00H

如果R1为0, R1就置99,

AJMP SELSUB1 ADD1: INC R2 ACALL DELAY1 AJMP SELSUB1 DEC1: MOV A,R2 JZ SETR2

DEC R2 ACALL DELAY1 AJMP SELSUB1 SETR2: MOV R2,#63H ACALL DELAY1 AJMP SELSUB1 BACK1: AJMP START

REPEAT:MOV A,38h ; MOV R6,A

CLR RING ;助能消除蜂鸣

COUNT: MOV R0,#00H ; MOV TH1,#3CH

MOV TL1,#0B0H ;RECOUNT:MOV A,R6 ;R6答时间或回答时间给R6 MOV B,#0AH

DIV AB ; MOV 30H,A ; MOV 31H,B ; MOV R5,30H ; MOV R4,31H ; MOV A,R6 SUBB A,#07H

JNC LARGER ;5s 会提醒 MOV A,R0

CJNE A,#0AH,FULL ;1s CLR RING AJMP CHECK

求助时重新计时 当倒计时进入最后5秒的时候,求重置定时器中断次数 重置定时器

保存了倒计时的时间, 之前先将抢除十分出个位/十位 十位存于(30H) 个位存于(31H) 取十位 取个位 大于5s 跳到LARGER, 小于等于中0.5s 向下运行

R0, 重新计

SETB RING MOV A,R6

JZ QUIT ;计时完毕 MOV R0,#00H

DEC R6 ;一秒标志减1 AJMP CHECK LARGER: MOV A,R0

CJNE A,#14H,CHECK ;如果1s 向下运行, 否者跳到查" 停/显示"

DEC R6 ;计时一秒R6自动减1 MOV R0,#00H

CHECK: JNB P3.1,QUIT ;如按下停止键退出 JNB OK,CHECKK ;只在回答倒计时才有效 AJMP NEXTT

CHECKK:JNB P3.0,REPEAT ;判断是否求助 NEXTT:

ACALL DISPLAY

JB OK,ACCOUT;如果是抢答倒计时, 如是则查询抢答, 否则跳过查询继续倒数(这里起到锁抢答作用) AJMP RECOUNT ACCOUT:MOV A,DATA0 JNB ACC.0,TRUE1 JNB ACC.1,TRUE2 JNB ACC.2,TZ7 JNB ACC.3,TZ8 AJMP RECOUNT TZ7: AJMP TRUE3 TZ8: AJMP TRUE4 AJMP RECOUNT

QUIT: CLR OK ;如果按下了" 停止键" 执行的程序 CLR RING AJMP START TRUE1: ACALL BARK MOV A,R2

MOV R6,A ;抢答时间R2送R6 MOV R3,#01H

了抢答

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 ERROR: MOV R0,#00H MOV TH1,#3CH MOV TL1,#0B0H

MOV 34H,R3 ;HERE: MOV A,R0

CJNE A,#06H,FLASH ;0.3s CLR RING MOV R3,#0AH MOV R4,#0AH

MOV R5,#0AH ; AJMP CHECK1

FLASH: CJNE A,#0CH,CHECK1 ;SETB RING

MOV R0,#00H

MOV R3,34H ; MOV R5,#0BH

犯规号数暂存与(34H) 向下运行->灭并停响 三灯全灭 下面是0.8s 的情况, 响并显示号数并清R0 取回号数

AJMP CHECK1 CHECK1: JNB P3.1,QUIT1 ACALL DISPLAY AJMP HERE QUIT1: CLR RING 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 ; 第一个为零, 其他与上相同, 因为十位如果为零显示熄灭 DELAY1: MOV 35H,#08H LOOP0: ACALL DISPLAY DJNZ 35H,LOOP0 RET

DELAY: MOV 32H,#12H LOOP: MOV 33H,#0AFH

DJNZ 32H,LOOP RET BARK: SETB RING ACALL DELAY1 ACALL DELAY1

CLR RING ;按键发声 RET

T0INT: MOV TH0,#0ECH MOV TL0,#0FFH JNB RING,OUT;

CPL P3.7 ;RING标志位为1时候P3.7口不断取反使喇叭发出一定频率的声音 OUT: RETI

T1INT: MOV TH1,#3CH MOV TL1,#0B0H INC R0 RETI INTT0:MOV DATA0,P1 CLR EX0 RETI END

4 Proteus仿真系列组图

4.1 上电、禁止或复位时显示三个FFF

4.2 抢答或答题时间设定

最大设定99S ,99s 后再加一置零。按抢答时间设定键,显示15S ,按加一或减一,相应时间变化,如下图所示:

答题时间的设定步骤与上类似。

4.3违规抢答并显示座号

抢答未开始时,若有人抢先抢答,给予显示。下图为一号违规抢答,同时Led 灯显示。一号正常抢答成功,其相应的绿灯也会亮起。

4.4抢答成功并显示倒计时

成功后若选手求助,计时器会重新计时60S 。下图为二号成功后,又向他人求助,第一个数字显示组号,后两个显示还剩余53S 。

结束语

通过这次设计,使我对单片机这门课程的内容有了更深的理解,对相关电器元件的性能和参数有了更进一步的认识。同时也锻炼了自己的独立动手能力和分析解决问题的能力。这是我第二个独立完成的课设作业,相信能对我的毕业设计和以后的工作有莫大的帮助。

参考文献

[1]51单片机原理与实践/高卫东,辛友顺,韩彦征编著. 北京航空航天大学出版社,

2004.1

[2]刘红玲、邵晓根,《微机原理与接口技术》,中国电力出版社,2006年第一版 [3]冯博琴,《微型计算机原理及接口技术》,清华大学出版社 [4]艾德才,《微型计算机原理与接口技术》,高等教育出版社 [5]沈美明,《IBM-PC 汇编语言程序设计》,清华大学出版社 [6] 任致程,《经典集成电路400例》机械工业出版社,2002 [7] 薛栋梁,《单片机原理及应用》,中国水利水电出版社,2001

[4] 谢筑森, 张辉等,《单片机开发与典型应用设计》,中国科学技术大学出版社

单片机原理及应用课程设计

- 21 -


相关文章

  • 单片机 四路抢答器
  • 课程设计说明书 (2009/2010学年第二学期) 课程名称 :题 目 :专业班级 :学生姓名 :学 号 :指导教师 :设计周数 :设计成绩 : 单片机应用课程设计 四路抢答器 电气2班 韩昱 苗敬利 两周(10.6.28-10.07.09 ...查看


  • 四路智能抢答器课程设计
  • 摘 要 近年来随着科技的飞速发展,单片机的应用正在不断深入,同时带动传统控制检测日新月异.此次设计提出一种用AT89C52单片机作为核心控制元件与电阻.液晶显示屏.蜂鸣器等构成硬件条件,再利用C语言编程来控制抢答器的功能实现. 本论文对抢答 ...查看


  • 四路抢答器毕业设计
  • 滁州职业技术学院机电系 毕 业 设 计 课 题: 抢答器 设计时间: 2014.11-2014.12 班 级: 机 电(4)班 学 号: 姓 名:指导教师: 杨入超 摘 要 随着微处理器.计算机和数字通讯技术的飞速发展,计算机控制已扩展到了 ...查看


  • 简易四路抢答器
  • 单片机课程设计 预习报告 班 级: 建电141 姓 名:学 号: 设计题目:设计时间: 评定成绩:评定教师: 四位竞赛抢答器系统设计 2016.01.03~01.07 目录 摘要 ------------------------------ ...查看


  • 四人智力竞赛抢答器
  • 电子工艺实训报告 实训课题 智力竞赛抢答器的制作与调试 学号 ************* 年级 ** 学院 ***** 专业 *********** 姓名 ****** 指导教师 ****** 一.实训目的 (1) 学习识别简单的电子元件与 ...查看


  • 89c51抢答器制作
  • 郑州科技学院 本科课程设计论文 题 目 专 业 姓 名 学 号 指导老师 郑州科技学院信息工程学院 二〇一四年 摘要 ............................................................. ...查看


  • 最新电子信息工程毕业论文题目参考
  • 1. 家庭防盗报警系统 2. 单片机实现单步进电机及8位流水灯控制的设计 3. 篮球竞赛计时系统 4. 单片机89C51在直流调速控制系统中的应用 5. 八路数字抢答器 6. 基于51机的直流电机设计 7. 基于51单片机的步进电机控制系统 ...查看


  • 抢答器课程设计 1
  • <单片机技术>课程设计说明书 数字抢答器 系 . 部: 电气与信息工程系 学生姓名:指导教师: 王韧 职称 副教授 专 业: 电气工程及其自动化 班 级: 完成时间: 2014年6月5号 摘 要 单片机把我们带入了智能化的电子领 ...查看


  • 四人抢答器的实验报告
  • 电气与自动化工程学院课程设计评分表 课程设计题目:微机原理与接口技术课程设计 班级:Y102101 学号:Y10210120姓名:王圣爽 指导老师: 年 月 日 常熟理工学院电气与自动化工程学院 课程设计说明书 课程名称: 微机原理与接口技 ...查看


热门内容