《2022年8位竞赛抢答器的设计.pdf》由会员分享,可在线阅读,更多相关《2022年8位竞赛抢答器的设计.pdf(17页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、单片机课程设计专业电气工程及其自动化指导教师学生颜良堂学号 B16 题目8 位竞赛抢答器的设计2013 年 12 月 25 日精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 1 页,共 17 页 - - - - - - - - - - 目 录一、设计任务与要求. . 3二、方案设计与论证 . 3方案一:. 3方案二:. 3三、单元电路的设计 . 3芯片的选择及工作原理. . 3系统的硬件构成及功能. . 4四、软件的设计 . . 5主程序流程图. . 5主程序 . . 5子程序 . . 61、开始、复位程
2、序. . 62、中断程序 . . 63、选手键盘扫描程序. . 74、数码管显示程序. . 95、抢答时间设计程序. . 96、延时子程序. . 9五、仿真与调试. . 10抢答器调试结果. . 10六、结论与心得 . . 12附件 1:电路图. 12附件 2:源程序. 13附、参考文献 ? . . 17精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 2 页,共 17 页 - - - - - - - - - - 一、设计任务与要求以单片机为核心,设计一个8 位竞赛抢答器:同时供8 名选手或8 个代表队比赛
3、,分别用8 个按钮S0 S7表示。设置一个系统清除和抢答控制开关S,开关由主持人控制。抢答器具有锁存与显示功能。即选手按按钮,锁存相应的编号,并在优先抢答选手的编号一直保持到主持人将系统清除为止。抢答器具有定时抢答功能,且一次抢答的时间由主持人设定(如30 秒) 。当主持人启动“开始”键后,定时器进行减计时,同时扬声器发出短暂的声响,声响持续的时间为左右。参赛选手在设定的时间内进行抢答,抢答有效, 定时器停止工作,显示器上显示选手的编号和抢答的时间,并保持到主持人将系统清除为止。如果定时时间已到,无人抢答,本次抢答无效,系统报警并禁止抢答,定时显示器上显示00。通过键盘改变抢答的时间,原理与闹
4、钟时间的设定相同,将定时时间的变量置为全局变量后,通过键盘扫描程序使每按下一次按键,时间加1(超过30 时置 0) 。同时单片机不断进行按键扫描,当参赛选手的按键按下时,用于产生时钟信号的定时计数器停止计数,同时将选手编号(按键号)和抢答时间分别显示在LED上。二、方案设计与论证方案一:使 用C 语言编 程实现基于单片 机的八 位抢 答器 的课程设计,用到 的元 器件 有AT89C51 、MAX7219 、按键、数码管、上拉电阻、蜂鸣器等。方案二:使 用 汇 编 语言 编 程 实 现 八 位 抢 答 器 的 课 程 设 计 , 用 到 的 元 器 件 有AT89C51、74LS373、按键、数
5、码管、上拉电阻、蜂鸣器等。选择方案二的理由:首先汇编语言是一种功能很强的程序设计语言, 也是利用计算机所有硬件特性并能直接控制硬件的语言,具有很高的精确控制;其次选用 74LS373 芯片作为数码管的控制芯片是因为它容易控制选用3个 74ls373 分别控制倒计时的两个数码管及一个显示抢答结果的数码管,所以我选择了方案二。三、单元电路的设计芯片的选择及工作原理本设计使用到的元器件包括AT89C51 芯片、数码管。工作原理 :仿真开始显示 FFF;按下“复位”键显示倒计时初值,起初设的是30 秒;再按下“设时”键,按一下计数初值加1,到 30 自动清零;按下“开始”键开始倒计时,每减一,有秒的声
6、响; 当有选手按下,则倒计时停止,显示当前倒计时数值和选手编号;若在倒计时计数到0,无人抢答则有 1 秒声响的报警。精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 3 页,共 17 页 - - - - - - - - - - 系统的硬件构成及功能1、 单片机晶振及复位部分电路电路2 、 选 手 抢 答 部 分 电 路 : 由 八 个 按 键 S0S7以 及 8 个 阻 值 为 1k 的 上 拉 电 阻 组 成3、 开始、 复位、时间设置及扬声器部分电路:由3个按键、 1个电阻、 NPN 和1个BUZZER
7、 组成,用于主持人操作及扬声器提示报警4、 显示部分电路:由3个74LS373芯片及 3个数码管构成,用于显示倒计时时间和抢答结果精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 4 页,共 17 页 - - - - - - - - - - 四、软件的设计主程序流程图主程序MAIN: MOV TMOD,#01H ;主程序 MOV TH0,#3CH MOV TL0,#0B0H SETB EA SETB ET0 SETB EX0 SETB IT0 MOV R4,#30 ; 30 秒倒计时 MOV R3,#0AH
8、 ; 抢答结果 MOV R7,#0AH ; 倒计时 MOV R6,#0AH MOV R0,#30 ;R0存放倒计时的显示值,初值设为30 LCALL XIANSH2 开始显示 FFF复位键时间设置开始按钮30s 抢答倒计时加 1显示抢答结果开始倒计时YYYYNNNN精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 5 页,共 17 页 - - - - - - - - - - 子程序1、开始、复位程序;*复位程序 *FW: JNB ,FW1 ;预判复位键按下否 JMP FWFW1: LCALL DELAY ;
9、去抖动,判断是否真按下 JNB ,FW2 JMP FWFW2: MOV R3,#0BH ;复位按下,则存放选手编号的R3,放入 灭的代码 MOV A,R4 ;倒计时初值 R4放入显示倒计时寄存器R0中 MOV R0,A LCALL XIANSH1; 开始程序SAM: JNB ,PK JMP SAMPK: JNB ,PK1 ;扫描开始键是否按下 JMP SAMPK1: MOV R3,#0BH ;按下则 R3存 灭 代码, SETB TR0 ;/启动定时器 MOV R2,#0AH ;中断次数设为 10次,刚好 1秒HERE: CJNE R1,#01H,YY ;若R1 中存放的选手按键标志位为1,则
10、转入 STAR JMP STAR ;否则继续循环等待中断YY: JMP HERE2、中断程序; 中断程序IT0P: CLR TR0 DEC R2 CJNE R2,#05H,JX0 ; 中断 5次后,开启扬声器 clr JX0: CJNE R2,#00H,JX1 ;中断 10次后,关闭扬声器,这样喇叭响秒 setb DEC R0 LCALL XIANSH1 MOV R2,#0AH ;R2中再存入中断次数JX1: LCALL SAMO CJNE R1,#01H,JX2 ;扫描选手按键标志位R1, 未按下则转 JX2 ,按下则返回 JMP RETURNJX2: JNB ,PK2 JMP CZPK2:
11、 LCALL DELAY ;检测复位键按下否精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 6 页,共 17 页 - - - - - - - - - - JNB ,QFW JMP CZQFW: MOV R1,#01H JMP RETURN ; 按下则返回CZ: CJNE R0,#00H,CZ1 ;倒计时是否计时完毕 clr ;及时完毕无人抢答则扬声器开启 LCALL DELAY5 ;延时 1秒 MOV R1,#01H ;R1 设1 JMP RETURN ;中断返回CZ1: MOV TH0,#3CH ;计时
12、器初值重装 MOV TL0,#0B0H SETB TR0RETURN: RETI3、选手键盘扫描程序; 选手键盘扫描程序SAMO: JNB ,XS1 JNB ,XS2 JNB ,XS3 JNB ,XS4 ;预扫描选手按键是否按下 JNB ,XS5 JNB ,XS6 JNB ,XS7 JNB ,XS80RETURN2:RET ; 未按下则返回XS80: LJMP XS8XS1: LCALL DELAY ;去抖动再判是否按下 JNB ,XS11 JMP RETURN2XS11: MOV R1,#01H setb ;按下则显示 1号 扬声器关闭 MOV R3,#01H LCALL XIANSH1 J
13、MP RETURN2XS2: LCALL DELAY JNB ,XS22 JMP RETURN2XS22: MOV R1,#01H setb ;按下则显示 2号 扬声器关闭 MOV R3,#02H LCALL XIANSH1 JMP RETURN2XS3: LCALL DELAY JNB ,XS33 JMP RETURN2精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 7 页,共 17 页 - - - - - - - - - - XS33: MOV R1,#01H setb ;按下则显示 3号 扬声器关闭
14、 MOV R3,#03H LCALL XIANSH1 JMP RETURN2XS4: LCALL DELAY JNB ,XS44 JMP RETURN2XS44: MOV R1,#01H ;按下则显示 4号 扬声器关闭 setb MOV R3,#04H LCALL XIANSH1 JMP RETURN2XS5: LCALL DELAY JNB ,XS55 JMP RETURN2XS55: MOV R1,#01H setb ;按下则显示 5号 扬声器关闭 MOV R3,#05H LCALL XIANSH1 JMP RETURN2XS6: LCALL DELAY JNB ,XS66 JMP RET
15、URN2XS66: MOV R1,#01H setb ;按下则显示 6号 扬声器关闭 MOV R3,#06H LCALL XIANSH1 JMP RETURN2XS7: LCALL DELAY JNB ,XS77 JMP RETURN2XS77: MOV R1,#01H setb MOV R3,#07H ;按下则显示 7号 扬声器关闭 LCALL XIANSH1 JMP RETURN2XS8: LCALL DELAY JNB ,XS88 JMP RETURN2XS88: MOV R1,#01H setb ;按下则显示 8号 扬声器关闭 MOV R3,#08H LCALL XIANSH1精品资料
16、 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 8 页,共 17 页 - - - - - - - - - - JMP RETURN24、数码管显示程序; 显示程序XIANSH1:MOV A,R0 MOV B,#0AH ;R0中存放的倒计时显示值除10 分出十位和个位 DIV AB MOV R7,A ;十位存入 R7中 MOV R6,B ;个位存入 R6中XIANSH2:SETB CLR ;选择选手编号的数码管 CLR MOV A,R3 MOV DPTR,#SEGTAB ; 调入代码 MOVC A,A+DPTR M
17、OV 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 DPTR,#SEGTAB ; 调入代码 MOVC A,A+DPTR MOV P2,A ; 显示个位 RET5、抢答时间设计程序; 抢答时间设置程序SHESH:INC R0 ; 倒计时初值加 1 CJNE R0,#31,BQL ;倒计时初值设置超过30 自动清零 MOV R0,#00HBQL: MOV R3,#0BH M
18、OV A,R0 ;倒计时初值存入其专用寄存器R4 中,这样可以全局不变,R0 会倒计时中递减而改变 MOV R4,A LCALL XIANSH1 RETI6、延时子程序;10ms延时程序(用于去抖动)精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 9 页,共 17 页 - - - - - - - - - - DELAY: MOV R7,#20D1: MOV R6,#248 D2: DJNZ R6,D2 DJNZ R7,D1 RET;1s 延时程序(无人抢答报警)DELAY5:MOV R7,#40DL1:
19、MOV R6,#50DL2: MOV R5,#248DL3: DJNZ R5,DL3 DJNZ R6,DL2 DJNZ R7,DL1 RET五、仿真与调试抢答器调试结果1、 开始开始运行仿真电路数码管显示FFF。2、 倒计时首先按下复位按钮,当按下开始按钮时开始倒计时。精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 10 页,共 17 页 - - - - - - - - - - 3、 抢答在倒计时时间内抢答有效,倒计时后和主持人还没按开始按钮抢答均无效。4、 倒计时时间设置在还没开始和抢答结束后均可设置抢
20、答倒计时时间030s?5、 抢答结束复位清零精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 11 页,共 17 页 - - - - - - - - - - 抢答结束后可按复位键清零以便下一次抢答。六、结论与心得此次课程设计, 开始很苦恼,无从下手。后来和同学讨论决定首先借助于网络资料。网络上的资源大多并不完善,甚至有些根本看不懂。此时真的很头疼。于是回想之前实验课上所学习的知识。寻找借鉴例题。零零散散下载摘录很多东西。又结合抢答比赛的实际应用,开始起草最初的设计草案。想法很多设计也几近完整,然而很多功能却
21、无法实现。于是决定按照草案一步步依次解决,边解决边定稿最后设计方案。中间遇到很多问题、困难。这时我才了解到对知识的掌握还有许多的生疏和欠缺。然而此时后悔已经于事无补。我们只能不停在网络上搜索查找学习,尽量弥补自身知识的不足。渐渐完善此设计。在这次试验设计中在老师的严格要求下,我发现了自己知识上的不足和理论时间上的差距。通过此次的课程设计使我对本科知识有了更深入的了解提高了实践的操作能力。同时,也规范了我对报告文体格式的掌握。并让我了解到认真刻苦,以真理为武,追求卓越的精神!附件 1:电路图精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - -
22、 - - - - - - -第 12 页,共 17 页 - - - - - - - - - - 附件 2:源程序 ORG 0000H LJMP MAIN ORG 0003H LJMP SHESHORG 000BHLJMP IT0P ORG 0100HMAIN: MOV TMOD,#01H ; 主函数 MOV TH0,#3CH MOV TL0,#0B0H SETB EA SETB ET0 SETB EX0SETB IT0MOV R4,#30 ; 30秒倒计时MOV R3,#0AH ; 抢答结果MOV R7,#0AH ; 倒计时MOV R6,#0AH MOV R0,#30 ;R0 存放倒计时的显示
23、值,初值设为30LCALL XIANSH2 STAR: setb ; 关喇叭 MOV R1,#00H ; 选手按键, 复位按键, 无人抢答的标志位,用于从等待中断中返回到初始; 复位部分程序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 ,PK JMP SAMPK: JNB
24、 ,PK1 ; 扫描开始键是否按下 JMP SAMPK1: MOV R3,#0BH ; 按下则 R3存灭 代码, SETB TR0 ;/启动定时器 MOV R2,#0AH ;中断次数设为10 次,刚好1 秒精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 13 页,共 17 页 - - - - - - - - - - HERE: CJNE R1,#01H,YY ;若 R1中存放的选手按键标志位为1,则转入 STAR JMP STAR ; 否则继续循环等待中断YY: JMP HERE; 中断程序IT0P: C
25、LR TR0 DEC R2 CJNE R2,#05H,JX0 ; 中断 5 次后,开启扬声器clr JX0: CJNE R2,#00H,JX1 ; 中断 10 次后,关闭扬声器,这样喇叭响秒 setb DEC R0LCALL XIANSH1MOV R2,#0AH ;R2 中再存入中断次数JX1: LCALL SAMO CJNE R1,#01H,JX2 ; 扫描选手按键标志位R1,未按下则转JX2 ,按下则返回JMP RETURNJX2: JNB ,PK2JMP CZPK2: LCALL DELAY ;检测复位键按下否 JNB ,QFWJMP CZQFW: MOV R1,#01H JMP RET
26、URN ; 按下则返回CZ: CJNE R0,#00H,CZ1 ;倒计时是否计时完毕 clr ; 及时完毕无人抢答则扬声器开启LCALL DELAY5 ;延时 1 秒 MOV R1,#01H ;R1设 1JMP RETURN ;中断返回CZ1: MOV TH0,#3CH ; 计时器初值重装 MOV TL0,#0B0HSETB TR0RETURN: RETI; 选手键盘扫描程序SAMO: JNB ,XS1 JNB ,XS2JNB ,XS3JNB ,XS4 ; 预扫描选手按键是否按下JNB ,XS5JNB ,XS6JNB ,XS7JNB ,XS80RETURN2:RET ; 未按下则返回精品资料
27、- - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 14 页,共 17 页 - - - - - - - - - - XS80: LJMP XS8XS1: LCALL DELAY ; 去抖动再判是否按下 JNB ,XS11JMP RETURN2XS11: MOV R1,#01H setb ; 按下则显示 1 号 扬声器关闭MOV R3,#01HLCALL XIANSH1JMP RETURN2XS2: LCALL DELAY JNB ,XS22JMP RETURN2XS22: MOV R1,#01H setb ; 按下则显
28、示 2 号 扬声器关闭MOV R3,#02HLCALL XIANSH1JMP RETURN2XS3: LCALL DELAY JNB ,XS33JMP RETURN2XS33: MOV R1,#01H setb ;按下则显示 3 号 扬声器关闭MOV R3,#03HLCALL XIANSH1 JMP RETURN2XS4: LCALL DELAY JNB ,XS44JMP RETURN2XS44: MOV R1,#01H ; 按下则显示 4 号 扬声器关闭 setb MOV R3,#04HLCALL XIANSH1JMP RETURN2XS5: LCALL DELAY JNB ,XS55JMP
29、 RETURN2XS55: MOV R1,#01H setb ; 按下则显示 5 号 扬声器关闭MOV R3,#05HLCALL XIANSH1JMP RETURN2XS6: LCALL DELAY JNB ,XS66JMP RETURN2精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 15 页,共 17 页 - - - - - - - - - - XS66: MOV R1,#01H setb ; 按下则显示 6 号 扬声器关闭MOV R3,#06HLCALL XIANSH1JMP RETURN2XS7:
30、 LCALL DELAY JNB ,XS77JMP RETURN2XS77: MOV R1,#01H setb MOV R3,#07H ; 按下则显示 7 号 扬声器关闭LCALL XIANSH1JMP RETURN2XS8: LCALL DELAY JNB ,XS88JMP RETURN2XS88: MOV R1,#01H setb ; 按下则显示 8 号 扬声器关闭MOV R3,#08HLCALL XIANSH1JMP RETURN2; 显示程序XIANSH1:MOV A,R0 MOV B,#0AH ;R0 中存放的倒计时显示值除 10 分出十位和个位DIV ABMOV R7,A ;十位存
31、入R7中MOV R6,B ;个位存入R6中XIANSH2:SETB CLR ; 选择选手编号的数码管CLR MOV A,R3MOV DPTR,#SEGTAB ; 调入代码MOVC A,A+DPTRMOV P2,A ;显示选手编号CLR SETB ; 选择显示十位的数码管CLR MOV A,R7MOV DPTR,#SEGTAB ;调入代码MOVC A,A+DPTRMOV P2,A ;显示十位CLR CLR ; 选择显示个位的数码管精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 16 页,共 17 页 - -
32、 - - - - - - - - SETB MOV A,R6MOV DPTR,#SEGTAB ; 调入代码MOVC A,A+DPTRMOV P2,A ; 显示个位RET; 抢答时间设置程序SHESH:INC R0 ; 倒计时初值加1 CJNE R0,#31,BQL ; 倒计时初值设置超过30 自动清零 MOV R0,#00HBQL: MOV R3,#0BH MOV A,R0 ; 倒计时初值存入其专用寄存器R4中, 这样可以全局不变, R0会倒计时中递减而改变 MOV R4,A LCALL XIANSH1 RETI;10ms 延时程序(去抖动)DELAY: MOV R7,#20D1: MOV R
33、6,#248 D2: DJNZ R6,D2 DJNZ R7,D1 RET;1s 延时程序(无人抢答报警)DELAY5:MOV R7,#40DL1: MOV R6,#50DL2: MOV R5,#248DL3: DJNZ R5,DL3 DJNZ R6,DL2 DJNZ R7,DL1 RET; 数码管显示调用代码SEGTAB:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,8EH,0FFH 单片机原理及应用 ? . 高等教育出版社? .20042 张鑫 ? . 单片机原理及应用? . 电子工业出版社? .20053 曹国清 ? . 数学电路与逻辑设计中国矿业大学出版社? .20044 任致程 ? . 经典集成电路400 例机械工业出版社? .20025 薛栋梁 ? . 单片机原理及应用? . 中国水利水电出版社? .20016 吴金戎 , 沈庆阳等 ? . 8051 单片机实践与应用? . 清华大学出版社? .2001精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 17 页,共 17 页 - - - - - - - - - -