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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

单片机 80C51智能抢答器.docx

1、单片机 80C51智能抢答器课程设计报告系(院、校区):信息与电子工程系专 业:电气自动化技术学 生 姓 名:胡永波学号:1001040113课程设计题目:基于单片机的智能抢答器设计起 迄 日 期:10月28日 12月 26 日 课程设计地点:1421指 导 教 师:孙小羊一、课程设计任务和要求1、课程设计任务设计八路智能抢答器。根据设计内容,要求学生结合已学过的知识,查阅资料,选择适合的单片机芯片,掌握其使用方法,使用KEIL与软件实现系统的仿真,调试。画出硬件电路图和软件流程框图,编写相应的程序。2、课程设计要求正确设计,计算定时,计数的各个单元电路按键控制电路实现。按键锁定,在有效抢答状

2、态下,按键无效非法。抢答限定时间和回答问题的时间可在设定;在抢答中,只有开始后抢答才有效,如果在开始抢答前无效;数码管能够正确地显示时间。可以显示是哪位选手有效抢答和无效抢答;抢答时间和回答问题时间倒计时显示,满时后系统计时自动复位;二、单片机抢答器硬件电路设计1、整体方案设计电子智能抢答计分器在抢答过程中,为了知道哪一组或哪一位选手先答题,必须要设计一个系统来完成这个任务。为了完成这个任务设计时系统能显示抢答组号、各组计分并能计分显示以及比赛结束时能发出报警声三个要求;电子智能抢答计分器主要是由硬件部分和软件部分构成,硬件和软件分开设计;系统综框图如下: 系统框架图抢答器的工作原理:抢答器的

3、工作原理是利用单片机的定时器T0、T1中断完成,其余状态循环调用显示子程序,用4个共阴极LED数码管来显示,用P0口作为数码管的八个段选,用P2口中的P2.0、P2.1、P2.2、作为4个数码管其中3个位选,P1口接4个按键,提供选手抢答,P3.0-P3.5四个接四个按键,提供开始、结束、答题时间调整、抢答时间调整,加1、减1调整之用。抢答功能:通过四路按键配合程序来实现抢答功能。当主持人按下抢答键开始抢答后,此时任一路按下按钮均闭锁其它各路,由程序对键盘译码并显示最先按下抢答键的路数及其当前时间。抢答限时:主持人按下抢答键后,设置5秒为抢答时间(此时间可在1-99秒之间修改)。若5秒内无人抢

4、答,倒计时为0时发出报警,说明该抢答题目作废。此时闭锁所有抢答按键,只有当主持人再次按下抢答键开始下一次抢答方可抢答。答题限时:当选手按下按钮时,启动倒计时(此倒计时时间可在199秒之间修改),倒计时为0时发出报警,说明答题时间到。2、各模块电路设计1、控制系统及所需元件芯片的选择抢答器电路的核心是89C51单片机,其内部带有4KB的FLASH ROM,无需外扩程序存储器;抢答器没有大量的运算和暂存数据现有的128B篇内RAM已经能满足容量需求,故不需外扩片外RAM,系统配有8位8段数码显示管,管采用共阴数码管,作为时钟的显示输出。控制系统主要由单片机应用电路、存储器、接口电路、显示接口电路组

5、成;其中单片机采用的是AT89C51单片机使系统工作的核心,它主要负责控制各个部分协调工作。所需元件:该系统的核心器件是AT89C51,其外部接上复位电路、上拉电阻、数码管、按钮及扬声器。元件为:晶体振荡管X1,电容C1、C2、C3,电阻RP1,P3.0和P3.1有裁判控制分别是抢答停止和开始键;P1.0-P1.7是8组抢答的输入口;P2.0-P2.3口为数码管的段选口;位选口用的是P0.0-P0.6口输出,外部中断0、1和P3.3,P3/4为抢答记时调整口,实现的对个队进行计时,并且加减调整,外部中断0,1实现了答题时间调整。P3.4、P3.5分别实现了时间的加一和减一;P3.6为蜂鸣器控制

6、口。智能抢答器用单片机来设计制作完成,由于其功能的实现主要通过软件编程来完成,采用单片机AT89C51,它是低功耗、高性能的CMOS型8位单片机。片内带有4KB的Flash存储器,并允许在系统内改写或用编程器编程。该智力竞赛抢答器的准确度很高,其误差主要由晶振自身的误差所造成。AT89C51单片机由微处理器,存储器,I/O口以及特殊功能寄存器SFR等部分构成。其存储器在物理上设计成程序存储器和数据存储器两个独立的空间,片内程序存储器的容量为4KB,片内数据存储器为128个字节。89C51单片机有4个8位的并行I/O口:P0口,P1口,P2口和P3口。各个接口均由接口锁存器,输出驱动器和输入缓冲

7、器组成。P1口是唯一的但功能口,仅能用作通用的数据输入/输出口。P3口是双功能口除了具有数据输入/输出功能外,每条接口还具有不同的第二功能,如P3.0是串行输入口线,P3.1口是串行输出口线。在需要外部程序存储存储器和数据存储器扩展时,P0可作为分时复用的低8位地址/数据总线,P2口可作为高8位的地址总线。P3口也可作为AT89C51的一些特殊功能口,同时为闪烁编程和编程校验接收一些控制信号。复位电路的设计 复位电路原理图该复位电路采用上电自动复位和手动复位两种复位方式,图中网络标号所指9连接到单片机的复位引脚。要实现复位只需在,51系列单片机的RESET引脚上加上5ms的高电平就可以了。上电

8、复位是利用电容的充电来实现的,即上电瞬间RESET端的电位与Vcc相同,随着电容上储能增加,电容电压也逐渐增大,充电电流减小,RESET端的电位。这样就会建立一个脉冲电压,调节电容与电阻的大小可对脉冲的持续时间进行调节。通常若采用12MHz的晶振时,复位元件参数为22F的电解电容和10k的电阻。按钮复位电路是通过按下复位按钮时,电源对RESET端维持两个机器周期的高电平实现复位的。晶振电路的设计MSC-51单片机的定时控制功能是用时钟电路和振荡器完成的,而根据硬件电路的不同,连接方式分为内部时钟方式和外部时钟方式。本设计中采用内部时钟方式。 单片机内部有一个反相放大器,XTAL1、XTAL2分

9、别为反相放大器的输入端和输出端,外接定时反馈元件组成振荡器(内部时钟方式),产生时钟送至单片机内部各元件。时钟频率越高,单片机控制器的控制节拍就越快,运算速度也就越快。 一般来说单片机内部有一个带反馈的线性反相放大器,外界晶振(或接陶瓷振荡器)和电容就可组成振荡器,如图所示。加电以后延时一段时间(约10ms)振荡器产生时钟,不受软件控制,图中Y1为晶振,震荡产生的时钟频率主要由Y1确定。电容C1,C2的作用有两个:一是帮助振荡器起振,二是对振荡器的频率起微调作用,典型值为30pF。晶振电路的设计如图所示: 晶振电路原理图数码显示管的选择数码显示管用来作为时间的显示输出,一般用7段数码显示管。本

10、次设计中采用7段共阴数码显示管应用简单、可靠性高、成本低,作为显示输出。连接时段选信号接在P0口的P0.0P0.6七个I/O口上,P1口是准双向I/O接口在输出驱动部分具有驱动4个TTL负载的能力,即输出电流不大于400A,所以在接电阻时选择接510限流电阻。而在位选方面采用单片机P2口的P2.0P2.2三个I/O口作为位选信号的输出口。按钮输入电路的设计抢答器的输入按钮使用常开开关,抢答按键这些常开开关组成了抢答按键,硬件电路简单,在程序设计上也不复杂,只要在程序中消除在按键过程中产生的“毛刺” 现象就可以了。这里采用最常用的方法即延时法,其的原理为:因为“毛刺”脉冲一般持续时间短,约为几m

11、s,而按键的时间一般远远大于这个时间,所以当单片机检测到有按键动静后再延时一段时间(这里取10ms)后再判断此电平是否保持原状态,如果是则为有效按键,否则无效。蜂鸣器 蜂鸣器的发声主要用于对有抢答时的报警信号,以提示主持人。蜂鸣器的发声由三极管放大电压、电流来驱动,其中三极管的基集接单片机的P0.7口,以提供导通基集电流,从而经放大后达到蜂鸣器的发声电压、电流。其电路图所示:蜂鸣器电路3、整体硬件电路图三、单片机抢答器软件设计1、流程图 1程序系统结构图硬件电路确定后,软件的编程要与硬件相匹配,软硬件才能结合完成所要实现的功能。由功能分析得到以下的软件结构图: 软件系统结构图 2程序流程图整个

12、程序主要由定时器T0、定时器T1、外部中断0和主程序构成。定时器T0用于使扬声器发声,当需要响铃时,把响铃标志位置一,每次中断都对P3.7取反,扬声器发声,改变定时器初值,可改变扬声器频率。定时器程流程图如下: 响铃程序流程图定时器T1用于倒计时,每次中断为50ms,当计数标志为20时即为一秒,显示数字减一。其流程图如下: 倒计时中断流程图外部中断0用于调整倒计时时间,流程图如下: 调整抢答时间流程图主程序协调三个中断一起工作,实现抢答功能,其流程图如下: 主程序流程图2、根据流程图编写程序程序代码:P3.0为开始抢答,P3.1为停止,P1.0-P1.7为八路抢答输入,数码管段选P0口,位选P

13、2的低三位口,蜂鸣器输出为P3.6口。 ORG 0000H AJMP MAIN ORG 0003H AJMP INT0SUB ORG 000BH AJMP T0INT ORG 001BH AJMP T1INTOK EQU 20H ; 抢答开始标志位RING EQU 22H ; 响铃标志位 ORG 0040HMAIN: MOV R1,#0FH; 初设抢答时间为15s MOV R2,#0AH; 初设答题时间为10s MOV TMOD,#11H; 设置未定时器/模式1 MOV TH0,#0F0H MOV TL0,#0FFH; 越高发声频率越高,越尖 MOV TH1,#3CH MOV TL1,#0B0

14、H; 50ms为一次溢出中断 SETB EA SETB ET0 SETB ET1 SETB EX0 SETB EX1; 允许四个中断,T0/T1/INT0/INT1 CLR OK CLR RING SETB TR1 SETB TR0; 一开始就运行定时器,以开始显示FFF.如果想重新计数,重置TH1/TL1就可以了查询程序:START: MOV R5,#0BH MOV R4,#0BH MOV R3,#0BH ACALL DISPLAY; 未开始抢答时候显示FFF JB P3.0,NEXT ACALL DELAY JB P3.0,NEXT;去抖动,如果开始键按下就向下执行,否者跳到非法抢答查询

15、ACALL BARK;按键发声 MOV A,R1 MOV R6,A; 送R1-R6,因为R1中保存了抢答时间 SETB OK; 抢答标志位,用于COUNT只程序中判断是否查询抢答 MOV R3,#0AH; 抢答只显示计时,灭号数 AJMP COUNT;进入倒计时程序,查询有效抢答的程序在COUNT里面NEXT: JNB P1.0,FALSE1 JNB P1.1,FALSE2 JNB P1.2,FALSE3 JNB P1.3,FALSE4 JNB P1.4,FALSE5 JNB P1.5,FALSE6 JNB P1.6,FALSE7JNB P1.7,FALSE8 AJMP START非法抢答处理

16、程序:FALSE1: ACALL BARK; 按键发声 MOV R3,#01H AJMP ERRORFALSE2: ACALL BARK MOV R3,#02H AJMP ERRORFALSE3: ACALL BARK MOV R3,#03H AJMP ERRORFALSE4: ACALL BARK MOV R3,#04H AJMP ERRORFALSE5: ACALL BARK MOV R3,#05H AJMP ERRORFALSE6: ACALL BARK MOV R3,#06H AJMP ERRORFALSE7: ACALL BARK MOV R3,#07H AJMP ERRORFALS

17、E8: ACALL BARK MOV R3,#08H AJMP ERROR倒计时程序(包括有效抢答程序): COUNT: MOV R0,#00H; 重置定时器中断次数 MOV TH1,#3CH MOV TL1,#0B0H; 重置定时器RECOUNT: MOV A,R6; R6保存了倒计时的时间 MOV B,#0AH DIV AB; 除十分出个位/十位 MOV 30H,A; 十位存于(30H) MOV 31H,B; 个位存于(31H) MOV R5,30H ; 取十位 MOV R4,31H ; 取个位 MOV A,R6 CLR C SUBB A,#07H JNC LARGER ;大于5s跳到LA

18、RGER,小于等于5s会提醒 MOV A,R0 CJNE A,#0AH,FULL;1s中0.5s向下运行 CLR RING AJMP CHECKFULL: CJNE A,#14H,CHECK ; 1s时,响并显示号数并清R0,重新计时 SETB RING MOV A,R6 JZ QUIT ; 计时完毕 MOV R0,#00H DEC R6 ; 一秒标志减1 AJMP CHECKLARGER: MOV A,R0 CJNE A,#14H,CHECK ; 如果1s向下运行,否者跳到查停/显示 DEC R6; 计时一秒R6自动减1 MOV R0,#00HCHECK: JNB P3.1,QUIT; 如按

19、下停止键退出 ACALL DISPLAY JNB P1.0,TRUE1 JNB P1.1,TRUE2 JNB P1.2,TRUE3 JNB P1.3,TRUE4 JNB P1.4,TRUE5 JNB P1.5,TRUE6 JNB P1.6,TRUE7 JNB P1.7,TRUE8 AJMP RECOUNTQUIT: CLR OK ; 如果按下了停止键重新回到开始 CLR RING ACALL BARK AJMP START正常抢答处理程序:TRUE1: ACALL BARK; 按键发声 MOV A,R2 MOV R6,A; 抢答时间R2送R6 MOV R3,#01H CLR OK; AJMP

20、LOOP2TRUE2:ACALL BARK; MOV A,R2 MOV R6,A MOV R3,#02H CLR OK AJMP LOOP2TRUE3:ACALL BARK; MOV A,R2 MOV R6,A MOV R3,#03H CLR OK AJMP LOOP2TRUE4:ACALL BARK; MOV A,R2 MOV R6,A MOV R3,#04H CLR OK AJMP LOOP2TRUE5: ACALL BARK; MOV A,R2 MOV R6,A MOV R3,#05H CLR OK AJMP LOOP2TRUE6: ACALL BARK; MOV A,R2 MOV R6

21、,A MOV R3,#06H CLR OK AJMP LOOP2TRUE7: ACALL BARK; MOV A,R2 MOV R6,A MOV R3,#07H CLR OK AJMP LOOP2TRUE8: ACALL BARK; MOV A,R2 MOV R6,A MOV R3,#08H CLR OKLOOP2: AJMP DISPLAY ;抢答后停止计时,等待返回SETB RING JNB P3.1 QUIT AJMP LOOP2犯规抢答程序:ERROR: SETB RING ;犯规响铃 MOV R5,#0BH MOV R4,#0BH; 显示FF和犯规号数LOOP3: ACALL DIS

22、PLAY JNB P3.1 QUIT1; 等待“停止”键按下 AJMP LOOP3 QUIT1: CLR RING CLR OK AJMP START显示程序:DISPLAY:MOV DPTR,#DAT1; 查表显示程序,利用P0口做段选码口输出/P2低三位做位选码输出 MOV A,R5 MOVC A,A+DPTR MOV P2,#01H MOV P0,A ACALL DELAY MOV DPTR,#DAT2 MOV A,R4 MOVC A,A+DPTR MOV P2,#02H MOV P0,A ACALL DELAY MOV A,R3 MOVC A,A+DPTR MOV P2,#04H MO

23、V P0,A ACALL DELAY RETDAT1:DB 00H,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh,00H,71H;灭,1,2,3,4,5,6,7,8,9,灭,FDAT2:DB 3FH, 06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh,00H,71HDELAY1: MOV 35H,#08HLOOP0: ACALL DISPLAY DJNZ 35H,LOOP0 RET延时(显示和去抖动用到):DELAY: MOV 32H,#12HLOOP: MOV 33H,#0AFHLOOP1: DJNZ 33H,LOOP1 DJNZ 32H,LO

24、OP RET发声程序:BARK: SETB RING ACALL DELAY1 ACALL DELAY1 CLR RING; 按键发声 RETINT0(抢答时间R1调整程序): INT0SUB:MOV A,R1 MOV B,#0AH DIV AB MOV R5,A MOV R4,B MOV R3,#0AH ACALL DISPLAY;先在两个时间LED上显示R1 JNB P3.2,INC0; P3.2为+1s键,如按下跳到INCO JNB P3.3,DEC0; P3.3为-1s键,如按下跳到DECO JNB P3.4,BACK0; P3.4为确定键,如按下跳到BACKO AJMP INT0SU

25、BINC0: MOV A,R1 CJNE A,#63H,ADD0; 如果不是99,R2加1,如果加到99了,R1就置0,重新加起 MOV R1,#00H ACALL DELAY1 AJMP INT0SUBADD0: INC R1 ACALL DELAY1 AJMP INT0SUBDEC0: MOV A,R1 JZ SETR1;如果R1为0, R1就置99, DEC R1 ACALL DELAY1 AJMP INT0SUBSETR1: MOV R1,#63H ACALL DELAY1 AJMP INT0SUBBACK0: RETITO溢出中断(响铃程序):T0INT:MOV TH0,#0ECH

26、MOV TL0,#0FFH JNB RING,OUT CPL P3.6 ; RING标志位为1时候P3.6口不短取反使喇叭发出一定频率的声音OUT: RETIT1溢出中断(计时程序):T1INT: MOV TH1,#3CH MOV TL1,#0B0H INC R0 RETI END四、系统调试1、硬件调试过程1显示装置的制作与调试给硬件电路接上电源,这时数码管全灭,用一根导线的一端接地线,另一端依次触碰AT89C51的P0口,正常时每碰一个脚,对应的灯亮。若不亮查看是否虚焊。2按键电路的制作和调试根据设计方案,对相应的I|O接口,将按键焊在电路板上,使用万用表进行调试。首先,将万用表调到“测量

27、通断档”红笔与黑笔放在按键两端,此时按键不必合如有报警声则检查故障,如果没有则进行下一步;将按键按下,如果发出报警,则正常,否则检查连接线路。3报警电路的制作与调试根据既定的设计方案将报警电路焊接在电路板上,给硬件接上电源,正常不会报警,再接地线,另一根接单片机P3.6口,如果报警则正常,反之请检查虚焊及软件编程问题。4复位电路调试复位电路虽然简单,但其作用非常重要。一个单片机系统能否正常运行,首先要检查是否能复位成功。初步检查可用示波器探头监视RST引脚,按下复位键,观察是否有足够幅度的(波)形输出。5时钟电路调试用示(波)器可以查看时钟信号的有无,是不是稳定,幅度是否达到设定的数值,频率是

28、否正常。如果时钟信号不正常,要检查产生时钟信号的电路。2、软件调试过程软件的调试必须在开发系统的支持下进行。先分别调试通过各个模块程序,然后调试主程序,再将各部分连接进行调试。调试的范围可以有小到大、逐步增加,必要的中间信号可以先作设定。通常交叉使用单步运行、断点运行、连续运行等多种方式,每次执行完毕后,检察CPU执行现场、RAM的有关内容、I/O口的状态等。发现一个问题,就解决一个,直至全部通过。3、系统调试将AT89C51芯片固定在电路板上。通电系统正常可看到:没按下“开始抢答键”显示“FFF”,如果有选手抢答(如2),则显示“2FF”,并且成闪烁状态;当按下“开始抢答键”显示器开始倒计时

29、,如果倒计时5S内没人抢答,则系统每秒都会报警提醒选手,当时间耗尽就显示“FFF”。如果有人抢答,则显示选手号和倒计时。另外。在任何时候按下“停止”按键中止一切进程,显示“FFF”。上述均是正常工作情况,如果调试中不能做到上几点,应排错修改,完善智能抢答器功能。五、项目总结我觉得做单片机课程设计是有意义的,而且是必要的。在已度过的大学时间里,我们大多数接触的是课堂授课。我们在课堂上掌握的仅仅是专业课的理论知识,如何去锻炼我们的实践能力?如何把我们所学的专业基础课理论知识运用到实践中去呢?很明显做类似的课程设计就为我们提供了良好的实践平台。这次课程设计大概持续了好长时间,我们设计的课题是八路抢答器,抢答器主要是由单片机、主持人按键和选手抢答按键以及显示部分组成;抢答器主要功能是:实现主持人按下允许抢答按键后数码管显示FFF,并允许选手抢答;当有有选手抢答时,其他选手再抢答无效;在有选手抢答后,数码管显示抢答选手号,对应选手抢答指示LED灯闪烁五次,同时蜂鸣器响一声。当主持人再次按下按键后数码管显示FFF,又开始下一题的抢答。整个过程不够流畅,专业知识与实际问题结合的不够灵活,思维不够敏捷,确实费了不少心思,设计结果也不是太理想,但我们已经尽力了。总结出以下要点:在设计程序之前,设计者必学对所用单片机的内部结构有一个系统的了解,知道该单片 机内有

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1