简易四路抢答器_第1页
简易四路抢答器_第2页
简易四路抢答器_第3页
简易四路抢答器_第4页
简易四路抢答器_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

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

文档简介

单片机课程设计预习报告班级:建电141**:付鹏鑫**:1412032031设计题目:四位竞赛抢答器系统设计设计时间:2016.01.03~01.07评定成绩:评定教师:目录TOC\o"1-2"\h\u摘要错误!未定义书签。一、任务分析:3二、总体方案:42.1可行方案错误!未定义书签。2.2方案设计错误!未定义书签。三、硬件设计:83.1电路原理图81.AT89C51简介102.PCF8591简介2 3.RESPACK8及R*8简介………….123.2器件选择错误!未定义书签。四、软件设计:错误!未定义书签。4.1程序处理流程错误!未定义书签。4.2程序流程图错误!未定义书签。4.3程序介绍错误!未定义书签。五、调试过程:225.1调试步骤22六、参考文献:错误!未定义书签。错误!未定义书签。摘要:抢答器作为一种工具,已广泛应用于各自智力与知识竞赛场合。本设计是基于C52单片机系统的四路抢答器。考虑到其限时答复功能,利用单片机的定时器/计数器定时和计数原理,将软件和硬件结合,使系统能准确计时,并使数码管正确的显示时间。用开关做键盘输出,扬声器做提示报警。同时系统能够实现抢答结果锁存、调整定时时长〔用pcf8591实现A/D转换〕以及手动复位功能。关键字:AT89C51单片机、锁存、减计时、动态显示、报警一、任务分析1.1设计要求以及需求分析1、设计一个四位竞赛抢答单片机系统,可同时供4名选手或4个代表队参加比赛,每队设置单独的抢答按钮,编号为1、2、3、4,主要的需求是通过对按钮的设置实现每个小组的抢答2、给节目主持人设置一个“抢答开场〞控制开关,用来控制抢答开场,主要需求是通过对抢答按钮的设置实现抢答的开场3、给节目主持人设置一个“系统去除〞控制开关,用来控制系统清零主要需求是通过对系统清零按键的设置以实现系统的去除功能的实现4、抢答器具有编号锁存、抢答计分、时间显示和声响提示等功能。1〕主持人按下“抢答开场〞后,系统以减计时方式,显示抢答剩余时间。2〕如果抢答时间计时完毕,却没有选手抢答时,本次抢答无效,系统报警提示〔显示单音,持续2秒〕;3〕抢答时间内,假设有选手按动对应的抢答按钮,此对编号立即锁存,数码管上显示出队伍编号和此队累计分数,同时系统给出音响提示〔显示单音,持续2秒〕。4〕在主持人启动“抢答开场〞键前,选手提前抢答,抢答无效,系统报警提示〔显示单音,持续2秒〕。主要需求是对系统报警功能实现以及对选手抢答按键和主持人按键的检测5、抢答成功后,制止其他选手抢答,优先抢答选手的编号一直保持到主持人将系统清零为止,主要实现数据锁存。6、抢答器具有利用旋钮调整抢答时间功能,时间*围20秒~50秒,主要需求是对抢答时间的准确设置1.2功能模块设置及其功能〔1〕键盘输入模块:主要是实现选手的抢答以及主持人实现系统清零和抢答开场的功能;〔2〕蜂鸣器报警模块:主要是实现提示和报警功能;〔3〕旋钮调节模块:主要是实现对选手抢答时间设置的功能,通过PCF8591进展A/D转换改变计时器初值来实现;〔4〕数码管显示模块:主要是实现选手抢答时间的显示以及选手的组别和答题分数的设置的功能二、总体方案设计方案一:抢答器系统采用中小规模集成电路,使用按钮作为开关,完成输入信号的触发。该方案不需要软件编程,只需要硬件电路不出错就可实现需要的功能。但是电路的构造复杂,不利于调试,本钱较高,实现接线的时候会因导线连接混乱造成干扰和短路等故障。方案二:采用现场可编程门列阵〔FPGA〕。FPGA可以给出很多逻辑单元,可以将想要实现的功能的电路应硬件语言描述出来,可以实现许多的复杂功能,比拟灵活多变而在时序方面比单片机要好。但是该设计方式对数据的处理方式的速度要求不高,FPGA高速优势无法表达,同时芯片的引脚比拟多,实物电路板布线复杂,加重实际焊接的工作,而且从本钱方面来看,较为不经济。方案三:抢答器系统由一块AT89C51单片机芯片为控制核心,通过PCF8951芯片实现电压输入模拟量的采集以及A/D转换实现向单片机数据的传输以控制减计时时间的控制,通过蜂鸣器发出报警信号,以及通过开关的闭合采集减计时、选手组好、分数和主持人输入信号的采集以在数码管上显示,性能良好,可靠性高,且本钱相对较低。从本钱、性能、可靠性等多方面进展比照和论证,以及基于平安、法律等因素和性价比最优原则,最终实施方案三结合课题功能指标,利用学习过的AT89C51单片机作为控制核心。同时利用独立式键盘来实现选手的抢答功能以及主持人对抢答开场和系统清零的控制,同时用8位的共阳极数码管显示队伍的编号、分数、以及减计时的时间,同时也用到了转换器PCF8951显示电路PCF8951显示电路PCF8951模拟信号采集转换电路报警电路选手开关AT89C52报警电路选手开关AT89C52主持人开关主持人开关系统总体框图系统总体框图〔各组成局部的作用和特点PCF8591:通过对电压模拟信号的采集以及A/D转换,将数字量输出送给单片机来控制减计时的时间;AT89C52:处理键盘输入及控制数码管输入与报警电路显示电路:显示倒计时、抢答队伍及其分数报警电路:用于实现选手抢答和减计时完毕却没有组别答复下列问题时的报警功能。主持人/选手开关:通过键盘控制输入 C52的数据三、硬件设计3.1电路原理图系统整体设计图报警系统数码管显示开关按键A/D转换电路关键器件的介绍:1.AT89C51简介AT89C51是美国ATMEL公司生产的低电压,高性能CMOS8位单片机,片内含4kbytes的可反复擦写的只读程序存储器〔PEROM〕和128bytes的随机存取数据存储器〔RAM〕,器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器〔CPU〕和Flash存储单元,功能强大,可灵活应用于各种控制领域。主要性能参数:·与MCS-51产品指令系统完全兼容·4k字节可重擦写Flash闪速存储器·1000次擦写周期·全静态操作:0Hz-24MHz·三级加密程序存储器·128×8字节内部RAM·32个可编程I/O口线·2个16位定时/计数器·5个中断源·可编程串行UART通道·低功耗空闲和掉电模式2.PCF8591简介PCF8591是8位A/D和D/A转换器,是单片、单电源低功耗8位CMOS数据采集器件,具有4个模拟输入、一个输出和一个串行I2C总线接口。3个地址引脚A0、A1和A2用于编程硬件地址,允许将最多8个器件连接至I2C总线而不需要额外硬件。器件的地址、控制和数据通过两线双向I2C总线传输。器件功能包括多路复用模拟输入、片上跟踪和保持功能、8位模数转换和8位数模拟转换。最大转换速率取决于I2C总线的最高速率。主要性能参数:·单电源供电·工作电压:2.5V--6V·待机电流低·I2C总线串行输入/输出·通过3个硬件地址引脚编址·采样速率取决于I2C总线速度·4个模拟输入可编程为单端或差分输入·自动增量通道选择·模拟电压*围:VSS~VDD·片上跟踪与保持电路·8位逐次逼近式A/D转换·带一个模拟输出的乘法DACA/D和D/A转换的计算公式以及输入与输出关系图时序图PCF8591的数据传送服从I2C总线协议,总线上数据信号的传送由起始信号〔S〕开场,由终止信号〔P〕完毕。在SCL线为高电平期间,SDA线由高电平向低电平的变化表示起始信号,起始信号表示一次数据传送的开场,其后为寻址字节,来寻址被控的从机〔本设计中取为40H〕,在寻址字节后为其应答位。再之后,是按指定读/写的数据字节与应答位。在数据传送完毕以后主器件都必须发送停顿信号。停顿信号用在SCL为高电平期间,SDA线由低电平向高电平的变化来表示。这便是一次完整的数据传送应答时序。A/D转换的时序图3、排阻RESPACK8及R*8电阻块RESPACK8用于P0口驱动,电流不够,加排阻增加电流R*8用于单片机IO用作低电平输入时是提供灌电流,电阻大小确实定一般都是根据你的拉电阻的选择,因为漏极输出的IO内阻相当大,等效电路的电阻即为拉电阻,拉电流就是外接电源/拉电阻,一般的TTL电平驱动电流在20ma-25ma5、独立按键的简介共有六个键盘,其中1-4组按键用于实现组别选手的抢答按键5号按键用于实现主持人设置抢答开场6号按键用于实现主持人设置系统清零3.2器件的选择〔1〕键盘的选择:由于只要实现四组抢答以及主持人使用的系统清零和抢答开场功能,故使用单独六个按键来实现功能以减少器件使用的本钱,且能够实现完全的功能〔2〕模拟器件的选取:为了符合设计要求的规定,A/D转换器选择了采用I2C串行通信的PCF8591〔3〕数码管的选取由于通过PCF8591芯片采集的模拟量信号的输入电压最大为+5V,所以八位数码管已根本满足需求,为了使P0口获得更大的驱动能力,在此选择了共阳极数码管。〔4〕I/O驱动能力分析:与P1、P2、P3口相比,P0口的驱动能力较大,每位可驱动8个LSTTL输入,而P1、P2、P3口的每一位的驱动能力,只有P0口的一半。当P0口的*位为高电平时,可提供400uA的电流,当P0口的*位为低电平时,可提供3.2mA的灌电流。无论是P0口,还是P1、P2、P3口,想要获得较大的驱动能力,只能用低电平输出。〔5〕电路构造确实定独立的键盘作为人机接口,直接与单片机的P1口相连,单片机的P1口驱动能力相对较弱,但满足数码管驱动,用于驱动八个8段LED数码管,P3口低四位作为四个数码管的位选信号。P3.0、P3.1分别作为时钟线和信号线接口与PCF8591相接, P1.6用来接入蜂鸣器。四、软件设计4.1程序处理流程开场的时候先设置各存储器的地址以及控制字和IO口的设定减计时设置完成以后,假设主持人未按下【开场抢答】按键,却有【1组】、【2组】、【3组】、【4组】中的*一组按下按键,则系统提示报警信号,发出2s的报警提示音;假设主持人按下【开场抢答】按键,则进入减计时程序,此时假设减计时完毕,却没有组进展抢答,则系统提示报警信号,发出2s的报警提示音,然后支持人对系统设置【系统清零】,假设在减计时完毕之前有【1组】、【2组】、【3组】、【4组】中的*一组按下按键抢答,则在数码管上显示该组的成绩累计加分,并显示改组的组号,同时系统设置锁存,保存该组现有的得分,阻止其他组继续抢答,系统提示报警信号,发出2s的报警提示音开场4.2程序流程图开场设置存储器存储地址设置存储器存储地址设置时间设置时间主持人设置主持人设置开场抢答减计时减计时*组直接抢答P1.0~P1.4=0*组直接抢答P1.0~P1.4=0报警2S报警2S报警2S报警2S系统清零显示组号和分数加分系统清零显示组号和分数加分报警报警2S系统清零系统清零4.3程序介绍〔1〕A/D转换//--定义PCF8591的读写地址--//*defineWRITEADDR0*90 //写地址*defineREADADDR0*91 //读地址//--声明全局函数--//voidPcf8591SendByte(unsignedcharchannel);unsignedcharPcf8591ReadByte();voidPcf8591DaConversion(unsignedcharvalue);*函数名:Pcf8591SendByte*函数功能 :写入一个控制命令*输入:channel〔转换通道〕*输出:无*******************************************************************************/voidPcf8591SendByte(unsignedcharchannel){ I2C_Start(); I2C_SendByte(WRITEADDR,1);//发送写器件地址 I2C_SendByte(0*40|channel,0);//发送控制存放器 I2C_Stop();}/********************************************************************************函数名:Pcf8591ReadByte*函数功能 :读取一个转换值*输入:无*输出:dat*******************************************************************************/unsignedcharPcf8591ReadByte(){ unsignedchardat; I2C_Start(); I2C_SendByte(READADDR,1);//发送读器件地址 dat=I2C_ReadByte();//读取数据 I2C_Stop();//完毕总线returndat;}/********************************************************************************函数名:Pcf8591DaConversion*函数功能 :PCF8591的输出端输出模拟量*输入:value〔转换的数值〕*输出:无*******************************************************************************/voidPcf8591DaConversion(unsignedcharvalue){ I2C_Start(); I2C_SendByte(WRITEADDR,1);//发送写器件地址 I2C_SendByte(0*40,1);//开启DA写到控制存放器 I2C_SendByte(value,0);//发送转换数值 I2C_Stop(); }功能:PCF8591芯片通过对模拟输入电压的采集,然后对其进展A/D转换,通过信号线传给单片机已实现对减计时时间的设定思路:减计时时间的设定与PCF8591采集到的模拟量输出电压的大小有关,PCF8591可以将其采集到的模拟量信号通过A/D转换转换成数字量信号从而到达控制减计时时间的功能〔2〕开关检测if(start==0||flag==1) { ET0=1; flag=1; if(m==0) { flag=0; } elseif(m==1) { beep_flag=1; } if((flag1==0)&&(flag2==0)&&(flag3==0)&&(flag4==0)) //未有队伍抢答则倒计时 { display(0,m); } } if((key1==0||flag1==1)&&(flag2==0&&flag3==0&&flag4==0)) //队伍一抢答并且其他队伍未抢答 { ET0=1; if(flag==1) //假设已开场,则有效{ flag1=1; flag2=0; flag3=0; flag4=0; display(1,score1); ET0=0;m=m1; } else //假设未开场则启动蜂鸣器提醒 { beep_flag=1; } } if((key2==0||flag2==1)&&(flag1==0&&flag3==0&&flag4==0)) //同上 { ET0=1; if(flag==1) { flag2=1; flag1=0; flag3=0; flag4=0; display(2,score2); ET0=0; m=m1; } else { beep_flag=1; } } if((key3==0||flag3==1)&&(flag1==0&&flag2==0&&flag4==0)) //同上 { ET0=1; if(flag==1) { flag3=1; flag1=0; flag2=0; flag4=0; display(3,score3); ET0=0; m=m1; } else { beep_flag=1; } } if((key4==0||flag4==1)&&(flag1==0&&flag2==0&&flag3==0)) //同上 { ET0=1; if(flag==1) { flag4=1; flag1=0; flag2=0; flag3=0; display(4,score4); ET0=0; m=m1; } else { beep_flag=1; } } if(flag==0) { display(0,0); } }}功能:通过按键的检测判断是否有人抢答或是主持人是否有按下按键设置抢答开场和系统清零思路:通过对按键是否闭合的检测,检测出选手抢答和主持人按键开场和系统清零,从而实现对没对抢答以后队伍的显示和分数的显示,以及减计时的显示和主持人对系统的清零〔3〕数码管对*队抢答和分数的显示voiddisplay(unsignedcharteam,unsignedcharm) //数码管显示程序{ unsignedms,mg; ms=m/10; mg=m%10; if(team==0) { data=0*00; wei*uan1=0; wei*uan2=1; wei*uan3=1; wei*uan4=1; Delay2ms(); wei*uan1=1; data=0*00; wei*uan1=1; wei*uan2=0; wei*uan3=1; wei*uan4=1; Delay2ms(); wei*uan2=1; data=table[ms]; wei*uan1=1; wei*uan2=1; wei*uan3=0; wei*uan4=1; Delay2ms(); wei*uan3=1; data=table[mg]; wei*uan1=1; wei*uan2=1; wei*uan3=1; wei*uan4=0; Delay2ms(); wei*uan4=1; } else { data=table[team]; wei*uan1=0; wei*uan2=1; wei*uan3=1; wei*uan4=1; Delay2ms(); wei*uan1=1; data=0*40; wei*uan1=1; wei*uan2=0; wei*uan3=1; wei*uan4=1; Delay2ms(); wei*uan2=1; data=table[ms]; wei*uan1=1; wei*uan2=1; wei*uan3=0; wei*uan4=1; Delay2ms(); wei*uan3=1; data=table[mg]; wei*uan1=1; wei*uan2=1; wei*uan3=1; wei*uan4=0; Delay2ms(); wei*uan4=1; }}功能:通过对每一组开关按键的检测,实现该组的队伍和分数的检测思路:通过对每一组开关按键的检测,设置处数码管的位选码和段码,从而到达对该队成绩与队伍的显示〔4〕报警显示voidTimer0_INT()interrupt1 //中断效劳函数{ count++; if(co

温馨提示

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

评论

0/150

提交评论