单片机八位抢答器课程设计报告_第1页
单片机八位抢答器课程设计报告_第2页
单片机八位抢答器课程设计报告_第3页
单片机八位抢答器课程设计报告_第4页
单片机八位抢答器课程设计报告_第5页
已阅读5页,还剩37页未读 继续免费阅读

下载本文档

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

文档简介

-42-目录HYPERLINK第1章设计题目分析、方案 -2-HYPERLINK1.1设计任务与要求 -2-HYPERLINK1.2单片机的控制原理 -2-HYPERLINK1.3方案设计 -4-HYPERLINK1.4AT89C51引脚分配 -5-HYPERLINK第2章系统电路设计 -6-HYPERLINK2.1时钟模块以及复位电路模块 -6-HYPERLINK2.2显示电路模块 -7-HYPERLINK2.3抢答输入模块 -8-HYPERLINK2.4控制模块 -8-HYPERLINK2.5提示模块 -9-HYPERLINK2.6总电路图 -10-HYPERLINK第3章系统软件设计 -11-HYPERLINK3.1系统主程序设计 -11-HYPERLINK3.2程序流程图 -12-HYPERLINK3.3源程序 -13-HYPERLINK第4章连接调试 -25-HYPERLINK4.1源程序的编译 -25-HYPERLINK4.2peotues的仿真 -26-HYPERLINK第5章总结 -28-第1章设计题目分析、方案1.1设计任务与要求以单片机为核心,设计一个8位竞赛抢答器:同时供8名选手或8个代表队比赛,分别用8个按钮S0~S7表示。设置一个系统清除和抢答控制开关S,开关由主持人控制。抢答器具有锁存与显示功能。即选手按按钮,锁存相应的编号,并在优先抢答选手的编号一直保持到主持人将系统清除为止。抢答器具有定时抢答功能,且一次抢答的时间由主持人设定(如30秒)。当主持人启动“开始”键后,定时器进行减计时,同时扬声器发出短暂的声响,声响持续的时间为0.5s左右。参赛选手在设定的时间内进行抢答,抢答有效,定时器停止工作,显示器上显示选手的编号和抢答的时间,并保持到主持人将系统清除为止。如果定时时间已到,无人抢答,本次抢答无效,系统报警并禁止抢答,定时显示器上显示00。1.2单片机的控制原理单片机(SCM)是单片微型计算机(SingleChipMicrocomputer)的简称。它是把中央处理器CPU、随机存储器RAM、只读存储器ROM、I/O接口电路、定时/计数器以及输入输出适配器都集成在一块芯片上,构成一个完整的微型计算机。它的最大优点是体积小,可放在仪表内部。但存储量小,输入输出适配器简单,功能较低。目前,单片机在民用和工业测控领域得到最广泛的应用,早已深深地融入人们的生活中。简单的说,用单片机系统来设计抢答器,实现两组的抢答时间即使是相差几微秒,也可分辨出哪组优先答题。P0端口(P0.0-P0.7):P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编程时,P0口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。P1端口(P1.0-P1.7):P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高电平,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收。P2端口(P2.0-P2.7):P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。P3端口(P3.0-P3.7):P3口管脚是一个带有内部上拉电阻的8位的双向I/O端口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入端时,由于外部下拉为低电平,P3口将输出电流(ILL)。通过键盘改变抢答的时间,原理与闹钟时间的设定相同,将定时时间的变量置为全局变量后,通过键盘扫描程序使每按下一次按键,时间加1(超过30时置0)。同时单片机不断进行按键扫描,当参赛选手的按键按下时,用于产生时钟信号的定时计数器停止计数,同时将选手编号(按键号)和抢答时间分别显示在LED上。

1.3方案设计在设计时将抢答器分为如下几个模块:时钟模块,复位电路模块,显示电路模块,抢答输入模块,控制模块和提示模块,由以上模块和AT89C51构成抢答系统。该八位抢答器以MCS-51系列单片机AT89C51作为控制核心。其片内带有4K的ROM,128字节的RAM。其可以完成运算控制、信号识别以及显示功能的实现。利用单片机程序判断选手按键是否有效,但是选手违规抢答,利用简答程序显示,启动扬声器报警,告诉主持人有人违规操作,抢答无效。给出相应的延时,选手按正常的操作抢答,软件倒计时,利用AT89C51移位寄存八段数码管,实现倒计时显示时间,到5秒相应时间提醒选手时间快到了,要及时作答,并启动扬声器和灯光。数字抢答器系统设计是借用单片机采用模块化设计的八路抢答器,包括8路抢答按纽、计时显示、提示功能、开始与结束控制按钮、时限设定、各种相关显示调控功能等。参赛者系统,除享有抢答按纽的权利功能外,还有人性化的提示功能和时间提示功能,也可设定由主控控制在参赛者终端表现的趣味性功能等;主控系统的控制按钮做开始与结束控制,根据活动参赛者的层次,对提前抡答者的行为设定为非法或阻隔,若设有非法抢答控制功能时,在主控处带有公示性显示的非法抡答者的台位号,对抢答限时及回答问题限时设为倒计,并有显示提示。AT89C51单片机七段数码管显示8路抢答按键输入复位电路开始、结束按键输入调抢答时间和调答题时间输入时钟

声音灯光提示电路

抢答系统方框图1.4AT89C51引脚分配8路抢答按键输入模块:8路抢答按键输入由8个开关与AT89C51的P1口相连,每一路开关与AT89C51 的P1口的每一个引脚一一对应相连。提示电路模块:灯光提示模块由AT89C51的P3.6引脚输出,声音提示模块由AT89C51的P3.7引脚输出显示电路模块:显示模块由三个八段数码管显示抢答选手编号和抢答时间以及答题时间的显示,由AT89C51得P0口输出控制八段数码管的显示,由P2.0、P2.1和P2.2作为三个八段数码管的位选控制控制模块:控制模块包括复位电路、开始、结束按键输入以及调节抢答时间和调节答题时间输入,其中复位电路由AT89C51的rst引脚控制;开始、结束按键输入控制,开始由AT89C51的P3.0控制,结束由AT89C51的P3.1控制;调节抢答时间和调节答题时间输入控制,调节抢答时间由AT89C51的P3.2控制,调节答题时间由AT89C51的P3.3控制,P3.4控制加时间,P3.5控制减时间。

第2章系统电路设计2.1时钟模块以及复位电路模块单片机必须在时钟的驱动下才能工作。在单片机内部有一个时钟振荡电路,只需要外接一个振荡源就能产生一定的时钟信号送到单片机内部的各个单元,决定单片机的工作速度。一般选用石英晶体振荡器。此电路在加电大约延迟10ms后振荡器起振,在XTAL2引脚产生幅度为3V左右的正弦波时钟信号,其振荡频率主要由石英晶振的频率确定。电路中两个电容C1、C2的作用有两个:一是帮助振荡器起振;二是对振荡器的频率进行微调。C1、C2的典型值为30uF。单片机在工作时,由内部振荡器产生或由外直接输入的送至内部控制逻辑单元的时钟信号的周期称为时钟周期。其大小是时钟信号频率的倒数,常用fosc表示。图中时钟频率为12MHz,即fosc=12MHz,则时钟周期为1/12µs。单片机的第9脚RST为硬件复位端,只要将该端持续4个机器周期的高电平即可实现复位,复位后单片机的各状态都恢复到初始化状态,由按键S8以及电解电容C3构成按键及上电复位电路。由于单片机是高电平复位,所以当按键S8按下时候,单片机的9脚RESET管脚处于高电平,此时单片机处于复位状态。当上电后,由于电容的缓慢充电,单片机的9脚电压逐步由高向低转化,经过一段时间后,单片机的9脚处于稳定的低电平状态,此时单片机上电复位完毕,系统程序从0000H开始执行。时钟模块以及复位电路模块的电路图如下所示:时钟模块以及复位模块电路图2.2显示电路模块此模块显示采用数码管,违规者编号、抢答30秒倒计时、正常抢答者编号和回答问题时间60秒倒计时,数码管采用动态显示。查询显示程序利用P0口做段选码口输出P2低3位做位选码输出,当为低电平则能驱动数码管使其显示数字。在+5V电压下接10k的电阻,保证正常压降。其电路图如下:显示模块电路图2.3抢答输入模块AT89C51的P1口做一个为选手抢答的输入按键引脚,P1.0至P1.7轮流输出低电位,给每一个选手编号1至8,当选手按下按钮时,P1口个端口的电平变化从P1口输入,经单片机处理后从P0输出由数码管显示抢答者编号。抢答输入模块2.4控制模块控制模块要完成以下功能:1)、要主持人按下开始按钮重可以开始抢答。2)、答题结束后,主持人按下停止按钮既可停止为进行下一轮的抢答做准备。3)、能进行对选手抢答时间的调整和选手答题时间的调整。控制模块电路图2.5提示模块提示模块要完成以下功能:1)、主持人将控制开关拨到"开始"位置时,扬声器发声和LED灯闪烁一下。2)、选手正常抢答后扬声器发声和LED灯闪烁一下。3)、选手未按下开始按钮前抢答,扬声器不断发一定频率的声音和LED灯不断闪烁。4)、在抢答和答题倒计时最后5秒时,扬声器每一秒发一声,LED灯每一秒闪烁一次。提示模块电路图2.6总电路图第3章系统软件设计3.1系统主程序设计为了能够达到抢答的公平、公正、合理,应该在主持人发布抢答命令之前必须先设定抢答的时间,因而在编开始抢答前的程序得先编写设定时间的程序,当时间设好了之后,主持人发布抢答命令按下P3.0按键,程序开始打开定时中断开始倒计时,然后调用键盘扫描子程序,编写键盘扫描程序。当在扫描到有人按下了答题键,马上关闭T0、调用显示程序、封锁键盘。主程序系统结构图如下所示:主程序系统结构图非法抢答模块主程序系统结构图非法抢答模块正确抢答模块调整抢答时间调整回答时间数据显示模块系统初始化模块按键模块3.2程序流程图主程序主程序设置抢答时间和回答问题时间定时器及并行口初始化将时间计数器及启动标志值1开中断采并行口数据为0吗?启动标志=1吗?判断抢答组号显示抢答组LED灯闪烁,蜂鸣器不停的响判断哪一组为抢答组将抢答组号送显示抢答时间到了吗?输出响铃信号提示超时继续抢答比赛吗?系统返回N(抢答犯规)Y(正确抢答)YYNYN3.3源程序OKEQU20H;抢答开始标志位RINGEQU22H;响铃标志位ORG0000HAJMPMAINORG0003HAJMPINT0SUBORG000BHAJMPT0INTORG0013HAJMPINT1SUBORG001BHAJMPT1INTORG0040HMAIN: MOVR1,#30;初设抢答时间为30s MOVR2,#60;初设答题时间为60s MOVTMOD,#11H;设置未定时器/模式1 MOVTH0,#0F0H MOVTL0,#0FFH;越高发声频率越高,越尖 MOVTH1,#3CH MOVTL1,#0B0H;50ms为一次溢出中断 SETBEA SETBET0 SETBET1 SETBEX0 SETBEX1;允许四个中断,T0/T1/INT0/INT1 CLROK CLRRING SETBTR1 SETBTR0;一开始就运行定时器,以开始显示FFF;=====查询程序=====START: MOVR5,#0BH MOVR4,#0BH MOVR3,#0BH ACALLDISPLAY;未开始抢答时候显示FFF JBP3.0,NEXT ACALLDELAY JBP3.0,NEXT;去抖动,如果"开始键"按下向下执行,否跳到非法抢答查询 ACALLBARK;按键发声 MOVA,R1 MOVR6,A;送R1->R6,因为R1中保存了抢答时间 SETBOK;抢答标志位,用于COUNT只程序中判断是否查询抢答 MOVR7,#01H;读抢答键数据信号标志,这里表示只读一次有用信号 MOVR3,#0AH;抢答只显示计时,灭号数 AJMPCOUNT;进入倒计时程序,"查询有效抢答的程序"在COUNT里面NEXT: JNBP1.0,FALSE1 JNBP1.1,FALSE2 JNBP1.2,FALSE3 JNBP1.3,FALSE4 JNBP1.4,FALSE5 JNBP1.5,FALSE6 JNBP1.6,FALSE7 JNBP1.7,FALSE8 AJMPSTART;=====非法抢答处理程序=====FALSE1: MOVR3,#01H AJMPERRORFALSE2: MOVR3,#02H AJMPERRORFALSE3: MOVR3,#03H AJMPERRORFALSE4: MOVR3,#04H AJMPERRORFALSE5: MOVR3,#05H AJMPERRORFALSE6: MOVR3,#06H AJMPERRORFALSE7: MOVR3,#07H AJMPERRORFALSE8: MOVR3,#08H AJMPERROR;=====INT0(抢答时间R1调整程序)=====INT0SUB: MOVA,R1 MOVB,#0AH DIVAB MOVR5,A MOVR4,B MOVR3,#0AH ACALLDISPLAY;先在两个时间LED上显示R1 JNBP3.4,INC0;P3.4为+1s键,如按下跳到INCO JNBP3.5,DEC0;P3.5为-1s键,如按下跳到DECO JNBP3.1,BACK0;P3.1为确定键,如按下跳到BACKO AJMPINT0SUBINC0: MOVA,R1 CJNEA,#63H,ADD0;如果不是99,R2加1,如果加到99,R1就置0 MOVR1,#00HIN0: ACALLDISPLAY JNBP3.4,IN0 AJMPINT0SUBADD0: INCR1AD0: ACALLDISPLAY JNBP3.4,AD0 AJMPINT0SUBDEC0: MOVA,R1 JZSETR1;如果R1为0,R1就置99, DECR1DC0: ACALLDISPLAY JNBP3.5,DC0 AJMPINT0SUBSETR1: MOVR1,#63HST1: ACALLDISPLAY JNBP3.5,ST1 ACALLDELAY1 AJMPINT0SUBBACK0: RETI;=====INT1(回答时间R2调整程序)=====INT1SUB: MOVA,R2 MOVB,#0AH DIVAB MOVR5,A MOVR4,B MOVR3,#0AH ACALLDISPLAY JNBP3.4,INC1 JNBP3.5,DEC1 JNBP3.1,BACK1 AJMPINT1SUBINC1: MOVA,R2 CJNEA,#63H,ADD1 MOVR2,#00HIN1: ACALLDISPLAY JNBP3.4,IN1 AJMPINT1SUBADD1: INCR2AD1: ACALLDISPLAY JNBP3.4,AD1 AJMPINT1SUBDEC1: MOVA,R2 JZSETR2 DECR2 ACALLDELAY1 AJMPINT1SUBSETR2: MOVR2,#63H ACALLDELAY1 AJMPINT1SUBBACK1: RETI;=====倒计时程序(抢答倒计时和回答倒计时都跳到改程序)=====REPEAT: MOVA,R2;使用锦囊时重新计时 MOVR6,A CLRRINGCOUNT: MOVR0,#00H;重置定时器中断次数 MOVTH1,#3CH MOVTL1,#0B0H;重置定时器RECOUNT: MOVA,R6;R6保存倒计时的时间,之前先将抢答时间或回答时间给R6 MOVB,#0AH DIVAB;除十分出个位/十位 MOV30H,A;十位存于(30H) MOV31H,B;个位存于(31H) MOVR5,30H;取十位 MOVR4,31H;取个位 MOVA,R6 SUBBA,#07H JNCLARGER;大于5s跳到LARGER,小于等于5s会提醒 MOVA,R0 CJNEA,#0AH,FULL;1s中0.5s向下运行 CLRRING AJMPCHECKFULL: CJNEA,#14H,CHECK;下面是1s的情况,响并显示号数并清R0,重新计 SETBRING MOVA,R6 JZQUIT;计时完毕 MOVR0,#00H DECR6;一秒标志减1 AJMPCHECKLARGER: MOVA,R0 CJNEA,#14H,CHECK;如果1s向下运行,否者跳到查"停/显示" DECR6;计时一秒R6自动减1 MOVR0,#00HCHECK: JNBP3.1,QUIT;如按下停止键退出 JNBOK,CHECKK;只在回答倒计时才有效 AJMPNEXTTCHECKK: JNBP3.0,REPEAT;判断是否使用锦囊NEXTT:ACALLDISPLAYJBOK,ACCOUT;如果是抢答倒计时,如是则查询抢答,否者跳过查询继续倒数(这里起到锁抢答作用) AJMPRECOUNTACCOUT: MOVA,36H JNBACC.0,TRUE1 JNBACC.1,TRUE2 JNBACC.2,TRUE3 JNBACC.3,TRUE4 JNBACC.4,TRUE5 JNBACC.5,TRUE6 JNBACC.6,TZ1 JNBACC.7,TZ2 AJMPRECOUNTTZ1: JMPTRUE7TZ2: JMPTRUE8QUIT: CLROK;如果按下了"停止键"执行的程序 CLRRING AJMPSTART;=====正常抢答处理程序=====TRUE1: ACALLBARK MOVA,R2 MOVR6,A;抢答时间R2送R6 MOVR3,#01H CLROK;因为答题的计时不再查询抢答,所以就锁了抢答 AJMPCOUNTTRUE2: ACALLBARK MOVA,R2 MOVR6,A MOVR3,#02H CLROK AJMPCOUNTTRUE3: ACALLBARK MOVA,R2 MOVR6,A MOVR3,#03H CLROK AJMPCOUNTTRUE4: ACALLBARK MOVA,R2 MOVR6,A MOVR3,#04H CLROK AJMPCOUNTTRUE5: ACALLBARK MOVA,R2 MOVR6,A MOVR3,#05H CLROK AJMPCOUNTTRUE6: ACALLBARK MOVA,R2 MOVR6,A MOVR3,#06H CLROK AJMPCOUNTTRUE7: ACALLBARK MOVA,R2 MOVR6,A MOVR3,#07H CLROK AJMPCOUNTTRUE8: ACALLBARK MOVA,R2 MOVR6,A MOVR3,#08H CLROK AJMPCOUNT;=====犯规抢答程序=====ERROR: MOVR0,#00H MOVTH1,#3CH MOVTL1,#0B0H MOV34H,R3;犯规号数暂存与(34H) HERE: MOVA,R0 CJNEA,#06H,FLASH;0.3s向下运行->灭并停响 CLRRING MOVR3,#0AH MOVR4,#0AH MOVR5,#0AH;三灯全灭 AJMPCHECK1FLASH: CJNEA,#0CH,CHECK1 SETBRING MOVR0,#00H MOVR3,34H;取回号数 MOVR5,#0BH MOVR4,#0BH;显示FF和号数 AJMPCHECK1CHECK1: JNBP3.1,QUIT1 ACALLDISPLAY AJMPHEREQUIT1: CLRRING CLROK AJMPSTART;=====显示程序=====DISPLAY: MOVDPTR,#DAT1;查表显示程序,利用P0口做段选码口输出/P2低三位做位选码输出, MOVA,R3 MOVCA,@A+DPTR MOVP2,#0feH MOVP0,A ACALLDELAY2 MOVDPTR,#DAT2 MOVA,R5 MOVCA,@A+DPTR MOVP2,#0fdH MOVP0,A ACALLDELAY2 MOVA,R4 MOVCA,@A+DPTR MOVP2,#0fbH MOVP0,A ACALLDELAY2 RETDAT1: DB00h,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh,00H,71H ;"灭","1","2","3","4","5","6","7","8","9","灭","F"DAT2: DB3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh,00H,71H ;第一个为零,其他与上相同,因为十位如果为零显示熄灭;====加减时间延时(起到不会按下就加N个数)======D

温馨提示

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

评论

0/150

提交评论