当前位置: 首页 > article >正文

基于AT89C51单片机的可暂停八路抢答器设计

点击链接获取Keil源码与Project Backups仿真图:
https://download.csdn.net/download/qq_64505944/90196607?spm=1001.2014.3001.5503
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

C+15
部分参考设计如下:
摘要

随着社会进步和科技发展,电子设备在各类活动中的应用日益普遍,抢答器作为一种答题工具应运而生。抢答器广泛应用于答题节目、知识竞赛等活动。然而,市面上现有的抢答器存在线路复杂、实用性差、成本高等问题。为此,本次毕业设计利用C51单片机设计了一种结构简单、元器件易购、功能完善的多路抢答器。

该多路抢答器采用八路抢答的形式,以AT89C51单片机为核心控制芯片,使用四位数码管显示,支持八位选手抢答。主持人按下开始抢答按键前,若有选手按下抢答键,系统会发出警报,视为违规。在正常抢答程序中,系统进入30秒倒计时,选手可进行抢答,成功后进入15秒答题倒计时。若最后5秒钟无人抢答,系统会发出提醒。在答题时间的最后5秒也会提示。此外,主持人可设置答题时间和抢答时间。

该设计基于Altium Designer进行原理图设计,利用DXP软件进行元器件的查找、放置、连接和制版,实现硬件设计;使用Keil uVision4进行单片机程序编写,实现软件设计;最后通过Proteus 8仿真软件将程序载入单片机,进行仿真调试,以达到设计目标。

关键词:抢答器;C51单片机;硬件设计;软件设计;仿真
单片机;数码管;抢答器;电子产品;proteus

目 录
第1章 概 述

1.1 选题来源

1.2 选题的研究现状

1.3 选题的意义

1.4 论文设计内容

第2章 总体设计方案

2.1 多路抢答器设计方案

2.2 元器件选型

第3章 硬件系统设计

3.1 八路抢答器整体方案设计

3.2 单片机最小系统设计

3.3 按键模块设计

3.4 蜂鸣器模块设计

3.5 数码管模块设计

3.6 电源模块设计

第4章 系统软件设计

4.1 程序语言及开发环境

4.2 程序流程设计

4.3 系统程序调试

第5章 系统仿真

5.1 系统仿真软件

5.2 原理图仿真

第6章 实物焊接与调试

6.1 元件清单

6.2 电路板焊接

6.3 实物调试

第7章 总结

致 谢

参考文献

附录

第1章 概 述

1.1 选题来源
在大学的学习中,我对基于单片机设计电路及其在生活中的实际应用产生了浓厚的兴趣。这次毕业设计参考了导师的指导意见,结合所学知识,从导师提供的参考题目中选择了基于单片机的多路抢答器设计作为论文题目。

1.2 选题的研究现状
目前市场上的抢答器种类繁多,主要分为电子抢答器和电脑抢答器。电子抢答器结构简单,依靠数字集成电路构成,通常由抢答器主机和按钮组成,功能有限;而电脑抢答器则需要配合电脑,使用专门的软件实现多种功能,应用范围广,但体积大且使用不便。

随着科技的迅速发展,抢答器作为早期研发的电子产品,广泛应用于人才选拔和知识竞赛。然而,早期的抢答器主要由几个三极管、可控硅和发光管组成,可靠性低,实施困难。目前大多数抢答器仍存在以下不足:第一,现场线路连接复杂,选手位置不同导致导线混乱,影响可靠性和现场美观;第二,误判情况较多,选手抢答成功但未被记录,影响比赛公平性;第三,制作成功率低,由于技术不完善和元器件组装复杂,未能实现预期功能,造成浪费。

1.3 选题的意义
在竞赛中,传统的举手抢答方法容易因裁判主观判断而影响公平性。因此,设计一个简易可靠的系统以实现规范的抢答功能显得尤为重要。

单片机是一种广泛应用于电子产品的芯片,近年来发展迅速,成为电子产品开发的首选。单片机具有重量轻、体积小、价格低、抗干扰能力强等优点,使得基于单片机设计的多路抢答器具备优于传统抢答器的特点:首先,电路连接简单,许多功能(如定时、中断、复位等)和管脚都整合在单片机中;其次,实用性强,工作可靠,能够通过编写程序实现多样化功能,方便功能的添加和改善。因此,本次设计具有创新性。

此次多路抢答器利用AT89C51单片机进行系统设计,有助于掌握相关知识。在硬件方面,利用DXP原理图进行设计,提高设计能力;在软件方面,编写单片机程序,加深对编程的理解;在实物组装方面,进行元件的拼装、焊接和调试,提高动手能力和排障能力。

1.4 论文设计内容
本次多路抢答器的设计与制作论文分为七个章节:

第一章为概述部分,论述选题来源、选题意义及论文结构,确定研究方向。

第二章为总体设计方案,描述多路抢答器的设计流程及所用开发软件,考虑元器件选择以确保正常工作。

第三章为硬件系统设计,采用整体与局部相结合的叙述方式,介绍整体方案及各输入输出模块,如按键模块、数码管模块和蜂鸣器模块等。

第四章为系统软件设计,使用C语言编写程序,插入流程图并配以文字说明,使软件设计清晰。

第五章为系统仿真部分,通过Proteus软件对原理图进行仿真和功能调试。

第六章为实物焊接及调试部分,列举元器件清单、焊接原则及功能调试。

第七章为总结部分,总结设计功能、遇到的问题及解决方案,以及通过此次设计所学到的知识。

第2章 总体设计方案
2.1 多路抢答器设计方案
本论文研究的主题是基于单片机的多路抢答器的设计与制作,采用八路通道抢答方式,以AT89C51单片机为核心设计出一款实用的八路抢答器。

八路抢答器以单片机最小系统为核心,输入部分包括按键模块和电源模块,输出部分通过数码管模块和蜂鸣器模块进行显示与报警。在硬件设计方面,使用DXP软件进行元件选型、原理图设计和PCB制作。在软件设计方面,使用C语言在Keil4开发环境下编写各部分程序。在仿真方面,利用Proteus 8.0软件进行原理图绘制和功能仿真。在实物组装部分,根据原理图选购元器件并进行焊接和调试,最终实现预期功能。

八路抢答器的基本功能是支持选手抢答和相关显示。接入电源后,按下开关,数码管显示“0000”。在主持人开始前,若有选手提前抢答,数码管将显示该选手编号并发出警告,蜂鸣器报警。主持人按下抢答按键后,数码管进入30秒抢答倒计时,最后5秒内蜂鸣器报警;若无人抢答,则回合结束,数码管显示“----”。如有选手抢答,数码管显示选手编号,进入15秒答题倒计时,最后5秒内蜂鸣器报警,答题时间结束后,数码管显示“----”。本轮答题结束后,主持人可通过复位按键重置。此外,电路可通过时间设置按键调整抢答和答题时间。

2.2 元器件选型
2.2.1 选型原则
本多路抢答器由多个模块组成,包括单片机最小系统、按键模块、蜂鸣器模块、数码管模块和电源模块。为了确保各模块实现理想功能并紧密配合,元器件的选型至关重要。

在用DXP软件绘制原理图之前,需要在元件库中选择所需的相关元器件。选择元器件时,首先要考虑功能是否满足设计需求;其次,选择性价比高、易获取的元器件;对于需要封装的元器件,应选择具有封装的类型;对于有参数的元器件(如电阻、晶振等),应根据硬件设计需求选择合适参数;对于有极性的元器件(如极性电容、三极管等),要注意方向和型号,以避免因元件类似而导致仿真失败;最后,尽量选择常见易购的元器件,以便于实物焊接。

2.2.2 各模块元器件选择
(1)单片机最小系统

元件选择:1个AT89C51单片机U1,1个九管脚排阻(102)R1,1个10μF电容C1,1个10K电阻R2,1个12M晶振,2个30pF电容C2、C3,1个按键K11。
选择AT89C51单片机的原因是其体积小、使用方便、易于获取、性价比高且功能强大。九管脚排阻用于连接引脚和单片机,以输出5V电压,其中一个连接VCC,八个连接数码管段选端。选择12M晶振是为了每秒产生12000000个正弦波,以保证定时准确。

(2)按键模块

元件选择:10个独立式按键K1~K10。
按键K1~K8对应八个选手的抢答按钮,连接单片机的P1.0~P1.7引脚;按键K9和K10分别为开始抢答按键和时间设置按键,连接单片机的P2.0和P2.1引脚。独立按键有四个管脚,在连接时只需连接相对的两个管脚即可。

(3)**蜂鸣器
元件选择:1个PNP型三极管Q1;1个蜂鸣器DEEP1。

其中,选择PNP三极管的目的是为了利用三极管的开关作用,通过连接单片机和蜂鸣器,进而实现报警功能;蜂鸣器为了发出声响,实现提醒答题时间和违规功能。蜂鸣器原理图和实物图如图2.2和图2.3所示。

(4)数码管模块

元件选择:1个四位共阴极数码管Dpy1。

其中,选择四位数码管是为了满足设计功能需求,需要同时显示4位数字,其中包含选手编号、分割符、两位数倒计时等;采用共阴极数码管的目的是为了将公共端接地即可,使用方便快捷;此处采用数码管而没有使用液晶显示屏的原因是本次设计显示内容量相对较少,四位数码管就可以清楚展示相应内容,LCD屏相对来说浪费设计空间,成本过高,性价比低。数码管原理图和实物图如图2.4和图2.5所示。

 图2.4 数码管原理图                   图2.5 数码管实物图

(5)电源模块

元件选择:1个电源座J1;1个开关SW1。

其中,电源座选取最常见的即可,只需要连接电源,无过多功能要求;开关的引入是为了控制电路板通电情况,可随时断电通电,保证电路安全。

第3章 硬件系统设计
3.1 八路抢答器整体方案设计
3.1.1 系统概述
整个系统以AT89C51单片机为核心,结合晶振、电阻、电容等构成单片机最小系统。系统原理图如图3.1所示。

系统输入:抢答器的输入信号来自两个部分:一是主持人通过按键模块中的抢答控制按键、时间设置按键和复位按键进行控制;二是八位选手通过按键模块中的抢答按键进行输入。系统正常工作依赖于电源模块提供的5V电压输入。

系统输出:抢答器通过蜂鸣器模块和数码管模块以声光方式输出。当出现违规或需要提醒时,蜂鸣器报警;选手抢答、违规及倒计时信息通过四位共阴极数码管显示。

3.1.2 系统框图
系统框图如图3.2所示,八路抢答器由五个模块组成。以单片机最小系统为核心,包含AT89C51单片机、晶振电路和复位电路;输入部分包括选手按键抢答模块、主持人控制模块和电源模块;输出部分由数码管显示模块和蜂鸣器报警模块组成。

3.2 单片机最小系统设计
3.2.1 AT89C51单片机
(1)单片机特点

单片机是在一片半导体硅片上集成了CPU、存储器(RAM/ROM)、I/O接口、定时器、中断系统等功能的微型计算机。单片机体积小、价格低、应用方便且稳定可靠,推动了电子设备的研究与进步。用户可根据需求设计以单片机为核心的系统,配合外围接口电路及外设,编写相应程序实现测控功能。

(2)AT89C51单片机概述

AT89C51RC是STC公司生产的一种低功耗、高性能CMOS 8位微控制器,具备8K字节可编程Flash存储器,兼容传统8051单片机,支持12时钟/机器周期和6时钟/机器周期选择。与AT89C51相比,STC单片机提供更大的512字节数据存储空间和2K字节EEPROM存储空间,且具有更强的抗干扰能力,性价比高。

(3)8051单片机的引脚功能

AT89C51单片机采用40个引脚,具备32个外部双向I/O端口、3个16位定时计数器和2个全双工串行通信口。其引脚排列如图3.5所示。

电源引脚

VCC (40脚):接+5V电源。
GND (20脚):接地。
时钟引脚

XTAL1 (19脚):连接外部晶体或时钟源。
XTAL2 (18脚):连接外部晶体或悬空。
控制引脚

RESET (9脚):复位信号输入端,高电平有效。
ALE (30脚):提供低8位地址锁存信号。
并行I/O口引脚

P0口:漏极开路的双向I/O口,用于扩展外部存储器及I/O接口。
数码管模块电路采用四位共阴极数码管,利用动态扫描显示方式点亮数码管,如图3.11所示。单片机向I/O (P0.0~P0.7) 端口发出段码,通过I/O (P2.4~P2.7) 控制数码管的位选线,实现动态扫描显示。

3.6 电源模块设计
电源模块由一个电源座J1和一个控制开关SW1组成,如图3.12所示。采用+5V直流电源供电,支持充电宝、手机插头、电脑USB接口等设备。

第4章 系统软件设计
4.1 程序语言及开发环境
本次软件设计在Keil uVision4开发环境中进行,采用C语言编写程序,以实现八路抢答器的基本功能。C语言是一种广泛使用的高级程序设计语言,适用于系统软件和应用软件的开发。它以其简洁紧凑的语法、丰富的运算符和高效的执行速度,成为最流行的面向过程的编程语言之一。

C语言的编程流程包括编辑源代码、编译、链接目标程序以及运行可执行程序等步骤。相较于其他编程语言,C语言的灵活性和自由度更高,语法限制较小,适合各种复杂的应用开发。

Keil uVision4是一款专为单片机编程设计的开发工具,支持C语言编写。该软件提供丰富的库函数和强大的编译调试工具,能够高效地生成目标代码,简化了开发过程,使程序员能够更快速地实现功能。

4.2 程序流程设计
4.2.1 总体程序设计
八路抢答器的总体设计流程图如图4.1所示。在系统程序设计中,涉及多个关键程序模块,包括8位选手按键扫描程序、EEPROM设置程序、答题时间设置程序、延时程序,以及AT89C51单片机的两个定时器(定时器0和定时器1)服务程序。特别地,程序中还包括四位数码管的动态扫描程序和50ms的计时程序。

在程序编写的初期,首先引入必要的头文件,设置寄存器的初始值,并定义蜂鸣器、数码管、按键等引脚。接着,依次初始化定时器,编写8个选手的抢答按键扫描程序、答题和抢答时间设置程序,以及定时器0和定时器1的服务程序,最后进入主函数的编写阶段。

初始化单片机后,程序进入一个主循环,如图4.1所示。首先,主持人可以判断是否设置了抢答时间和答题时间。如果未设置,主持人可以通过设置按键进行配置;如果已设置,则进入答题流程。在主持人按下开始抢答按键之前,程序会监测是否有选手抢答。如果有选手抢答,蜂鸣器将发出报警,数码管显示违规信息和选手编号;如果没有选手抢答,系统将保持待命状态,等待主持人的指令。一旦开始抢答键被按下,系统将进入抢答时间的倒计时。如果在最后5秒内没有选手抢答,蜂鸣器将持续鸣响,表示时间结束,当前轮抢答结束;如果在倒计时期间有选手抢答,系统将转入答题时间的倒计时。在答题时间倒计时期间,程序将判断倒计时是否仅剩5秒,如果是,蜂鸣器开始报警;如果答题时间到达0,抢答将停止,数码管显示“----”,蜂鸣器报警,当前轮答题结束。

4.2.2 数码管动态扫描程序
本设计采用数码管动态扫描法,通过编写程序控制单片机依次点亮四位数码管,并进行短暂的延时。由于每位数码管的点亮时间仅为2毫秒,切换速度非常快,人的眼睛无法察觉,因此利用视觉暂留效应,使其看起来像是四位数码管同时被点亮。数码管的动态扫描流程图如图4.2所示。

4.2.3 时间设置程序
为了便于根据实际情况调整抢答时间和答题时间,设计了手动时间设置程序。使用者可以通过时间设置按键对时间进行修改。在编写过程中,将抢答时间按键和答题时间按键合并为一个,优化了界面设计,节省了硬件空间。同时,原本的七号和八号选手抢答按键的功能被修改为在时间设置模式下用于时间的增减。具体设计流程如图4.3所示。

在初始状态下,裁判按下时间设置按键后,系统进入抢答时间设置模式,此时数码管显示“E-30”(30为预设抢答时间)。在此过程中,程序将判断七号和八号按键是否被按下:若七号按键被按下且显示时间大于0,则时间减少;若八号按键被按下且显示时间小于99,则时间增加。完成抢答时间的设置后,再次按下设置按键即可进入答题时间设置模式,此时数码管显示“F-15”(15为预设答题时间)。此过程与抢答时间设置相似,通过判断按键进行时间的
为了方便根据实际情况对所设计的八路抢答器的抢答时间和答题时间进行修改,通过C语言汇编软件编写了手动时间设置程序。使用者可根据现场答题规则的实际情况,通过时间设置按键对时间进行修改。在软件编写过程中,将抢答时间按键和答题时间按键合并成一个,方便修改,节省了实物空间。此外,将原本的七号和八号选手抢答按键的功能也修改为,在时间设置模式下,具有对时间减和加的功能。具体设计流程如图4.3时间程序流程图所示。

在初始状态下,裁判按下时间键设置按键,首先进入抢答时间设置模式,同时数码管上显示“E-30”(30为预设抢答时间)。该过程中先判断七号和八号按键是否被按下,若七号按键被按下,同时显示时间大于0,则可以通过七号按键对时间进行减少,否则时间不变;若八号按键被按下,同时显示时间小于99,则可以通过八号按键对时间进行增加,否则时间不变。对抢答时间修改好后,再次按下设置按键,即可进入到答题时间设计模式,同时数码管上显示“F-15”(15为预设答题时间)。在此过程中,流程和抢答时间设置过程相同,都是通过判断,用七号和八号按键对时间进行减加。设置完答题时间后,再次按下时间设置按键,即可返回到初始状态,数码管上显示“0000”。

4.3 系统程序调试
本次设计的八路抢答器系统的程序是采用C语言编写的,通过keil4软件对程序进行编译调试。编写程序时以主函数为主体,依次对数码管显示函数、8个按键抢答函数、蜂鸣器函数、延时函数进行调用,经过编译仿真,确保程序正确。在写完程序后需要进行保存编译,如果出现错误,需要根据箭头显示找到出错位置,然后进行相应的修改,在修改之后再进行保存编译,直到出现“0 Error”的字样。此外,编译程序的结果往往伴随着警告,若无细节要求,即可对警告进行忽略。

第5章 系统仿真
5.1 系统仿真软件
Proteus仿真软件是由英国Lab Center Electronics公司开发的一款强大的EDA工具。它不仅具备一般EDA软件的仿真功能,还能够输入程序到单片机进行单片机及其外围电路的仿真。Proteus软件实现了从原理图布局、代码加载到单片机及外围电路的完整仿真,甚至可以切换到PCB设计,形成一个集成的设计流程。该软件拥有超过两万个仿真器件,提供丰富的激励源,具有直观的仿真显示,并具备完整的PCB设计功能,包括编译和调试等。这些特点使Proteus成为目前最常用的原理图仿真软件之一。

5.2 原理图仿真
在打开Proteus软件后,根据DXP所创建的原理图,用户可以在元件库中(通过点击左侧的“P”键)搜索构建八路抢答器所需的相关元器件,并对同类元器件进行选型,如图5.1所示。

在完成元器件的选择后,按照原理图中的对应位置将元器件放置,并通过绘制导线将各个管脚相连接,最后添加电源和接地。为了确保仿真能够成功进行,需要将通过Keil4编译好的系统软件程序写入到AT89C51单片机中。具体操作为双击单片机图标,选择“Program File”选项,将程序文件Project.hex导入到单片机中。

接下来,用户可以进入仿真实验,点击左下角的“开始仿真”按钮。如果仿真过程中没有报错,且原理图能够正常仿真,则可以实现预期的所有功能。例如,在开始抢答后,3号选手成功抢答并进入答题倒计时的场景如图5.2所示。在暂停过程中,数码管部分的点亮也表明数码管是以动态扫描的方式运行的。在完成各项功能的调试后,用户可以点击“结束”按钮。

  1. 实物焊接与调试
    6.1 元件清单
    本次八路抢答器设计的主要元器件包括:AT89C51单片机、晶振、电阻、电容、按键、开关、电源座、三极管、蜂鸣器和数码管等。其中,晶振采用12MHz,电容为两个30pF和一个10μF。电路中使用的电阻为10K,需用万用表测量阻值,以确保实际成品与理论设计一致。具体的元件清单见表6.1。

表格
元件名称 数量
AT89C51单片机 1
晶振 1
电阻 若干
电容 3
按键 若干
开关 1
电源座 1
三极管 若干
蜂鸣器 1
数码管 4
6.2 电路板焊接
在电路板焊接过程中,元器件的插放顺序应遵循“先小后大,先低后高”的原则,即先焊接体积较小的元件,再焊接体积较大的元件。焊接时应确保元件的分布清晰、有条理,整体外观美观且实用性强。对于有极性的元器件,必须严格按照原理图上的安装要求进行安装,避免装反。焊接过程中,应避免虚焊和漏焊,电烙铁在电路板上的停留时间不宜过长,以防烧坏元件和电路板。同时,电烙铁的温度应保持适宜,过高或过低的温度都会导致焊接不良。

6.3 实物调试
焊接完成后,需仔细对照原理图检查实物焊接电路,确保元器件摆放正确、齐全,导线连接无误。使用万用表测量电阻两端的阻值,并对蜂鸣器两端通电,检查其是否正常工作。

在确认无误Keil4开发环境下利用所学的C语言对软件程序进行编译和调试,然后再通过Proteus仿真软件,将软硬件进行结合进而实现八路抢答器的功能。最后对照所设计的原理图焊接实物,得到成品。在这些过程中并不是一帆风顺,遇到了在原理图设计过程中找不到合适的电阻和电容,对单片机了解不深刻等问题,但最后都通过询问老师,查阅资料的方法得到了解决。本次设计具有的创新点是加入了时间设置模块。通过总结这次设计,回头反思还可加入计分模块,对选手答题分数进行统计显示。

本次设计为我大学四年的学习画上了完美的句号。回想在这大学四年里学到了不少有关单片机,汇编语言等知识,通过这次毕业设计不仅加深了我对所学知识的掌握,还促进了我对新知识的学习,是我对知识的应用更加牢靠,让我受益匪浅。

附录:

附录1:系统原理图

附录2:系统仿真图

附录3:焊接实物图


http://www.kler.cn/a/460626.html

相关文章:

  • 前端路由 Hash 和 History 模式原理对比区别
  • 【代码】Python|Windows 批量尝试密码去打开加密的 Word 文档(docx和doc)
  • Lua迭代器如何使用?
  • Centos中常见的几个问题及其解决办法
  • 【Python】FastAPI之SQLAlchemy、关联关系
  • 将现有Web 网页封装为macOS应用
  • 试用ChatGPT的copilot编写一个程序从笔记本电脑获取语音输入和图像输入并调用开源大模型进行解析
  • 【一起python】银行管理系统
  • linux上使用cmake编译的方法
  • ArrayList 和LinkedList的区别比较
  • 酒后饮品选择指南:科学缓解不适
  • 2024年年度总结
  • Pyqt5学习(学习中)
  • LoRaWAN协议在基于低地球轨道的大规模机器类通信架构中的无缝集成
  • 游戏引擎学习第64天
  • 柱状图中最大的矩形 - 困难
  • 微服务-Sentinel新手入门指南
  • UE5在蓝图中使用VarestX插件访问API
  • html+css网页制作 美食 美食每刻4个页面
  • MapReduce相关概念(自用)
  • 抖音电商全年销售154亿单产业带商品,830个产业带销售额过亿
  • 【每日学点鸿蒙知识】箭头函数、Watch状态变量、H5获取定位数据、前后台切换、长按事件
  • HarmonyOS Next 应用元服务开发-应用接续动态配置迁移快速启动目标应用
  • 【linux学习指南】Ext系列文件系统(二)引⼊⽂件系统“块“分区inode概念
  • 老年认知衰弱分类模型在临床即时检测系统中的应用
  • R语言文件IO和并行计算优化实践