单片机8路智力竞赛抢答器设计_第1页
单片机8路智力竞赛抢答器设计_第2页
单片机8路智力竞赛抢答器设计_第3页
单片机8路智力竞赛抢答器设计_第4页
单片机8路智力竞赛抢答器设计_第5页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、目录1. 设计内容及要求21.1 设计任务21.2设计要求21.3设计方案22. 抢答器硬件设计32.1吋钟频率电路的设计32.2复位电路42.3显示电路的设计42.4选手抢答按键电路的设计52.5主持人按键电路设汁63. 抢答器的程序流程63.1正常抢答流程73.2抢答时间调整83.3答题时间调整流程94. 抢答器制作调试问题114.1在仿真中出现的问题114.2在实际电路制作中出现的问题115. 仿真测试效果125.1初始及复位显示125.2正常抢答显示125.3犯规显示135.4抢答时间调节146. 硬件电路功能显示156.1 电路初始化显示156.2 正常抢答显示156.3 抢答犯规显

2、示166.4 复位键显示167. 实训总结178. 参考文献17附录:188路抢答器源程序181. 设计内容及要求1.1设计任务8路智力竞赛抢答器设计要求(1) 利用单片机设计并制作智力竞赛抢答器。(2) 设计一个6路或以上的抢答器;(3) 有主持人按键,只有主持人按键按下z后,才允许选手抢答,否则视为犯 规,犯规时有对应指示灯亮;(4) 设定抢答时间限制,超过时间若无人抢答则该题作废,并用发光二极管闪 烁报警;(5) 抢答限制吋间用数码管倒计吋显示;(6) 有复位按钮,出现犯规或超时后可复位。1.3设计方案1、当主持人按下开始键,开始抢答,初始倒计吋30秒开始倒计时,选手抢 答成功,进入60

3、秒答题倒计时;2、如果在主持人按下开始键前按下抢答按钮,抢答犯规,显示器显示犯规 选手号码,倒计时和选手号码显示闪烁;3、主持人可以通过,按抢答i寸间调节键或答题吋间调节键进入调节状态, 此时会显示初始的抢答时间或回答时间,如想加一秒按一下时间+键,如果想减 一秒按一下时间-键,时间led上会显示改变后的时间,调整范围为os99s, os 时再减is会跳到99, 99s时再加is会变到oso4、p3.0为开始抢答,p3.1为复位,pl.0-pl.7为八路抢答输入 数码管段 选p0 口,位选p2 口低3位。p3.2抢答时间调整整,p3.3回答时间调整,p3.4 为时间加1调整,p3. 5为时间减

4、1调整。2. 抢答器硬件设计木设计基于at89s52单片机at89s52的引脚图p1.0p1.1p1.2p1.3p1.4p1.5p1.6p1.7rst'vpdp3.0/rxdp3.1hxdp3.24rttp3.34rttp3.4/t0p3.5)t1p3.6/wrp3.7/itdxial2xtauvss23456789101112131415161718192013938373635343332313029282726252423222140vccpo.op0.1p0.2p0.3p0.4p0.5p0.6p0.7 esvppfseftp2.7p2.6p2.5p2.4p2.3p2.2p2.1

5、p2.0at89c52芯片引脚图2.1时钟频率电路的设计单片机必须在时钟的驱动下才能工作在单片机内部有一个时钟振荡电路,只需 要外接一个振荡源就能产生一定的时钟信号送到单片机内部的各个单元,决定单 片机的工作速度。 c2u1 -xtal21)图2-2外部振荡源电路一般选用石英晶体振荡器。此电路在加电大约延迟10ms后振荡器起振,在xtal2 引脚产生幅度为3v左右的正弦波时钟信号,其振荡频率主要由石英晶振的频率 确定。电路中两个电容c1,c2的作用有两个:一是帮助振荡器起振;二是对振荡 器的频率进行微调。cl, c2的典型值为30pf。2)单片机在工作时,由内部振荡器产生或由外直接输入的送至内

6、部控制逻 辑单元的时钟信号的周期称为时钟周期。其大小是时钟信号频率的倒数,常用 fosc表示。如时钟频率为12mhz,即fosc=12mhz,则时钟周期为1/12m。2.2复位电路单片机的第9脚rst为硬件复位端,只要将该端持续4个机器周期的高电平 即可实现复位,复位后单片机的各状态都恢复到初始化状态,其电路图如图4所 示:值得注意的是,在设计当中使用到了硬件复位和软件复位两种功能,由上面的硬 件复位后的各状态可知寄存器及存储器的值都恢复到了初始值,而前面的功能介 绍中提到了倒计时时间的记忆功能,该功能的实现的前提条件就是不能对单片机 进行硕件复位,所以设定了软复位功能。软复位实际上就是当程序

7、执行完毕之后, 将程序指针通过一条跳转指令让它跳转到程序执行的起始地址。<text>2.3显示电路的设计电路采用的是caj5461bh 4位数码管显示,4数码管实物及接线如图所示:e6cc三上()亠) 寸乏(二) ,“4*sled 1aqcdefg dpp2.0/a8p2.1/a9 p22/a10wwwr8:330r po.o/ado po.1/ad1 p0.2/ad2 p0.3zad3 p0.4zad4 p0.5/ad5 p0.6/ad6 p0.7/ad72.4选手抢答按键电路的设计选手抢答按键选用的是以p1 口为输入,电路图如图所示:2.5主持人按键电路设计支持人按键电路选用p

8、3 口为输入,支持人按键“开始”键接p3.0, “复位”键 接p3.1, “修改抢答吋间”接p3.2, “修改答题时间”接p3.3, “时间+”接p3.4,“时间-”接p3.5,电路图如图所示:p2.6xa14p2.7/a15p3.0xrxdp3.1xtxdp3.2/tnt0p3.3/int1p3.4xt0p3.5/t1p3.6ajvrp3.7/rd2810771213115正17开始 1右兔城蓉题时间o o 时间+ <te>-.3. 抢答器的程序流程木设计采用p3. 2、p3. 3分別接抢答时间调节和答题时间调节按钮,即通过 外部中断0、外部中断1分别控制抢答、答题时间的调整。因

9、此,设计的软件部 分可分为工作模块、外部中断0模块、外部中断1模块。对流程图的分析,也分三部分来介绍。3.1正常抢答流程初始化部分:包括对定时计数器的工作方式、初始化数值的设置,还包括对 抢答吋间与答题吋间的预设,另外,还应对外部中断0、外部中断1进行开放。回答倒计吋为03.2抢答时间调整抢答时间调整的流程图见下图p3.2对应键的按下,便进入into中断过程。通过不断对p3.4 (加is)和 p3.5 (减is)进行不断的査询,来对抢答时间进行调整:发现p3.4按下,就对 原抢答时间加is,发现p3. 5下,就对原抢答时间减is并调用显示程序。根据设计要求,当加至99s吋,若再加is,则吋间变

10、为0;当减至os后, 若再减一秒,时间变为99s。因此,流程中应该对当前时间于99s或os比较, 再作岀相应处理。另外,在中断过程中还需要不时对停止按钮进行查询,一旦发现其按下,立即中 断返回。由于木中断过程在返回前一直是循环执行的,因此,只需要在每次循环 末查询一次即可,如流程图所示3.3答题时间调整流程与抢答吋间调整类似,一旦因p3. 3对应的按钮按下,便进入int1中断过程。 通过不断对p3. 4 (加is)和p3. 5 (减is)进行不断的查询,来对抢答时间进行 调整:发现p3.4按下,就对原抢答时间加is,发现p3.5下,就对原抢答时间 减is并调用显示程序。当加至99s时,若再加i

11、s,则时间变为0;当减至os 后,若再减一秒,时间变为99s。因此,流程中应该对当前时间于99s或os比 较,再作出相应处理。4. 抢答器制作调试问题4.1在仿真中出现的问题(1)电路接好后将16进制文件写入单片机内,在数码管显示中,显示的是乱码。 解决方法:1、检查程序中的字型码是否是共阳极显示的字型码,将共阴极字型码改为共阳极字型码;2、检查电路图,查看4位数码管显示是不是共阳极显示,将共阴极更改为共阳 极显示(2)数码管显示的数字岀现抖动解决方法:在显示程序中更改显示延时时间,加长显示的延时时间(3)在调节抢答时间或调节答题时间是按一次按键显示器上的数字会跳动多次 解决方法:在按键去抖动

12、程序中加长去抖动的延时时间4.2在实际电路制作中出现的问题(1)电路焊接完成将16进制程序烧写进单片机后,电路板不能正常工作,数码 管没显示。解决方法:检查电路,确认单片机最小系统是否正确及4位数码管与单片机接线 是否正确,用万用表检查各管脚间是否短路,排除短路的现象。(2)最小系统正确及各线路中没有短路接线,数码管全亮,但正确的显示没用解决方法:在显示程序中加入将个显示器清零的程序5仿真测试效果5.1初始及复位显示<:o -。raxxaoa po wap i poaozpo wao posaos pojbfaod po t/aot i i 3z陀3炖pzsfaio pzaiipxa12

13、 f2s/aijpz«a14pz.t/a15p3x>*rx» p3 1hx» rj-sttto faaimf3 wto p3st1 rjawk f3 7/iftzf j_3;: 1z 13 -< wvi?单片机初始显示及复位显示5.2正常抢答显示(1)主持人按下开始键,数码管显示倒计时fdffddtapd fn vad1 fo2fac»: fofaos fo.4/ad* f0jtad5 foadfl fo.taotpn88pz.va9p22ta1ofz3ta11 fz va13 fzftaofzfitakfz7m1sp3dtrx0f3.1/t

14、x0,wruf3fwttf3.«nuf3at1f3nncp3.?mr抢答倒计时(2)选手抢答成功,数码管显示选手号码及答题倒计时 4号选手抢答poiyaoa po wa01po*a03pd.wao pomta06po.7/a&?fzxyasp22ta1opza11 pz wa1zpz»*a13fzjqtai*pz-yat9p3mx.p3.1/tx» paato !o palhtlf3.4tfdf3st1p3ft<wkp3.7/xf_! a” s 3*tttts z*v25ts帀hrsw 审7i i®冷*re选手号码及答题倒计时显示5.3犯规

15、显示支持人没按下开始键,选手抢答犯规。数码管显示选手号码并闪烁 4号选手抢答犯规显示 t >* rr o o 16t7t 23.vy&tpdiyxpo pd 1zad1 f02fa&2fouadsp0.wa&4 w負gpo-s'ac'spo 7/a&7pznrazfz.!/*s p2j5fa«o pn3m1 p2 wa17 p7sa<3 pz4/a14 fzt/akpaivaxfr p3.1<tx p3mp p33tittps.wtjf3£zt1pa.tfw 277t15如犯规显示5.4抢答时间调节支持人按下

16、“复位键” p3. 1,按下“修改抢答时间” p3.2,选择调节抢答时间, 按“吋间+” p3.4和“吋间p3.5,进行抢答吋间的调节;主持人要修改答题 时间,按下“复位键” p3. 1,按下“修改答题时间” p3.3,选择调节抢答时间,按“时间+”p3.4和“时间-”p3.5,进行答题时间时间的调节,显示如图所示:f0corywtalr>xtal1xtal2ata orp1d f1.1imnpup1.*p1sp1jg p1.?text>poiyadd * po.vad1 p02taoz poarxoa po.wad< pdstads poadg po.t/ao?pndt/i

17、s ?2.v>e p2a1o p2arah p2 p2a13 p2j&au p2.7/a1sf3dtrx0f3.vtx»pjjynrnafaammp3.wtdf3st1f3?/inr=z3nt2z-10:部寸间-咬答通时间抢答时间加7秒显示7屮:l-± pctal1 - | 1s xtal2poarou p0.vad1 p02tapzpo3ia03pd5dpcsadg po.rmo?丘pm p1.1imzpijfl.*p1sf1ap1jpz was p22m10 p23ta11 rz.«taiz p2st*13fz4taup2.7m1sp3dt

18、71;x0 p3.vtxp f33ffrnj p33wttxwtdp35h-1 snr p3j/if-z1'th-t2fzf p令th.«tex1> .答题时间修改显示6硬件电路功能显示6.1电路初始化显示电路初始时数码管显示ppp6.2正常抢答显示1、当主持人按下开始按键后,数码管显示30秒倒计时2、选手抢答成功,数码管显示选手号码,并显示答题时间倒计时6.3抢答犯规显示主持人开始按键没按下,选手按下抢答键后犯规,数码管显示犯规选手号码,倒 计时显示处显示pp6.4复位键显示当支持人按下复位键,数码管显示初始值,显示ppp7. 实训总结在为期两个周的单片机实训中,通过

19、完成所选的实训题目,我们将课本中的所学 到知识应用到制作屮,加深了我们对课本知识的理解,在实训屮遇到的许多问题, 通过查阅资料和老师的讲解我们对单片机的应用又更进一层,在制作实际电路的 过程中,不仅锻炼了我们的的动手能力,通过对at89s52单片机的应用使我们加 深了对单片机的认识,将课木上的知识以实际牛活中的应用相结合,在制作抢答 器的过程中我们遇到了许多的问题,在试过许多解决方案后,没有解决问题,也 想过放弃,但还是坚持了下来。在你解决一个问题,结果出來后,就会非常的兴 奋。在实训中学到的东四对我们以后的生活学习也有很大的帮助在我们的生活中 无乱多大的困难挡住我们前进的路,我们都不能放弄,

20、世上没有解决不了的困难, 之遥我们坚持下来,成功就在手中。8. 参考文献1 胡建主编.单片机原理及接口技术实践教程北京:机械工业岀版社.20042 何立民.mcs-51系列单片机应用系统设计北京:北京航空航天大学 出版社.19903 潘永雄.新编单片机原理与应用.西安:西安电子科技大学出版社20034 张迎新.单片微型计算机原理、应用及接口技术(第2版).国防工业 出版社.20045 苏平.单片机原理与接口技术.电子工业出版社.2003附录:8路抢答器源程序ok equ 2oh;抢答开始标志位?org oooohajmpmainorg 0003hajmpint_0org 000bhajmpto

21、intorg 0013hajmpintjlorg 001bhajmpt1intorg 0040hmain:mov rl,#30;初设抢答吋间为30smov r2,#50mov tmod,#11h;设置未定时器/模式1mov th1z#3chmov tl1z#obohsetb easetb etosetb et1setb exosetb exi;允许四个中断j0/t1/int0/int1clr oksetb trisetb tro;start:mov r5,#0bhmov r4,#0bhmov r3,#0bhacalldisplay;未开始抢答时候显示000jb p3onext;acalldel

22、ayjbp3onext;去抖动,如果“开始键”按下就向下执行,否者跳到非法抢答查询mov a,r1mov r6,a;送r1>r®因为r1屮保存了抢答时间setb ok;抢答标志位,用于count只程序中判断是否查询抢答mov r7,#01h ;读抢答键数据信号标志,这里表示只读一次有用信号mov r3,#oah;抢答只显示计时'灭号数ajmpcount;进入倒计时程序查询有效抢答的程序”在count里面next:jnb p1.ozk1jnb p1.1,k2jnb p12,k3jnb p13k4jnb p1.4,k5jnb p15,k6jnb p1.6,k7jnb p1.

23、7,k8ajmpstart;=非法抢答处理程序=ki: mov r3,#01hajmpfanguik2: mov r3,#02hajmpfanguik3: mov r3,#o3hajmpfanguik4: mov r3,#04hajmpfanguik5: mov r3,#05hajmpfanguik6: mov r3,#06hajmpfanguik7: mov r3,#07hajmpfanguik8:mov r3,#08hajmpfangui/*=into(抢答时间r1调整程序)=*/int_o:mov a,r1mov b,#oahdiv abmov r5,amov r4,bmov r3,#0

24、ahacalldisplay;先在两个吋间led上显示r1jnb p3.4jnc0;p3.4 为+ls 键,如按下跳到 incojnb p3.5,deco;p3.5 为-is 键,如按下跳到 decojnb p3.1,backo;p3.1为确定键,如按下跳到backoajmpint_oinco: mov a,r1cjne a,#63h,add0;如果不是99,r2加1,如果加到99,r1就置0,重新加起。mov r1,#oohacall delay1ajmpintoaddo:inc r1acall delay1ajmpint_odeco:mov a,r1jz setr1;如果 r1 为 oz

25、r1 就置 99,dec r1acall delay1ajmpint_osetr1:mov r1,#63hacall delay1ajmpint_obacko:reti/*=int1(回答时间r2调整程序)=*/int_1:mov a,r2mov b,#oahdiv abmov r5,amov r4,bmov r3,#oahacall displayjnb p3.4jnc1jnb p3.5zdec1jnb p3 丄 back1ajmpint.linci: mov a,r2cjne a,#63h,add1mov r2,#00hacall delay1ajmpint.ladd1:inc r2aca

26、ll delay1ajmpintjldeci:mov a,r2jz setr2dec r2acall delay1ajmpintjlsetr2:mov r2,#63hacall delay1ajmpintlback1:reti/*=倒计时程序(抢答倒计时和回答倒计时都跳到改程序)=*/repeat:mov a,r2 ;使用设定始洱重新计时mov r6,acount:mov ro,#ooh;重置定时器中断次数mov th1z#3chmov tl1,#oboh;重置定时器recount:mov a,r6;r6保存了倒计时的时间,之前先将抢答时间或冋答时间给r6mov b,#oahdiv ab;除十

27、分出个位/十位mov 3oh,a;十位存 t (3oh)mov 31hzb;个位存于(31h)mov r5,3oh;取十位mov r4,31h;取个位mov a,r6subba,#07hjnc larger;大于5s跳到larger,小于等于5s会提醒mov a,rocjne a,#0ah,full;ls 中 0.5s 向下运行ajmpcheckfull:cjne a,#14h,check;卞面是is的情况,响并显示号数并清ro,重新计mov a,r6jzquit;计时完毕mov ro,#oohdec r6;-秒标志减1ajmpchecklarger: mov a,rocjne a,#14h,

28、check;如果is向下运行,否者跳到查"停/显示”dec r6;计时一秒r6自动减1mov ro,#oohcheck:jnb p3丄quit;如按卜-停止键退出jnb ok,checkk;只在回答倒计时才冇效ajmpnexttcheckk: jnb p3.qrepeat ;判断是否使用锦囊nextt:acall displayjbok,accout;如果是抢答倒计时,如是则查询抢答,否者跳过查询继续倒数(这里起到锁抢答作用)ajmprecountaccout:mov a,36hjnbacc.0jrue1jnbacc.1jrue2jnbacc.2jrue3jnbacc.3jrue4j

29、nbacc.4jrue5jnbacc.5jrue6jnbacc.6jz1jnbacc.7jz2ajmprecounttz1: jmp true7tz2: jmp true8quit:clr ok;如果按下了“停止键”执行的程序aj mp start/*=正常抢答处理程序=*/true1:mov a,r2mov r6,a;抢答时间r2送r6mov r3,#o1hclr ok;因为答题的计时不再查询抢答,所以就锁了抢答ajmpcounttrue2:mov a,r2mov r6,amov r3,#02hclr okajmpcounttrue3:mov a,r2mov r6,amov r3,#03hc

30、lr okajmpcounttrue4:mov a,r2mov r6,amov r3,#04hclr okajmpcounttrue5:mov a,r2mov r6,amov r3,#o5hclr okajmpcounttrue6:mov a,r2mov r6,amov r3,#06hclr okajmpcounttrue7:mov r6,amov r3,#07hclr okajmpcounttrue8:mov a,r2mov r6,amov r3,#08hclr okajmpcount/*=犯规抢答程序=*/fangui:mov ro,#oohmov th1,#3chmov tl1,#obohmov 34hzr3;犯规号数秒存与(34h)here:mov a,rocjne a,#06h,flash;0.3s向下运行灭并停响mov r3,#0ahmov r4,#0ahmov r5,#0ah;三灯全灭ajmpcheck1flash:cjne a,#och,check1;下面是0.8s的情况,响并显示号数并清ro,重新计mov ro,#

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论