8位竞赛抢答器的设计_第1页
8位竞赛抢答器的设计_第2页
8位竞赛抢答器的设计_第3页
8位竞赛抢答器的设计_第4页
8位竞赛抢答器的设计_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

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

文档简介

1、单片机课程设计专 业电气工程及其自动化指导教师学 生颜良堂学号B16题目8位竞赛抢答器的设计2013年12月25日1、 设计任务与要求 32、 方案设计与论证 3方案一: 3方案二: 43、 单元电路的设计 4芯片的选择及工作原理 4系统的硬件构成及功能 44、 软件的设计 5主程序流程图 6主程序 6子程序 71、开始、复位程序 72、中断程序 83、选手键盘扫描程序 94、数码管显示程序 125、抢答时间设计程序 136、延时子程序 13五、仿真与调试 14抢答器调试结果 14六、结论与心得 16附件1:电路图 16附件2:源程序 17附、 参考文献? 241、 设计任务与要求以单片机为核

2、心,设计一个8 位竞赛抢答器:同时供8 名选手或8 个代表队比赛,分别用8个按钮S0S7表示。设置一个系统清除和抢答控制开关S,开关由主持人控制。抢答器具有锁存与显示功能。即选手按按钮,锁存相应的编号,并在优先抢答选手的编号一直保持到主持人将系统清除为止。抢答器具有定时抢答功能,且一次抢答的时间由主持人设定(如30 秒) 。当主持人启动“开始”键后,定时器进行减计时,同时扬声器发出短暂的声响,声响持续的时间为左右。参赛选手在设定的时间内进行抢答,抢答有效,定时器停止工作,显示器上显示选手的编号和抢答的时间,并保持到主持人将系统清除为止。如果定时时间已到,无人抢答,本次抢答无效,系统报警并禁止抢

3、答,定时显示器上显示 00。通过键盘改变抢答的时间,原理与闹钟时间的设定相同,将定时时间的变量置为全局变量后,通过键盘扫描程序使每按下一次按键,时间加1(超过30 时置0) 。同时单片机不断进行按键扫描,当参赛选手的按键按下时,用于产生时钟信号的定时计数器停止计数,同时将选手编号(按键号)和抢答时间分别显示在LED上。2、 方案设计与论证方案一:使用C语言编程实现基于单片机的八位抢答器的课程设计,用到的元器件有AT89C51、MAX7219按键、数码管、上拉电阻、蜂鸣器等。万案一:使用汇编语言编程实现八位抢答器的课程设计,用到的元器件有AT89C51、 74LS373、按键、数码管、上拉电阻、

4、蜂鸣器等。选择方案二的理由:首先汇编语言是一种功能很强的程序设计语言,也是利用计算机所有硬件特性并能直接控制硬件的语言,具有很高的精确控制;其次选用74LS373芯片作为数码管的控制芯片是因为它容易控制选用3个741s373分别控制倒计时的两个数码管及一个显示抢答结果的数码管,所以我选择了方案二。三、单元电路的设计芯片的选择及工作原理本设计使用到的元器件包括 AT89C51K片、数码管。工作原理:仿真开始 显示FFF;按下“复位”键 显示倒计时初值,起初设的是 30秒;再按下“设时”键,按一下计数初值加1,到30自动清零;按下“开始”键开始倒计时,每减一,有秒的声响;当有选手按下,则倒计时停止

5、,显示当前倒计时数值和选手编号;若在倒计时计数到 0,无人抢答 则有1秒声响的报警。系统的硬件构成及功能1、单片机晶振及复位部分电路电路 2、选手抢答部分电路:由八个按键S0S7以及8个阻值为1k的上拉电阻组成3、开始、复位、时间设置及扬声器部分电路:由3个按键、1个电阻、NPtf口 1个BUZZE朗成, 用于主持人操作及扬声器提示报警4、显示部分电路:由3个74LS373芯片及3个数码管构成,用于显示倒计时时间和抢答结果四、软件的设计主程序流程图Y显示抢答结果主程序主程序MAIN: MOV TMOD,#01HMOV TH0,#3CHMOV TL0,#0B0HSETB EASETB ET0SE

6、TB EX0SETB IT0;30秒倒计时MOV R4,#30预判 复位键按下否去抖动,判断是否真按下复位按下,则存放选手编号的 R3,放入"灭倒计时初值R4放入显示倒计时寄存器 R0中MOV R3,#0AHMOV R7,#0AHMOV R6,#0AHMOV R0,#30;R0LCALL XIANSH2子程序1、开始、复位程序;* 复位程序*FW: JNB ,FW1;JMP FWFW1: LCALL DELAY;JNB ,FW2JMP FWFW2: MOV R3,#0BH;的代码MOV A,R4;MOV R0,ALCALL XIANSH1; 开始程序SAM: JNB ,PKJMP S

7、AMPK: JNB ,PK1;JMP SAMPK1: MOV R3,#0BHSETB TR0;/MOV R2,#0AH; 抢答结果; 倒计时存放倒计时的显示值,初值设为30扫描开始键是否按下按下则R附"灭"代码,启动定时器中断次数设为10次,刚好1秒HERE: CJNE R1,#01H,YY若R1中存放的选手按键标志位为1,则转入 STARJMP STAR;YY: JMP HERE2、中断程序; 中断程序IT0P: CLR TR0DEC R2CJNE R2,#05H,JX0;clrJX0: CJNE R2,#00H,JX1秒setbDEC R0LCALL XIANSH1MO

8、V R2,#0AH;R2JX1: LCALL SAMOCJNE R1,#01H,JX2按下则返回JMP RETURNJX2: JNB ,PK2JMP CZPK2: LCALL DELAYJNB ,QFWJMP CZQFW: MOV R1,#01HJMP RETURN否则继续循环等待中断5次后,开启扬声器10 次后,关闭扬声器,这样喇叭响中再存入中断次数扫描选手按键标志位R1, 未按下则转JX2检测复位键按下否; 按下则返回CZ: CJNE R0,#00H,CZ1倒计时是否计时完毕clr及时完毕无人抢答则扬声器开启LCALL DELAY5MOV R1,#01HJMP RETURNCZ1: MOV

9、 TH0,#3CHMOV TL0,#0B0HSETB TR0RETURN: RETI3、选手键盘扫描程序; 选手键盘扫描程序SAMO: JNB ,XS1JNB ,XS2JNB ,XS3JNB ,XS4JNB ,XS5JNB ,XS6JNB ,XS7JNB ,XS80RETURN2:RETXS80: LJMP XS8XS1: LCALL DELAYJNB ,XS11JMP RETURN2XS11: MOV R1,#01HsetbMOV R3,#01H; 延时1秒;R1 设 1; 中断返回计时器初值重装预扫描 选手按键是否按下; 未按下则返回去抖动再判是否按下按下则 显示 1 号 扬声器关闭LCA

10、LL XIANSH1JMP RETURN2XS2: LCALL DELAYJNB ,XS22JMP RETURN2XS22: MOV R1,#01H setbMOV R3,#02HLCALL XIANSH1JMP RETURN2XS3: LCALL DELAYJNB ,XS33JMP RETURN2XS33: MOV R1,#01H setb;MOV R3,#03HLCALL XIANSH1JMP RETURN2XS4: LCALL DELAYJNB ,XS44JMP RETURN2XS44: MOV R1,#01H setbMOV R3,#04HLCALL XIANSH1JMP RETURN

11、2XS5: LCALL DELAY按下则 显示2号扬声器关闭按下则 显示3号扬声器关闭按下则 显示 4号 扬声器关闭JNB ,XS55按下则 显示5号扬声器关闭XS55: MOV R1,#01H setbMOV R3,#05HLCALL XIANSH1JMP RETURN2XS6: LCALL DELAYJNB ,XS66JMP RETURN2按下则 显示 6号 扬声器关闭XS66: MOV R1,#01H setb;MOV R3,#06HLCALL XIANSH1JMP RETURN2XS7: LCALL DELAYJNB ,XS77JMP RETURN2XS77: MOV R1,#01H

12、setbMOV R3,#07HLCALL XIANSH1按下则 显示7号扬声器关闭JMP RETURN2XS8: LCALL DELAYJNB ,XS88JMP RETURN2XS88: MOV R1,#01Hsetb按下则 显示 8号 扬声器关闭MOV R3,#08HLCALL XIANSH1JMP RETURN24、数码管显示程序; 显示程序XIANSH1:MOV A,R0MOV B,#0AH;R0和个位DIV ABMOV R7,AMOV R6,BXIANSH2:SETBCLR;CLRMOV A,R3MOV DPTR,#SEGTABMOVC A,A+DPTRMOV P2,ACLRSETB;

13、CLRMOV A,R7MOV DPTR,#SEGTABMOVC A,A+DPTRMOV P2,ACLR中存放的倒计时显示值除 10 分出十位;十位存入R7中;个位存入R6中选择选手编号的数码管; 调入代码; 显示选手编号选择显示十位的数码管调入代码; 显示十位CLR选择显示个位的数码管SETBMOV A,R6MOV DPTR,#SEGTABMOVC A,A+DPTRMOV P2,ARET5、抢答时间设计程序; 抢答时间设置程序SHESH:INC R0CJNE R0,#31,BQL;MOV R0,#00HBQL: MOV R3,#0BHMOV A,R0;样可以全局不变,R脍倒计时中递减而改变MO

14、V R4,ALCALL XIANSH1RETI6、延时子程序;10ms延时程序(用于去抖动)DELAY: MOV R7,#20D1: MOV R6,#248D2: DJNZ R6,D2DJNZ R7,D1RET;1s 延时程序(无人抢答报警)DELAY5:MOV R7,#40; 调入代码; 显示个位; 倒计时初值加1倒计时初值设置超过30 自动清零倒计时初值存入其专用寄存器RM,这DL1: MOV R6,#50DL2: MOV R5,#248DL3: DJNZ R5,DL3DJNZ R6,DL2DJNZ R7,DL1RET五、仿真与调试抢答器调试结果1、 开始开始运行仿真电路数码管显示FFF。

15、首先按下复位按钮,当按下开始按钮时开始倒计时。Hi 喻 EA- TnvhIflun* UfaifEfan3、抢答在倒计时时间内抢答有效,倒计时后和主持人还没按开始按钮抢答均无效。4、倒计时时间设置在还没开始和抢答结束后均可设置抢答倒计时时间030sL* 1 | U ' Ur 可i 6 Pl .I I 44 J-" I ' '-I5、抢答结束复位清零抢答结束后可按复位键清零以便下一次抢答。口十 'rfna id* ru-i aM加Tn-> SnAM HAp|* JH |,曲 1!, Wu;riiiji ifta.i m I 一 一 II _一 二

16、I六、结论与心得此次课程设计,开始很苦恼,无从下手。 后来和同学讨论决定首先借助于网络资料。网络上的资源大多并不完善,甚至有些根本看不懂。此时真的很头疼。于是回想之前实验课上 所学习的知识。寻找借鉴例题。零零散散下载摘录很多东西。又结合抢答比赛的实际应用,开始起草最初的设计草案。想法很多设计也几近完整,然而很多功能却无法实现。于是决定 按照草案一步步依次解决,边解决边定稿最后设计方案。中间遇到很多问题、困难。这时我才了解到对知识的掌握还有许多的生疏和欠缺。然而此时后悔已经于事无补。 我们只能不停在网络上搜索查找学习, 尽量弥补自身知识的不足。 渐渐完善此设计。在这次试验设计中在 老师的严格要求

17、下, 我发现了自己知识上的不足和理论时间上的差距。通过此次的课程设计使我对本科知识有了更深入的了解提高了实践的操作能力。同时,也规范了我对报告文体格式的掌握。并让我了解到认真刻苦,以真理为武,追求卓越的精神!附件1:电路图附件2:源程序ORG 0000HLJMP MAINORG 0003HLJMP SHESHORG 000BHLJMP IT0PORG 0100H主函数MAIN: MOV TMOD,#01HMOV TH0,#3CHMOV TL0,#0B0HSETB EASETB ET0SETB EX0SETB IT0;30秒倒计时;抢答结果;倒计时MOV R4,#30MOV R3,#0AHMOV

18、 R7,#0AHMOV R6,#0AHMOV R0,#30;R0存放倒计时的显示值,初值设为30LCALL XIANSH2STAR: setbMOV R1,#00H从等待中断中返回到初始; 复位部分程序FW:JNB ,FW1JMP FWFW1:LCALL DELAYJNB ,FW2JMP FWFW2: MOV R3,#0BH码MOV A,R4MOV R0,ALCALL XIANSH1; 开始部分程序SAM: JNB ,PKJMP SAMPK: JNB ,PK1JMP SAMPK1: MOV R3,#0BHSETB TR0MOV R2,#0AHHERE: CJNE R1,#01H,YY入 STA

19、RJMP STAR; 关喇叭; 选手按键,复位按键,无人抢答的标志位,用于; 预判 复位键按下否; 去抖动,判断是否真按下;复位按下,则存放选手编号的 R3,放入"灭”的代;倒计时初值R4放入显示倒计时寄存器 R0中; 扫描开始键是否按下;按下则R3存"灭"代码,;/ 启动定时器; 中断次数设为10 次,刚好1 秒; 若 R1 中存放的选手按键标志位为1, 则转; 否则继续循环等待中断; 中断程序IT0P: CLR TR0DEC R2CJNE R2,#05H,JX0 clrJX0: CJNE R2,#00H,JX1 setbDEC R0LCALL XIANSH1M

20、OV R2,#0AHJX1: LCALL SAMOCJNE R1,#01H,JX2按下则返回JMP RETURN5 次后,开启扬声器; 中断 10 次后,关闭扬声器,这样喇叭响秒;R2 中再存入中断次数;扫描选手按键标志位 R1,未按下则转JX2 ,检测复位键按下否; 按下则返回; 倒计时是否计时完毕及时完毕无人抢答则扬声器开启; 延时 1 秒;R1 设 1; 中断返回; 计时器初值重装JX2: JNB ,PK2JMP CZPK2: LCALL DELAYJNB ,QFWJMP CZQFW: MOV R1,#01HJMP RETURNCZ: CJNE R0,#00H,CZ1clrLCALL D

21、ELAY5MOV R1,#01HJMP RETURNCZ1: MOV TH0,#3CHMOV TL0,#0B0HSETB TR0RETURN: RETI; 选手键盘扫描程序SAMO: JNB ,XS1JNB ,XS2JNB ,XS3JNB ,XS4JNB ,XS5JNB ,XS6JNB ,XS7JNB ,XS80RETURN2:RETXS80: LJMP XS8XS1: LCALL DELAYJNB ,XS11JMP RETURN2XS11: MOV R1,#01HsetbMOV R3,#01HLCALL XIANSH1JMP RETURN2XS2:LCALL DELAYJNB ,XS22JM

22、P RETURN2XS22: MOV R1,#01Hsetb; 预扫描 选手按键是否按下; 未按下则返回; 去抖动再判是否按下; 按下则 显示 1 号 扬声器关闭按下则 显示 2 号 扬声器关闭MOV R3,#02HLCALL XIANSH1JMP RETURN2XS3:LCALL DELAYJNB ,XS33JMP RETURN2XS33: MOV R1,#01HsetbMOV R3,#03HLCALL XIANSH1JMP RETURN2XS4:LCALL DELAYJNB ,XS44JMP RETURN2XS44: MOV R1,#01HsetbMOV R3,#04HLCALL XIAN

23、SH1JMP RETURN2XS5:LCALL DELAYJNB ,XS55JMP RETURN2XS55: MOV R1,#01HsetbMOV R3,#05HLCALL XIANSH1; 按下则 显示 3 号 扬声器关闭; 按下则 显示 4 号 扬声器关闭按下则 显示 5 号 扬声器关闭JMP RETURN2XS6:LCALL DELAYXIANSH1:MOV A,R0JNB ,XS66JMP RETURN2XS66: MOV R1,#01Hsetb; 按下则 显示 6 号 扬声器关闭MOV R3,#06HLCALL XIANSH1JMP RETURN2XS7:LCALL DELAYJNB

24、 ,XS77JMP RETURN2XS77: MOV R1,#01HsetbMOV R3,#07H; 按下则 显示 7 号 扬声器关闭LCALL XIANSH1JMP RETURN2XS8:LCALL DELAYJNB ,XS88JMP RETURN2XS88: MOV R1,#01Hsetb; 按下则 显示 8 号 扬声器关闭MOV R3,#08HLCALL XIANSH1JMP RETURN2; 显示程序MOV B,#0AH;R0 中存放的倒计时显示值除 10 分出十位和个MOV P2,A; 显示个位;十位存入R7中;个位存入R6中选择选手编号的数码管; 调入代码; 显示选手编号选择显示十位的数码管; 调入代码; 显示十位选择显示个位的数码管; 调入代码DIV ABMOV R7,AMOV R

温馨提示

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

评论

0/150

提交评论