ImageVerifierCode 换一换
格式:DOCX , 页数:48 ,大小:32.89KB ,
资源ID:3369260      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-3369260.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(基于51单片机八路抢答器的设计.docx)为本站会员(b****1)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

基于51单片机八路抢答器的设计.docx

1、基于51单片机八路抢答器的设计毕业设计(论文)题 目:基于51单片机八路抢答器的设计 系 部: 专 业: 学 号: 学生姓名: 指导教师姓名: 指导教师职称: 2013年 xx 月 xx 日摘 要随着科学技术的发展和普及,各种各样的竞赛越来越多,其中抢答器的作用也就显而易见。目前很多抢答器基本上采用小规模数字集成电路设计,使用起来不够理想。因此设计一更易于使用和区分度高的抢答器成了非常迫切的任务。现在单片机已进入各个领域,以其功耗小、智能化而著称,所以若利用单片机来设计抢答器,便使以上问题得以解决.针对以上情况,本文设计出以STC89C52RC单片机为核心的八路抢答器。我们采用了数字显示器直接

2、指示,自动锁存显示结果,并自动复位的设计思想,它能根据不同的抢答输入信号,经过单片机的控制处理并产生不同的与输入信号相对应的输出信号,最后通过LED数码管显示相应的路数,即使两组的抢答时间相差几微秒,也可分辨出是哪组优先按下的按键,它充分利用了单片机系统的优点,具有结构简单、功能强大、可靠性好、实用性强的特点。本设计是以八路抢答为基本理念。考虑到依需设定限时回答的功能,利用51单片机及外围接口实现的抢答系统,利用单片机的定时器/计数器定时和记数的原理,将软、硬件有机地结合起来,使得系统能够正确地进行计时,同时使数码管能够正确地显示时间。用开关做键盘输出,扬声器发生提示。同时系统能够实现:在抢答

3、中,只有开始后抢答才有效,如果在开始抢答前抢答为犯规;满时后系统计时自动复位及主控强制复位;按键锁定,在有效状态下,按键无效非法。【关键词】STC89C52RC 共阴数码管 按键 蜂鸣器前 言最近几年来,随着科技的飞速发展,单片机领域正在不断的走向社会各个角落,还带动传统控制检测日新月异更新。在实时运作和自动控制的单片机应用到系统中,单片机如今是作为一个核心部件来使用,仅掌握单片机方面知识是不够的,还应根据其具体硬件结构,以及针对具体应用对象特点的软件结合,加以完善。“单片机原理及应用课程设计”是电子类专业的学科基础科,它是继“汇编语言程序设计”,“接口技术”等课程之后开出的实践环节课程。第一

4、章 工作原理1.1设计目标1、同时供8名选手比赛,分别用8个按钮K1 K8表示。2、设置一个系统抢答控制开关K0,该开关由主持人控制。3、抢答器具有锁存与显示功能。即选手按动按钮,锁存相应的编号,扬声器发出声响提示,并在七段数码管上显示选手号码。选手抢答实行优先锁存,优先抢答选手的编号一直保持到主持人将系统清除为止。4、抢答器具有定时抢答功能,且一次抢答的时间由主持人设定(如30秒)。当主持人启动开始键后,定时器进行减计时。5、参赛选手在设定的时间内进行抢答,抢答有效,定时器停止工作,显示器上显示选手的编号和抢答的时间,并保持到主持人将系统清除为止。在这段时间如果定时时间已到,无人抢答,本次抢

5、答无效,系统报警并禁止抢答,定时显示器上显示00。1、在抢答中,只有开始后抢答才有效,如果在开始抢答前抢答为犯规。2、抢答限定时间和回答问题的时间是在1060s设定。3、可以显示是哪位选手有效抢答和无效抢答,正确按键后有音提示。4、抢答时间和回答问题时间倒记时显示,时间完后系统自动复位。5、按键锁定,在有效状态下,按键无效非法。第二章 硬件设计与原理以STC89C52RC单片机为核心,起着控制作用。系统包括数码管显示电路、复位电路、时钟电路、按键输入电路和蜂鸣器报警电路。设计思路分为六个模块:复位电路、晶振电路模块、STC89C52RC、数码管显示电路、按键输入电路和蜂鸣器报警电路这六个模块。

6、2.1 总设计框图2.2 硬件设计分析2.2.1 电源的设计系统电源使用外接直流5伏。2.2.2 单片机最小系统51单片机是对目前所有兼容intel 8031指令系统的单片机的统称。该系列单片机的始祖是intel的8031单片机,后来随着技术的发展,成为目前广泛应用的为单片机之一。单片机是在一块芯片内集成了CPU、RAM、ROM、定时器计数器和多功能I/O口等计算机所需要的基本功能部件的大规模集成电路,又称为MCU。51系列单片机内包含以下几个部件:一个位CPU;一个片内振荡器及时钟电路;4KB的ROM程序存储器;一个128B的RAM数据存储器;寻址64KB外部数据存储器和64KB外部程序存储

7、空间的控制电路;32条可编程的I/O口线;两个16位定时计数器;一个可编程全双工串行口;个中断源、两个优先级嵌套中断结构。如图2-2-1所示为STC89C52RC单片机基本构造,其基本性能介绍如下:图2-2-1 STC89C52RC单片机STC89C52RC本身内含40个引脚,32个外部双向输入/输出(I/O)端口,同时内含2个外中端口,3个16位可编程定时计数器,2个全双工串行通信口,STC89C51RC可以按照常规方法进行编程,但不可以在线编程。其将通用的微处理器和Flash存储器结合在一起,特别是可反复擦写的Flash存储器可有效地降低开发成本。STC89C52RC的主要特性如下表所示:

8、兼容MCS51指令系统32个可编程I/O线4k字节可编程闪烁存储器可编程UARL通道三个16位可编程定时/计数器中断时钟频率0-24MHz2个外部中断源,共8个中断源2568bit内部RAM2个读写中断口线可直接驱动LED软件设置睡眠和唤醒功能低功耗空闲和掉电模式表2-2-1 STC89C52RC主要功能描述STC89C52RC为40脚双列直插封装的8位通用微处理器,采用工业标准的C51内核,在内部功能及管脚排布上与通用的8xc52相同,其主要用于会聚调整时的功能控制。功能包括对会聚主IC内部寄存器、数据RAM及外部接口等功能部件的初始化,会聚调整控制,会聚测试图控制,红外遥控信号IR的接收解

9、码及与主板CPU通信等。主要管脚有:XTAL1(19脚)和XTAL2(18脚)为振荡器输入输出端口,外接12MHz 晶振。RST/Vpd(9脚)为复位输入端口,外接电阻电容组成的复位电路。VCC(40脚)和VSS(20脚)为供电端口,分别接+5V电源的正负端。P0P3 为可编程通用I/O脚,其功能用途由软件定义,在本设计中,P0端口(3239脚)被定义为N1功能控制端口,分别与N1的相应功能管脚相连接,13脚定义为IR输入端,10脚和11脚定义为I2C总线控制端口,分别连接N1的SDAS(18脚)和SCLS(19脚)端口,12脚、27脚及28脚定义为握手信号功能端口,连接主板CPU的相应功能端

10、,用于当前制式的检测及会聚调整状态进入的控制功能。P0口:P0口是一组8位漏极开路型双向I/O 口,也即地址/数据总线复用口。作为输出口用时,每位能吸收电流的方式驱动8个TTL逻辑门电路,对端口P0写“1”时,可作为高阻抗输入端用。在访问外部数据存储器或程序存储器时,这组口线分时转换地址(低8位)和数据总线复用,在访问期间激活内部上拉电阻。在Flash 编程时,P0口接收指令字节,而在程序校验时,输出指令字节,校验时,要求外接上拉电阻。P1口:P1是一个带内部上拉电阻的8位双向I/O口,P1的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对端口写“1”,通过内部的上拉电阻把端口拉到高

11、电平,此时可作输入口。作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(IIL)。与AT89C51不同之处是,P1.0和P1.1还可分别作为定时/计数器2 的外部计数输入(P1.0/T2)和输入(P1.1/T2EX)。Flash编程和程序校验期间,P1接收低8位地址。P2口:P2是一个带有内部上拉电阻的8 位双向I/O口,P2的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对端口P2写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口,作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(IIL)。在访问外部程序存储器或16

12、位地址的外部数据存储器(例如执行MOVX DPTR指令)时,P2口送出高8位地址数据。在访问8位地址的外部数据存储器(如执行MOVX RI指令)时,P2口输出P2锁存器的内容。Flash编程或校验时,P2亦接收高位地址和一些控制信号。P3口:P3口是一组带有内部上拉电阻的8位双向I/O口。P3口输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对P3口写入“1”时,它们被内部上拉电阻拉高并可作为输入端口。此时,被外部拉低的P3口将用上拉电阻输出电流(IIL)。P3口除了作为一般的I/O口线外,更重要的用途是它的第二功能P3口还接收一些用于Flash 闪速存储器编程和程序校验的控制信号。R

13、ST:复位输入。当振荡器工作时,RST引脚出现两个机器周期以上高电平将使单片机复位。ALE/PROG:当访问外部程序存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低8位字节。一般情况下,ALE仍以时钟振荡频率的1/6输出固定的脉冲信号,因此它可对外输出时钟或用于定时目的。要注意的是:每当访问外部数据存储器时将跳过一个AL脉冲。对Flash存储器编程期间,该引脚还用于输入编程脉冲(PROG)。如有必要,可通过对特殊功能寄存器(SFR)区中的8EH单元的D0位置位,可禁止ALE操作。该位置位后,只有一条 MOVX 和MOVC指令才能将ALE激活。此外,该引脚会被微弱拉高,单片机

14、执行外部程序时,应设置ALE禁止位无效。PSEN:程序储存允许(PSEN)输出是外部程序存储器的读选通信号,当STC89C51RC由外部程序存储器取指令(或数据)时,每个机器周期两次PSEN有效,即输出两个脉冲。在此期间,当访问外部数据存储器,将跳过两次PSEN信号。EA/VPP:外部访问允许。欲使CPU仅访问外部程序存储器(地址为0000HFFFFH),EA端必须保持低电平(接地)。需注意的是:如果加密位LB1被编程,复位时内部会锁存EA端状态。如EA端为高电平(接Vcc端),CPU则执行内部程序存储器中的指令。Flash存储器编程时,该引脚加上+12V的编程允许电源Vpp,当然这必须是该器

15、件是使用12V编程电压Vpp。XTAL1:振荡器反相放大器的及内部时钟发生器的输入端。XTAL2:振荡器反相放大器的输出端。单片机最小原理图如图2-2-2所示。图2-2-2 单片机最小系统单片机最小系统说明:时钟信号的产生:在MCS-51芯片内部有一个高增益反相放大器,其输入端为芯片引脚XTAL1,其输出端为引脚XTAL2。而在芯片的外部,XTAL1和XTAL2之间跨接晶体振荡器和微调电容,从而构成一个稳定的自激振荡器,这就是单片机的时钟振荡电路。时钟电路产生的振荡脉冲经过触发器进行二分频之后,才成为单片机的时钟脉冲信号。一般地,电容C2和C3取30pF左右,晶体的振荡频率范围是1.2-12M

16、Hz。如果晶体振荡频率高,则系统的时钟频率也高,单片机的运行速度也就快。单片机复位使CPU和系统中的其他功能部件都处在一个确定的初始状态下,并从这个状态开始工作。单片机复位条件:必须使9脚加上持续两个机器周期(即24个振荡周期)的高电平。2.2.3 数码管显示电路显示系统采用四位一体数码管来显示,LED显示屏作为大型显示设备的一种,具有亮度高、价格低、寿命长、维护简便等优点。LED数码管的结构简单,分为七段和八段两种形式,也有共阳和共阴之分。以八段共阳管为例,它有8个发光二极管(比七段多一个发光二极管,用来显示sP,即点),每个发光二极管的阳极连在一起,如图(图2-2-4)所示。这样,一个LE

17、D数码管就有I根位选线和8根段选线,要想显示一个数值,就要分别对它们的高低电平来加以控制。为方便起见,本文主要讨论共阴八段LED数码显示管,其他类形的显示管与其类似。图2-2-3 LED数码管LED 灯的显示原理:通过同名管脚上所加电平的高低来控制发光二极管是否点亮而显示不同的字形,如 H,G,F,E,D,C,B,A全亮显示为8,采用共阴极连接驱动代码,代码表如下表(表2-2-2)所示。表2-2-2 驱动代码表显示数值H,G,F,E,D,C,B,A驱动代码0001111113FH10000011006H2010110115BH3010011114FH40110011066H5011011016

18、DH6011111017DH70000011107H8011111117FH9011011116FH2.2.4 按键输入电路按键是由一组按压式或触摸式开关构成的阵列,是一种常用的输入设备。键盘可分为编码式键盘和非编码式键盘两种。1.编码键盘通过硬件电路产生被按按键的键码,这种键盘所需程序简单,但硬件电路复杂、价格昂贵通常不被单片机系统采用。2.非编码键盘常用一些按键排列成行列矩阵,其硬件逻辑与按键编码不存在严格的对应关系,而要由所用的程序来决定。非编码键盘的硬件接口简单,但是要占用较多的CPU时间,通常采用可编程键盘管理芯片来克服这个缺点。本设计使用两种按键,一种是按键式非编码键盘和轻触式非编

19、码开关。在接线时由于有四个引脚,连接时需要用万用表进行测量,然后接通两个引脚,原理图如下。要进行数据的计算就必须先进行数据的输入,也就必须确定按键输入的数值是什么,这就需要对键盘进行扫描,从而确定究竟是哪个键按下。图2-2-4 按键电路2.2.5 报警与指示电路图2-2-5 报警与指示电路第三章 软件设计与分析3.1 软件设计的组成该系统由延时子函数、初始化子函数、开始键扫描子函数、选手抢答按键扫描子函数、显示子函数、调整时间键扫描子函数、定时器0中断子函数、定时器1中断子函数、主函数和数据定义这几部分组成。3.2 各部分软件分析3.2.1 延时子函数/延时子函数void delay(ucha

20、r x) uchar y; for(;x0;x-) for(y=120;y0;y-);3.2.2 初始化子函数/初始化子函数void init() TMOD=0x11; TH0=(65536-2000)/256; TL0=(65536-2000)%256; TH1=(65536-2000)/256; TL1=(65536-2000)%256; ET0=1; ET1=1; EA=1; P0=0x00; time1=10; time2=10; flag2=1;3.2.3 开始键扫描子函数/开始键扫描子函数void key1() uchar i=100; if(K0=0) delay(10); if

21、(K0=0) while(K0=0&i) i-; delay(10); TR0=1; s=time1; m=0; flag1=1; flag2=1; flag3=1; num=0; beep=1; D0=1; flag4=0; /清除违规标志位 aa=0; bb=0; 3.2.4 选手抢答按键扫描子函数/选手抢答按键扫描子函数void key() if(K1=0) delay(10); if(K1=0) while(!K1); num=1; /数码管显示1号1 TR0=0; /关闭定时器0,时间停止 TR1=1; /打开定时器1,使扬声器响一声 flag2=0; /关闭开始键标志位,使再按其他

22、七个键不会响应 if(K2=0) /下面七个键的处理同上 delay(10); if(K2=0) while(!K2); num=2; TR0=0; TR1=1; flag2=0; /重要 if(K3=0) delay(10); if(K3=0) while(!K3); num=3; TR0=0; TR1=1; flag2=0; if(K4=0) delay(10); if(K4=0) while(!K4); num=4; TR0=0; TR1=1; flag2=0; if(K5=0) delay(10); if(K5=0) while(!K5); num=5; TR0=0; TR1=1; f

23、lag2=0; if(K6=0) delay(10); if(K6=0) while(!K6); num=6; TR0=0; TR1=1; flag2=0; if(K7=0) delay(10); if(K7=0) while(!K7); num=7; TR0=0; TR1=1; flag2=0; if(K8=0) delay(10); if(K8=0) while(!K8); num=8; TR0=0; TR1=1; flag2=0; 3.2.5 显示子函数/显示子函数void display() if(flag1=1) /开始键按下,开始计时抢答 if(num!=0) /如果有人抢答,则显

24、示相应的几号 P0=table1num; /显示几号抢到了 P2=table20; delay(2); P0=0; P2=0xff; else /否则没人抢答,则前面不显示几号 P0=0x00; P2=0xff; P0=table1s/10; /下面为显示抢答倒计时 P2=table22; delay(2); P0=0; P2=0xff; P0=table1s%10; P2=table23; delay(2); P2=0xff; P0=0x00; else /如果开始键没有按下,则显示F FF(若有违规者,则显示违规号码及 FF)或时间调整 if(flag4=1) /违规显示 if(num!=

25、0) P0=table1num; /显示几号违规了 P2=table20; delay(2); P0=0x00; P2=0xff; P0=table115; /下面显示 FF,表示违规了 P2=table22; delay(2); P0=0x00; /消隐 P2=0xff; P0=table115; P2=table23; delay(2); P0=0x00; P2=0xff; else P0=0x00; P2=0xff; else /没有人违规才显示调整时间 if(aa=1) P0=0x6d; /第一位数码管显示5(S)(表示抢答时间调整) P2=table20; delay(2); P0=

26、0x00; P2=0xff; P0=table1time1/10; /下面显示调整的抢答时间 P2=table22; delay(2); P0=0x00; P2=0xff; P0=table1time1%10; P2=table23; delay(2); P0=0x00; P2=0xff; else if(bb=1) P0=0x07; /第一位与第二位数码管合起来显示T,表示答题时间调整 P2=table20; delay(2); P0=0x00; P2=0xff; P0=0x31; P2=table21; delay(2); P0=0x00; P2=0xff; P0=table1time2/

27、10; P2=table22; delay(2); P0=0x00; P2=0xff; P0=table1time2%10; P2=table23; delay(2); P0=0x00; P2=0xff; else /否则显示F FF P0=table115; P2=table20; delay(2); P0=0x00; P0=table115; P2=table22; delay(2); P0=0x00; /消隐 P2=0xff; P0=table115; P2=table23; delay(2); P0=0x00; P2=0xff; 3.2.6 调整时间键扫描子函数/调整时间键扫描子函数void key2() uchar i=100; if(S2=0) /抢答时间调整 delay(10); if(S2=0) while(S2=0&i) i-; delay(10); time1+; if(time1=61) time1=10; aa=1; /将抢答时间标志位置1 bb=0; /同时关闭答题时间标志位 if(S3=0) /答题时间调整 delay(10); if(S3=0)

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2