课程设计
论文(设计)题目:八位竞赛抢答器的设计
学 院:__贵州大学明德学院__ 专 业:___通 信 工 程___ 班 级:___通信082班___
学 号:_082003111350,082003111336_ _082003111342,08200311361_ 学生姓名:___倪家醒,邓丽娟___ ___李林林,余韬____
指导教师:___王 许_____
2011年 7 月 14 日
目 录
摘 要 ................................................................... 2 Abstract ................................................................. 2 第一章 概述 ............................................................. 3 第二章 抢答器的硬件系统设计 .............................................. 3 2.1 方案对比 .......................................................... 3 2.1.1 控制器模块对比 ............................................... 3 2.1.2 电源方案的选择 ............................................... 3 2.1.3 抢答器键盘的选择 ............................................. 4 2.2 系统整体方案设计 .................................................. 4 2.3 系统硬件组成 ...................................................... 4 第三章 最小系统与主控模块的设计与实现 .................................... 4 3.1 ATC51简介 ....................................................... 4 3.2 单片机最小硬件系统的组成简述 ...................................... 6 3.2.1 电源电路 ..................................................... 7
贵州大学课程设计 第 2 页
3.2.2 时钟电路 ..................................................... 8 3.2.3 复位电路 ..................................................... 9 3.3 主流程图 ......................................................... 10 第四章 模块的设计与实现 ................................................. 10 4.1 抢答电路的设计 ................................................... 10 4.2 锁存器74HC573 .................................................... 10 4.3 主持人控制电路与扬声器的设计 ..................................... 11 4.4 显示电路的设计 ................................................... 12 第五章 软件的设计 ....................................................... 12 5.1语言选择 ............................................................. 12 5.2软件总体设计 ......................................................... 12 5.3系统程序 ............................................................. 13 总 结 ................................................................. 21 参考文献 ................................................................ 22 附 录 ................................................................. 22 附录1 主程序 ........................................................ 22 附录2 元件清单 ....................................................... 22
八位竞赛抢答器的设计
摘 要
随着单子技术的飞速发展,基于单片机的控制系统已广泛应用与工业、农业、电力、电子、智能楼宇等行业,微型计算机作为嵌入式控制系统的主体与核心,代替了传统的控制系统的常规电子线路。本设计是以八路抢答为基本理念。考虑到需设定限时回答的功能呢个,利用ATC51单片机及外围接口实现的抢答系统,利用单片机的定时器/计数器定时和记数的原理,将软、硬件有机地结合起来,使得系统能够正确地进行计时,同时使数码管能够正确地显示时间和抢答的号码。用开关做键盘输出,扬声器发生提示,并且有警告灯显示,正常工作时为绿灯,报警或抢答等违规信号时则出现红灯。
关键词:ATC51,抢答器,计数器
The design of eight contest responder
Abstract
Along with the list of the rapid development of technology, the control system based on SCM has been widely used in industry, agriculture,
electricity, electronics, intelligent building and other industries, the microcomputer embedded control system as the main and core, instead of the traditional control system of conventional electronic circuits. This design is eight way contest as the basic concept. Taking into account the need to set the time response function, using ATC51 MCU and peripheral interface of the answering system, the use of single-chip timer / counter timing and counting principle, the software and hardware combination, so that the system can correctly time, while the digital tube able to correctly display the time and answer in the number. By switching the keyboard output, speaker prompted occurred, and a warning light display, normal working hours for lights, alarm or other illegal signal when the answer appears red. Key words: ATC51,responder,counter
贵州大学课程设计 第 3 页
第一章 概述
数字技术是当前发展最快的学科之一,数字逻辑器件已从20世纪60年代的小规模集成电路(SSI)发展到目前的中、大规模集成电路(MSI,LSI)及超大规模集成电(VLSI)。相应地,数字逻辑电路的设计方法在不断的演变和发展,由原来单一的硬件逻辑设计发展成三个分支,即硬件逻辑设计(中、小规模集成器件)、软件逻辑设计(软件组装的LSI和VSI,如微处理器、单片机等)及兼有二者优点的专用集成电路(ASIC)设计。目前数字电子技术已经广泛地应用于计算机、自动控制、电子测量仪表、电视、雷达、通信等各个领域。例如在现代测量技术中,数字测量仪表不仅比模拟测量仪表精度高,功能高,而且容易实现测量的自动化和智能化。随着集成技术的发展,尤其是中,大规模和超大规模集成电路的发展,数字电子技术的应用范围将会更广泛地渗透到国民经济的各个部门,并将产生越来越深刻的影响。
随着科学技术的发展和普及,各种各样的竞赛越来越多,其中抢答器的作用也就显而易见。目前很多抢答器基本上采用小规模数字集成电路设计,使用起来不够理想。因此设计一更易于使用和区分度高的抢答器成了非常迫切的任务。现在单片机已进入各个领域,以其功耗小、智能化而著称,所以若利用单片机来设计抢答器,便使以上问题得以解决。针对以上情况,本文设计出以ATC51单片机为核心的八路抢答器。它能根据不同的抢答输入信号,经过单片机的控制并产生不同的与输入信号相对应的输出信号,最后通过LED数码管显示相应的路数,即使两组的抢答时间相差及微妙,也可分辨出是哪组优先按下的按键。抢答器主要用于选手做抢答题时,选手进行抢答,抢到题的选手来回答问题。抢答器不仅考验选手的反应速度同时也要求选手具备足够的知识面和一定的勇气。选手们都站在同一个起跑线上,体现了公平公正的原则。传统普通抢答器主要存在一下缺陷:
1.在一次抢答过程中,当出现超前违规抢答时,只能处理违规抢答信号,而对没有违规的有效抢答信号不能进行处理,因而使该次抢答过程变成无效。
2.当有多个违规抢答时,普通抢答器或采用优先编码电路选择其中一个,或利用抢答电路电子元件的“竞争”选择其中一个。对于或者由于抢答电路制作完毕后电子元件被固定。各路抢答信号的“竞争”能力也被固定,因而本质上也有优先权。普通抢答器存在不公平性。
3.当有多个违规抢答时,普通抢答器只能“抓住”其中一个而出现“漏洞”。
第二章 抢答器的硬件系统设计
2.1 方案对比
总的方案来说,可以利用集成芯片电路来控制选手抢答,但有更为精准、公平的控制电路,即51单片来控制电路,给各个选手一个公平竞争的机会。
一、用集成芯片通过电路直接控制选手抢答器的按钮,用CT74LS175触发器来连接电路,电路中还包括三个与非门。在这个电路中就需要有很多的配合,比如说选手抢答的限定时间,选手按钮的清零等等,显得比较麻烦。
二、用ATC51单片机来控制电路,简单、方便。最重要的就是写程序,如何通过程序来达到抢答器的作用,利用51单片机来说补充了集成电路中所缺的遗漏,更是在集成电路上更加精准,对选手更加的公平,让选手都站在同一的战线上。故选用此方案。 2.1.1 控制器模块对比
控制器主要用于个模块控制对显示、抢答、计时等。控制器的选择有以下两种方案:
方案一:采用FPGA(现场可编程门列阵)作为系统的控制器。FPGA可以实现各种复制的逻辑功能,规模大,密度高,它将所有期间集成在一块芯片上,减小了体积,提高了稳定性,并且可以应用EDA软件仿真、调试,易于进行功能扩展。FPGA采用并行的输入输出方式,提高了系统的处理速度,适合作为大规模实时系统的控制核心。但由于本设计对数据处理的速度要求不高,FPGA的高速处理的优势得不到充分体现,并且由于其集成度高,使其成本偏高,同时由于芯片的引脚较多,实物硬件电路板布线复杂,加重了电路设计和实际焊接的工作。
方案二:采用ATMEL公司的ATC51作为系统控制器的CPU方案。单片机算术运算功能强,软件编程灵活、自由度大,可以用软件编程实现各种算法和逻辑控制,并且由于其功耗低、体积小、技术成熟和成本低等优点,使其在各个领域应用广泛。基于以上分析拟定方案二。 2.1.2 电源方案的选择
系统需要多个电源,ATC51使用5V稳压电源:
贵州大学课程设计 第 4 页
方案一:采用升压型稳压电路。用两片MC34063芯片分别将3V的电池电压进行直流崭波调压,得到5V的稳压输出。只需使用两节电池,既节约了电池,又减少系统体积重量但该电路供电电流小,供电时间短,无法使相对庞大的系统稳定运作。
方案二:采用三端稳压集成78L05得到5V的稳定电压。利用该方法方便简单,工作稳定可靠。综上所述,选择方案二,采用三端稳压器电路。
2.1.3 抢答器键盘的选择
键盘是单片机不可缺少的输入设备,是实现人机对话的纽带。键盘按结构形式可以分为非编码键盘和编码键盘,前者用软件方法产生键码,而后者则用硬件方法来产生键码。在单片机中使用的都是非编码键盘,因为非编码键盘结构简单,承建低廉,非编码键盘的类型很多,常用的有式键盘,行列式键盘等。
方案一:式键盘
键盘接口中使用多少根I/O口,键盘中就有几个按键,键盘接口使用了8根I/O口线,该键盘就有8个按键,这种类型的键盘,其按键比较少,且键盘中各按键的工作互不干扰。因此可以根据实际需要对键盘中的按键灵活的编码。
方案二:行列式键盘是用N条I/O线作为行线,M条I/O线作为列线组成的键盘,在行线和列线的每个交叉点上,设置一个按键中按键的个数是M*N个,这种形式的键盘结构,能够有效的提高单片机系统中I/O的利用率,行列使用与按键输入多的情况。
综上所述,使用方案一。
2.2 系统整体方案设计
本文以ATC51单片机为核心设计的八路抢答器方案是:
 抢答器同时供8名选手或8个代表队比赛,分别用8个按钮S0 ~ S7表示。  设置一个系统清除和抢答控制开关S,该开关由主持人控制。
 抢答器具有锁存与显示功能。即选手按动按钮,锁存相应的编号,并在优先抢答选手的编号一直保持到主持人将系统清除为
止。
 抢答器具有定时抢答功能,且一次抢答的时间由主持人设定(如30秒)。当主持人启动\"开始\"键后,定时器进行减计时,同
时扬声器发出短暂的声响,声响持续的时间0.5秒左右。
 参赛选手在设定的时间内进行抢答,抢答有效,定时器停止工作,显示器上显示选手的编号和抢答的时间,并保持到主持人
将系统清除为止。
 如果定时时间已到,无人抢答,本次抢答无效,系统报警并禁止抢答,定时显示器上显示00。
2.3 系统硬件组成
抢答器同时提供8名选手或8个代表队比赛,分别用8个按钮S1-S8表示。设置一个系统清除和抢答控制按钮,该按钮由主持人控制,抢答器具有所存与显示功能呢个。其工作原理为:接通电源后,主持人将开关拨到“清除”状态,抢答器处于禁止状态,编号显示器灭灯,定时器显示设定时间;主持人将开关置“开始”状态,宣布开始抢答器工作。定时器倒计时,扬声器给出声响提示。选手在定时时间内抢答时,抢答器完成:优先判断、编号锁存、编号显示、扬声器提示。当一轮抢答之后,定时器停止、禁止二次抢答、定时器显示剩余时间。如果再次抢答必须由主持人再次操作“清除”和“开始”状态开关。其框图如图2.1所示:
抢答信号输入 ATC51 LED显示 主持人控制信号输入 扬声器发音
图2.1 系统框图
第三章 最小系统与主控模块的设计与实现
3.1 ATC51简介
ATC51是美国ATMEL公司生产的低电压,高性能CMOS8位单片机,片内含4k bytes的可反复擦写的只读程序存储器(PEROM)和128 bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位处理器(CPU)和Flash存储单元,功能强大ATC51单片机(图3-1)可为您提供许多高性价比的应用场合,可灵活应用于各种
贵州大学课程设计 第 5 页
控制领域。 主要性能参数:
·与MCS-51产品指令系统完全兼容
·4k字节可重擦写Flash闪速存储器 ·1000次擦写周期
·全静态操作:0Hz-24MHz ·三级加密程序存储器 ·128×8字节内部RAM ·32个可编程I/O口线 ·2个16位定时/计数器 ·6个中断源
·可编程串行UART通道
·低功耗空闲和掉电模式 图3-1 ATC51单片机 功能特性概述:
ATC51 提供以下标准功能:4k 字节Flash 闪速存储器,128字节内部RAM,32 个I/O 口线,两个16位定时/计数器,一个5向量两级中断结构,一个全双工串行通信口,片内振荡器及时钟电路。同时,ATC51可降至0Hz的静态逻辑操作,并支持两种软件可选的节电工作模式。空闲方式停止CPU的工作,但允许RAM,定时/计数器,串行通信口及中断系统继续工作。掉电方式保存RAM中的内容,但振荡器停止工作并禁止其它所有部件工作直到下一个硬件复位。
引脚功能说明
·Vcc:电源电压 ·GND:地
·P0 口:P0 口是一组8 位漏极开路型双向I/O 口,也即地址/数据总线复用口。作为输出口用时,每位能吸收电流的方式驱动8个TTL逻辑门电路,对端口写“1”可作为高阻抗输入端用。在访问外部数据存储器或程序存储器时,这组口线分时转换地址(低8位)和数据总线复用,在访问期间激活内部上 拉电阻。
在FIash编程时,P0口接收指令字节,而在程序校验时,输出指令字节,校验时,要求外接上拉电阻。
·P1口:P1是一个带内部上拉电阻的8位双向I/O口,P1的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口。作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(IIL)。
FIash编程和程序校验期间,P1接收低8位地址。
·P2口:P2是一个带有内部上拉电阻的8位双向I/O口,P2的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口,作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(IIL)。在访问外部程序存储器或16位地址的外部数据存储器(例如执行MOVX@DPTR指令)时,P2口送出高8位地址数据。在访问8 位地址的外部数据存储器(如执行MOVX@RI 指令)时,P2 口线上的内容(也即特殊功能寄存器(SFR)区中R2寄存器的内容),在整个访问期间不改变。
Flash编程或校验时,P2亦接收高位地址和其它控制信号。
·P3口:P3口是一组带有内部上拉电阻的8 位双向I/O 口。P3 口输出缓冲级可驱动(吸收或输出电流)4 个TTL逻辑门电路。对P3 口写入“1”时,它们被内部上拉电阻拉高并可作为输入端口。作输入端时,被外部拉低的P3 口将用上拉电阻输出电流(IIL)。
P3口除了作为一般的I/O口线外,更重要的用途是它的第二功能,如下表3-1所示:
贵州大学课程设计 第 6 页
表 3-1 P3口的第二功能
端口引脚 第二功能
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口还接收一些用于Flash闪速存储器编程和程序校验的控制信号。
·RST:复位输入。当振荡器工作时,RST引脚出现两个机器周期以上高电平将使单片机复位。
·ALE/PROG: 当访问外部程序存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低8位字节。即使不访问外部存储器,ALE 仍以时钟振荡频率的l/6 输出固定的正脉冲信号,因此它可对外输出时钟或用于定时目的。要注意的是:每当访问外部数据存储器时将跳过一个ALE脉冲。
对Flash存储器编程期间,该引脚还用于输入编程脉冲(PROG)。
如有必要,可通过对特殊功能寄存器(SFR)区中的8EH单元的DO 位置位,可禁止ALE 操作。该位置位后,只有一条MOVX和MOVC指令ALE才会被激活。此外,该引脚会被微弱拉高,单片机执行外部程序时,应设置ALE无效。
·PSEN:程序储存允许(PSEN)输出是外部程序存储器的读选通信号,当ATC51 由外部程序存储器取指令(或数据)时,每个机器周期两次PSEN有效,即输出两个脉冲。在此期间,当访问外部数据存储器,这两次有效的PSEN信号 不出现。
·EA/VPP:外部访问允许。欲使CPU仅访问外部程序存储器(地址为0000H—FFFFH),EA端必须保持低电平(接地)。需注意的是:如果加密位LB1被编程,复位时内部会锁存EA端状态。如EA端为高电平(接VCC端),CPU则执行内部程序存储器中的指令。Flash存储器编程时,该引脚加上+12V的编程允许电源Vpp,当然这必须是该器件是使用12V编程电压Vpp。
·XTAL1:振荡器反相放大器的及内部时钟发生器的输入端。 ·XTAL2:振荡器反相放大器的输出端。
由于外部时钟信号是通过一个2分频触发器后作为内部时钟信号的,所以对外部时钟信号的占空比没有特殊要求,但最小高电平持续时间和最大的低电平持续时间应符合产品技术条件的要求。
————
————
————
————
————
————
3.2 单片机最小硬件系统的组成简述
要使单片机工作起来,最基本的电路构成为: 1.电源电路:向单片机供电;
2.时钟电路:单片机工作的时间基准,决定单片机的工作速度; 3.复位电路:确定单片及工作的起始状态,完成单片机的启动过程。 连接方式如图3-2所示:
3.2.1 电源电路
5V输出的直流稳压电源电路,稳压芯片用通用78L05。
图 3-2 最小系统的设计图
贵州大学课程设计 第 7 页
图3-3 220V转5V电路图
ATC51单片机的工作电压范围:4.0-5.5V,所以通常给单片机外接5V直流电源。连接方式为如图3-4所示;
在设计电源电路前,因为单片机所工作的范围在4.0-5.5V,所以需要对交流电压220V对其进行转变,下图3-3是最常用的220V输入
贵州大学课程设计 第 8 页
图 3-4 电源电路
GND(20脚):接电源地端; VCC(40脚):接电源+5V端。
3.2.2 时钟电路
本设计所采用的时钟信号为C51中的内部形式,内部方式实现单片机的时钟电路,利用单片机芯片上提供的反相放大器电路,在XTAL1和XTAL2引脚之间外接振荡器(晶体振荡器或陶瓷振荡器,Crystal or Ceramic Resonator)构成一个自激振荡器,自激振荡器与单片机内部的始终发生器(Clock Generator)构成单片机的时钟电路。如图中,由OSC和电容C1和C2构成了并联谐振回路作为定时元件,振荡源OSC可选用晶体振荡器或陶瓷振荡器,频率为1.2—12MHz,电容C1、C2为5—30pF,起频率微调作用。如图3-5所示:
3.2.3 复位电路
图 3-5 时钟电路
贵州大学课程设计 第 9 页
路综合在一起,这样既可以在每一次电源接通时系统复位,也可以满足强制复位的要求。如图3-6所示:
在单片机工作过程中,由于某种原因使单片机陷入“死机”状态,或根据需要采用强制手段使程序重新开始执行等等,需要采用
使单片机复位。因为我们按动按钮开关使其闭合的时间远远大于单片机复位所用的时间。通常把上电自动复位电路和按钮开关复位电
按钮开关复位方式。当按钮开关S按下时,+5V电源通过S接入电阻构成的电路网络,设计时使电阻上的分压达到高电平的阀值,就可以
贵州大学课程设计 第 10 页
图 3-6 复位电路
3.3 主流程图
一个硬件系统的设计都伴随着软件的设计,本设计具有倒计时功能。首先设置其倒计时时间,在主持人没按键时,显示器显示时间为00,号数为0。当主持人按键开始后,时间开始倒计时,同时八位选手开始抢答,如果哪位选手抢答到后,显示器上将显示这位选手的号数,如果在倒计时完成后都没人抢答,则重新开始,如果有选手抢答到,则灯亮扬声器响并回答问题。如图3-7所示:
开始 读取倒计时时间设置 Y 主持人按键开始? Y 开始抢答 N 有键按下? Y 按键处理 倒计时时间到? Y 超时处理 N 等待 结束本轮回答? Y N
图3-7 主流程图
第四章 模块的设计与实现
4.1 抢答电路的设计
最简单的编码方式就是根据I/O输入口所直接反映的相应按键,按下的状态进行编码,称直接状态吗,对于这样的编码的式键盘,CPU可以通过直接读取I/O口的状态来获取按键的直接状态编码值,根据这个值直接进行按键识别,这样形式的键盘结构简单,按键识别容易。式键盘的缺点是需要占用比较多的I/O口线,当单片机应用系统键盘中需要的按键比较少或I/O口线比较富余时,可以采用这样类型的按键。
键盘接口中使用多少根I/O线,键盘中就有几个按键,本设计键盘接口使用了8根I/O口线,该键盘就有8个按键,这种类型的键盘,其按键比较少,且按键比较少,键盘中各按键的工作互不干扰。因此可以根据实际需要对键盘中的按键灵活的编码。如图4.1:
图4.1 抢答电路的设计
4.2 锁存器74HC573
74HC573 跟 LS/AL573 的管脚一样。器件的输入是和标准 CMOS 输出兼容的;加上拉电阻,他们能和 LS/ALSTTL 输出兼容。当锁存使能端LE为高时,这些器件的锁存对于数据是透明的(也就是说输出同步)。当锁存使能变低时,符合建立时间和保持时间的数据
贵州大学课程设计 第 11 页
会被锁存。
1脚是输出使能; 11脚是锁存使能; D是输入; Q是输出;
H是高电平,L是低; /OE是1脚 LE是11脚;
/OE 接低电平,使芯片内部数据保持器输出端与芯片8位输出端之间连通; LE 端的作用是通过高低电平控制8位输入与内部数据保持器输入端的连通与断开; 当 LE = 0 时,P0端口的8位数据线与74HC573内部数据保持器的输入端断开; 当 LE = 1 时,P0端口的8位数据线与74HC573内部数据保持器的输入端连通。
图4.2 锁存器与单片机的连接
4.3 主持人控制电路与扬声器的设计
当有信号源从P2.7口输入时,扬声器发出声响,可根据定时器设计发声时间的长短,此信号源可以为抢答开始、抢答时间到、选手正常抢答、选手非法抢答、答题时间到都会同过此扬声器发出一定时间的声响,并且设计了一个LED显示来提示是否为报警信号,当正常信号源来的时候,此灯为绿灯,发出声响,但是如果为报警信号来时,此灯为红灯,并发出声响。
同时主持人通过S按键输入信号,提示答题时间开始、清除,扬声器同时发出声响,发出声响的时候优先判断是哪位抢答到答题的机会,并在LED上显示出来,同时显示开始后的时间,此电路设计答题时间为30秒,扬声器响的时间为0.5秒。当主持人清除系统信号的时候,显示器上显示时间为00,选手号数也为0。设计电路如图4.3所示:
图4.3主持人控制电路与扬声器的设计
贵州大学课程设计 第 12 页
4.4 显示电路的设计
本设计采用
LED数码管显示,利用软件设计其倒计时功能,当主持人未按键开始抢答时,时间显示数码管显示为00,当开始抢答
后,显示为30并开始倒计时,如果在此期间有人按键抢答,则在第三个数码管上显示响应的号数,当然如果出现违规的选手则不能参与本次回答,因为违规的时候会出来二极管LED显示红灯,同时扬声器发出声响,时间大约为0.5秒,如果有人正常按键抢答,则出现绿灯,扬声器也发出声响时间也为0.5秒左右。具体的硬件设计如图4-4所示:
图4-4 显示电路硬件图
第五章 软件的设计
5.1语言选择
在目前单片机的发展中,其编程语言主要有C语言和汇编语言。C语言是高级语言,编写起来比较简单易维护,汇编语言介于机器语言和高级语言之间,更接近于硬件,但编写起来比较冗长。但介于本次程序不是太复杂,所以我们这一组选择的程序采用汇编语言来编写。
5.2软件总体设计
本程序采用子程序设计,在主程序中调用子程序来完成特定的功能,这样程序会通俗易懂,同时也有利于程序的调试和修改。 本程序的程序流程如下:
贵州大学课程设计 第 13 页
初始化 显示FFF 开始键按下? 正常抢答 加一键按下? 非法抢答处理 调整抢答减一键按下? 时间 显示犯规 回答时间 显示抢答号并倒计时
程序流程图
5.3系统程序
P1.0为开始抢答,P1.7为停止,P1.1-P1.6为六路抢答输入,数码管段选P0口,OK EQU 20H; 抢答开始标志位 RING EQU 22H; 响铃标志位 ORG 0000H AJMP MAIN
ORG 0003H ;外部中断0 AJMP INT0SUB ORG 000BH ;T0中断 AJMP TOINT
ORG 0013H ;外部中断1 AJMP INT1SUB ORG 001BH ;T1中断 AJMP T1INT ORG 0040H
MAIN: MOV R1, #0FH; 初始欠打时间为15S
MOV R2,#0AH; 初始答题时间为10S
MOV TMOD,#11H; 设置为定时器T0,T1/模式1 MOV TH0,#0F0H
MOV TL0, #0FFH; 越高发声频率越高,越尖 MOV TH1,#3CH
MOV TL1,#0B0H; 50ms为一次溢出中断 SETB EA SETB ET0 SETB ET1
位选P2口,蜂鸣器输出为P3.6口。
贵州大学课程设计 第 14 页
SETB EX0
SETB EX1; 允许四个中断,T0/T1/INT0/INT1 CLR OK CLR RING SETB TR1
SETB TR0; 一开始就运行定时器,一开始显示FFF,如果想 重新计数,重置TH1/TL1
就可以了
查询程序
START: MOV R5,#0BH
MOV R4,#0BH MOV R3, #0BH
ACALL DISPLAY; 未开始抢答时候显示FFF JB P3.1, NEXT ACALL DELAY
JB P3.1, NEXT; 去抖动,如果“开始键”按下就向下执行, 非法抢答查询
ACALL BARK; 按键发声 MOV A,R1
MOV R6,A; 送R1到R6,因为R1中保存了抢答时间
SETB OK;抢答标志位,用于COUNT子程序中判断是否查询抢答 MOV R3,0AH;抢答只显示时,灭号数
ALMP COUNT; 进入倒计时程序,“查询有效抢答的程序”在 COUNTNEXT: 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,FALSE7 JNB P1.7,FALSE8
非法抢答处理程序:
FALSE1:ACALL BARK; 按键发声
MOV R3,#01H ALMP ERROR
FALSE2:ACALL BARK
MOV R3,#02H ALMP ERROR
FALSE3:ACALL BARK
MOV R3,#03H ALMP ERROR
FALSE4:ACALL BARK
MOV R3,#04H
否则跳到
里面
贵州大学课程设计 第 15 页
ALMP ERROR
FALSE5:ACALL BARK
MOV R3,#05H ALMP ERROR
FALSE6:ACALL BARK
MOV R3,#06H ALMP ERROR
FALSE7:ACALL BARK
MOV R3,#07H ALMP ERROR
FALSE8:ACALL BARK
MOV R3,#08H
ALMP ERROR
INT0(抢答时间R1调整程序): INT0SUB: MOV A,R1
MOV B,#0AH DIV AB MOV R5,A MOV R4,B MOV R3,#0AH
ACALL DISPLAY; 先在两个时间LED上显示R1 JNB P3.2,INC0; P3.2为+1s键,如按下跳到INC0 JNB P3.3,DEC0; P3.3为-1s键,如按下跳到DEC0 JNB P3.0,BACK0; P3.0为+1s键,如按下跳到BACK0 AJMP INT0SUB
INC0: MOV A,R1
CJNE A,#63H,ADD0; 如果不是99,R2加1,如果加到99了, R1
就置0,重新加起
MOV R1,#00H ACALL DELAY1 AJMP INT0SYB
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
贵州大学课程设计 第 16 页
INT1(回答时间R2调整程序):
INT0SUB:MOV A,R2
MOV B,#0AH DIV AB MOV R5,A MOV R4,B MOV R3,#0AH
ACALL DISPLAY; 先在两个时间LED上显示R1 JNB P3.2,INC1; P3.2为+1s键,如按下跳到INC0 JNB P3.3,DEC1; P3.3为-1s键,如按下跳到DEC0 JNB P3.0,BACK1; P3.0为+1s键,如按下跳到BACK0 AJMP INT1SUB
INC1: MOV A,R2
CJNE A,#63H,ADD1; 如果不是99,R2加1,如果加到99了, R1置0,重新加起
MOV R2,#00H ACALL DELAY1 AJMP INT1SYB
ADD1: INC R2
ACALL DELAY1 AJMP INT1SUB
DEC1: MOV A,R2
JZ SETR2; 如果R2 为0,R2就置99 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保存了倒计时的时间,之前先将抢答时间或回 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
答时间给R6
就
贵州大学课程设计 第 17 页
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向下运行,否则跳到查“停/XX DEC R6; 计时一秒R6自动减1 MOV R0,#00H
CHECK: JNB P3.0,QUIT; 如按下停止键退出
ACALL DISPLAY
JB OK,ACCOUT; 如果是抢答倒计时,如是则查询抢答,否则跳过查询继续倒数(这里起到锁抢答作用)AJMP RECOUNT
ACCOUT:JNB P1.0, TRUE1
JNB P1.1, TRUE2 JNB P1.2, TRUE3 JNB P1.3, TRUE4 JNB P1.4, TRUE5 JNB P1.5, TRUE6 JNB P1.6, TRUE7 JNB P1.7, TRUE8 AJMP RECOUNT
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
TURE2:ACALL BARK; 按键发声
MOV A,R2
MOV R6,A; 抢答时间R2送R6 MOV R3,#02H
显示” 贵州大学课程设计 第 18 页
CLR OK; 因为答题的计时不再查询抢答,所以就锁了抢答 AJMP COUNT
TURE3:ACALL BARK; 按键发声
MOV A,R2
MOV R6,A; 抢答时间R2送R6 MOV R3,#03H
CLR OK; 因为答题的计时不再查询抢答,所以就锁了抢答 AJMP COUNT
TURE4:ACALL BARK; 按键发声
MOV A,R2
MOV R6,A; 抢答时间R2送R6 MOV R3,#04H
CLR OK; 因为答题的计时不再查询抢答,所以就锁了抢答 AJMP COUNT
TURE5:ACALL BARK; 按键发声
MOV A,R2
MOV R6,A; 抢答时间R2送R6 MOV R3,#05H
CLR OK; 因为答题的计时不再查询抢答,所以就锁了抢答 AJMP COUNT
TURE6:ACALL BARK; 按键发声
MOV A,R2
MOV R6,A; 抢答时间R2送R6 MOV R3,#06H
CLR OK; 因为答题的计时不再查询抢答,所以就锁了抢答 AJMP COUNT
TURE7:ACALL BARK; 按键发声
MOV A,R2
MOV R7,A; 抢答时间R2送R6 MOV R3,#02H
CLR OK; 因为答题的计时不再查询抢答,所以就锁了抢答 AJMP COUNT
TURE8:ACALL BARK; 按键发声
MOV A,R2
MOV R6,A; 抢答时间R2送R6 MOV R3,#08H
CLR OK; 因为答题的计时不再查询抢答,所以就锁了抢答 AJMP COUNT MOV A,R2 MOV R6,A MOV R3,#03# CLR OK AJMP COUNT
TRUE4:ACALL BARK;
贵州大学课程设计 第 19 页
MOV A,R2 MOV R6,A MOV R3,#04H CLR OK AJMP COUNT
TRUE5:ACALL BANK;
MOV A,R2 MOV R6,A MOV R3,#05H CLR OK AJMP COUNT
TRUE6:ACALL BANK;
MOV A,R2 MOV R6,A MOV R3,#06H CLR OK AJMP COUNT
TRUE7:ACALL BANK;
MOV A,R2 MOV R6,A MOV R3,#07H CLR OK AJMP COUNT
TRUE8:ACALL BANK;
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
贵州大学课程设计 第 20 页
MOV R3,34 H; 取回号数 MOV R5,#0BH
MOV R4,#0BH; 显示FF和号数 AJMP CHECK1
CHECK1:JNB P3.0.QUIT1
ACALL DISPLAY AJMP HERE
QUIT1:CLR RING
CLR OK AJMP START
显示程序:
DISPLAY: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 RET
DAT1:DB 00H,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh,00H,71H; “灭”,“1”,“2”,“3”,“F”
DAT2:DB 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh,00H,71H
DELAY1:MOV 35H,#08H LOOPO: ACALL DISPLAY
DJNZ 35H,LOOPO RET
;;;;;延时(显示和去抖动用到);;;;; DELAY: MOV 32H,#12H LOOP: MOV 33H,#0AFH LOOP1:DJNZ 33H,LOOP1
DJNZ 32H,LOOP RET 发声程序:
“5”,“7”,“9”,“4”,“6”,“8”,“灭”, 贵州大学课程设计 第 21 页
BARK: SETB RING
ACALL DELAY1 ACALL DELAY1 CLR RING; 按键发声 RET
;;;;;;;;T0溢出中断(响铃程序);;;;;;
TOINT: MOV TH0,#0ECH MOV TH0,#0FFH JNB RING,OUT
CPL P3.6; RING标志位为1时候P3.6口不短取反使喇叭发出一定频率的声音 OUT: RETI
;;;;;;;T1溢出中断(计时程序);;;;;;;; T1INT: MOV TH1,#3CH
MOV TL1,#0B0H INC RO RET1 END
总 结
现在开展的竞赛抢答活动越来越多,而在大多数比赛当中都是采用抢答器进行抢答的。虽然市面上的抢答器功能较为齐全,但价钱也相对较贵,在一些小型的比赛当中难以普及。本组设计的思路是使用ATC51单片机来对信号进行锁存、显示等功能。在比赛当中有按键被按下,在程序的控制下就可以判断是那个按键被按下,并对该按键进行锁定,同时输出到数码管中,显示出是那一位选手抢答成功。当完成了一次抢答的时候,主持人可以通过控制键对上一次的抢答结果进行清零使程序回到初始状态并同时开始下一轮的抢答。此抢答器电路设计原理简单、功耗低、稳定性好、反应速度快和安装方便。由于实现此抢答器所需的硬件只是一块ATC51芯片、数码管和按键等,所以成本比较低,适用于许多场合。
在这一次的课程设计中,我们选择的课题以51单片机为基础。通过复习相关知识,查阅有关资料,并利用所学知识学习新的知识,根据所掌握的知识选择设计方案和所需器件。通过本次设计,提高了我们对以往知识的认证度,也提高了用旧的知识和已有的学习能力学习新知识的能力。与原先的被动的接受知识转换为主动的寻求知识,遇到不懂的地方能够进行小组讨论或者是向老师寻求帮助并指点,这可以说是学习方法上的一个很大的突破。例如,在设计过程中,我们一开始对ATC51芯片不是很了解,在原有8051单片机的基础上学会了C51的编程以及其外围电路的设计和连接。通过此次设计熟悉了该协议,并了解了该协议的编程原理,掌握了该芯片的读写原理。还有就是对 PROTEL软件的第一次认识与学习,它包含了电路原理图绘制、模拟电路与数字电路混合信号仿真、多层印制电路板设计(包含印制电路板自动布线)、可编程逻辑器件设计、图表生成、电子表格生成、支持宏操作等功能,并具有Client/Server (客户/服务器)体系结构,是电子设计者的好助手。此外,该设计还用到了电路设计中常用的LED八段数码管显示电路,其中使用了静态显示,在学习新的静态显示时,也让我们复习了动态显示的相关知识。总之,通过这次设计我们大家受益良多。
此外,在设计中,我们拟出了不同的方案进行对比,最后选择了单片机算术运算功能强,软件编程灵活、自由度大,可以用软件编程实现各种算法和逻辑控制,并且由于其功耗低、体积小、技术成熟和成本低的ATC51作为系统控制器的CPU方案。在程序的编写过程中,根据设计的要求和自己所要增加的功能写出了程序流程图,在此基础上,根据单片的指令系统和芯片的功能写出了相应的程序,然后在进行程序调试和修改,使得能够实现所要求的功能。
总之,只要能做到以上几点,我们就能达到既能完成课程设计,又能锻炼自己能力的目的了。因此,我们的设计不仅仅是一个重新学习的过程,而且也是我们动手和动脑能力的培养。另外在设计中通过与王许老师以及小组同学的沟通,学会了团队合作。在此,要感谢学校给于我们这次设计的机会,同时也感王许老师不懈的讲解,感谢同学的帮忙,这一切都为以后走向社会参与社会竞赛奠定了基础。
贵州大学课程设计 第 22 页
参考文献
[1] 张伟,《单片机原理及应用》,机械工业出版社,2005 [2] 张鑫,《单片机原理及应用》,电子工业出版社,2005
[3] 曹国清,《数学电路与逻辑设计》中国矿业大学出版社,2004 [4] 任致程,《经典集成电路400例》机械工业出版社,2002 [5] 薛栋梁,《单片机原理及应用》,中国水利水电出版社,2001
[6] 吴金戎,沈庆阳等,《8051单片机实践与应用》,清华大学出版社,2001
附 录
附录1 主程序 附录2 元件清单
元件名称 元件型号 元件大小 元件数量
单片机 ATC51 — 1 稳压器 78L05 — 1 锁存器 74HC573 — 1 LED数码管 Dpy Red-CA — 3
排阻 Res Pack4 1K 2 扬声器 Speaker — 1 桥接二极管 Bridge1 — 1 传感器 CTX0.33-1A — 1 按键 SW-PB — 10
极性电容 Cap Pol 222uF,1000uF/25V,220uF/25V 3 电容 Cap 30pF,104pF 4 电阻 Res2 470K,1K,9K 3 晶体振荡器 XTAL 12MHz 1 发光二极管 LED1 — 2 二极管 Diode 1N4148 — 2
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- 91gzw.com 版权所有 湘ICP备2023023988号-2
违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务