欢迎来到三一文库! | 帮助中心 三一文库31doc.com 一个上传文档投稿赚钱的网站
三一文库
全部分类
  • 研究报告>
  • 工作总结>
  • 合同范本>
  • 心得体会>
  • 工作报告>
  • 党团相关>
  • 幼儿/小学教育>
  • 高等教育>
  • 经济/贸易/财会>
  • 建筑/环境>
  • 金融/证券>
  • 医学/心理学>
  • ImageVerifierCode 换一换
    首页 三一文库 > 资源分类 > PDF文档下载
     

    微机原理与接口技术课程设计之竞赛抢答器..pdf

    • 资源ID:5224451       资源大小:1.71MB        全文页数:28页
    • 资源格式: PDF        下载积分:6
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录   微博登录  
    二维码
    微信扫一扫登录
    下载资源需要6
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    微机原理与接口技术课程设计之竞赛抢答器..pdf

    清华大学 微机原理与接口技术课程 设计 题目_竞赛抢答器课程设计_ 学生姓名刘闯 专业班级 10计科 2 班 学号201015056 所 在 系信息工程学院 指导教师曾毅 完成时间 2013 年 1 月 1 日 2 郑 州 科 技 学 院 微机原理与接口技术课程设计任务书 题目竞赛抢答器课程设计 专业计算机科学与技术班级 _10 计科 2 班_ 学号 201015056 姓名刘闯 一、基本要求 设计一个具有8 路抢答的抢答器,利用并行接口和开关键。逻辑开关K0-K7 代表抢答按钮,当某个逻辑开关闭合时,相当于抢答按钮按下,此时在七段数码管 上将其号码显示出来,并使喇叭响一声(或者以发光二极管代替)。 二、设计任务 启动计算机,计算机自动为系统各芯片进行初始化,抢答器开始工作。 比赛开始,在主持人按下开始键,绿灯亮后,选手才可开始抢答,否则违规。 若选手抢答成功, LED 显示器显示选手号码,扬声器鸣叫。若选手抢答违规(主 持人未按开妈键),LED 显示器显示违规选手号码,红灯亮,扬声器报警,并根据 比赛规则进行对该选手进行扣分。若系统提示某号选手抢答违规, 主持人仍未按开 始键,此时该号选手又按下抢答键,LED 显示器显示该选手的号码。本系统开机 后,若主持人既未按复位键又未按开始键,此时有选手按下抢答键, 系统提示红灯 亮,并报警。1、抢答成功,置 8253 通道 2 计数值为 1000,扬声器的鸣叫声音频 率为 1MHz/1000=1KHz。2、抢答失败,置8253 通道 2 计数值为 2000,扬声器的 鸣叫声音频率为 1MHz/2000=0.5KHz。3、扬声器鸣叫或报警的时间为12s。 三、设计时间 _2012_ 年_12_月_31_日 至 _2013_年_1_月_4_日 指导教师: 教研室主任: 3 目录 一 课程设计的目的和要求 .2 二 总体设计 .2 三 硬件电路设计 .4 四 软件设计 .9 五 仿真调试 .20 六 源程序.22 七 总结.28 八 参考文献 30 4 一、课程设计的目的和要求 单片机原理及应用课程设计是学生综合运用所学知识,全面掌握单片微型计算机 及其接口的工作原理、编程和使用方法的重要实践环节。通过独立或协作提出并论证 设计方案,进行软、硬件调试,最后获得正确的运行结果,可以加深和巩固对理论教 学和实验教学内容的掌握,进一步建立计算机应用系统整体概念,初步掌握单片机软、 硬件开发方法。 根据单片机原理及应用课程的要求,主要进行两个方面的设计,即单片机最小系 统和存储器扩展设计、接口技术应用设计。其中,单片机最小系统主要要求学生熟悉 单片机的内部结构和引脚功能、引脚的使用、复位电路、时钟电路、4 个并行接口和一 个串行接口的实际应用,从而可构成最小应用系统,并编程进行简单使用。 存储器扩展设计要求学生掌握常用半导体芯片与单片机的接口,如EPROM 存储器 用作外部程序存储器时与单片机的连接关系,SRAM 存储器用作外部数据存储器时与单 片机的连接关系, E2PROM 存储器用作外部程序 / 数据存储器时与单片机的连接关系。能 合理分配和使用单片机的内部和外部存储器,编程实现正常的读写功能。在进行智力 竞赛时,为了具有一种反应准确显示方便的抢答装置,下面设计了一种带有定时功能 的多路抢答器。 1、八路抢答,各用一个抢答按钮; 2、设置一个控制开关,该开关由主持人控制; 3、具有数据锁存和显示功能,抢答开始后若有选手按动抢答按钮,编号立即锁存, 此外,要封锁输入电路,禁止其他选手抢答。优先抢答选手的编号一直保持到系统清 零为止; 4、当主持人按下“开始”按钮,抢答开始。 5、当某一路抢答成功时,在数码管上显示成功信息和该路的号数; 6、当某一路抢答违规时,能在数码管上显示违规信息和号数; 可扩展以下功能: 7、具有定时抢答的功能,选手在设定的时间内抢答有效,且一次抢答的时间设定 为 30 秒,超时扬声器报警; 8、定时抢答的时间到,却没有选手抢答时,本次抢答无效,系统短暂报警,并封 锁输入电路,禁止选手超时抢答,时间显示器上显示00。 9、开始开关未动作,在数码管上显示出选手的编号和抢答时刻,同时扬声器给出 音响提示,选手抢答无效,并报警,系统复位,重新开始。 二、总体设计 该系统采用 51 系列单片机 AT89C51 作为控制核心,该系统可以完成运算控制、信 号识别以及显示功能的实现。由于用了单片机,使其技术比较成熟,应用起来方便、 简单并且单片机周围的辅助电路也比较少,便于控制和实现。整个系统具有极其灵活 的可编程性,能方便地对系统进行功能的扩张和更改。MCS-51单片机特点如下: 可靠性好:单片机按照工业控制要求设计, 抵抗工业噪声干扰优于一般的CPU , 程序指令和数据都可以写在ROM 里,许多信号通道都在同一芯片,因此可靠性高,易 扩充。 5 抢答按钮 优先编 码 锁存器译码电路译码显示 主持人按 钮开关 控制电路报警电路 秒脉冲产生电定时电路译码电路显示电路 单片机有一般电脑所必须的器件, 如三态双向总线, 串并行的输入及输出引脚, 可扩充为各种规模的微电脑系统。 控制功能强:单片机指令除了输入输出指令,逻辑判断指令外还有更丰富的 条件分支跳跃指令。其原理框图如下: 如图所示为电路框图。其工作原理为:接通电源后,主持人将开关拨到“清除” 状态,抢答器处于禁止状态,编号显示器灭灯,定时器显示设定时间;主持人将开关 置,“开始”状态,宣布“开始”抢答器工作。定时器倒计时,扬声器给出声响提示。 选手在定时时间内抢答时,抢答器完成:优先判断、编号锁存、编号显示、扬声器提 示。当一轮抢答之后,定时器停止、禁止二次抢答、定时器显示剩余时间。如果再次 抢答必须由主持人再次操作“开始、停止”状态开关。 (一)功能介绍 1、如果想调节抢答时间或答题时间, 按“抢答时间调节 “ 键或 “答题时间调节 “ 键进 入调节状态 , 此时会显示现在设定的抢答时间或回答时间值, 如想加一秒按一下 “ 加 1s“ 键, 如果想减一秒按一下 “-1s“ 键, 时间 LED上会显示改变后的时间, 调整范围为 0s99s, 0s 时再减 1s 会跳到 99,99s 时再加 1s 会变到 0s。 2、主持人按 “ 抢答开始 “ 键,会有提示音,并立刻进入抢答倒计时(预设30s 抢答 时间) ,如有选手抢答, 会有提示音,并会显示其号数并立刻进入回答倒计时(预设 60s 抢答时间) ,不进行抢答查询, 所以只有第一个按抢答的选手有效。倒数时间到小于 5s 会每秒响一下提示音。 3、如倒计时期间,主持人想停止倒计时可以随时按“ 停止“按键,系统会自动进入 准备状态,等待主持人按 “ 抢答开始 “进入下次抢答计时。 4、如果主持人未按 “ 抢答开始 “ 键,而有人按了抢答按键,犯规抢答,LED上不断 闪烁 FF和犯规号数并响个不停,直到按下“停止“ 键为止。 5、P3.0 为开始抢答, P3.1 为停止, p1.0-p1.7为八路抢答输入数码管段选P0 口,位选 P2口低 3 位,蜂鸣器输出为 P3.6 口。P3.2 抢答时间调整结, P3.3 回答时间 调整,P3.4 为时间加 1 调整, P3.5 为时间减 1 调整。 (二)抢答器的工作原理 抢答器的工作原理是利用单片机的定时器T0、T1 中断完成 , 其余状态循环调用显 6 示子程序 , 用 4 个共阴极 LED数码管来显示,用 P0口作为数码管的八个段选,用P2口 中的 P2.0、P2.1、P2.2、作为 4 个数码管其中 3 个位选, P1口接 8 个按键,提供选手 抢答,P3.0-P3.5 四个接四个按键,提供开始、结束、答题时间调整、抢答时间调整, 加 1、减 1 调整之用。 抢答功能: 通过八路按键配合程序来实现抢答功能。当主持人按下抢答键开始抢答后,此时 任一路按下按钮均闭锁其它各路,由程序对键盘译码并显示最先按下抢答键的路数及 其当前时间。 抢答限时: 主持人按下抢答键后,设置30 秒为抢答时间 ( 此时间可在 1-99 秒之间修改 ) 。若 30 秒内无人抢答,倒计时为5 时发出报警,说明该抢答题目作废。此时闭锁所有抢答 按键,只有当主持人再次按下抢答键开始下一次抢答方可抢答。 答题限时: 当选手按下按钮时,启动倒计时( 此倒计时时间可在199 秒之间修改 ),倒计时 为 5 时发出报警,说明答题时间到。 三、硬件电路设计 1. 原理图的确定 单片机实现抢答的原理图: XTAL2 18 XTAL1 19 ALE 30 EA 31 PSEN 29 RST 9 P0.0/AD0 39 P0.1/AD1 38 P0.2/AD2 37 P0.3/AD3 36 P0.4/AD4 35 P0.5/AD5 34 P0.6/AD6 33 P0.7/AD7 32 P1.0 1 P1.1 2 P1.2 3 P1.3 4 P1.4 5 P1.5 6 P1.6 7 P1.7 8 P3.0/RXD 10 P3.1/TXD 11 P3.2/INT0 12 P3.3/INT1 13 P3.4/T0 14 P3.7/RD 17 P3.6/WR 16 P3.5/T1 15 P2.7/A15 28 P2.0/A8 21 P2.1/A9 22 P2.2/A10 23 P2.3/A11 24 P2.4/A12 25 P2.5/A13 26 P2.6/A14 27 U1 AT89C51 X1 12MHz C1 30pF C2 30pF C3 10u LS1 SPEAKER R1 10k R2 10k R3 10k R4 10k R5 10k R6 10k R7 10k R8 10k 发声喇叭 S1 S8 开始抢答 复位/停止 抢答时间调整 回答时间调整 加1S 减1S 抢答电路的接口电路 2. 抢答器电路 7 参考电路如上图所示。 该电路完成两个功能: 一是分辨出选手按键的先后, 并锁存 优先抢答者的编号,同时译码显示电路显示编号;二是禁止其他选手按键操作无效。 如有再次抢答需由主持人将S开关重新置 ,“清除”然后再进行下一次抢答。 3. 时序控制电路设计 a.主持人将控制开关拨到 “开始“位置时,扬声器发声, 抢答电路和定时电路进人正 常抢答工作状态。 b. 当参赛选手按动抢答键时,扬声器发声,抢答电路和定时电路停 止工作 4. 复位电路的设计 外部中断和内部中断并存,单片机硬件复位端,只要持续4 个机器周期的高电平即 可实现复位,硬件复位后的各状态可知寄存器以及存储器的值都恢复到了初始值,因 为本设计中功能中有倒计时时间的记忆功能,所以不能对单片机进行硬件复位,只能 用软件复位,软件复位实际上就是当程序执行完之后,将程序通过一条跳转指令让它 完成复位。复位电路如图3 所示: 复位电路原理图 5. 晶振电路的设计 MSC-51 单片机的定时控制功能是用时钟电路和振荡器完成的,而根据硬件电路的 8 不同,连接方式分为内部时钟方式和外部时钟方式。本设计中采用内部时钟方式。 单片机内部有一个反相放大器,XTAL1 、XTAL2分别为反相放大器的输入端 和输出端,外接定时反馈元件组成振荡器(内部时钟方式),产生时钟送至单片机内部 各元件。时钟频率越高,单片机控制器的控制节拍就越快,运算速度也就越快。 一般来说单片机内部有一个带反馈的线性反相放大器,外界晶振(或接陶瓷振 荡器)和电容就可组成振荡器,如图2-2 所示。加电以后延时一段时间(约10ms)振 荡器产生时钟, 不受软件控制, 图中 Y1 为晶振,震荡产生的时钟频率主要由Y1 确定。 电容 C1,C2 的作用有两个:一是帮助振荡器起振,二是对振荡器的频率起微调作用, 典型值为 30pF。 晶振电路的设计如图2-2 所示: 晶振电路原理图 6. 报警电路设计 报警电路用于报警,当遇到报警信号时,发出警报。一般喇叭是一种电感性图5 报警电路图。 8951 驱动喇叭的信号为各种频率的脉冲。因此,最简单的喇叭驱动方式 就是利用达林顿晶体管,或者以两个常用的小晶体管连接成达林顿架势。在右图中电 阻 R为限流电阻,在此利用晶体管的高电流增益,以达到电路快速饱和的目的。不过, 如果要由 P0输出到此电路,还需要连接一个10K的上拉电阻。 选手在设定的时间内抢答时,实现:优先判断、编号锁存、编号显示、扬声器提 示。当一轮抢答之后,定时器停止、禁止二次抢答、定时器显示剩余时间。如果再次 抢答必须由主持人再次作 “ 清除“ 和“ 开始“ 状态开关。 7. 选手抢答键(矩阵式键盘) AT89C51的 P1口做一个为选手抢答的输入按键引脚,P1.0 至 P1.7 轮流输出低电 位,给每一个选手编号1 至 8,当选手按下按钮时, P1口个端口的电平变化从P1口输 入,经单片机处理后从P0输出由数码管显示抢答者编号。 9 8. 显示与显示驱动电路 此电路包括显示和驱动,显示采用数码管,驱动用P2口, 违规者编号、抢答30 秒倒计时、正常抢答者编号和回答问题时间60秒倒计时,数码管采用动态显示。驱动 电路 P2口,查询显示程序利用P0口做段选码口输出P2低 3 位做位选码输出,当为低 电平则能驱动数码管使其显示数字。在+5V电压下接 10k 的电阻,保证正常压降。 四、软件设计 1、系统主程序设计 为了能够达到抢答的公平、公正、合理,应该在主持人发布抢答命令之前必须 先设定抢答的时间,因而在编开始抢答前的程序得先编写设定时间的程序,当时间设 好了之后,主持人发布抢答命令按下P1.7 按键,程序开始打开定时中断开始倒计时, 然后调用键盘扫描子程序,编写键盘扫描程序。当在扫描到有人按下了答题键,马上 关闭 T0、调用显示程序、封锁键盘。 10 系统主程序流程图 2. 显示抢答违规流程图 主程序 设置抢答时间和回答问题 定时器及并行口初始化 将时间计数器及启动标志值1 开中断 采并行口数据为0 吗? 启动标志 =1 吗? 判断抢答组号 报警电路发声 判断哪一组为抢答组 将抢答组号送显示 抢答时间到了吗? 输出响铃信号提示超时 继续抢答比赛吗? 系统返回 N Y Y Y N Y N 11 3. 抢答成功流程图 4. 程序清单 定时器 T1 时间初值 设 50ms 时间初值为Z,Z 的计算方法为 开始 响声提示 设置定时器初值并 启动 显示抢答者后 30 秒倒计时 60 秒答问题时间到并 响声提示 RET 开 报警一直提示 显示违规者编号 12 (216- Z)× 12=12×50×103,结果 Z=15536D=3CB0H OK EQU 20H ;抢答开始标志位 RING EQU 22H ;响铃标志位 DATA0 EQU 36H ;抢答按键口数据存放地址 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 ;一开始就运行定时器,以开始显示PPP.如果想重新计数,重置 TH1/TL1 就可以了;查询程序 START: MOV DATA0,#0FFH ;初始化 MOV R5,#0BH MOV R4,#0BH MOV R3,#0BH ACALL DISPLAY ;未开始抢答时候显示PPP JNB P3.3 ,INT0SUB JNB P3.4,TZ1 ;倒计时调整 JB P3.0,NEXT ;ddddddd ACALL DELAY JB P3.0,NEXT ;去抖动 ,如果 “开始键 “按下就向下执行,否者跳到非法抢答查询 SETB EX0 ;开放 INT0 ACALL BARK ;按键发声 13 MOV A,R1 MOV R6,A ;送 R1-R6,因为 R1 中保存了抢答时间 SETB OK ;抢答标志位 ,用于 COUNT只程序中判断是否查询抢 答(在使用锦囊时用作判断是抢答倒计时还是回答倒计时) MOV R3,#0AH ;抢答只显示计时,灭号数 AJMP COUNT ;进入倒计时程序,“查询有效抢答的程序“在 COUNT 里面 NEXT: JNB P1.0,FALSE1 JNB P1.1,FALSE2 JNB P1.2,FALSE3 JNB P1.3,FALSE4 JNB P1.4,FALSE5 JNB P1.5,FALSE6 JNB P1.6,TZ1 JNB P1.7,TZ2 AJMP START TZ1: JMP FALSE7 TZ2: JMP FALSE8 ;非法抢答处理程序 FALSE1: ACALL BARK ;按键发声 MOV R3,#01H AJMP ERROR FALSE2: ACALL BARK MOV R3,#02H AJMP ERROR FALSE3: ACALL BARK MOV R3,#03H AJMP ERROR FALSE4: ACALL BARK MOV R3,#04H AJMP ERROR FALSE5: ACALL BARK MOV R3,#05H AJMP ERROR FALSE6: ACALL BARK MOV R3,#06H AJMP ERROR FALSE7: ACALL BARK MOV R3,#07H AJMP ERROR FALSE8: ACALL BARK MOV R3,#08H AJMP ERROR ;INT0( 抢答时间 R1 调整程序 ) INT0SUB: MOV A,R1 MOV B,#0AH DIV AB 14 MOV R5,A MOV R4,B MOV R3,#0AH ACALL DISPLAY ;先在两个时间LED 上显示 R1 JNB P3.4,INC0 ;P3.4 为+1s 键,如按下跳到INCO JNB P3.5,DEC0 ;P3.5 为-1s 键,如按下跳到DECO JNB P3.1,BACK0 ;P3.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 AJMP INT1SUB INC1: MOV A,R2 CJNE A,#63H,ADD1 MOV R2,#00H ACALL DELAY1 AJMP INT1SUB ADD1: INC R2 ACALL DELAY1 AJMP INT1SUB 15 DEC1: MOV A,R2 JZ SETR2 DEC R2 ACALL DELAY1 AJMP INT1SUB SETR2: MOV R2,#63H ACALL DELAY1 AJMP INT1SUB BACK1: RETI ;倒计时程序 (抢答倒计时和回答倒计时都跳到改程序) COUNT: MOV R0,#00H ;重置定时器中断次数 MOV TH1,#3CH MOV TL1,#0B0H ;重置定时器 RECOUNT: MOV A,R6 ;R6 保存了倒计时的时间,之前先将抢答时间或回答时间 给 R6 MOV B,#0AH DIV AB ;除十分出个位/十位 MOV 30H,A ;十位存于 (30H) MOV 31H,B ;个位存于 (31H) MOV R5,30H ;取十位 MOV R4,31H ;取个位 MOV A,R6 SUBB A,#07H JNC LARGER ;大于 5s 跳到 LARGER, 小于等于 5s 会提醒 MOV A,R0 CJNE A,#0AH,FULL ;1s 中 0.5s 向下运行 CLR RING AJMP CHECK FULL: CJNE A,#14H,CHECK ;下面是 1s 的情况 ,响并显示号数并清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 ;如按下停止键退出 ACALL DISPLAY JB OK,ACCOUT ;如果是抢答倒计时,如是则查询抢答,否者跳过查询继续倒数 AJMP RECOUNT ACCOUT: MOV A,DATA0 JNB P1.0,TRUE1 16 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 MOV R3,#05H CLR OK AJMP COUNT TRUE6: ACALL BARK; 17 MOV A,R2 MOV R6,A MOV R3,#06H CLR OK AJMP COUNT TRUE7: ACALL BARK; MOV A,R2 MOV R6,A MOV R3,#07H CLR OK AJMP COUNT TRUE8: ACALL BARK; MOV A,R2 MOV R6,A MOV R3,#08H CLR OK AJMP COUNT ;犯规抢答程序 ERROR: MOV R0,#00H MOV TH1,#3CH MOV TL1,#0B0H MOV 34H,R3 ;犯规号数暂存与(34H) HERE: MOV A,R0 CJNE A,#0AH,FLASH ;0.5s 向下运行 -灭并停响 CLR RING MOV R3,#0AH MOV R4,#0AH MOV R5,#0AH ;三灯全灭 AJMP CHECK1 FLASH: CJNE A,#14H,CHECK1 ;下面是 1s 的情况 ,响并显示号数并清R0,重新计 SETB RING MOV R0,#00H MOV R3,34H ;取回号数 MOV R5,#0BH MOV R4,#0BH ;显示 PP 和号数 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 18 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,73H DAT2:DB 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh,00H,73H 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 溢出中断 (响铃程序 ) T0INT: MOV TH0,#0ECH MOV TL0,#0FFH JNB RING,OUT; CPL P3.6 ;RING 标志位为 1时候 P3.6口不断取反使喇叭发出一定频率的声音 OUT: RETI ;T1 溢出中断 (计时程序 ) T1INT: MOV TH1,#3CH MOV TL1,#0B0H INC R0 RETI ;INTT0 中断服务程序 INTT0:MOV DATA0,P1 CLR EX0 RETI END 19 五、仿真调试 试验的程序通过Keil 软件编译,产生 HEX 文件如图 4-1 所示: 程序在 Keil 软件上编译结果 通过 Proteus 进行仿真,如仿真结果所示,按下开始后,数码管开始倒计时,仿 真结果如图 4-2 所示。 20 Proteus 仿真的结果 当有选手按下按扭时,数码管显示选手号码并开始倒计时,如图4-3 所示 Proteus仿真的结果 通过仿真结果证实,该方案可行。该设计方案同过51 系列单片机的 P0 口作为段 选输出, 用 P2口作为位选输出,动态扫描 LED显示管, 显示时间。并通过接在 P3.0-P3.6 口的按键开关控制开始、结束、喇叭提示等功能。P1 口接选手按键,控制抢答。本设 计实现简单,成本较低很适合我们大学生动手实践。 21 六源程序 OK EQU 20H ;抢答开始标志位 RING EQU 22H ;响铃标志位 DATA0 EQU 36H ;抢答按键口数据存放地址 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 TR ;查询程序 START: MOV DATA0,#0FFH ;初始化 MOV R5,#0BH MOV R4,#0BH MOV R3,#0BH ACALL DISPLAY ;未开始抢答时候显示PPP JNB P3.3 ,INT0SUB JNB P3.4,TZ1 ;倒计时调整 JB P3.0,NEXT ;ddddddd ACALL DELAY JB P3.0,NEXT ;去抖动 ,如果 “开始键 “按下就向下执行,否者跳到非法抢答查询 SETB EX0 ;开放 INT0 ACALL BARK ;按键发声 MOV A,R1 22 MOV R6,A ;送 R1-R6,因为 R1 中保存了抢答时间 SETB OK ;抢答标志位 ,用于 COUNT 只程序中判断是否查询抢答 MOV R3,#0AH ;抢答只显示计时,灭号数 AJMP COUNT ;进入倒计时程序,“查询有效抢答的程序“在 COUNT 里面 NEXT: JNB P1.0,FALSE1 JNB P1.1,FALSE2 JNB P1.2,FALSE3 JNB P1.3,FALSE4 JNB P1.4,FALSE5 JNB P1.5,FALSE6 JNB P1.6,TZ1 JNB P1.7,TZ2 AJMP START TZ1: JMP FALSE7 TZ2: JMP FALSE8 ;非法抢答处理程序 FALSE1: ACALL BARK ;按键发声 MOV R3,#01H AJMP ERROR FALSE2: ACALL BARK MOV R3,#02H AJMP ERROR FALSE3: ACALL BARK MOV R3,#03H AJMP ERROR FALSE4: ACALL BARK MOV R3,#04H AJMP ERROR FALSE5: ACALL BARK MOV R3,#05H AJMP ERROR FALSE6: ACALL BARK MOV R3,#06H AJMP ERROR FALSE7: ACALL BARK MOV R3,#07H AJMP ERROR FALSE8: ACALL BARK MOV R3,#08H AJMP ERROR ;INT0(抢答时间 R1 调整程序 ) INT0SUB: MOV A,R1 MOV B,#0AH DIV AB MOV R5,A MOV R4,B 23 MOV R3,#0AH ACALL DISPLAY ;先在两个时间LED 上显示 R1 JNB P3.4,INC0 ;P3.4 为+1s 键,如按下跳到INCO JNB P3.5,DEC0 ;P3.5 为-1s 键,如按下跳到DECO JNB P3.1,BACK0 ;P3.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 AJMP INT1SUB INC1: MOV A,R2 CJNE A,#63H,ADD1 MOV R2,#00H ACALL DELAY1 AJMP INT1SUB ADD1: INC R2 ACALL DELAY1 AJMP INT1SUB DEC1: MOV A,R2 JZ SETR2 24 DEC R2 ACALL DELAY1 AJMP INT1SUB SETR2: MOV R2,#63H ACALL DELAY1 AJMP INT1SUB BACK1: RETI ;倒计时程序 (抢答倒计时和回答倒计时都跳到改程序) COUNT: MOV R0,#00H ;重置定时器中断次数 MOV TH1,#3CH MOV TL1,#0B0H ;重置定时器 RECOUNT: MOV A,R6 ;R6 保存了倒计时的时间,之前先将抢答时间或回答时间给R6 MOV B,#0AH DIV AB ;除十分出个位/十位 MOV 30H,A ;十位存于 (30H) MOV 31H,B ;个位存于 (31H) MOV R5,30H ;取十位 MOV R4,31H ;取个位 MOV A,R6 SUBB A,#07H JNC LARGER ;大于 5s 跳到 LARGER, 小于等于 5s 会提醒 MOV A,R0 CJNE A,#0AH,FULL ;1s 中 0.5s 向下运行 CLR RING AJMP CHECK FULL: CJNE A,#14H,CHECK ;下面是 1s 的情况 ,响并显示号数并清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 ;如按下停止键退出 ACALL DISPLAY JB OK,ACCOUT ;如果是抢答倒计时,如是则查询抢答,否者跳过查询继续倒数 AJMP RECOUNT ACCOUT: MOV A,DATA0 JNB P1.0,TRUE1 JNB P1.1,TRUE2 JNB P1.2,TRUE3 JNB P1.3,TRUE4 25 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

    注意事项

    本文(微机原理与接口技术课程设计之竞赛抢答器..pdf)为本站会员(tbuqq)主动上传,三一文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    经营许可证编号:宁ICP备18001539号-1

    三一文库
    收起
    展开