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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

单片机抢答器.docx

1、单片机抢答器单片机课程设计报告 题目: 多路抢答器的设计 专业: 电气工程及其自动化 班级: 电气 081 学号: 3080421026 学生姓名: 贺 瑾 指导教师: 王水鱼 2010 年 秋季 学期起止时间:2010年12月27日至2011年1月7日平时(10%)任务完成(30%)答辩(30%)课设报告(30%)总评成绩目 录一、设计目的32、设计的主要内容要求3三、整体设计33.1设计思路3.2总体方框图3.3模块介绍四、硬件电路的设计54.1硬件总体电路图4.2硬件分块电路介绍五、软件设计105.1主程序系统流程图5.2系统程序5.3定时分析6、系统仿真及使用说明247、设计心得25八

2、、致谢26 九、参考文献26 多路抢答器的设计一设计目的1.熟悉单片机控制系统,并了解系统设计的一般规律。2.掌握PROTEUS软件的使用,学会仿真。3.熟悉模拟用于娱乐或比赛抢答器的实现方法。二设计的主要内容和要求1设计一款八路抢答器;2设计一个抢答器控制开关(开始抢答后才允许答题者抢答),供主持人用;3数码管显示当前答题者号数;4答题开始后,数码管显示倒计时时间;5附加功能:(1)抢答器具有锁存与显示功能。即选手按动按钮,锁存相应的编号,并在LED数码管上显示,同时扬声器发出报警声响提示。选手抢答实行优先锁存,优先抢答选手的编号一直保持到主持人将系统清除为止。(2)抢答器具有定时抢答功能,

3、且一次抢答的时间由主持人设定(如10秒)。当主持人启动开始键后,定时器进行减计时,同时扬声器发出短暂的声响,声响持续的时间0.5秒左右。主持人可以控制抢答的开始和结束,若主持人没有按开始按钮选手抢答,则会显示犯规选手号,在时间显示数码管中显示FF,并报警,直到主持人选择停止。如果定时时间已到,无人抢答,本次抢答无效,系统报警并禁止抢答,定时显示器上显示F FF (3)参赛选手在设定的时间内进行抢答,抢答有效,定时器停止工作,显示器上显示选手的编号和抢答的时间,并保持到主持人将系统清除为止。(4)主持人可以调整抢答倒计时时间和答题倒计时时间,以停止按钮为确定。三整体设计31 设计思路 设计一个智

4、力竞赛抢答器,可同时供8名选手或者8个代表队参加比赛,他们的编号分别为1,2,3,4,5,6,7,8,各用一个抢答器按钮,按钮的编号与选手的编号相对应,分别设为1,2,3,4,5,6,7,8。节目主持人设置一个开始控制开关,用来控制系统的清零和抢答器的开始。并且抢答器具有数据锁存和显示的功能,抢答开始手,若有选手按动抢答按钮,编号立即锁存,并在LED数码管上显示出选手的编号,同时蜂鸣器给出音响提示,此外,要封锁输入电路,禁止其他选手抢答,优先抢答选手的编号一直保持到主持人将系统清零为止。主持人按控制开始,开始抢答倒计时,在此期间选手可以抢答,抢答成功后开始答题倒计时,若在抢答倒计时期间无人抢答

5、,则表示弃权,此题作废,主持人开始下一道题目。若在主持人没有按下开始按钮时有选手抢答,则显示选手号,在时间显示栏显示FF,报警,表示该选手犯规。由主持人停止报警,开始下一题。抢答倒计时以及答题倒计时都可以由主持人控制和调节,当按下停止按钮时,表示确定设置。3.2 总体方框图AT3.3 模块介绍 由于是软件仿真的多路抢答器,故在原理上比较简单。主要由外部复位控制电路,抢答电路,AT89C51控制电路,显示电路以及主持人控制电路和报警电路五大模块构成。 由于系统内部有时钟控制,所以可以省去外部振荡源电路,时钟由内部控制发生。 外部复位控制电路,可以手动操作,来从硬件上实现对整个电路的复位控制,实现

6、系统的初始化。 通过抢答电路,八位选手可以进行对题目的抢答,先抢答的选手获得答题权,此时其他选手没有抢答权。 AT89C51控制电路是整个电路的核心,它控制着整个电路的工作,内部时钟提供整个工作的时钟,内部定时器实现对抢答倒计时和答题倒计时的控制,通过管脚的选择,选择不同的功能来控制其他模块电路的工作。 显示电路用的是共阴极的多位数码管,第一位用来显示选手的号码,后两位来显示倒计时时间的变化。主持人控制电路,可以通过手动来控制抢答的开始及结束,还可以实现对抢答倒计时时间和答题倒计时时间的调整。当发生错误或者抢答成功以及倒计时时间在五秒之内的时候,报警电路会工作,发出蜂鸣声。四 硬件电路的设计4

7、.1 硬件总体电路图 在整个电路中,用到了以下元器件:开关按钮BUTTON:15个:电阻10K:8个;四位共阴极数码显示管:1个;扬声器SREAKER:1个;AT89C51单片机:1个。 其工作原理为:接通电源后,主持人将开关拨到“清除”状态,抢答器处于禁止状态,编号显示器灭灯,定时器显示设定时间;主持人将开关置,“开始”状态,宣布“开始”抢答器工作,倒计时开始。扬声器给出声响提示。抢答器完成:优先判断、编号锁存、编号显示、扬声器提示。当一轮抢答之后,定时器停止、禁止二次抢答。如果再次抢答必须由主持人再次操作“开始、停止”状态开关。若有选手在主持人没有按下开始按钮时进行了抢答,则会出现犯规提示

8、。而且主持可以灵活调节抢答倒计时时间和答题倒计时时间。 4.2 硬件分块电路介绍4.2.1 复位电路 单片机的第9脚RST为硬件复位端,只要将该端持续4个机器周期的高电平即可实现复位,复位后单片机的各状态都恢复到初始化状态,其电路图如图 值得注意的是,在设计当中使用到了硬件复位和软件复位两种功能,由上面的硬件复位后的各状态可知寄存器及存储器的值都恢复到了初始值,而前面的功能介绍中提到了倒计时时间的记忆功能,该功能的实现的前提条件就是不能对单片机进行硬件复位,所以设定了软复位功能。软复位实际上就是当程序执行完毕之后,将程序指针通过一条跳转指令让它跳转到程序执行的起始地址。4.2.2 显示电路显示

9、功能与硬件关系极大,当硬件固定后,如何在不引起操作者误解的前提下提供尽可能丰富的信息,全靠软件来解决。 复位时,数码管显示F FF,数码管的第一位显示的是抢答选手的号数,数码管的最后两位显示的是倒计时的时间。当出现犯规操作的时候,数码管闪烁。4.2.3 键盘扫描电路键盘扫描电路主要有八个按钮来实现,每一个按钮对应着相应的选手,号码对应。选手按下按钮,实现抢答。键盘扫描电路可以实现优先抢答和锁存,锁存第一个按下抢答按钮的选手号,这样,其他选手在有选手抢答成功的情况下没有抢答权利。键盘是人与微机系统打交道的主要设备。关于键盘硬件电路的设计方法也可以在文献和书籍中找到,配合各种不同的硬件电路,这些书

10、籍中一般也提供了相应的键盘扫描程序。站在系统监控软件设计的立场上来看,仅仅完成键盘扫描,读取当前时刻的键盘状态是不够的,还有不少问题需要妥善解决,否则,人们在操作键盘就容易引起误操作和操作失控现象。 在单片机应用中键盘用得最多的形式是独立键盘及矩阵键盘。它们各有自己的特点,其中独立键盘硬件电路简单,而且在程序设计上也不复杂,一般用在对硬件电路要求不高的简单电路中;矩阵键盘与独立键盘有很大区别,首先在硬件电路上它要比独立键盘复杂得多,而且在程序算法上比它要烦琐,但它在节省端口资源上有优势得多,因此它更适合于多按键电路。其次就是消除在按键过程中产生的“毛刺”现象。4.2.4 发声电路我们知道,声音

11、的频谱范围约在几十到几千赫兹,若能利用程序来控制单片机某个口线的“高”电平或低电平,则在该口线上就能产生一定频率的矩形波,接上喇叭就能发出一定频率的声音,若再利用延时程序控制“高”“低”电平的持续时间,就能改变输出频率,从而改变音调,使喇叭发出不同的声音。发声电路在抢答成功的时候,选手非法抢答的时候,倒计时时间在五秒之内的时候,都会发出声音来提示主持人和选手。 4.2.5 系统复位使CPU进入初始状态,从0000H地址开始执行程序的过程叫系统复位。从实现系统复位的方法来看,系统复位可分为硬件复位和软件复位。硬件复位必须通过CPU外部的硬件电路给CPU的RESET端加上足够时间的高电位才能实现。

12、上电复位,人工按钮复位和硬件看门狗复位均为硬件复位。硬件复位后,各专用寄存器的状态均被初始化,且对片内通用寄存器的内容没有影响。但是,硬件复位还能自动清除中断激活标志,使中断系统能够正常工作,这样一个事实却容易为不少编码人员所忽视。软件复位就是用一系列指令来模拟硬件复位功能,最后通过转移指令使程序从0000H地址开始执行。对各专用寄存器的复位操作是容易的,也没有必要完全模拟,可根据实际需要去主程序初始化过程中完成。而对中断激活标志的清除工作常被遗忘,因为它没有明确的位地址可供编程。有的编程人员用020000(LJMP 0000H)作为软件陷阱,认为直接转向0000H地址就完成了软件复位,就是这

13、类错误的典型代表。软件复位是使用软件陷阱和软件看门狗后必须进行的工作,这时程序出错完全有可能发生在中断子程序中,中断激活标志已置位,它将阻止同级中断响应。由于软件看门是高级中断,它将阻止说要中断响应,由此可见清除中断激活标志的重要性。在所有的指令中,只有RETI指令能够清除中断激活标志。前文各处提案到的出错处理程序ERR主要完成这一功能,其他的善后工作交由复位后的系统去完成。这部分程序如下: POWER DATA 67H ;上电标志存放单元 ERR: CLR EA ;关中断 MOV DPTR,#ERR1 ;准备返回地址 PUSH DPL PUSH DPH RETI ;清除高级中断激活标志ERR

14、1: MOV POWER,#0AAH ;重建上电标志 CLR A ;准备复位地址 PUSH ACC ;压入复位地址0000H RETI ;清除低级中断激活标志,从程序0000H开始执行。这段程序先关中断,以便后续处理能顺利进行,然后用两个RETI指令代替两个LJMP指令,从而清除了两级中断激活标志。有相应软件陷阱捕捉来的程序可能没有全部激活两个标志,这也无妨。五软件设计5.1 主程序系统流程图 N Y Y N N Y N5.2 系统程序;=;=单片机八路抢答器程序 =;= OK EQU 20H ;抢答开始标志位 RING EQU 22H ;响铃标志位 ORG 0000H AJMP MAIN O

15、RG 0003H AJMP INT0SUB ORG 000BH AJMP T0INT ORG 0013H AJMP INT1SUB ORG 001BH AJMP T1INT ORG 0040HMAIN: MOV R1,#0AH ;初设抢答时间为10s MOV R2,#1EH ;初设答题时间为30s MOV TMOD,#11H ;设置未定时器/模式1 MOV TH0,#0F0H MOV TL0,#0FFH ;越高发声频率越高,越尖;0.3841S MOV TH1,#3CH MOV TL1,#0B0H ;50ms为一次溢出中断 SETB EA ;CPU中断允许 SETB ET0 ;T0中断允许 S

16、ETB 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 ;P3.0=1时跳转 ACALL DELAY JB P3.0,NEXT ;去抖动,如果开始键按下就向下执行,否者跳到非法抢答查询 ACALL BARK

17、;按键发声 MOV A,R1 MOV R6,A ;送R1-R6,因为R1中保存了抢答时间 SETB OK ;抢答标志位,用于COUNT只程序中判断是否查询抢答 MOV R7,#01H ;读抢答键数据信号标志,这里表示只读一次有用信号 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,FALSE7 JNB

18、 P1.7,FALSE8 AJMP START ;绝对转移;=非法抢答处理程序=FALSE1: MOV R3,#01H AJMP ERRORFALSE2: MOV R3,#02H AJMP ERRORFALSE3: MOV R3,#03H AJMP ERRORFALSE4: MOV R3,#04H AJMP ERRORFALSE5: MOV R3,#05H AJMP ERRORFALSE6: MOV R3,#06H AJMP ERRORFALSE7: MOV R3,#07H AJMP ERRORFALSE8: MOV R3,#08H AJMP ERROR;=INT0(抢答时间R1调整程序)=I

19、NT0SUB:MOV A,R1 MOV B,#0AH DIV AB MOV R5,A MOV R4,B MOV R3,#0AH ACALL DISPLAY ;先在两个时间LED上显示R1 JNB P3.4,INC0 ;P3.4为+1s键,如按下跳到INCO JNB P3.5,DEC0 ;P3.5为-1s键,如按下跳到DECO JNB P3.1,BACK0 ;P3.1为确定键,如按下跳到BACKO AJMP INT0SUBINC0: MOV A,R1 CJNE A,#63H,ADD0 ;如果不是99,R2加1,如果加到99,R1就置0,重新加起。 MOV R1,#00H ACALL DELAY1

20、 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: RETI ;=INT1(回答时间R2调整程序)=INT1SUB:MOV A,R2 MOV B,#0AH DIV AB MOV R5,A MOV R4,B MOV R3,#0AH ACALL DISPLAY JNB P3.4,INC1 JNB P3.5

21、,DEC1 JNB P3.1,BACK1 AJMP INT1SUBINC1: MOV A,R2 CJNE A,#63H,ADD1 MOV R2,#00H ACALL DELAY1 AJMP INT1SUBADD1: INC R2 ACALL DELAY1 AJMP INT1SUBDEC1: MOV A,R2 JZ SETR2 DEC R2 ACALL DELAY1 AJMP INT1SUBSETR2: MOV R2,#63H ACALL DELAY1 AJMP INT1SUBBACK1: RETI ;=倒计时程序(抢答倒计时和回答倒计时都跳到改程序)=REPEAT: MOV A,R2 ;使用锦

22、囊时重新计时 MOV R6,A CLR RING COUNT: MOV R0,#00H ;重置定时器中断次数 MOV TH1,#3CH MOV TL1,#0B0H ;重置定时器RECOUNT:MOV A,R6 ;R6保存了倒计时的时间,之前先将抢答时间或回答时间给R6 MOV B,#0AH DIV AB ;除十分出个位/十位 MOV 30H,A ;十位存于(30H) MOV 31H,B ;个位存于(31H) MOV R5,30H ;取十位 MOV R4,31H ;取个位 MOV A,R6 SUBB A,#07H ; JNC LARGER ;C=0跳转,大于5s跳到LARGER,小于等于5s会提

23、醒 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 ;如按下停止键退出 JNB O

24、K,CHECKK ;只在回答倒计时才有效 AJMP NEXTTCHECKK: JNB P3.0,REPEAT ;判断是否使用锦囊NEXTT: ACALL DISPLAY JB OK,ACCOUT ;如果是抢答倒计时,如是则查询抢答,否者跳过查询继续倒数(这里起到锁抢答作用) AJMP RECOUNTACCOUT: MOV A,36H JNB ACC.0,TRUE1 JNB ACC.1,TRUE2 JNB ACC.2,TRUE3 JNB ACC.3,TRUE4 JNB ACC.4,TRUE5 JNB ACC.5,TRUE6 JNB ACC.6,TZ1 JNB ACC.7,TZ2 AJMP REC

25、OUNT TZ1: JMP TRUE7 TZ2: JMP TRUE8 QUIT: CLR OK ;如果按下了停止键执行的程序 CLR RING AJMP START;=正常抢答处理程序=TRUE1: ACALL BARK MOV A,R2 MOV R6,A ;抢答时间R2送R6 MOV R3,#01H CLR OK ;因为答题的计时不再查询抢答,所以就锁了抢答 AJMP COUNTTRUE2: ACALL BARK MOV A,R2 MOV R6,A MOV R3,#02H CLR OK AJMP COUNTTRUE3: ACALL BARK MOV A,R2 MOV R6,A MOV R3,

26、#03H CLR OK AJMP COUNTTRUE4: ACALL BARK MOV A,R2 MOV R6,A MOV R3,#04H CLR OK AJMP COUNTTRUE5: ACALL BARK MOV A,R2 MOV R6,A MOV R3,#05H CLR OK AJMP COUNTTRUE6: ACALL BARK MOV A,R2 MOV R6,A MOV R3,#06H CLR OK AJMP COUNTTRUE7: ACALL BARK MOV A,R2 MOV R6,A MOV R3,#07H CLR OK AJMP COUNTTRUE8: ACALL BARK

27、MOV A,R2 MOV R6,A MOV R3,#08H CLR OK AJMP COUNT;=犯规抢答程序=ERROR: MOV R0,#00H MOV TH1,#3CH MOV TL1,#0B0H MOV 34H,R3 ;犯规号数暂存与(34H)HERE: MOV A,R0 CJNE A,#06H,FLASH ;累加器内容和立即数不等时跳转,0.5s向下运行-灭并停响 CLR RING MOV R3,#0AH MOV R4,#0AH MOV R5,#0AH ;三灯全灭 AJMP CHECK1FLASH: CJNE A,#0CH,CHECK1 ;下面是0.8s的情况,响并显示号数并清R0,

28、重新计 SETB RING ;报警 MOV R0,#00H MOV R3,34H ;取回号数 MOV R5,#0BH MOV R4,#0BH ;显示FF和号数 AJMP CHECK1CHECK1: JNB P3.1,QUIT1 ;停止未按下时跳转 ACALL DISPLAY AJMP HEREQUIT1: CLR RING CLR OK AJMP START;=显示程序=DISPLAY:MOV DPTR,#DAT1 ;查表显示程序,利用P0口做段选码口输出/P2低三位做位选码输出, MOV A,R3 MOVC A,A+DPTR MOV P2,#0FEH MOV P0,A ACALL DELAY2 MOV DPTR,#DAT2 MOV A,R5 MOVC A,A+DPTR MOV P2,#0fdH MOV P0,A ACALL DELAY2 MOV A,R4 MOVC A,A+DPTR MOV P2,#0fbH MOV P0,A ACALL DELAY2 RETDAT1: DB 00h,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh,00H,71H ;灭,1,2,3

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

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