当前位置:文档之家› 8位竞赛抢答器的设计--实用.docx

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

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

设置一个系统清除和抢答控制开关S,开关由主持人控制。

抢答器具有锁存与显示功能。

即选手按按钮,锁存相应的编号,并在优先抢答选手的编号一直保持到主持人将系统清除为止。

抢答器具有定时抢答功能,且一次抢答的时间由主持人设定(如30 秒)。

当主持人启动“开始”键后,定时器进行减计时,同时扬声器发出短暂的声响,声响持续的时间为左右。

参赛选手在设定的时间内进行抢答,抢答有效,定时器停止工作,显示器上显示选手的编号和抢答的时间,并保持到主持人将系统清除为止。

如果定时时间已到,无人抢答,本次抢答无效,系统报警并禁止抢答,定时显示器上显示00。

通过键盘改变抢答的时间,原理与闹钟时间的设定相同,将定时时间的变量置为全局变量后,通过键盘扫描程序使每按下一次按键,时间加1(超过30 时置 0 )。

同时单片机不断进行按键扫描,当参赛选手的按键按下时,用于产生时钟信号的定时计数器停止计数,同时将选手编号(按键号)和抢答时间分别显示在LED 上。

二、方案设计与论证方案一:使用 C 语言编程实现基于单片机的八位抢答器的课程设计,用到的元器件有AT89C51 、 MAX7219、按键、数码管、上拉电阻、蜂鸣器等。

方案二:使用汇编语言编程实现八位抢答器的课程设计,用到的元器件有AT89C51、74LS373 、按键、数码管、上拉电阻、蜂鸣器等。

选择方案二的理由:首先汇编语言是一种功能很强的程序设计语言硬件特性并能直接控制硬件的语言,具有很高的精确控制;其次选用, 也是利用计算机所有74LS373 芯片作为数码管的控制芯片是因为它容易控制选用 3 个 74ls373分别控制倒计时的两个数码管及一个显示抢答结果的数码管,所以我选择了方案二。

三、单元电路的设计芯片的选择及工作原理本设计使用到的元器件包括AT89C51芯片、数码管。

工作原理 :仿真开始显示FFF;按下“复位”键显示倒计时初值,起初设的是30 秒;再按下“设时”键,按一下计数初值加1,到 30 自动清零;按下“开始”键开始倒计时,每减一,有秒的声响;当有选手按下,则倒计时停止,显示当前倒计时数值和选手编号;若在倒计时计数到0,无人抢答则有1秒声响的报警。

系统的硬件构成及功能1、单片机晶振及复位部分电路电路2、选手抢答部分电路:由八个按键 S0~S7以及 8 个阻值为 1k 的上拉电阻组成3、开始、复位、时间设置及扬声器部分电路:由3个按键、1个电阻、NPN和1个BUZZER组成,用于主持人操作及扬声器提示报警4、显示部分电路:由3个 74LS373芯片及 3个数码管构成,用于显示倒计时时间和抢答结果四、软件的设计主程序流程图开始显示 FFF时间设置Y倒计时加 1NN 复位键NY开始按钮Y开始倒计时N30s抢答Y显示抢答结果主程序MAIN: MOV TMOD,#01H;主程序MOV TH0,#3CHMOV TL0,#0B0HSETB EASETB ET0SETB EX0SETB IT0MOV R4,#30; 30 秒倒计时MOV R3,#0AH MOV R7,#0AH ; 抢答结果; 倒计时MOV R6,#0AHMOV R0,#30;R0存放倒计时的显示值,初值设为30LCALL XIANSH2子程序1、开始、复位程序;********复位程序********FW:JNB ,FW1;预判复位键按下否JMP FWFW1: LCALL DELAY;去抖动,判断是否真按下JNB ,FW2JMP FWFW2:MOV R3,#0BH;复位按下,则存放选手编号的R3,放入 " 灭 "的代码MOV A,R4;倒计时初值R4放入显示倒计时寄存器R0中MOV R0,ALCALL XIANSH1;开始程序SAM: JNB ,PKJMP SAMPK:JNB ,PK1;扫描开始键是否按下JMP SAMPK1:MOV R3,#0BH;按下则 R3存 " 灭" 代码,SETB TR0;/启动定时器MOV R2,#0AH;中断次数设为 10次,刚好 1秒HERE: CJNE R1,#01H,YY;若 R1中存放的选手按键标志位为1,则转入 STARJMP STAR;否则继续循环等待中断YY: JMP HERE2、中断程序; 中断程序IT0P: CLR TR0DEC R2CJNE R2,#05H,JX0;中断5次后,开启扬声器clrJX0: CJNE R2,#00H,JX1;中断10次后,关闭扬声器,这样喇叭响秒setbDEC R0LCALL XIANSH1MOV R2,#0AH;R2中再存入中断次数JX1: LCALL SAMOCJNE R1,#01H,JX2;扫描选手按键标志位R1,未按下则转 JX2 ,按下则返回JMP RETURNJX2: JNB ,PK2JMP CZPK2: LCALL DELAY;检测复位键按下否JNB ,QFWJMP CZQFW: MOV R1,#01HJMP RETURN; 按下则返回CZ: CJNE R0,#00H,CZ1;倒计时是否计时完毕clr;及时完毕无人抢答则扬声器开启LCALL DELAY5;延时 1秒MOV R1,#01H;R1设 1JMP RETURN;中断返回CZ1:MOV TH0,#3CH;计时器初值重装MOV TL0,#0B0HSETB TR0RETURN: RETI3、选手键盘扫描程序; 选手键盘扫描程序SAMO: JNB ,XS1JNB ,XS2JNB ,XS3JNB ,XS4;预扫描选手按键是否按下JNB ,XS5JNB ,XS6JNB ,XS7JNB ,XS80RETURN2:RET; 未按下则返回XS80: LJMP XS8XS1:LCALL DELAY;去抖动再判是否按下JNB ,XS11JMP RETURN2XS11: MOV R1,#01Hsetb;按下则显示 1号扬声器关闭MOV R3,#01HLCALL XIANSH1JMP RETURN2 XS2: LCALL DELAY JNB ,XS22JMP RETURN2 XS22: MOV R1,#01HXS3:setbMOV R3,#02HLCALL XIANSH1JMP RETURN2LCALL DELAYJNB ,XS33;按下则显示2号扬声器关闭JMP RETURN2XS33: MOV R1,#01Hsetb;按下则显示 3号扬声器关闭MOV R3,#03HLCALL XIANSH1JMP RETURN2XS4:LCALL DELAYJNB ,XS44JMP RETURN2XS44: MOV R1,#01H;按下则显示 4号扬声器关闭setbMOV R3,#04HLCALL XIANSH1JMP RETURN2 XS5:LCALL DELAY JNB ,XS55JMP RETURN2XS55: MOV R1,#01Hsetb;按下则显示5号扬声器关闭MOV R3,#05HLCALL XIANSH1JMP RETURN2XS6: LCALL DELAYJNB ,XS66JMP RETURN2XS66: MOV R1,#01Hsetb;按下则显示6号扬声器关闭MOV R3,#06HLCALL XIANSH1JMP RETURN2XS7: LCALL DELAYJNB ,XS77JMP RETURN2XS77: MOV R1,#01HsetbMOV R3,#07H;按下则显示7号扬声器关闭LCALL XIANSH1JMP RETURN2XS8: LCALL DELAYJNB ,XS88JMP RETURN2XS88: MOV R1,#01Hsetb;按下则显示8号扬声器关闭MOV R3,#08HLCALL XIANSH1JMP RETURN24、数码管显示程序; 显示程序XIANSH1:MOV A,R0MOV B,#0AH;R0中存放的倒计时显示值除 10分出十位和个位DIV ABMOV R7,A;十位存入 R7中MOV R6,B;个位存入 R6中XIANSH2:SETBCLR;选择选手编号的数码管CLRMOV A,R3MOV DPTR,#SEGTAB; 调入代码MOVC A,@A+DPTRMOV P2,A;显示选手编号CLRSETB;选择显示十位的数码管CLRMOV A,R7MOV DPTR,#SEGTAB;调入代码MOVC A,@A+DPTRMOV P2,A;显示十位CLRCLR;选择显示个位的数码管SETBMOV A,R6MOV DPTR,#SEGTAB; 调入代码MOVC A,@A+DPTRMOV P2,A; 显示个位RET5、抢答时间设计程序; 抢答时间设置程序SHESH:INC R0CJNE R0,#31,BQL;; 倒计时初值加 1倒计时初值设置超过30 自动清零MOV R0,#00HBQL: MOV R3,#0BHMOV A,R0;倒计时初值存入其专用寄存器R4中,这样可以全局不变,R0会倒计时中递减而改变MOV R4,ALCALL XIANSH1RETI6、延时子程序;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,DL1RET五、仿真与调试抢答器调试结果1、开始开始运行仿真电路数码管显示FFF。

2、倒计时首先按下复位按钮,当按下开始按钮时开始倒计时。

3、抢答在倒计时时间内抢答有效,倒计时后和主持人还没按开始按钮抢答均无效。

相关主题