八路多功能智力竞赛抢答器_第1页
八路多功能智力竞赛抢答器_第2页
八路多功能智力竞赛抢答器_第3页
八路多功能智力竞赛抢答器_第4页
八路多功能智力竞赛抢答器_第5页
已阅读5页,还剩47页未读 继续免费阅读

下载本文档

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

文档简介

1、八路多功能智力竞赛抢答器 摘要:摘要:现在开展的竞赛抢答活动越来越多,而多数比赛中都采用抢答器进行, 本设计正是以单片机AT89C51为核心,来实现八路抢答和时钟显示功能的。抢 答器在程序控制下完成以下功能:抢答有效高频铃声并显示组别,进入倒计时 状态,抢答无效报警并闪烁显示组别,同时具有计分功能,答对加分,答错减 分。 关键词:抢答 单片机 倒计时 记分 Multi-purpose Intellective Selector for Competition of Eight Groups Abstract:More and more vie to answer first actives a

2、re developed. In most of the competitions vie for answer machine will be used. The design uses the single chip to realize the function of multi-purpose intellective selector and the clocks display. The selector has those functions: if the player vies to answer first successfully, there will be high

3、frequency and display the size of the group. At the same time, it will come into the estate of count down. However, if the player vies to answer first unsuccessfully, it will be given an alarm and display the size of the group sparklingly. Simultaneity, this vie for answer machine have the function

4、of registering the point, if the groups answer is right, this group will be awarded marks. Contrarily, he will be reduced marks. Keywords: Vie for Answer Signal Chip Microcomputer Count Down Recording Score 目目 录录 1 1 绪论绪论.3 3 1.1 课题的意义 .3 1.2 抢答器研究的现状 .3 1.3 抢答器的功能要求 .4 1.4 抢答器总体介绍 .4 2 2 核心元件核心元件 A

5、T89C51AT89C51 介绍介绍.6 6 2.1 AT89C51 芯片主要性能参数.6 2.2 功能特性概述 .6 3 3 系统硬件设计系统硬件设计.7 7 3.1 总体原理图 .7 3.2 AT89C51 工作外围电路.8 3.2.1 供电电源 .8 3.2.2 时钟频率 .8 3.2.3 复位 .9 4 4 基本原理及关键技术基本原理及关键技术.9 9 4.1 基本原理 .9 4.2 电路设计总体框图 .10 4.3 关键技术 .11 4.3.1 键盘扫描 .11 4.3.2 显示 .12 4.3.3 发声 .13 5 5 程序设计程序设计.1515 5.1 程序介绍 .15 5.2

6、主要程序分析 .15 5.2.1 程序总体设计框图 .15 5.2.2 抢答时间调整与查分模块 .16 5.2.3 答题时间调整与预加减分设置模块 .17 5.2.4 倒计时程序与加减分数模块 .18 6 6 设计总结设计总结.2020 6.1 设计过程出现问题及解决 .20 6.2 系统存在不足 .20 6.3 设计心得 .20 致致 谢谢.2222 参考文献参考文献.2323 附录附录 1 1 主要元器件引脚功能主要元器件引脚功能 .2424 附录附录 2 2 元件列表元件列表 .2626 附录附录 3 3 程序代码程序代码 .2727 1 绪论 1.1 课题的意义 随着我国经济和文化事业

7、的发展,现在人们消遣休闲时间的方式也越来越 多,如参加各种业余活动、社团等等,其中参加各种知识竞赛也是一种很好的 消遣方式,既娱乐了自己又对各种知识有了了解,而且如法律,环境等知识竞 赛是提高人们认识的一个很好的途径。现在开展的竞赛抢答活动越来越多,而 在大多数比赛当中都是采用抢答器进行抢答的,虽然市面上的抢答器功能较为 齐全,但价钱也相对较贵,在一些小型的比赛当中难以普及,这就给广大的普 通知识竞赛爱好者带来了不便,特别是在像学校这样开展活动比较频繁的场所 更是需要一款这样的抢答器,本设计正是一款专为此而设计且非常实用的多功 能多路的抢答器。 本设计的核心是使用 AT89C51 单片机来对信

8、号进行锁存、显示等功能。抢 答器在程序控制下工作,在比赛当中有按键被按下,在程序的控制下就可以判 断是那个按键被按下,并对该按键进行锁定,同时输出是那一位选手抢答成功。 当完成了一次抢答的时候,主持人可以通过控制键对上一次的抢答结果进行记 分,之后使程序回到初始状态并同时开始下一轮的抢答。 此抢答器电路设计原理简单、功耗低、稳定性好、反应速度快和安装方便。 在条件的允许下还可以进行扩展成 16 路。由于实现此抢答器所需的硬件只是一 块 AT89C51 单片机芯片、六个数码管和一些按键等,所以成本比较低,适用于 许多场合。 1.2 抢答器研究的现状 1设计的不专业化; 2成本的高端化; 3功能的

9、单一化; 4操作的复杂化; 5研究目的不明确性; 6消费者的需求强烈性。 1.3 抢答器的功能要求 1可实现调整显示当前时间; 2能允许 8 路抢答或可以扩展为 16 位; 3显示抢答组号及抢答组分数; 4报警闪烁显示犯规组号; 5限时抢答,限时答题; 6后 5S 倒计时每秒声音提示与报警; 7查询组号分数、对答题结果进行加减指定分数; 8实现时钟和抢答器功能相互切换。 1.4 抢答器总体介绍 1接通电源后,显示时间,调节时钟调节按键可以设定为当前时间,按功 能转换键进入抢答器功能,同时也可以进入时钟显示状态。 2如果想调节抢答时间或答题时间,按抢答时间调节“键”或“答题时 间调节”键进入调节

10、状态,此时会显示现在设定的抢答时间或回答时间值,如 想加一秒按一下加 1s键,如果想减一秒按一下-1s键,时间 LED 上会显示改 变后的时间,调整范围为 0s99s, 0s 时再减 1s 会跳到 99,99s 时再加 1s 会变 到 0s,调节完成后按确认键。 3如果想对下一个题目的答题结果加减一定分数,按“答题分数调节键” ,此时可以分别调节下一个题目答对加的分数,以及答错要扣除的分数,然后 按确认键。 4主持人按开始键后,会有一声提示,并立刻进入抢答倒计时(预设 15s 抢答时间)状态,如有选手抢答,会有一声提示音,同时显示其组号和当 前分数,立刻进入回答倒计时(预设 10s 抢答时间)

11、 ,不进行抢答查询,所以只 有第一个按抢答的选手有效。倒记时的后 5s 内每秒钟会有一声提示。 5如倒计时期间,主持人想停止倒计时可以随时按停止按键,系统会自 动进入记录选手分数状态,等待主持人给选手加减指定的分数,同时显示答题 后选手的分数。然后按“确定”键,等待主持人再次按开始键进入下次抢答 计时。 6如果主持人未按抢答开始键,而有人按了抢答按键,属于犯规抢答, LED 会不断闪烁犯规组号数并响个不停,直到按下停止 键为止。 7初设每位选手的分数为 5,在选手答题时会在显示倒计时的同时显示其 分数,按“加分”或“减分”键对其答题结果给予指定的分数,按“确定”键 后,可进入等待下次抢答状态。

12、 8如果想查询选手的分数,先进入查分状态,然后每位选手按自己的抢答 键,将显示选手的号数和分数,最后按“确定”键退出。 9P3.0 为开始抢答,P3.1 为停止或确认,p1.0-p1.7 为八路抢答器输入端口, 数码管段选 P0 口,位选 P2 口低 6 位,蜂鸣器输出为 P3.6 口。P3.2 抢答时间调 整和查分,P3.3 回答时间调整及加、减分数调节,P3.4 为时间加 1 调整,P3.5 为时间减 1 调整。P3.7 为时钟功能与抢答器功能相互转换键,P3.1、P3.4、P3.5 分别作为时、分、秒的调整键,P3.0 为时间调整确认键。 2 核心元件 AT89C51 介绍 在本设计中使

13、用的是 AT89C51 单片机,它是一种低电压低功耗的高性能 8 位单片机,它采用了 CMOS 工艺和 ATMEL 公司的高密度非易失性存储器 (NURAM)技术,而且输出引脚和指令系统完全与 MS-51 单片机兼容。 2.1 AT89C51 芯片主要性能参数 14k 字节可重擦写 Flash 闪速存储器(可经受 1000 次的写入/擦除周期) 2全静态工作,0Hz 24MHz 3三级加密程序存储器 41288 字节内部 RAM 56 个中断源、4 个中断优先级、4 个 8 位 I/O 口 62 个 16 位定时/计数器 T0、 T1 标准 80C51 和增加的 T2 捕获和比较 7存储器寻址

14、范围:64K 字节 ROM 和 64K 字节 RAM 8电源控制模式:时钟可停止和恢复,空闲模式,掉电模式 9 2 个工作频率范围 10 时钟模式时为 0 到 20MHz,12 时钟模式时为 0 到 33MHz 11双数据指针 12可编程串行 UART 通道、编程时钟输出 13掉电模式可通过外部中断唤醒 2.2 功能特性概述 AT89C51 提供以下标准功能:4k 字节 Flash 闪速存储器,128 字节内部 RAM,32 个 I/O 口线,两个 16 位定时/计数器,一个 5 向量两级中断结构,一 个全双工串行通信口,片内振荡器及时钟电路。同时,AT89C51 可降至 0Hz 的 静态逻辑

15、操作,并支持两种软件可选的节电工作模式。空闲方式停止 CPU 的工 作,但允许 RAM,定时/计数器,串行通信口及中断系统继续工作。掉电方式 保存 RAM 中的内容,但振荡器停止工作并禁止其它所有部件工作直到下一个 硬件复位。 3 系统硬件设计 3.1 总体原理图 此设计的主要部分为单片机最小系统,设计的总体原理图如图 3.1 所示,P3.0 为开始抢答,P3.1 为停止或确认,p1.0-p1.7 为八路抢答输入,数码管段选 P0 口,位选 P2 口低 6 位,蜂鸣器输出为 P3.6 口,P3.2 抢答时间调整,P3.3 回答 时间调整,P3.4 为时间加 1 调整,P3.5 为时间减 1 调

16、整。 EA /VP 31 X1 19 X2 18 RE SET 9 RD 17 WR 16 INT 0 12 INT 1 13 T0 14 T1 15 P10 1 P11 2 P12 3 P13 4 P14 5 P15 6 P16 7 P17 8 P00 39 P01 38 P02 37 P03 36 P04 35 P05 34 P06 33 P07 32 P20 21 P21 22 P22 23 P23 24 P24 25 P25 26 P26 27 P27 28 PSE N 29 AL E/P 30 TX D 11 RX D 10 U1 AT 89S51 P31 P31 C130p F G

17、N D P30 C230p F VC C S11 R14 1K S12 S10 2 位位位位位位位 1 2 3 4 5 6 J2 D1 02 S13 P30 S14 GN D 1 2 3 4 5 6 7 8 J1 S15 VC C S16 R13 1K S17 S10 1 位位位位 S18 D1 01 S21 S22 S23 S24 S1 位位 GN D GN D Y1 12M GN D + C3 22u F R1 4.7 K GN D U2 BU ZZER VC C VC C GN D R15 1K VC C R16 1K Q4 PN P R2 1K R3 1K R4 1K R5 1K R6

18、 1K R7 1K R8 1K R9 1K VC C 图 3.1 设计总体原理图 3.2 AT89C51 工作外围电路 3.2.1 供电电源 AT89C51 单片机为+5v 直流供电,如图 3.2 所示,普通电源通过 7805 稳压 管后将 9V 电压转换成+5V,会有 1A 的直流稳定电压输出。 Vin 1 GND 2 Vo ut 3 U1780 5 1uF 1 2 J1 位位 +10u F GN D GN D GN D GN D 位位VC C 图 3.2 5V 直流供电 3.2.2 时钟频率 单片机必须在时钟的驱动下才能工作。在单片机内部有一个时钟振荡电路, 只需要外接一个振荡源就能产生一

19、定的时钟信号送到单片机内部的各个单元, 决定单片机的工作速度,图 3.3 为外部振荡源电路。 C1 30p F C2 30p F Y112M GN D Rf Rs PDAT 89C5 2 VC C 位位位位位位位 图 3.3 外部振荡源电路 一般选用石英晶体振荡器。此电路在加电大约延迟 10MS 后振荡器起振,在 XTAL2 引脚产生幅度为 3V 左右的正弦波时钟信号,其振荡频率主要由石英晶振 的频率确定。电路中两个电容 C1,C2 的作用有两个:一是帮助振荡器起振; 二是对振荡器的频率进行微调。C1,C2 的典型值为 30PF。 单片机在工作时,由内部振荡器产生或由外直接输入的送至内部控制逻

20、辑 单元的时钟信号的周期称为时钟周期。起大小是时钟信号频率的倒数,常用 fosc 表示。如时钟频率为 12MHz,即 fosc=12MHz,则时钟周期为 1/12s。 3.2.3 复位 单片机的第 9 脚 RST 为硬件复位端,当振荡器起振以后,在 RST 引脚上输 入 2 个周期以上的高电平,器件便进入复位状态,此时 ALE、PSEN、P0、P1、P2、P3 输出高电平,RST 上输入返回低电平以后,便 退出复位状态开始工作。其电路图如图 3.4 所示: R C +5V 89C 52 Vss RST C 2OO 位 R +5V 89C 52 RST Vss (a) 上电自动复位 (b)上电复

21、位和人工开关复位 图 3.4 89C52 等单片机的复位电路 值得注意的是,在设计当中使用到了硬件复位和软件复位两种功能,由上 面的硬件复位后的各状态可知寄存器及存储器的值都恢复到了初始值,而前面 的功能介绍中提到了倒计时时间的记忆功能,该功能的实现的前提条件就是不 能对单片机进行硬件复位,所以设定了软复位功能。软复位实际上就是当程序 执行完毕之后,将程序指针通过一条跳转指令让它跳转到程序执行的起始地址。 4 基本原理及关键技术 4.1 基本原理 整个流程过程主要四大块:时间显示部分、计时部分、预置部分、控制部 分。电源用+5V,AT89C51 为主控制器,当主持人按下复位键后,定时器开始 计

22、时,切换在抢答器功能的状态下,如果在抢答时间内没有人抢答则为弃权, 如果有人按键定时器停止计时,自动进入答题倒计时状态,同时显示组别和对 应分数并发出高频铃声,如果答对主持人按键加给定分数,答错则减给定分数, 然后按复位键开始下一轮抢答。具体分析如下: 1 采用内部定时器定时,定时调用动态显示程序,实现时间的显示; 2 采用独立式键盘,可实现 8 路抢答,稍微改动也可实现 16 路抢答; 3 可实行抢答时间和回答问题时间加 1,减 1 的调整,调整范围为 0S-99S 的调整; 4 有查分、记分功能,未抢答时且在查分状态下,按每位组的抢答按键, 可显示组号及其分数,抢答完毕后,同时显示选手目前

23、的分数,主持人 可以对选手本次抢答情况进行加减分数。 5 有记时、记分的记忆功能,一次倒计时时间、加减分数设置完,如果不 需更改,复位后不需重新进行设定; 6 其扫描显示基本原理为:通过键盘扫描输出按键信息,再通过单片机将它 转换成能在七段数码管上显示字型码; 7 非常规报警为:为主控制端未起动时对其他按键端进行监控; 8 按键端的提示为:当抢答完毕时,会在数码管上显示抢答者号码提示以 表示抢答成功; 9 其中倒计时功能基本原理为:通过键盘设定时间 ,将显示时间数值逐一 递减,直到零,完成设定时间的倒计时。 4.2 电路设计总体框图 八路多功能智力竞赛抢答器设计电路主要包括主持人控制电路、选手

24、抢答 电路、报警与显示电路。其总体框图如图 4.1 所示: 图 4.1 抢答器总体框图 4.3 关键技术 4.3.1 键盘扫描 在单片机应用中键盘用得最多的形式是独立键盘(图 4.2)及矩阵键盘(图 4.3): S0 S1 S2 S3 S4 S5 S6 S7 P1.0 P1.1 P1.2 P1.3 P1.4 P1.5 P1.6 P1.7 图 4.2 独立键盘 S1S2S3S4 S5S6S7S8 S9S10S11S12 S13S14S15S16 P1.4 P1.5 P1.6 P1.7 4.7K 4.7K 4.7K 4.7K VC C P1.0P1.1P1.2P13 图 4.3 矩阵键盘 它们各有

25、自己的特点,其中独立键盘硬件电路简单,而且在程序设计上也 不复杂,一般用在对硬件电路要求不高的简单电路中;矩阵键盘与独立键盘有 很大区别,首先在硬件电路上它要比独立键盘复杂得多,而且在程序算法上比 它要烦琐,但它在节省端口资源上有优势得多,因此它更适合于多按键电路; 其次就是消除在按键过程中产生的“毛刺”现象。 本设计中采用最常用的方法,即延时重复扫描法,延时法的原理为:因为 “毛刺”脉冲一般持续时间短,约为几 ms,而我们按键的时间一般远远大于这 个时间,所以当单片机检测到有按键动静后再延时一段时间(这里我们取 10ms) 后再判断此电平是否保持原状态,如果是则为有效按键,否则无效。 4.3

26、.2 显示 通常情况下显示方法一般包括两种:一种是静态显示,一种是动态显示。 其中静态显示的优点是显示稳定,在发光二极管导通电流一定的情况下显示器 的亮度大,程序编写简单,但缺点是占用端口资源多;动态显示的特点是显示 稳定性没静态好,程序编写复杂,但是相对静态显示而言占用端口资源少。 在本设计中根据实际情况采用的了动态显示的方法(电路如图 4.4 所示) , 并通过查表法将其在数码管上显示出来,其中 P0 口为字型码输入端,P2 口低 6 位为字选段输入端。在这里我们通过查表将字型码送给 7 段数码管显示的数 字,数码管显示原理如下: MOV A,R5 MOVC A,A+DPTR ;查字型码

27、MOV P2,#01H ;送位选码 MOV P0,A ;送字型码 ACALL DELAY ;调延时,去闪烁 1 2 3 4 5 6 7 a b c d e f g 8 dp 9 GN D a bf c g d e dp DS 1 1 2 3 4 5 6 7 a b c d e f g 8 dp 9 GN D a bf c g d e dp DS 2 1 2 3 4 5 6 7 a b c d e f g 8 dp 9 GN D a bf c g d e dp DS 3 1 2 3 4 5 6 7 a b c d e f g 8 dp 9 GN D a bf c g d e dp DS 4 1

28、2 3 4 5 6 7 a b c d e f g 8 dp 9 GN D a bf c g d e dp DS 5 1 2 3 4 5 6 7 a b c d e f g 8 dp 9 GN D a bf c g d e dp DS 6 1 2 3 4 5 6 7 8 P0 Q1 PN P Q2 PN P Q3 PN P Q4 PN P Q5 PN P Q6 PN P R1 4.7 K R2 4.7 K R3 4.7 K R4 4.7 K R5 4.7 K R6 4.7 K GN DGN DGN DGN DGN DGN D 1 2 3 4 5 6 J2 图 4.4 动态显示电路 在七段数码管

29、显示中可分为共阳极和共阴极两种类型,本设计中采用共阴数 码管,当数码管共阴极接地时,如想数码管的 a 段亮,则向 a 段送“1” ,反之 送“0” 。 4.3.3 发声 我们知道,声音的频谱范围约在几十到几千赫兹,若能利用程序来控制单 处机某个口线的高电平或低电平,则在该口线上就能产生一定频率的矩形波, 接上喇叭就能发出一定频率的声音,若再利用延时程序控制“高” 、 “低”电平 的持续时间,就能改变输出频率,从而改变音调,使喇叭发出不同的声音。 发声电路如图 4.5 所示,该电路由一个作为驱动作用的三极管,一个电阻和 一个喇叭组成。 GN D U2 BU ZZER VC C R15 1K R1

30、6 1K Q4 PN PP3.6 图 4.5 发声电路 5 程序设计 5.1 程序介绍 1时间显示与抢答状态切换由按键 P3.7 控制,P3.7=1 时,执行时间显示, P3.7=0 时进入抢答器状态,不再显示时间,进入此状态标志为:数码管显示字 符“FFFFFF” 。 2倒计时时间储存:将初始的时间存在寄存器 R1,R2 中,如需对抢答时 间和答题时间进行调整,则通过按键进入外中断程序,分别对其进行调整,然 后再将数据存于 R1,R2 中。 3选手号显示:当有选手按键按下时,程序进行键盘扫描,锁定第一个按 键的选手,并将其组号送于 53H,同时调用显示程序显示该组号。 4加减分程序:先预置每

31、位选手初始分数为 5 分,分别存于 41H48H, 一次成功抢答结束后,调用原来分数,再通过按键对其抢答结果进行加减合适 的分数,并存在对应的地址空间内。 5报警:对 P3.6 端口不断取反使蜂鸣器发出一定频率的声音。 5.2 主要程序分析 5.2.1 程序总体设计框图 整个程序设计主要在于按键控制,程序扫描判断相关功能按键是否闭合来 执行相对应的程序模块,本电路设计的总体程序框图为图 5.1 所示: 图 5.1 总体程序框图 5.2.2 抢答时间调整与查分模块 初设抢答时间为 15S,根据题目类型可以调整抢答时间,抢答时间的调整是 采用外中断 0,当 P3.2=0 时,进入外中断程序,通过加

32、减按键分别进行加 1 或 减 1,然后将最后的数据存入 R1 中。时间调整确认后,可以查询每组目前的分 数,每组按下自己的抢答键后将会把对应组号和分数分别送入数码管显示,即 可查看其分数。该过程的程序框图如图 5.2 所示。 图 5.2 抢答时间调整与查分框图 5.2.3 答题时间调整与预加减分设置模块 抢答器初设答题时间为 10S,根据题目的难易程度可以调整该时间,抢答时 间采用外中断 1,调整程序与抢答时间调整相似。时间调整后,进入欲加减分 数设置,初设加减分数都为 1,再次利用按键进行设置,每次按键按下,对应 的数据将会加 1。这一设置过程的如图 5.3 所示。 图 5.3 答题时间调整

33、与预加减分设置框图 5.2.4 倒计时程序与加减分数模块 当抢答开始键 P3.0=0 时,进入抢答倒计时状态,将倒计时时间存入寄存器 R6,当 R65 时,每 1S 调用一次报警程序,如果在倒计时的时间内有抢答组 别键按下,判断组别后,显示组号及当前分数,锁定其他按键,再次进入倒计 时状态。答题结束后,根据答题情况,加减预设分数,然后退出进入下一轮抢 答状态。 程序分析过程如图 5.4 所示。 图 5.4 倒计时程序与加减分数模块 6 设计总结 6.1 设计过程出现问题及解决 在整体的设计过程中硬件电路的设计比较成熟,花费时间较少,主要的设 计在于软件设计上,遇到的问题及解决方法有: 1使用条

34、件转移指令,如:JNB bit,rel,编译时不能进行,出现跳出范围 错误,该错误是由于该指令的转移范围为 256 字节(-128+127B) ,而无条件 转移指令的转移范围相对条件转移指令要大的多,如:AJMP addr11 指令的转 移范围在 2K 字节范围内,指令 LJMP addr16 的转移范围为 64KB。这样通过适 当的语句转换使用无条件转移指令就避免了转移跳出范围的现象。 2单片机的两个定时器分别用于响铃程序和计时程序,所以实时时间显示 和倒计时时间只能使用同一个定时方式,设计中却需要成品工作在不同的状态 时,实时时间不能中断,即在抢答工作结束后不需要再次调整时间。对于这一 问

35、题可以将两者用不同的寄存器存储时间,同时调用不同的显示程序来实现。 6.2 系统存在不足 1在一次抢答过程中,当出现超前违规抢答时,只能处理违规抢答信号, 而对没有违规的有效抢答信号不能进行处理,因而使该次抢答过程变为无效。 2当有多个违规抢答时,普通抢答器或采用优先编码电路选择其中一个, 或利用抢答电路电子元件的“竞争”选择其中一个。对于后者由于抢答电路制 作完毕后电子元件被固定。各路抢答信号的“竞争”能力也被固定,因而本质 上也有优先权。只能“抓住”其中一个而出现“漏洞” 。 6.3 设计心得 经过这几周的努力,设计终于圆满结束。在这次设计中我感受到平时多学 习,多看资料的重要性。设计的本

36、身并不太难,只是知识的广度与深度不够。 通过查阅资料,学习到了许多知识,同时让我感受到了,书本上的理论知识和 实际应用还是有许多的差别,有些知识是要通过实践在能领会到的。对于单片 机的设计总体上硬件部分比较简单,主要解决的就是软件部分的设计,如果说 有了一个较完整的程序让我画电路是件简单的事,但反过来就不是件容易的事 情了。因而程序的设计是一个设计的主题,它反映了一个人解决问题的思路, 这才是最重要的东西。 我在设计的过程中查阅了不同书籍中完成同一功能的子程序,通过比较选 择最适合的程序。整个设计通过软件与硬件的调试与仿真,使我懂得了学习的 重要性,这对我以后的学习和工作将会有很大的帮助。 致

37、 谢 本文从课题的选定到系统设计方案的确立,我的导师都一直地、不断地给 予我指导和帮助。在真正的设计过程中不时地问我有哪些困难,引导我顺利地 去解决。在我遇到苦难时,他能够用简短的语句让我明白问题的所在。在论文 的撰写上也给了我好多的意见。他广博的知识面和丰富的实践经验,使我十分 佩服,这也将激励我在今后的工作和学习中不断的进取。在此,向您表示由衷 地感谢和真诚的敬意。 同时,还感谢在整个过程中曾经帮助过我、支持我的老师、同学。谢谢你 们对我的帮助与支持。 参考文献 1张友德 主编.MCS-51单片微型机原、应用与实验. 第四版.复旦大学出版社. 2003. 2薛钧义 武自芳 主编.微机控制系

38、统及其应用. 第一版.西安交通大学出版社. 2002 3陈光东 主编. 单片微型机原理. 第一版.华中科技大学出版社.2003 附录 1 主要元器件引脚功能 1、AT89C52 引脚图 2、AT89C51 主要引脚功能 VCC:供电电压。 GND:接地。 P0 口:P0 口为一个 8 位漏级开路双向 I/O 口,每脚可吸收 8TTL 门电流。 当 P1 口的管脚第一次写 1 时,被定义为高阻输入。P0 能够用于外部程序数据 存储器,它可以被定义为数据/地址的第八位。在 FIASH 编程时,P0 口作为原 码输入口,当 FIASH 进行校验时,P0 输出原码,此时 P0 外部必须被拉高。 P1

39、口:P1 口是一个内部提供上拉电阻的 8 位双向 I/O 口,P1 口缓冲器能 接收输出 4TTL 门电流。P1 口管脚写入 1 后,被内部上拉为高,可用作输入, P1 口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在 FLASH 编程和校验时,P1 口作为第八位地址接收。 P2 口:P2 口为一个内部上拉电阻的 8 位双向 I/O 口,P2 口缓冲器可接收, 输出 4 个 TTL 门电流,当 P2 口被写“1”时,其管脚被内部上拉电阻拉高,且 作为输入。并因此作为输入时,P2 口的管脚被外部拉低,将输出电流。这是由 于内部上拉的缘故。P2 口当用于外部程序存储器或 16 位地址

40、外部数据存储器 进行存取时,P2 口输出地址的高八位。在给出地址“1”时,它利用内部上拉 优势,当对外部八位地址数据存储器进行读写时,P2 口输出其特殊功能寄存器 的内容。P2 口在 FLASH 编程和校验时接收高八位地址信号和控制信号。 P3 口:P3 口管脚是 8 个带内部上拉电阻的双向 I/O 口,可接收输出 4 个 TTL 门电流。当 P3 口写入“1”后,它们被内部上拉为高电平,并用作输入。 作为输入,由于外部下拉为低电平,P3 口将输出电流(ILL)这是由于上拉的 缘故。 P3 口也可作为 AT89C51 的一些特殊功能口,如下所示: P3.0 RXD(串行输入口) P3.1 TX

41、D(串行输出口) 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 脚两个机器周期的高电 平时间。 /EA/VPP:当/EA 保持低电平时,则在此期间外部程序存储器(0000H- FFFFH) ,不管是否有内部程序存储器。注意加密方式 1 时,/EA 将内部锁定为 RESET;当/EA 端保持高电平时,

42、此间内部程序存储器。在 FLASH 编程期间,此 引脚也用于施加 12V 编程电源(VPP) 。 XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。 XTAL2:来自反向振荡器的输出。 3、七段数码管引脚图 (a)外观图(b)等效电路 附录 2 元件列表 AT89C51 1 片 12M 晶振 1 个 9V 变压器 1 个 L7805 1 个 4700F 电解电容 2 个 001F 瓷片电容 2 个 30PF 瓷片电容 2 个 1K 排阻 1 个 按键 15 个 4.7K 电阻 9 个 1K 电阻 5 个 7 段 LED 数码管 6 个 电源开关 1 个 附录 3 程序代码 OK EQU

43、 20H;抢答开始标志位 RING EQU 22H;响铃标志位 ORG 0000H AJMP MAIN ORG 0003H AJMP INT0SUB ORG 000BH AJMP T0INT ORG 0013H AJMP INT1SUB ORG 001BH AJMP T1INT ORG 0040 ;=初始化程序= MAIN: MOV R1,#0FH;初设抢答时间为 15s MOV R2,#0AH;初设答题时间为 10s MOV TMOD,#11H;设置未定时器/模式 1 MOV TH0,#0ECH MOV TL0,#0FFH;越高发声频率越高,越尖 MOV TH1,#3CH MOV TL1,#

44、0B0H;50ms 为一次溢出中断 MOV IE,#88H;允许四个中断,T0/T1/INT0/INT1 CLR OK CLR RING SETB TR1 SETB TR0;一开始就运行定时器,以开始显示 FFF.如果想重新计数,重置 TH1/TL1 MOV 4AH,#00H MOV R6,#8 ;初设 8 位选手的分数为 5 分 MOV R0,#41H MOV A,#5 CL1: MOV R0,A INC R0 DJNZ R6 ,CL1 MOV R3,#1 ;初设每次答题加 1 分 MOV R4,#1 ;初设每次答题减 1 分 MOV R5,#0 MOV 50H,#0 ;50H55H 存放抢

45、答显示内容 MOV 51H,#0 MOV 52H,#0 MOV 53H,#0 MOV 54H,#0 MOV 55H,#0 MOV 60H,#0 ;60H65H 存放实时时间显示内容 MOV 61H,#0 MOV 62H,#0 MOV 63H,#0 MOV 64H,#0 MOV 64H,#0 MOV 66H,#0 ;存储秒 MOV 67H,#0 ;存储分 MOV 68H,#0 ;存储时 ACALL DISPLAY2 ;=时间显示程序= JS: CLR RING SETB TR1 MOV R5,#0 MOV TH1,#3CH MOV TL1,#0B0H X1:JB P3.7,PLAY ;P3.7=

46、0,进入抢答状态,P3.7=1 为实时是时间显示 LJMP START PLAY: JNB P3.0,JISHI ACALL DISPLAY2 AJMP X1 ;=时间调整程序= JISHI: CLR TR1 ACALL DISPLAY2 JNB P3.1,SHI JNB P3.4,FEN JNB P3.5,MIAO JNB P3.0,$+6 LJMP JS AJMP JISHI SHI: INC 68H MOV A,68H CJNE A,#24,X2 MOV 68H,#0 MOV A,#0 X2: MOV B,#0AH DIV AB MOV 60H,A MOV 61H,B ACALL DEL

47、AY2 AJMP JISHI FEN: INC 67H MOV A,67H CJNE A,#60,X3 MOV 67H,#0 MOV A,#0 X3: MOV B,#0AH DIV AB MOV 62H,A MOV 63H,B ACALL DELAY2 AJMP JISHI MIAO: INC 66H MOV A,66H CJNE A,#60,X4 MOV 66H,#0 MOV A,#0 X4: MOV B,#0AH DIV AB MOV 64H,A MOV 65H,B ACALL DELAY2 AJMP JISHI ;=抢答查询程序= START: MOV IE,#8FH MOV 50H,#

48、0BH MOV 51H,#0BH MOV 52H,#0BH MOV 53H,#0BH MOV 54H,#0BH MOV 55H,#0BH ACALL DISPLAY;未开始抢答时候显示 FFFFFF ACALL DISPLAY2 JB P3.0,NEXT;ddddddd ACALL DELAY JB P3.0,NEXT ;去抖动,如果开始键按下就向下执行,否者跳到非法 抢答查询 ACALL BARK;按键发声 MOV A,R1 MOV R6,A;送 R1-R6,因为 R1 中保存了抢答时间 SETB OK;抢答标志位,用于 COUNT 只程序中判断是否查询抢答 MOV 52H,#0AH;抢答只

49、显示计时,灭号数 MOV 53H,#0AH MOV 54H,#0AH MOV 55H,#0AH AJMP COUNT;进入倒计时程序,查询有效抢答的程序在 COUNT 里面 NEXT: JNB P1.0,FALSE0 JNB P1.1,FALSE1 JNB P1.2,FALSE2 JNB P1.3,FALSE3 JNB P1.4,FALSE4 JNB P1.5,FALSE5 JNB P1.6,FALSE6 JNB P1.7,FALSE7 JB P3.7,NO AJMP START NO: LJMP JS ;=非法抢答处理程序= FALSE0: ACALL BARK;按键发声 MOV 53H,#

50、01H AJMP ERROR FALSE1: ACALL BARK;按键发声 MOV 53H,#02H AJMP ERROR FALSE2: ACALL BARK MOV 53H,#03H AJMP ERROR FALSE3: ACALL BARK MOV 53H,#04H AJMP ERROR FALSE4: ACALL BARK MOV 53H,#05H AJMP ERROR FALSE5: ACALL BARK MOV 53H,#06H AJMP ERROR FALSE6: ACALL BARK MOV 53H,#07H AJMP ERROR FALSE7: ACALL BARK MOV

51、 53H,#08H AJMP ERROR ;=INT0(抢答时间 R1 调整程序,选手分数查询)= INT0SUB:MOV A,R1 MOV B,#0AH DIV AB MOV 50H,A MOV 51H,B MOV 52H,#0AH MOV 53H,#0AH MOV 54H,#0AH MOV 55H,#0AH ACALL DISPLAY;先在两个时间 LED 上显示 R1 JNB P3.4,INC0;P3.4 为+1s 键,如按下跳到 INCO JNB P3.5,DEC0;P3.5 为-1s 键,如按下跳到 DECO JNB P3.1 , INTB0 AJMP INT0SUB INTB0:

52、JNB P3.1, $ INTBB0: ACALL DISPLAY ;JB 占 3 个字节,LJMP 占 3 个字节 JB P1.0, $+6 lJMP J0 ;查 1 号选手分数 JB P1.1, $+6 lJMP J1 ;查 2 号选手分数 JB P1.2, $+6 lJMP J2 ;查 3 号选手分数 JB P1.3, $+6 lJMP J3 ;查 4 号选手分数 JB P1.4,$+6 lJMP J4 ;查 5 号选手分数 JB P1.5, $+6 lJMP J5 ;查 6 号选手分数 JB P1.6, $+6 lJMP J6 ;查 7 号选手分数 JB P1.7, $+6 lJMP

53、J7 ;查 8 号选手分数 JB P3.1,$+6 LJMP BACK0;P3.1 为确定键,如按下跳到 BACKO AJMP INTBB0 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 SET

54、R1: MOV R1,#63H ACALL DELAY1 AJMP INT0SUB J0: MOV 53H,#01H MOV A,41H MOV B,#10 DIV AB MOV 54H,A MOV 55H,B AJMP INTBB0 J1: MOV 53H,#02H MOV A,42H MOV B,#10 DIV AB MOV 54H,A MOV 55H,B AJMP INTBB0 J2: MOV 53H,#03H MOV A,43H MOV B,#10 DIV AB MOV 54H,A MOV 55H,B AJMP INTBB0 J3: MOV 53H,#04H MOV A,44H MOV

55、 B,#10 DIV AB MOV 54H,A MOV 55H,B AJMP INTBB0 J4: MOV 53H,#05H MOV A,45H MOV B,#10 DIV AB MOV 54H,A MOV 55H,B AJMP INTBB0 J5: MOV 53H,#06H MOV A,46H MOV B,#10 DIV AB MOV 54H,A MOV 55H,B LJMP INTBB0 J6: MOV 53H,#07H MOV A,47H MOV B,#10 DIV AB MOV 54H,A MOV 55H,B LJMP INTBB0 J7: MOV 53H,#08H MOV A,48H

56、 MOV B,#10 DIV AB MOV 54H,A MOV 55H,B LJMP INTBB0 BACK0: RETI ;-=INT1(回答时间 R2 调整程序)= INT1SUB:MOV A,R2 MOV B,#0AH DIV AB MOV 50H,A MOV 51H,B MOV 52H,#0AH MOV 53H,#0AH MOV 54H,#0AH MOV 55H,#0AH ACALL DISPLAY JNB P3.4,INC1 JNB P3.5,DEC1 JNB p3.1 ,INTB1 AJMP INT1SUB INTB1: JNB P3.1, $ MOV R3,#1 MOV R4,#

57、1 MOV 50H,#0 MOV 51H,#1 MOV 52H,#0 MOV 53H,#1 INTBB1: ACALL DISPLAY JNB P3.4,JIA1 ;指定每次答题加减的分数 JNB P3.5,JIAN1 JNB P3.1,BACK1 AJMP INTBB1 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 DEC R2 ACALL DELAY1 AJMP INT1S

58、UB SETR2: MOV R2,#63H ACALL DELAY1 AJMP INT1SUB JIA1: INC R3 MOV A,R3 MOV B,#0AH DIV AB MOV 50H,A MOV 51H,B ACALL DELAY1 AJMP INTBB1 JIAN1: INC R4 MOV A,R4 MOV B,#0AH DIV AB MOV 52H,A MOV 53H,B ACALL DELAY1 AJMP INTBB1 BACK1: RETI ;=.倒计时程序(抢答倒计时和回答倒计时都跳到此程序)= COUNT: MOV R7,#00H;重置定时器中断次数 MOV TH1,#3C

59、H MOV TL1,#0B0H;重置定时器 MOV 52H,#0 RECOUNT:MOV A,R6 ;R6 保存了倒计时的时间,之前先将抢答 ;时间或回答时间给 R6 MOV B,#0AH DIV AB;除十分出个位/十位 MOV 50H,A;取十位 MOV 51H,B;取个位 MOV A,R6 CJNE A,#07H,$+3 JNC LARGER;大于 5s 跳到 LARGER,小于等于 5s 会提醒 MOV A,R7 CJNE A,#0AH,FULL;1s 中 0.5s 向下运行 CLR RING AJMP CHECK FULL: CJNE A,#14H,CHECK;下面系 1s 的情况,

60、响并显示号数并清 R0,重新计 SETB RING MOV A,R6 JZ QUIT;计时完毕 MOV R7,#00H DEC R6;一秒标志减 1 AJMP CHECK LARGER: MOV A,R7 CJNE A,#14H,CHECK;如果 1s 向下运行,否者跳到查停/显示 DEC R6;计时一秒 R6 自动减 1 MOV R7,#00H CHECK: JNB P3.1,QUIT1;如按下停止键退出 ACALL DISPLAY JB OK,ACCOUT; 是否为抢答倒计时,如是则查询抢答,否则跳过查询继 续倒数(这里起到锁抢答作用) AJMP RECOUNT ACCOUT: JB P1

温馨提示

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

评论

0/150

提交评论