基于单片机的数字式竞赛抢答器开题报告

时间:2024.5.2

西安工业大学北方信息工程学院

毕业设计(论文)开题报告

题目:基于单片机的智能抢答器系统设计

系 别 光电信息系 专 业 光信息科学与技术 班 级 姓 名 学 号 导 师

20xx年 12 月 15 日

开题报告填写要求

1.开题报告作为毕业设计(论文)答辩委员会对学生答辩资格审查的依据材料之一。此报告应在指导教师指导下,由学生在毕业设计(论文)工作前期内完成。

2.开题报告内容必须按教务处统一设计的电子文档标准格式(可从教务处网页上下载)填写并打印(禁止打印在其它纸上后剪贴),完成后应及时交给指导教师审阅。

3.开题报告字数应在1500字以上,参考文献应不少于15篇(不包括辞典、手册,其中外文文献至少3篇),文中引用参考文献处应标出文献序号,“参考文献”应按附件中《参考文献“注释格式”》的要求书写。

4.年、月、日的日期一律用阿拉伯数字书写,例:“20xx年11月26日”。

毕业设计(论文)开题报告

基于单片机的数字式竞赛抢答器开题报告

毕业设计(论文)开题报告

基于单片机的数字式竞赛抢答器开题报告

毕业设计(论文)开题报告

基于单片机的数字式竞赛抢答器开题报告

毕业设计(论文)开题报告

基于单片机的数字式竞赛抢答器开题报告

毕业设计(论文)开题报告

基于单片机的数字式竞赛抢答器开题报告

参考文献

[1] 沈红卫.基于单片机的智能系统设计与实现[M].北京:电子工业出版社,2005.1.

[2] 徐建军.MCS-51系列单片机应用及接口技术[M].北京:人民邮电出版社,2003.6.

[3] 何立民.单片机应用技术大全.北京:北京航空航天大学出版社,1994.

[4] 何立民.MCS-51单片机应用系统设计系统配置与接口技术[M].北京:航空航天大学

[5] 楼然苗,李光飞.51系列单片机设计实例.北京:北京航空航天大学出版社,2004:24-35.

[6] 唐程山.数字电子技术.北京:人民邮电出版社,2005.

[7] 邓振杰,齐建玲.基于LabVIEW构建虚拟仪器系统[J].华北航天工业学院学报,2001,11(3):10-17.

[8] 李银华.电子线路设计指导.北京:北京航空航天大学出版社,1985.

[9] 何小艇.电子系统设计.浙江:浙江大学出版社,1994.

[10] 张培仁.基于C语言编程MCS-51单片机原理与应用.北京:清华大学出版社,2003:159-163.

[11] 杨振江,杜铁军,李群.流行单片机应用子程序及应用实例.西安:西安电子科技大学出版社,2002:88-89.

[12] 金显贺,王昌长.一种用于在红线检测局部放电的数字滤波技术.

[13] 康华光.电子技术基础数字部分.北京:北京高等教育出版社,2000.

[14] Joseph D.Greenfield:Practical Digital Design Using ICs

[15] Analog Device Corp.Data-Acquisition Databook,1991.

[16] 郭天祥.十天学会单片机.Youku网.


第二篇:基于单片机控制的智力竞赛抢答器


河南理工大学

单片机课程设计报告

基于单片机控制的智力竞赛抢答器

姓    名:              

学    号:             

专业班级:             

指导老师:             

所在学院:             

20##年9月18日

摘要

本设计是在学习过《单片机原理及应用技术》这门课程后,利用所学过的课堂知识,发挥自己的创新能力,并结合动手动脑能力,来设计一个由单片机控制的智力竞赛抢答器,并完成系统的软硬件设计及调试。它的基本要求是:能容许2—6组抢答;能显示抢答组号;各组计分,并能计分显示;比赛结束时,能发出报警声。

本设计中的控制系统核心是单片机AT89C51,它主要负责控制各个部分协调工作。在其外围接上复位电路、上拉电阻、数码管、按钮及扬声器。元件为:晶振X1、电容C1、C2、C3、 电阻RP1及7SEG-MPX4-CC-BLUE。

设计内容为:P1.0和P1.7由裁判控制,分别是抢答开始和停止键。P1.1—P1.6是6组抢答的输入口,P0口为数码管的段选口,位选口用的是P2口的低4位,外部中断0,P3.2为抢答记口,实现的对个队进行加减记分,外部中断1,P3.3实现了答题时间调整.P3.4—P3.5分别实现了时间的加一和减一.P3.6为蜂鸣器的控制口。外部中断和内部中断并存,单片机有硬件复位端,只要输入持续4个机器周期的高电平即可实现复位。外部还接有蜂鸣器用来发出报警音。采用7SEG-MPX4-CC-BLUE显示,它是共阴极的由高电平点亮。。系统仿真用到了伟福软件和PROTUCE软件,通过仿真可以完全显示出所设计系统的功能,对于程序的调试等有很大的帮助。

目录

1 概述………………………………………………………………………………3

  1.1 单片机的应用及课程设计的意义…………………………………………3

  1.2 设计任务及要求……………………………………………………………3

  1.3 设计思路……………………………………………………………………3

2 系统总体方案及硬件设计………………………………………………………4

  2.1 控制系统组成………………………………………………………………4

  2.2 硬件组成及所需原件………………………………………………………4

2.3 实验原理……………………………………………………………………8

3软件设计…………………………………………………………………………10

4 Proteus软件仿真………………………………………………………………11

5课程设计体会……………………………………………………………………12

参考文献……………………………………………………………………………13

附1:源程序代码…………………………………………………………………14

附2:系统原理图…………………………………………………………………22

1 概述

1.1  单片机的应用及课程设计的意义

单片机使一种特殊的计算机,它是在一块半导体芯片上集成了CPU、存储器RAM、ROM以及输入与输出接口电路的芯片。

由于单片机的集成度高、功能强、通用性好,特别是它具有体积小、重量轻、能耗低、价格便宜、可靠性高、抗干扰能力强和使用方便等独特优点,使单片机迅速得到了推广应用。

《单片机原理及应用技术》是电气专业的主要专业与特色课程之一。在学完本课程之后,通过课程设计再次巩固了所学的单片机基本原理,培养了我们运用所学知识和技能去分析和解决技术问题的能力,建立正确的设计思想,掌握设计的一般程序和方法。在设计中,锻炼自己的抽象思维和编写程序的能力。加深了对单片机课程的理解和熟练应用。

1.2  设计任务及要求

设计一个用于智力竞赛的抢答器,其功能的实现是由单片机控制的,满足

(1)能容许2-6组进行抢答。

(2)能显示抢答组号。

(3)各组记分,并能记分显示。

(4)比赛结束时,能发出报警声。

1.3  设计思路

AT89C51单片机的P1.0和P1.7由裁判控制,分别是抢答开始和停止键。P1.1-P1.6是6组抢答的输入口,    P0口为数码管的段选口,位选口用的是P2口的低4位,外部中断0,P3.2为抢答记口,实现的对个队进行加减记分,外部中断1,P3.3实现了答题时间调整.P3.4   P3.5分别实现了时间的加一和减一.P3.6为蜂鸣器的控制口。外部中断和内部中断并存,单片机有硬件复位端,只要输入持续4个机器周期的高电平即可实现复位。外部还接有蜂鸣器用来发出报警音。采用7SEG-MPX4-CC-BLUE显示,它是共阴极的由高电平点亮。软件设计部分由汇编语言编写。系统仿真用到了伟福软件和PROTUCE软件,通过仿真可以完全显示出所设计系统的功能,对于程序的调试等有很大的帮助。

2系统总体方案及硬件设计

2.1  控制系统组成

控制系统主要由单片机应用电路、存储器接口电路、显示接口电路组成。

其中单片机AT89C51是系统工作的核心,它主要负责控制各个部分协调工作。

2.2  硬件组成及所需原件

该系统的核心器件是AT89C51。

AT89C51是一种带4K字节闪烁可编程可擦除只读存储器的低电压,高性能CMOS8位微处理器,俗称单片机。AT89C2051是一种带2K字节闪烁可编程可擦除只读存储器的单片机。单片机的可擦除只读存储器可以反复擦除100次。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。AT89C单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。

下面介绍一下AT89C51:

主要特性:

·与MCS-51 兼容
·4K字节可编程闪烁存储器
·寿命:1000写/擦循环
·数据保留时间:10年
·全静态工作:0Hz-24Hz
·三级程序存储器锁定
·128*8位内部RAM
·32可编程I/O线
·两个16位定时器/计数器
·5个中断源
·可编程串行通道
·低功耗的闲置和掉电模式
·片内振荡器和时钟电路

管脚说明:

VCC:供电电压。

GND:接地。

P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。
P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收。

P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。

P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。

P3口也可作为AT89C51的一些特殊功能口,如下所示:
口管脚 备选功能
P3.0 RXD(串行输入口)
P3.1 TXD(串行输出口)
P3.2 /INT0(外部中断0)
P3.3 /INT1(外部中断1)
P3.4 T0(记时器0外部输入)
P3.5 T1(记时器1外部输入)
P3.6 /WR(外部数据存储器写选通)
P3.7 /RD(外部数据存储器读选通)
P3口同时为闪烁编程和编程校验接收一些控制信号。
RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。

ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时, ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。
/PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。

/EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。

XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。

XTAL2:来自反向振荡器的输出。

振荡器特性:

XTAL1和XTAL2分别为反向放大器的输入和输出。该反向放大器可以配置为片内振荡器。石晶振荡和陶瓷振荡均可采用。如采用外部时钟源驱动器件,XTAL2应不接。有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度。

芯片擦除:

整个PEROM阵列和三个锁定位的电擦除可通过正确的控制信号组合,并保持ALE管脚处于低电平10ms 来完成。在芯片擦操作中,代码阵列全被写“1”且在任何非空存储字节被重复编程以前,该操作必须被执行。
此外,AT89C51设有稳态逻辑,可以在低到零频率的条件下静态逻辑,支持两种软件可选的掉电模式。在闲置模式下,CPU停止工作。但RAM,定时器,计数器,串口和中断系统仍在工作。在掉电模式下,保存RAM的内容并且冻结振荡器,禁止所用其他芯片功能,直到下一个硬件复位为止。

在其外围接上复位电路、上拉电阻、数码管、按钮及扬声器。元件为:晶振X1、电容C1、C2、C3、 电阻RP1、P1.0和P1.7由裁判控制,分别是抢答开始和停止键。P1.1-P1.6是6组抢答的输入口,    P0口为数码管的段选口,位选口用的是P2口的低4位,外部中断0,P3.2为抢答记口,实现的对个队进行加减记分,外部中断1,P3.3实现了答题时间调整.P3.4   P3.5分别实现了时间的加一和减一.P3.6为蜂鸣器的控制口。

2.3  实验原理

    智力竞赛抢答器用单片机来设计制作完成,由于其功能的实现主要通过软件编程来完成, 采用单片机AT89C51,它是低功耗、高性能的CMOS型8位单片机。片内带有4KB的Flash存储器,且允许在系统内改写或用编程器编程。该智力竞赛抢答器的准确度很高,其误差主要由晶振自身的误差所造成。

AT89C51单片机由微处理器,存储器,I/O口以及特殊功能寄存器SFR等部分构成。其存储器在物理上设计成程序存储器和数据存储器两个独立的空间,片内程序存储器的容量为4KB,片内数据存储器为128个字节。89C51单片机有4个8位的并行I/O口:P0口,P1口,P2口和P3口。各个接口均由接口锁存器,输出驱动器,和输入缓冲器组成。P1口是唯一的单功能口,仅能用作通用的数据输入/输出口。P3口是双功能口除了具有数据输入/输出功能外,每条接口还具有不同的第二功能,如P3.0是串行输入口线,P3.1口是串行输出口线。在需要外部程序存储器和数据存储器扩展时,P0可作为分时复用的低8位地址/数据总线,P2口可作为高8位的地址总线。P3口也可作为AT89C51的一些特殊功能口,同时为闪烁编程和编程校验接收一些控制信号。

外部振荡电路单片机必须在AT89C51的驱动下才能工作.在单片机内部有一个时钟振荡电路,只需要外接一个振荡源就能产生一定的时钟信号送到单片机内部的各个单元。

外部振荡电路见图一

(图一)

外部中断和内部中断并存,单片机有硬件复位端,只要输入持续4个机器周期的高电平即可实现复位。硬件复位后的各状态可知寄存器及存储器的值都恢复到了初始值,应为本设计功能中有倒计时时间的记忆功能,所以不能对单片机进行硬件复位。只能用软复位。软复位实际上就是当程序执行完毕之后,将程序指针通过一条跳转指令让它跳转到程。复位电路采用图二所示:

(图二)

外部还接有蜂鸣器用来发出报警音。其图形如下:

采用7SEG-MPX4-CC-BLUE显示,它是共阴极的由高电平点亮。图形如下:

3软件设计

   智力竞赛抢答器要求有计时记忆功能,一次时间设置完, 复位后不需重新进行时间设定,通过键盘扫描输出按键信息,再通过单片机将它转换成能在七段数码管上显示字型码.

当抢答完毕时,会在数码管上显示抢答者数字号码提示以表示抢答成功.同时显示其分数,分数的加减可由裁判手动进行. 采用独立式键盘,可实现6路抢答. 在显示时使用的是数码管显示在本设计中根据实际情况采用的是动态显示方法. 并通过查表将字型码送给数码管显示的数字。软件去抖动,如果"开始键"按下就向下执行,否者跳到开始。采用倒计时程序,使其具有倒计时功能。回答倒计时20秒。抢答时间15秒。采用发声警报,起到报警作用。

系统流程图:

                4 Proteus软件仿真

用到了伟福软件,集成调试环境,集成了编缉器、编译器、调试器,支持软件模拟,支持项目管理功能强大的观察窗口,支持所有的数据类型。树状结构显示,一目了然,支持ASM(汇编)、C语言,多语言多模块源程序混合调试,在线直接修改、编译、调试源程序,错误指令定位。功能很强大。

    系统仿真还用到了PROTUCE软件,可通过仿真可以完全显示出所设计系统的功能,对于程序的调试等有很大的帮助。

系统仿真时首先要在使用伟福编译器,把所写的程序进行编译,同时在仿真器里设置生成HEX文件,编译无错误时进行PROTUCE仿真。首先要新建一个文档是DNS型的找出需要的器件,可以使用搜索功能。接着把各个器件放到合适的位置都要放到蓝色框内。然后根据自己的设计要求连线。等所有的元件都连接完成后可以把,伟福编译生成的无错误文件加载到AT89C51中,方法是,右键点中器件然后在用左键点击,出来一个对话框在program file后选择要添加文件,文件要求必须是HEX文件。然后可以点击运行观察现象,看与自己设置的符合否,如果不相符在查找错误进行修改,一般的错误都是程序中的,所以要认真的读取程序的每一个部分。

总体的PROTUCE图:

5课程设计体会

通过本次为期一周的设计使我的专业知识方面的水平得到了很大的提高,尤其在WAVE和PROTUES这两个专业软件的使用上有了很大的进步,使我懂得了以前不知道的和根本不会的东西,并且在编程方面也有了很大的进步。

设计中要想把知识很好地运用到一个系统当中去并不是一件容易的事,在刚接触到proteus时甚至不知道怎样去寻找元器件,这多亏了热心的同学们,他们不厌其烦地解答我的问题,当大家都不懂时我们就一起上网、去图书馆、请教老师,直到把问题搞清楚为止。最终我掌握了画图地技巧,但这只是最开始地一小步,真正的困难还在后面。之前单片机在我的脑海中就如雾里看花一样,迷迷糊糊的不知所云,对很多知识仅仅一知半解,不能系统地联系起来,甚至连一些最基本的语句都搞不懂。而这些缺点通过这次设计全部给暴露出来了。然而刚开始的时候很是沮丧,当困难总是要面对的,人不可能总是逃避。后来通过老师、同学以及上网查资料努力去克服种种困难,在不断的学习中摸索,把以前学过的和没有学到的一起重新学习,经过一个星期的努力,我的设计终于做出来了,这其中参考了不少的资料也得到了老师同学们的帮助,在此向帮助过我的老师和同学表示感谢。

整体来说,这次设计对我个人的启发还是很大的,我觉得自己知识近一步的增长了!虽然很多方面还都非常欠缺,但是我在设计过程中学到了很多以前没有学到的方法,在很大程度上提高了我的分析问题,解决问题的能力,增强了综合实践能力与自身的专业素质。

参考文献

[1] 余发山编著.《单片机原理机机及应用技术》.徐州:中国矿业大学出版社

[2] 张淑清 娄万录等主编.《单片微机计算机接口技术及其应用》.科学出版社

[3] 李广第主编.《单片机基础》.北京航空航天大学出版社

[3]杨凌霄主编.《微型计算机原理及应用》.中国矿业大学出版社

附1  源程序代码

OK EQU 20H

 RING EQU 22H

 ORG 0000H

 AJMP MAIN

 ORG 000BH

 AJMP T0INT

 ORG 0013H

 AJMP INT1SUB

 ORG 001BH

 AJMP T1INT

 ORG 0040H

MAIN:   MOV R1,#0FH

        MOV R2,#01EH

        MOV TMOD,#11H;设置未定时器/模式1

        MOV TH0,#0F0H

        MOV TL0,#0FFH;越高发声频率越高,越尖

        MOV TH1,#3CH

        MOV TL1,#0B0H;50ms为一次溢出中断

        SETB EA

        SETB ET0

        SETB ET1

 SETB EX1;允许3个中断,T0/T1/INT0/INT1

        CLR OK

        CLR RING

         SETB TR1

         SETB TR0;一开始就运行定时器,以开始显示888如果想重新计数,重置TH1/TL1就可以了

;=====查询程序=====

START:   MOV R5,#00H

         MOV R4,#00H

         MOV R3,#00H

ACALL DISPLAY;未开始抢答时候显示888

         JB P1.0,NEXT

         ACALL DELAY

         JB P1.0,NEXT;去抖动,如果"开始键"按下就向下执行,否者跳到非法抢答查询

         ACALL BARK;按键发声

         MOV A,R1

         MOV R6,A;送R1->R6,因为R1中保存了抢答时间

         SETB OK;抢答标志位,用于COUNT只程序中判断是否查询抢答

         MOV R3,0AH;抢答只显示计时,灭号数

         AJMP COUNT;进入倒计时程序,"查询有效抢答的程序"在COUNT里面

NEXT:JNB P1.1,FALSE1

     JNB P1.2,FALSE2

     JNB P1.3,FALSE3

     JNB P1.4,FALSE4

     JNB P1.5,FALSE5

     JNB P1.6,FALSE6

     AJMP START

     ;=====非法抢答处理程序=====

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

;=====INT1(答题对错加减分数程序)=====

INT1SUB:MOV R4,#0AH

        MOV R5,#0AH

        JNB P3.4,INC1

        JNB P3.5,DEC1

        JNB P1.7,BACK1

        ACALL DISPLAY

        AJMP INT1SUB

        MOV A,R3

        SUBB A,#01H

        JZ XXY1

        SUBB A,#02H

        JZ XXY2

        SUBB A,#03H

        JZ XXY3

        SUBB A,#04H

        JZ XXY4

        SUBB A,#05H

        JZ XXY5

        SUBB A,#06H

        JZ XXY6

   XXY1:MOV R7,41H

   XXY2:MOV R7,42H

   XXY3:MOV R7,43H

   XXY4:MOV R7,44H

   XXY5:MOV R7,45H

   XXY6:MOV R7,46H

   INC1:INC R7

        CJNE R3,#01H,L1

        MOV 51H,R7

     L1:CJNE R3,#02H,L2

        MOV 52H,R7

     L2:CJNE R3,#03H,L3

        MOV 53H,R7

     L3:CJNE R3,#04H,L4

        MOV 54H,R7

     L4:CJNE R3,#05H,L5

        MOV 55H,R7

     L5:CJNE R3,#06H,LL

        MOV 56H,R7

     LL:ACALL DELAY1

        AJMP INT1SUB

   DEC1:DEC R7

        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 P1.7,QUIT;如按下停止键退出

        ACALL DISPLAY

        JB OK,ACCOUT;如果是抢答倒计时,如是则查询抢答,否者跳过查询继续倒数(这里起到锁抢答作用)

        AJMP RECOUNT

 ACCOUT:JNB P1.1,TRUE1

        JNB P1.2,TRUE2

        JNB P1.3,TRUE3

        JNB P1.4,TRUE4

        JNB P1.5,TRUE5

        JNB P1.6,TRUE6

        AJMP RECOUNT

   QUIT:CLR OK;如果按下了"停止键"执行的程序

        CLR RING

        AJMP START

;=====正常抢答处理程序=====

TRUE1: ACALL BARK;按键发声

       MOV A,R2

       MOV R6,A;抢答时间R2送R6

       MOV R3,#01H

       MOV R7,41H

       CLR OK;因为答题的计时不再查询抢答,所以就锁了抢答

       AJMP COUNT

TRUE2:ACALL BARK;

      MOV A,R2

      MOV R6,A

      MOV R3,#02H

      MOV R7,42H

      CLR OK

      AJMP COUNT

TRUE3:ACALL BARK;

      MOV A,R2

      MOV R6,A

      MOV R3,#03H

      MOV R7,43H

      CLR OK

      AJMP COUNT

TRUE4:ACALL BARK;

      MOV A,R2

      MOV R6,A

      MOV R3,#04H

      MOV R7,44H

      CLR OK

      AJMP COUNT

TRUE5:ACALL BARK;

      MOV A,R2

      MOV R6,A

      MOV R3,#05H

      MOV R7,45H

      CLR OK

      AJMP COUNT

TRUE6:ACALL BARK;

      MOV A,R2

      MOV R6,A

      MOV R3,#06H

      MOV R7,46H

      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;显示FF和号数

      AJMP CHECK1

CHECK1:JNB P1.7,QUIT1

       ACALL DISPLAY

       AJMP HERE

QUIT1: CLR RING

       CLR OK

       AJMP START

;=====显示程序=====

DISPLAY:MOV 41H,51H

        MOV 42H,52H

        MOV 43H,53H

        MOV 44H,54H

        MOV 45H,55H

        MOV 46H,56H

        MOV DPTR,#DAT1;查表显示程序,利用P0口做段选码口输出/P2低三位做位选码输出,

        MOV A,r5

        MOVC A,@A+DPTR

        MOV P2,#01H

        MOV P0,A

        ACALL DELAY

        MOV DPTR,#DAT2

        MOV A,r4

        MOVC A,@A+DPTR

        MOV P2,#02H

        MOV P0,A

        ACALL DELAY

        MOV A,r3

        MOVC A,@A+DPTR

        MOV P2,#04H

        MOV P0,A

        ACALL DELAY

        MOV A,R7

        MOVC A,@A+DPTR

        MOV P2,#08H

        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溢出中断(响铃程序)=====

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

        END

附2  系统原理图

更多相关推荐:
八路数字抢答器开题报告

毕业设计论文开题报告题目8路数字抢答器学生姓名李军专业电气工程及其自动化指导教师肖曼一课题来源抢答器在单位团体的专业知识竞赛中使用各类直播录播的演播室栏目电视大奖赛也有着广泛的应用是调动现场观众参与热情提高栏目...

抢答器开题报告

毕业设计论文开题报告表12345

八路数字抢答器开题报告

毕业设计开题报告

八路数字抢答器开题报告

天津工程师范学院成人教育专科毕业设计开题报告

抢答器设计-开题报告

本科专业职业生涯设计开题报告书

数字电路式四路抢答器的设计与制作开题报告

毕业设计论文开题报告课题名称数字电路式四路抢答器的设计与制作院系电子与信息工程学院专业班级09应用电子二班学生姓名xxx学号20xx108218指导教师黄业安二一一年十二月三十日23456

电子抢答器 开题报告

滨州学院毕业设计论文开题报告题目抢答器的设计与实现系院计算机科学技术系年级20xx级专业计算机科学与技术班级2班学生姓名孙晓坤学号20xx110521指导教师吴殿红职称讲师滨州学院教务处二一一年十二月开题报告填...

抢答器开题报告

南京理工大学泰州科技学院毕业设计论文开题报告学生姓名专业设计论文题目指导教师董竞进学号1002570123电气工程及其自动化单片机八路抢答器设计张文20xx年1月16日开题报告填写要求1开题报告含文献综述作为毕...

智能抢答器开题报告

抢答器毕业论文设计开题报告论文题目智能抢答器设计系电子信息科学系学号姓名一论文选题的目的和意义在这个竞争激烈的社会中知识竞赛评选优胜选拔人才之类的活动愈加频繁在竞赛中都是多个选手一起参加如果采用举手回答问题的这...

基于单片机的八路抢答器开题报告

大学毕业设计论文开题报告

无线抢答器开题报告

本科毕业设计开题报告题目无线抢答器的设计专题院系电气与信息工程学院班级姓名学号指导教师教师职称黑龙江科技学院本科毕业设计开题报告

数字定时抢答器设计报告

数字电子技术课程设计报告题目数字定时抢答器姓名xxxxxxxxx学号20xx222120xx223420xx3733班级农业电气化及其自动化20xx级1班指导老师xxx设计时间20xx年10月15号10月28号...

数字抢答器开题报告(16篇)