收藏 分享(赏)

单片机的四路抢答器设计基程序.doc

上传人:精品资料 文档编号:10104378 上传时间:2019-10-10 格式:DOC 页数:27 大小:398.30KB
下载 相关 举报
单片机的四路抢答器设计基程序.doc_第1页
第1页 / 共27页
单片机的四路抢答器设计基程序.doc_第2页
第2页 / 共27页
单片机的四路抢答器设计基程序.doc_第3页
第3页 / 共27页
单片机的四路抢答器设计基程序.doc_第4页
第4页 / 共27页
单片机的四路抢答器设计基程序.doc_第5页
第5页 / 共27页
点击查看更多>>
资源描述

1、基于 51 单片机的四路抢答器设计小组成员:丁 霏 10272094乐燕思 10272096刘 颖 102721041目录摘要 .2一需实现的功能 .2二硬件设计 .22.1 抢答器电路图 22.2 单元电路设计 32.2.1.主持人开关: .32.2.2 选手开关电路: .42.2.3 报警系统: .52.3.4 显示系统: .52.3.5 晶振系统: .62.3.6 鉴别电路: .7三软件设计 .73.1 原理框图 73.2 程序流程图 83.3 程序 10四实践过程 .2341 具体过程: .234.2 碰到的问题及解决方案 .24五总结与体会 .262摘要现在抢答器很广泛地用于各种场合

2、的竞赛,为竞争增添了刺激性、娱乐性。抢答器的出现为人们带来了方便,能准确无误的从若干名参赛中确定出最先抢答者,并且有显示,声效等功能。本文介绍一种四路抢答器,由抢答电路,定时电路,报警电路等组成。关键字:四路抢答器 抢答电路 定时电路 报警电路 一需实现的功能1.接通电源后,数码管显示为“F FF”,此时抢答器处于禁止抢答状态;2.主持人可通过抢答时间调节按键与答题时间调节按键来调节时间长短,再按下停止键后,主持人按下“开始” 键,宣布“开始 ”抢答,定时器开始倒计时且蜂鸣器提示,选手在规定的 15s 定时时间内抢答;3.当有选手按下抢答按键时,则显示选手编号与剩余答题时间显示且蜂鸣器提示,此

3、时其他选手不能再进行抢答;4.答题结束后,主持人按下停止键,如果再次抢答必须由主持人再次操作“清除”和“开始 ”状态开关,此时抢答时间与答题时间恢复为默认值,分别为 15s和 45s,但若主持人只停止键后就开始下一轮抢答则抢答时间与答题时间为上一轮设置的时间。 二硬件设计2.1 抢答器电路图如图 2.1 所示为电路图,其工作原理为:接通电源后主持人将开关拨到“清零”状态,抢答器处于禁止状态,定时器设定时间,主持人将开关置“开始” ,宣布抢答开始时,定时器倒计时,扬声器发出响声。选手要在规定时间内完成抢答;优先判断,编号锁存,扬声器提示。3图 2.1 抢答器电路图2.2 单元电路设计如图 2.2

4、 所示为硬件电路设计模块:4AT89C51报 警 系 统主 持 人 开 关显 示 系 统晶 振 系 统鉴 别 电 路选 手 开 关图 2.2 硬件电路设计模块2.2.1.主持人开关:如图 2.2 所示,该图为主持人宣布抢答开始与结束信号的输入装置。图 2.2.1 主持人开关2.2.2 选手开关电路:如图 2.2.2 所示,该图为各个选手抢答信号的输入装置,在通过单片机,选择有效信号,同时封锁。5图 2.2.2 选手开关电路2.2.3 报警系统:如图 2.2.3 所示,报警电路用于报警,当遇到信号时,发出报警。选手在设定时间内抢答时,实现优先判断编号锁存等提示。图 2.2.3 报警系统电路图62

5、.3.4 显示系统:如图 2.3.4 所示,显示电路用于显示抢答时间以及抢答信号,同时对犯规抢答组进行闪烁显示。图 2.3.4 显示系统电路图2.3.5 晶振系统:如图 2.3.5 所示72.3.5 晶振系统电路图2.3.6 鉴别电路:如图 2.3.6 所示2.3.6 鉴别电路图8三软件设计3.1 原理框图如图 3.1 所示为总体原理框图。系 统 初 始 化 结 构按 键 系 统调整抢答时间按键调整答题时间按键抢答开始按键抢答停止按键复位按键选手按键图 3.1 总体原理框图3.2 程序流程图如图 3.2 所示为程序流程图。9非 法 抢 答 ?调 整 时 间 ?N初 始 化复 位 清 除开 始

6、抢 答Y按 下 停 止 键 ?保 存 调 整 时 间YN未 保 存 调 整 时 间 显 示 倒 计 时时 间5s ?N是 否 有 抢 答 信 号 ?Y响 铃 提 示YN时 间 是 否 截 止 ?NYNY 显 示 组 号 及“FF”N判 断 抢 答 组时 间 是 否 截 止 ?N显 示 抢 答 组 及 答 题 时 间存 在 非 法 抢 答 ?抢 答 组 继 续 答 题 禁 止 抢 答继 续 比 赛 ?复 位 清 除N关 闭 电 源YY图 3.2 程序流程图103.3 程序OK EQU 20H ;抢答开始标志位RING EQU 22H ;响铃标志位DATA0 EQU 36H ;抢答按键口数据存放地

7、址ORG 0000HAJMP MAINORG 0003HAJMP INTT0ORG 000BHAJMP T0INTORG 001BHAJMP T1INTORG 0040HMAIN: MOV R1,#15 ;初设抢答时间为 15sMOV R2,#45 ;初设答题时间为 45smov 38h,#60 ;启用锦囊时间从 60s 倒计时MOV TMOD,#11H ;设置未定时器 /模式 1MOV TH0,#0F0HMOV TL0,#0FFH ;越高发声频率越高,越尖MOV TH1,#3CHMOV TL1,#0B0H ;50ms 为一次溢出中断11SETB EASETB ET0SETB ET1 ;允许二

8、个中断,T0/T1CLR OKCLR RINGSETB TR1SETB TR0 ;一开始就运行定时器,以开始显示FFF.如果想重新计数,重置 TH1/TL1 就可以了;=;=查询程序=;=START: MOV DATA0,#0FFH ;初始化MOV R5,#0BHMOV R4,#0BHMOV R3,#0BHACALL DISPLAY ;未开始抢答时候显示 FFFJNB P3.3,SELSUB0JNB P3.4,TZ3 ;倒计时调整JB P3.0,NEXTACALL DELAYJB P3.0,NEXT ;去抖动,如果“开始键“按下就向下执行,否者跳到非法抢答查询SETB EX0 ;开放 INT0

9、ACALL BARK ;按键发声12MOV A,R1MOV R6,A ;送 R1-R6,因为 R1 中保存了抢答时间SETB OK ;抢答标志位, 在使用锦囊时用作判断是抢答倒计时还是回答倒计时MOV R3,#0AH ;抢答只显示计时, 灭号数AJMP COUNT ;进入倒计时程序 ,“查询有效抢答的程序“在 COUNT 里面NEXT: JNB P1.0,FALSE1JNB P1.1,FALSE2JNB P1.2,TZ1JNB P1.3,TZ2AJMP STARTTZ1: AJMP FALSE3TZ2: AJMP FALSE4TZ3: AJMP SELSUB1AJMP START;=;=非法抢

10、答处理程序=;=FALSE1: MOV R3,#01HAJMP ERRORFALSE2: MOV R3,#02HAJMP ERRORFALSE3: MOV R3,#03H13AJMP ERRORFALSE4: MOV R3,#04HAJMP ERROR;=;=SELSUB0(抢答时间 R1 调整程序)= ;=SELSUB0: MOV A,R1MOV B,#0AHDIV ABMOV R5,AMOV R4,BMOV R3,#0AHACALL DISPLAY ;先在两个时间 LED 上显示 R1JNB P3.5,INC0 ;P3.5 为+1s 键,如按下跳到 INCOJNB P3.6,DEC0 ;P

11、3.6 为-1s 键,如按下跳到 DECOJNB P3.1,BACK0 ;P3.1 为确定键,如按下跳到 BACKOAJMP SELSUB0INC0: MOV A,R1CJNE A,#63H,ADD0 ;如果不是 99,R2 加 1,如果加到99,R1 就置 0,重新加起。MOV R1,#00HACALL DELAY1AJMP SELSUB014ADD0: INC R1ACALL DELAY1AJMP SELSUB0DEC0: MOV A,R1JZ SETR1 ;如果 R1 为 0, R1 就置 99DEC R1ACALL DELAY1AJMP SELSUB0SETR1: MOV R1,#63

12、HACALL DELAY1AJMP SELSUB0BACK0: AJMP START;=;=SELSUB1(回答时间 R2 调整程序)=;=SELSUB1: MOV A,R2MOV B,#0AHDIV ABMOV R5,AMOV R4,BMOV R3,#0AHACALL DISPLAYJNB P3.5,INC115JNB P3.6,DEC1JNB P3.1,BACK1AJMP SELSUB1INC1: MOV A,R2CJNE A,#63H,ADD1MOV R2,#00HACALL DELAY1AJMP SELSUB1ADD1: INC R2ACALL DELAY1AJMP SELSUB1DE

13、C1: MOV A,R2JZ SETR2DEC R2ACALL DELAY1AJMP SELSUB1SETR2: MOV R2,#63HACALL DELAY1AJMP SELSUB1BACK1: AJMP START;=;=启用锦囊程序=;=16REPEAT: MOV A,38h ;使用锦囊时重新计时MOV R6,ACLR RING ;当倒计时进入最后 5 秒的时候,启用锦囊能消除蜂鸣;=;=倒计时程序( 抢答倒计时和回答倒计时都跳到改程序 )= ;=COUNT: MOV R0,#00H ;重置定时器中断次数MOV TH1,#3CHMOV TL1,#0B0H ;重置定时器RECOUNT:MO

14、V A,R6 ;R6 保存了倒计时的时间,之前先将抢答时间或回答时间给 R6MOV B,#0AHDIV AB ;除十分出个位/十位MOV 30H,A ;十位存于(30H)MOV 31H,B ;个位存于(31H)MOV R5,30H ;取十位MOV R4,31H ;取个位MOV A,R6SUBB A,#07HJNC LARGER ;大于 5s 跳到 LARGER,小于等于 5s 会提醒MOV A,R0CJNE A,#0AH,FULL ;1s 中 0.5s 向下运行CLR RING17AJMP CHECKFULL: CJNE A,#14H,CHECK ;下面是 1s 的情况,响并显示号数并清 R0

15、,重新计SETB RINGMOV A,R6JZ QUIT ;计时完毕MOV R0,#00HDEC R6 ;一秒标志减 1AJMP CHECKLARGER: MOV A,R0CJNE A,#14H,CHECK ;如果 1s 向下运行,否者跳到查“停/ 显示“DEC R6 ;计时一秒 R6 自动减 1MOV R0,#00HCHECK: JNB P3.1,QUIT ;如按下停止键退出JNB OK,CHECKK ;只在回答倒计时才有效AJMP NEXTTCHECKK: JNB P3.0,REPEAT ;判断是否使用锦囊NEXTT: ACALL DISPLAYJB OK,ACCOUT ;如果是抢答倒计时

16、, 如是则查询抢答,否者跳过查询继续倒数(这里起到锁抢答作用)AJMP RECOUNT18ACCOUT: MOV A,DATA0JNB ACC.0,TRUE1JNB ACC.1,TRUE2JNB ACC.2,TZ7JNB ACC.3,TZ8AJMP RECOUNTTZ7: AJMP TRUE3TZ8: AJMP TRUE4AJMP RECOUNTQUIT: CLR OK ;如果按下了“停止键“执行的程序CLR RINGAJMP START;=;=正常抢答处理程序=;=TRUE1: ACALL BARKMOV A,R2MOV R6,A ;抢答时间 R2 送 R6MOV R3,#01HCLR OK

17、 ;因为答题的计时不再查询抢答, 所以就锁了抢答AJMP COUNTTRUE2: ACALL BARKMOV A,R219MOV R6,AMOV R3,#02HCLR OKAJMP COUNTTRUE3: ACALL BARKMOV A,R2MOV R6,AMOV R3,#03HCLR OKAJMP COUNTTRUE4: ACALL BARKMOV A,R2MOV R6,AMOV R3,#04HCLR OKAJMP COUNT;=;=犯规抢答程序=;=ERROR: MOV R0,#00HMOV TH1,#3CHMOV TL1,#0B0HMOV 34H,R3 ;犯规号数暂存与 (34H)20H

18、ERE: MOV A,R0CJNE A,#06H,FLASH ;0.3s 向下运行-灭并停响CLR RINGMOV R3,#0AHMOV R4,#0AHMOV R5,#0AH ;三灯全灭AJMP CHECK1FLASH: CJNE A,#0CH,CHECK1 ;下面是 0.6s 的情况, 响并显示号数并清 R0,重新计SETB RINGMOV R0,#00HMOV R3,34H ;取回号数MOV R5,#0BHMOV R4,#0BH ;显示 FF 和号数AJMP CHECK1CHECK1: JNB P3.1,QUIT1ACALL DISPLAYAJMP HEREQUIT1: CLR RINGC

19、LR OKAJMP START;=21;=显示程序=;=DISPLAY:MOV DPTR,#DAT1 ;查表显示程序,利用 P0 口做段选码口输出/P2 低三位做位选码输出,MOV A,R3MOVC A,A+DPTRMOV P2,#0feHMOV P0,AACALL DELAYMOV DPTR,#DAT2MOV A,R5MOVC A,A+DPTRMOV P2,#0fdHMOV P0,AACALL DELAYMOV A,R4MOVC A,A+DPTRMOV P2,#0fbHMOV P0,AACALL DELAYRETDAT1: DB 00h,06h,5bh,4fh,66h,6dh,7dh,07h

20、,7fh,6fh,00H,71H; “灭“,“1“,“2“,“3“,“4“,“5“,“6“,“7“,“8“,“9“,“ 灭“,“F“22DAT2: DB 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh,00H,71H;第一个为零,其他与上相同,因为十位如果为零显示熄灭;=;=加减时间延时(起到不会按下就加 N 个数)=;=DELAY1: MOV 35H,#08HLOOP0: ACALL DISPLAYDJNZ 35H,LOOP0RET;=;=延时(显示和去抖动用到)= ;=DELAY: MOV 32H,#12HLOOP: MOV 33H,#0AFHLOOP1:

21、DJNZ 33H,LOOP1DJNZ 32H,LOOPRET;=;=发声程序=;=BARK: SETB RINGACALL DELAY1ACALL DELAY1CLR RING ;按键发声RET;=;=TO 溢出中断(响铃程序)= ;=T0INT: MOV TH0,#0ECH23MOV TL0,#0FFHJNB RING,OUT;CPL P3.7 ;RING 标志位为 1 时候 P3.7 口不断取反使喇叭发出一定频率的声音OUT: RETI;=;=T1 溢出中断( 计时程序 )= ;=T1INT: MOV TH1,#3CHMOV TL1,#0B0HINC R0RETI=INTT0 中断服务程序

22、=INTT0: MOV DATA0,P1CLR EX0RETIEND四实践过程4 1 具体过程:1、在 Protues ISIS 软件上模拟电路及程序;2、在面包板上连接电路,如图 4.1 为面包板上的模拟电路;3、在万能板上焊接电路,完成作品; 244、通过 Proteus 简化电路图,完成 PCB 制板的模拟。4.2 碰到的问题及解决方案1、模拟程序的选择与安装 程序模拟是焊板子与制板的第一步,本来打算安装 protel 2004,但是在程序安装时候遇到了很大的问题,无论如何也安不上,破解很难,即便是按照要求都做了,仍然行不通,而且通过上网了解得知protel 很难上手,相比来说,prot

23、eus 要比较容易上手一些。 2、proteus 程序学习,包括 ISIS 里面原件的寻找,电路连接,在蜂鸣器的连接这里出了问题,只单纯的认为只要蜂鸣器的正极接单片机,负极接地就可以工作了,程序模拟时就出现问题了,蜂鸣器不工作,为此还到处找问题,是不是程序写错了,还是电路连接不对,后来通过查找资料,和他人的系统对比,发现是少了三极管的电路放大,至今为止仍然不明白为什么。 3、元件的选取,我们去中发一共去了三次,第一次是三个人一起去的,买东西的时候很快发现问题,买芯片是需要型号的,做电路模拟的时候就知道需要四进一出的与门和单非门,型号是什么还是现场查的,可不可靠很难说。电源的选取,开始我们就在想

24、,+5v 的电池要怎么买,店家也表示没有,告诉我们两节干电池就能带起来,害我们焊接好了电路板没有相应还以为是接错了,或者是烧了呢,后来再次买的时候,还是没有买到老师说的碱电池,想到电池用一段时间电压都会下降,但是仍然能够工作,只是下降到一定程度不能工作,我们抱着试一试的心态,买了 3 节干电池,发现是对的。 4、电路焊接,第一次焊电路板,心情很激动,但是现实很糟糕,走错线的不再少数,万能板是一个镜像,管脚盯着盯着就乱了,最后焊完的电路板检查了又检查还是烧了。还有一个环节就是数码管的管脚问题,店家告诉我们数码管有 12 个管脚,都有编号,写着 1、12,上网搜搜就知道怎么连接,下图 4.2是我们

25、上网搜的,和我们的管脚有点不一样,网上其他的说明也是一样的,只是没有标 112,我们买的四位共阴极的数码管正对着我们,小数点那边也就是下边的左边标号 1 管脚,上边的左边标号 12 管脚,那就按着管脚连呗,结果,可想而知,再一次连,我们就想明白了,网上除了这一篇百度文库标注了管脚,其他的并没有告诉管脚,只是说,正对着自己小数点朝下,然后就是如图,按着管脚连是错的,也可能本身这篇文章就有问题。4.1 面包板模拟电路254.2 数码管管脚图5、PCB 板的制作,我们很想进行 PCB 板的制作,为此查找了很多资料,学习了很多,但是实在是不会一些元件的封装制作,无奈网上对于 proteus ARES的资料很少,身边也没有人会的,因此,就放弃的 PCB 板的制作。如下图 4.3所示是我们 PCB 板的雏形。4.3 PCB 板五总结与体会在这次实践过程中,我们小组收获了很多。从题目的确定到最后作品的制作,261、集体的力量是伟大的,大多办法多,办法总比困难多。 2、想出来和做出来是两个概念。做出成品来我们很有成就感,是对我们辛勤劳动的肯定。 3、提高了我们亲自的动手、动脑能力,增加了我们的实践经验。 4、建议老师多多开展此类活动。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报