8位竞赛抢答器的设计.docx

上传人:小飞机 文档编号:4882514 上传时间:2023-05-21 格式:DOCX 页数:18 大小:547.10KB
返回 下载 相关 举报
8位竞赛抢答器的设计.docx_第1页
第1页 / 共18页
8位竞赛抢答器的设计.docx_第2页
第2页 / 共18页
8位竞赛抢答器的设计.docx_第3页
第3页 / 共18页
8位竞赛抢答器的设计.docx_第4页
第4页 / 共18页
8位竞赛抢答器的设计.docx_第5页
第5页 / 共18页
亲,该文档总共18页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《8位竞赛抢答器的设计.docx》由会员分享,可在线阅读,更多相关《8位竞赛抢答器的设计.docx(18页珍藏版)》请在三一办公上搜索。

1、单片机课程设计专 业电气工程及其自动化指导教师学 生颜良堂学 号 B16题 目 8位竞赛抢答器的设计2013年12月25日一、设计任务与要求3二、方案设计与论证 3方案一:3T C方案二:3三、单元电路的设计3芯片的选择及工作原理3系统的硬件构成及功能4四、软件的设计5主程序流程图5主程序5子程序61、开始、复位程序62、中断程序63、选手键盘扫描程序74、数码管显示程序95、抢答时间设计程序96、延时子程序9五、仿真与调试10抢答器调试结果10六、结论与心得12附件1:电路图12附件2:源程序13附、参考文献17一、设计任务与要求以单片机为核心,设计一个8位竞赛抢答器:同时供8名选手或8个代

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

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

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

5、数到0,无人抢答则有1秒声响的报警。系统的硬件构成及功能1、单片机晶振及复位部分电路电路2、选手抢答部分电路:由八个按键S0S7以及8个阻值为1k的上拉电阻组成3、开始、复位、时间设置及扬声器部分电路:由3个按键、1个电阻、NPN和1个BUZZER 组成,用于主持人操作及扬声器提示报警4、显示部分电路:由3个74LS373芯片及3个数码管构成,用于显示倒计时时间和抢答结果四、软件的设计主程序流程图;30秒倒计时;抢答结果;倒计时;R0存放倒计时的显示值,初值设为30主程序MAIN: MOV TMOD,#01H MOV TH0,#3CH MOV TL0,#0B0H SETB EA SETB ET

6、0 SETB EX0 SETB IT0 MOV R4,#30 MOV R3,#0AH MOV R7,#0AH MOV R6,#0AH MOV R0,#30 LCALL XIANSH2子程序1、开始、复位程序;*复位程序 *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: CJNER1,#01H,YY转

7、入STARJMP STARYY:JMP HERE2、中断程序;中断程序IT0P: CLR TR0DEC R2CJNE R2,#05H,JX0clrJX0:CJNE R2,#00H,JX1秒setbDEC R0LCALL XIANSH1MOV R2,#0AHJX1:LCALL SAMOCJNER1,#01H,JX2按下则返回JMP RETURNJX2:JNB ,PK2JMP CZPK2:LCALL DELAY;预判复位键按下否;去抖动,判断是否真按下;复位按下,则存放选手编号的R3,放入灭”;倒计时初值R4放入显示倒计时寄存器R0中;扫描开始键是否按下;按下则R3存灭代码,;/启动定时器;中断次

8、数设为10次,刚好1秒;若R1中存放的选手按键标志位为1,则;否则继续循环等待中断;中断5次后,开启扬声器;中断10次后,关闭扬声器,这样喇叭响;R2中再存入中断次数;扫描选手按键标志位R1,未按下则转JX2 ,;检测复位键按下否JNB ,QFWJMP CZQFW:MOV R1,#01HJMP RETURNCZ:CJNE R0,#00H,CZ1clr LCALL DELAY5 MOV R1,#01H JMP RETURNCZ1:MOV TH0,#3CHMOV TL0,#0B0H SETB TR0 RETURN: RETI3、选手键盘扫描程序 ;选手键盘扫描程序SAMO: JNB ,XS1JNB

9、 ,XS2JNB ,XS3JNB ,XS4JNB ,XS5JNB ,XS6JNB ,XS7JNB ,XS80RETURN2:RETXS80: LJMP XS8XS1:LCALL DELAYJNB ,XS11JMP RETURN2XS11: MOV R1,#01H setb MOV R3,#01H LCALL XIANSH1 JMP RETURN2XS2:LCALL DELAYJNB ,XS22JMP RETURN2XS22: MOV R1,#01H setbMOV R3,#02HLCALL XIANSH1JMP RETURN2XS3:LCALL DELAYJNB ,XS33 JMP RETUR

10、N2;按下则返回;倒计时是否计时完毕;及时完毕无人抢答则扬声器开启涎时1秒;R1设1;中断返回;计时器初值重装;预扫描选手按键是否按下;未按下则返回;去抖动再判是否按下;按下则显示1号扬声器关闭;按下则显示2号扬声器关闭XS33: MOV R1,#01H setb MOV R3,#03H LCALL XIANSH1 JMP RETURN2XS4:LCALL DELAYJNB ,XS44 JMP RETURN2XS44: MOV R1,#01H setb MOV R3,#04H LCALL XIANSH1 JMP RETURN2XS5:LCALL DELAYJNB ,XS55 JMP RETUR

11、N2XS55: MOV R1,#01H setb MOV R3,#05H LCALL XIANSH1 JMP RETURN2XS6:LCALL DELAYJNB ,XS66 JMP RETURN2XS66: MOV R1,#01H setb MOV R3,#06H LCALL XIANSH1 JMP RETURN2XS7:LCALL DELAYJNB ,XS77 JMP RETURN2XS77: MOV R1,#01H setb MOV R3,#07H LCALL XIANSH1 JMP RETURN2XS8:LCALL DELAYJNB ,XS88 JMP RETURN2XS88: MOV

12、R1,#01H setb MOV R3,#08H LCALL XIANSH1;按下则显示3号扬声器关闭;按下则显示4号扬声器关闭;按下则显示5号扬声器关闭;按下则显示6号扬声器关闭;按下则显示7号扬声器关闭;按下则显示8号扬声器关闭DIV AB MOV R7,A MOV R6,B XIANSH2:SETB CLR CLR MOV A,R3 MOV DPTR,#SEGTAB MOVC A,A+DPTR MOV P2,A CLR SETB CLR MOV A,R7 MOV DPTR,#SEGTAB MOVC A,A+DPTR MOV P2,A CLR CLR SETB MOV A,R6 MOV D

13、PTR,#SEGTAB MOVC A,A+DPTR MOV P2,A RET5、抢答时间设计程序 ;抢答时间设置程序 SHESH:INC R0CJNE R0,#31,BQLMOV R0,#00HBQL: MOV R3,#0BHMOV A,R0JMP RETURN24、数码管显示程序;显示程序XIANSH1:MOV A,R0MOV B,#0AH;R0中存放的倒计时显示值除10分出十位和个位;十位存入R7中;个位存入R6中;选择选手编号的数码管;调入代码;显示选手编号;选择显示十位的数码管;调入代码;显示十位;选择显示个位的数码管;调入代码;显示个位;倒计时初值加1;倒计时初值设置超过30自动清零

14、;倒计时初值存入其专用寄存器R4中,这样可以全局不变,R0会倒计时中递减而改变 MOV R4,A LCALL XIANSH1 RETI6、延时子程序;10ms延时程序(用于去抖动)DELAY: MOV R7,#20D1:MOV R6,#248D2:DJNZ R6,D2DJNZ R7,D1RET;1s延时程序(无人抢答报警)DELAY5:MOV R7,#40DL1:MOV R6,#50DL2:MOV R5,#248DL3:DJNZ R5,DL3DJNZ R6,DL2DJNZ R7,DL1 RET五、仿真与调试抢答器调试结果1、开始开始运行仿真电路数码管显示FFF。庭踏 u dc 10fh*C-X

15、:8m奇了 1,4施,刊中 n W*,口田 由 挡团 JSiii + 4 町电、.企 PE尊 at#? XIMZ A Q D ai * I 清 I I 1 (I smw(+.i 阿51*四:顽U:,::顷知“|扣igiG H -JULg心f2、倒计时首先按下复位按钮,当按下开始按钮时开始倒计时。E 21 JEU PrunHiknri (AaLyiuir j 即日* Mhw Etfc Tech AiigMhp libwy l.ncfaN SfTtwn H.0口苴 +电尊司蜀 + +区444 9? *凶 * 侦 % km.: Q B| * | If | | . 1 g SMcvto 村 iii.

16、_i I ”,: I -3、 抢答在倒计时时间内抢答有效,倒计时后和主持人还没按开始按钮抢答均无效。4、倒计时时间设置在还没开始和抢答结束后均可设置抢答倒计时时间030sEQ 一口 心 * 如 *2J* j;g fdE X-zoa如 叫旦 o4im 匚*/wj l#ii:-Un+ Suarii b=口心1 ,力 s I gi L111 + -UK L 11 -* 以 H JUl / 户ht 的广 K:# m q5、抢答结束复位清零抢答结束后可按复位键清零以便下一次抢答。| * | 1 III | 1 0,WIF:yi |!-ijn.iksrf 3|.IIB - iS六、结论与心得此次课程设计,

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

18、理论时间上的差距。通过此次的课程设计 使我对本科知识有了更深入的了解提高了实践的操作能力。同时,也规范了我对报告文体格 式的掌握。并让我了解到认真刻苦,以真理为武,追求卓越的精神!附件1:电路图附件2:源程序ORG 0000HLJMP MAINORG 0003HLJMP SHESHORG 000BHLJMP IT0PORG 0100HMAIN: MOV TMOD,#01H MOV TH0,#3CH MOV TL0,#0B0H SETB EA SETB ET0 SETB EX0 SETB IT0 MOV R4,#30 MOV R3,#0AH MOV R7,#0AH MOV R6,#0AH MOV

19、 R0,#30 LCALL XIANSH2STAR:setbMOV R1,#00H 用于从等待中断中返回到初始 ;复位部分程序 FW:JNB ,FW1JMP FWFW1:LCALL DELAYJNB ,FW2 JMP FWFW2:MOV R3,#0BH的代码MOV A,R4MOV R0,ALCALL XIANSH1;开始部分程序SAM:JNB ,PKJMP SAMPK:JNB ,PK1JMP SAMPK1:MOV R3,#0BHSETB TR0 MOV R2,#0AH;主函数;30秒倒计时;抢答结果;倒计时;R0存放倒计时的显示值,初值设为30;关喇叭;选手按键,复位按键,无人抢答的标志位,;

20、预判复位键按下否;去抖动,判断是否真按下;复位按下,则存放选手编号的R3,放入灭”;倒计时初值R4放入显示倒计时寄存器R0中;扫描开始键是否按下;按下则R3存灭代码,;/启动定时器;中断次数设为10次,刚好1秒HERE:CJNE R1,#01H,YY;若R1中存放的选手按键标志位为1,则转入STARJMP STAR;否则继续循环等待中断YY:JMP HERE;中断程序IT0P:CLR TR0DEC R2CJNE R2,#05H,JX0;中断5次后,开启扬声器clrJX0:CJNE R2,#00H,JX1;中断10次后,关闭扬声器,这样喇叭响秒setbDECR0LCALL XIANSH1MOVR

21、2,#0AH;R2中再存入中断次数JX1:LCALL SAMOCJNE R1,#01H,JX2;扫描选手按键标志位R1,未按下则转JX2 ,按下则返回JMPRETURNJX2:JNB ,PK2JMPCZPK2:LCALL DELAY;检测复位键按下否JNB ,QFWJMPCZQFW:MOV R1,#01HJMP RETURN;按下则返回CZ:CJNE R0,#00H,CZ1;倒计时是否计时完毕clr;及时完毕无人抢答则扬声器开启LCALL DELAY5;延时1秒MOV R1,#01H;R1 设 1JMPRETURN;中断返回CZ1:MOV TH0,#3CH;计时器初值重装MOV TL0,#0B

22、0HSETB TR0RETURN:RETI;选手键盘扫描程序SAMO:JNB ,XS1JNB ,XS2JNB,XS3JNB,XS4;预扫描选手按键是否按下JNB,XS5JNB,XS6JNB,XS7JNB,XS80RETURN2:RET;未按下则返回XS80: LJMP XS8XS1:LCALL DELAYJNB ,XS11 JMP RETURN2XS11: MOV R1,#01H setb MOV R3,#01H LCALL XIANSH1 JMP RETURN2XS2:LCALL DELAYJNB ,XS22 JMP RETURN2XS22: MOV R1,#01H setb MOV R3,

23、#02H LCALL XIANSH1 JMP RETURN2XS3:LCALL DELAYJNB ,XS33 JMP RETURN2XS33: MOV R1,#01H setb MOV R3,#03H LCALL XIANSH1JMP RETURN2XS4:LCALL DELAYJNB ,XS44 JMP RETURN2XS44: MOV R1,#01H setbMOV R3,#04HLCALL XIANSH1JMP RETURN2XS5:LCALL DELAYJNB ,XS55 JMP RETURN2XS55: MOV R1,#01H setbMOV R3,#05H LCALL XIANSH

24、1 JMP RETURN2XS6:LCALL DELAYJNB ,XS66 JMP RETURN2;去抖动再判是否按下;按下则显示1号扬声器关闭;按下则显示2号扬声器关闭;按下则显示3号扬声器关闭;按下则显示4号扬声器关闭;按下则显示5号扬声器关闭XS66: MOV R1,#01Hsetb;按下则显示6号扬声器关闭MOV R3,#06HLCALL XIANSH1JMP RETURN2XS7:LCALL DELAYJNB ,XS77JMP RETURN2XS77: MOV R1,#01HsetbMOV R3,#07H;按下则显示7号扬声器关闭LCALL XIANSH1JMP RETURN2XS8

25、:LCALL DELAYJNB ,XS88JMP RETURN2XS88: MOV R1,#01Hsetb;按下则显示8号扬声器关闭MOV R3,#08HLCALL XIANSH1JMP RETURN2;显示程序XIANSH1:MOV A,R0MOV B,#0AH;R0中存放的倒计时显示值除10分出十位和个位DIV ABMOV R7,A;十位存入R7中MOV R6,B;个位存入R6中XIANSH2:SETBCLR;选择选手编号的数码管CLRMOV A,R3MOV DPTR,#SEGTABMOVC A,A+DPTR;调入代码MOV P2,A;显示选手编号CLRSETB;选择显示十位的数码管CLR

26、MOV A,R7MOV DPTR,#SEGTABMOVC A,A+DPTR;调入代码MOV P2,A;显示十位CLRCLR;选择显示个位的数码管SETBMOV A,R6MOV DPTR,#SEGTABMOVC A,A+DPTRMOV P2,ARET;抢答时间设置程序SHESH:INC R0CJNE R0,#31,BQLMOV R0,#00HBQL: MOV R3,#0BHMOV A,R0样可以全局不变,R0会倒计时中递减而改变MOV R4,ALCALL XIANSH1RETI;10ms延时程序(去抖动)DELAY: MOV R7,#20D1:MOV R6,#248D2:DJNZ R6,D2DJ

27、NZ R7,D1RET;1s延时程序(无人抢答报警)DELAY5:MOV R7,#40DL1:MOV R6,#50DL2:MOV R5,#248DL3:DJNZ R5,DL3DJNZ R6,DL2DJNZ R7,DL1;调入代码;显示个位;倒计时初值加1;倒计时初值设置超过30自动清零;倒计时初值存入其专用寄存器R4中,这RET;数码管显示调用代码SEGTAB:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,8EH,0FFH 单片机 原理及应用.高等教育出版社.20042 张鑫.单片机原理及应用.电子工业出版社.20053 曹国清.数学电路与逻辑设计中国矿业大学出版社.20044 任致程.经典集成电路400例机械工业出版社.20025 薛栋梁.单片机原理及应用.中国水利水电出版社.20016 吴金戎,沈庆阳等.8051单片机实践与应用.清华大学出版社.2001

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号