热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

单片机8位抢答器实训机电报告_基于单片机的八位抢答器课程设计报告.docx

基于单片机的八位抢答器课程设计报告.docx单片机课程设计报告题目电子抢答器系统设计学院电气信息学院专业通信工程姓名学号指导老师孙晓玲单片机课程设计报告2一、设计任务设计一个八路的

基于单片机的八位抢答器课程设计报告.docx

单片机课程设计报告题目电子抢答器系统设计学院电气信息学院专业通信工程姓名学号指导老师孙晓玲单片机课程设计报告2一、设计任务设计一个八路的电子抢答器系统,实现功能为可供8个选手使用,可显示30S倒计时,并可显示出抢到的选手号,并伴有提示音。要求1设计出硬件电路;2设计出软件编程方法,并写出源代码;3用PROTEUS进行仿真;二、方案设计1设置一个定时开关,开关按下后开始30S倒计时,在定时开关按下之前进行抢答无效,使用两位数码管显示倒计时。2在30S内,等待八个按钮中任意一个按下,按下后使用一位数码管显示按下的选手号,同时蜂鸣器发出响声。3一旦有选手按下后,其他选手再按下均无效,同时30S倒计时停止计时,等待复位信号。三、硬件设计(一)选用AT89C51单片机芯片单片机(SCM)是单片微型计算机(SINGLECHIPMICROCOMPUTER)的简称。它是把中央处理器CPU、随机存储器RAM、只读存储器ROM、I/O接口电路、定时/计数器以及输入输出适配器都集成在一块芯片上,构成一个完整的微型计算机。它的最大优点是体积小,可放在仪表内部。但存储量小,输入输出适配器简单,功能较低。目前,单片机在民用和工业测控领域得到最广泛的应用,早已深深地融入人们的生活中。简单的说,用单片机系统来设计抢答器,实现两组的抢答时间即使是相差几微秒,也可分辨出哪组优先答题。P0端口(P00P07)P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编程时,P0口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。P1端口(P10P17)P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高电平,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收。P2端口(P20P27)P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。P3端口(P30P37)P3口管脚是一个带有内部上拉电阻的8位的双向I/O端口,可接收输出4单片机课程设计报告3个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入端时,由于外部下拉为低电平,P3口将输出电流(ILL)。(二)关键电路1时钟电路一般选用石英晶体振荡器。此电路在加电大约延迟10MS后振荡器起振,在XTAL2引脚产生幅度为3V左右的正弦波时钟信号,其振荡频率主要由石英晶振的频率确定。电路中两个电容C1,C2的作用有两个一是帮助振荡器起振二是对振荡器的频率进行微调。C1,C2的典型值为30PF。单片机在工作时,由内部振荡器产生或由外直接输入的送至内部控制逻辑单元的时钟信号的周期称为时钟周期。其大小是时钟信号频率的倒数,常用FOSC表示。如时钟频率为12MHZ,即FOSC12MHZ,则时钟周期为1/12ΜS。2复位电路AT89C51的复位由外部的复位电路实现。复位电路通常采用上电自动复位和按钮复位两种方式。本次设计采用按钮复位方式。单片机的第9脚RST为硬件复位端,只要持续4个机器周期的高电平即可实现复位,硬件复位后的各状态可知寄存器以及存储器的值都恢复到了初始值。3数码管显示电路本次课程设计采用了7SEGMPX2CC的两位7段共阴极数码管,用来显示30S倒计时,和7SEGMPX1CC的一位7段共阴极数码管,用来显示抢答中的选手号码。位选端分别与P2口的第七位,第六位以及第零位相接。同时7段数码管线段通过上拉电阻接POWER,实现数码管的点亮。单片机课程设计报告44报警电路这里能利用程序来控制单片机P37口线反复输出高电平或低电平,即在该口线上产生一定频率的矩形波,接上扬声器就能发出一定频率的声音,再利用延时程序控制“高”“低”电平的持续时间,就能改变输出频率,从而改变音调,使扬声器发出不同的声音。5按钮输入电路8个按钮接P1口,表示8个选手的抢答按钮,一个总开关接P30口负责启动定时程序。(三)整体电路单片机课程设计报告5四、软件设计(一)系统原理图数码管显示电路蜂鸣器报警电路AT89C51单片机八个抢答按钮定时开关(二)软件流程图在本设计中包括了以下四个主要的程序主程序;倒计时程序;正常抢答处理程序显示及发声程序。主流程图如图所示程序开始N判断KEY1按下YT0定时开始单片机课程设计报告6N,继续计时是否有选手按下Y显示选手号,停止计时,蜂鸣器响程序结束(三)关键程序1倒计时30S程序段VOIDTIMER0INTERRUPT1{TH06553650000/256//重新赋初值TL06553650000256AAIFAA20{AA0TEMPIFTEMP0{TEMP30}}利用计时器T0进行30S倒计时,T0工作在方式1下,该方式最大可计时65536US,利用计时公式THX65536X/256,TLX65536X256,设置单次计数初值为50MS,再重复20次就可获得1S,1S完成后AA清零,TEMP减1,TEMP总数为30,即可完成30S的倒计时。再利用七段数码管的动态扫描即可完成倒计时的显示。2显示选手号码程序段IFN1{IFK10{DELAY10IFK10{WHILEK1I1TR00N0BEEP1DELAY500BEEP0}}IFK20{DELAY10IFK20{WHILEK2I2TR00N0BEEP1DELAY500BEEP0}单片机课程设计报告7}IFK30{DELAY10IFK30{WHILEK3I3TR00N0BEEP1DELAY500BEEP0}}IFK40{DELAY10IFK40{WHILEK4I4TR00N0BEEP1DELAY500BEEP0}}IFK50{DELAY10IFK50{WHILEK5I5TR00N0BEEP1DELAY500BEEP0}}IFK60{DELAY10IFK60{WHILEK6I6TR00N0BEEP1DELAY500BEEP0}}IFK70{DELAY10IFK70{WHILEK7I7TR00N0BEEP1DELAY500BEEP0}}IFK80{DELAY10IFK80{WHILEK8I8TR00N0BEEP1DELAY500BEEP0}}}变量N为检测信号,当TR0开始计时时置为1,此时才开始检测是否有键按下,程序中包括按键去抖与松手检测,I用来传递键值给一位七段数码管,通过调用共阴极编码数组显示选中的号数,切一旦有键按下后,TR0置0,停止计时。N置0,之后按下无效。蜂鸣器延时取反



推荐阅读
  • 汇编语言:编程世界的始祖,连C语言都敬畏三分!
    当C语言还在萌芽阶段时,它首次接触到了汇编语言,并对其简洁性感到震惊。尽管汇编语言的指令极其简单,但它却是所有现代编程语言的基础,其重要性不言而喻。 ... [详细]
  • 篇首语:本文由编程笔记#小编为大家整理,主要介绍了重温Linux内核:互斥和同步相关的知识,希望对你有一定的参考价值。文章目录 ... [详细]
  • java datarow_DataSet  DataTable DataRow 深入浅出
    本篇文章适合有一定的基础的人去查看,最好学习过一定net编程基础在来查看此文章。1.概念DataSet是ADO.NET的中心概念。可以把DataSet当成内存中的数据 ... [详细]
  • 本文详细介绍了如何使用Linux下的mysqlshow命令来查询MySQL数据库的相关信息,包括数据库、表以及字段的详情。通过本文的学习,读者可以掌握mysqlshow命令的基本语法及其常用选项。 ... [详细]
  • 本文详细介绍了 Node.js 中 OS 模块的 arch 方法,包括其功能、语法、参数以及返回值,并提供了具体的使用示例。 ... [详细]
  • 本文探讨了如何在PHP与MySQL环境中实现高效的分页查询,包括基本的分页实现、性能优化技巧以及高级的分页策略。 ... [详细]
  • Docker安全策略与管理
    本文探讨了Docker的安全挑战、核心安全特性及其管理策略,旨在帮助读者深入理解Docker安全机制,并提供实用的安全管理建议。 ... [详细]
  • MySQL InnoDB 存储引擎索引机制详解
    本文深入探讨了MySQL InnoDB存储引擎中的索引技术,包括索引的基本概念、数据结构与算法、B+树的特性及其在数据库中的应用,以及索引优化策略。 ... [详细]
  • 本文介绍了在Linux环境下如何有效返回命令行状态、上一级目录及快速查找头文件和函数定义的方法。包括处理长时间运行命令、编辑器退出技巧、目录导航以及文件搜索策略。 ... [详细]
  • A题这题贼水,直接暴力就可以了。用个bool数组记录一下,如果某一天,当前剩下的最大的出现了的话,就输出一段。1#include<stdio.h>2intn;3boolvi ... [详细]
  • 探讨如何在给定数组中寻找一个连续子数组,使其和至少达到指定值s,同时确保子数组长度最短。 ... [详细]
  • 本文详细介绍了在PHP中如何获取和处理HTTP头部信息,包括通过cURL获取请求头信息、使用header函数发送响应头以及获取客户端HTTP头部的方法。同时,还探讨了PHP中$_SERVER变量的使用,以获取客户端和服务器的相关信息。 ... [详细]
  • 本文详细探讨了select和epoll两种I/O多路复用技术的内部实现原理,分析了它们在处理大量文件描述符时的性能差异,并通过具体示例代码展示了select的工作流程。 ... [详细]
  • 服务器虚拟化存储设计,完美规划储存与资源,部署高性能虚拟化桌面
    规划部署虚拟桌面环境前,必须先估算目前所使用实体桌面环境的工作负载与IOPS性能,并慎选储存设备。唯有谨慎估算贴近实际的IOPS性能,才能 ... [详细]
  • 流处理中的计数挑战与解决方案
    本文探讨了在流处理中进行计数的各种技术和挑战,并基于作者在2016年圣何塞举行的Hadoop World大会上的演讲进行了深入分析。文章不仅介绍了传统批处理和Lambda架构的局限性,还详细探讨了流处理架构的优势及其在现代大数据应用中的重要作用。 ... [详细]
author-avatar
I-1ove-Y0u
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有