8位竞赛抢答器程序与仿真图
更新时间:2024-04-23 02:58:01 阅读量: 综合文库 文档下载
8位竞赛抢答器的设计
设计要求
以单片机为核心,设计一个8位竞赛抢答器:同时供8名选手或8个代表队比赛,分别用8个按钮S0~S7表示。
设置一个系统清除和抢答控制开关S,开关由主持人控制。
抢答器具有锁存与显示功能。即选手按按钮,锁存相应的编号,并在优先抢答选手的编号一直保持到主持人将系统清除为止。
抢答器具有定时抢答功能,且一次抢答的时间由主持人设定(如30秒)。 当主持人启动“开始”键后,定时器进行减计时,同时扬声器发出短暂的声响,声响持续的时间为0.5s左右。
参赛选手在设定的时间内进行抢答,抢答有效,定时器停止工作,显示器上显示选手的编号和抢答的时间,并保持到主持人将系统清除为止。
如果定时时间已到,无人抢答,本次抢答无效,系统报警并禁止抢答,定时显示器上显示00。
通过键盘改变抢答的时间,原理与闹钟时间的设定相同,将定时时间的变量置为全局变量后,通过键盘扫描程序使每按下一次按键,时间加1(超过30时置0)。同时单片机不断进行按键扫描,当参赛选手的按键按下时,用于产生时钟信号的定时计数器停止计数,同时将选手编号(按键号)和抢答时间分别显示在LED上。
程序:
ORG 0000H LJMP MAIN ORG 0003H LJMP SHESH ORG 000BH LJMP IT0P ORG 0100H
MAIN: MOV TMOD,#01H MOV TH0,#3CH MOV TL0,#0B0H SETB EA SETB ET0 跳沿触发。 SETB EX0 SETB IT0 MOV R4,#30 MOV R3,#0AH
//定时器 T0工作于方式1 //1秒的初值
//开总中断,T0中断,外部中断0开启,外部中断
// R4存放30,用于存放倒计时初值
MOV R7,#0AH // 个十百初始显示\,R3存放选手编号,R7存放倒计时的十位,R6存放倒计时的个位 MOV R6,#0AH MOV R0,#30 //R0存放倒计时的显示值,初值设为30 LCALL XIANSH2 STAR: setb P3.6 //关喇叭 MOV R1,#00H 从等待中断中返回到初始
//=========复位部分程序====== FW: JNB P3.1,FW1 JMP FW FW1: LCALL DELAY JNB P3.1,FW2 JMP FW FW2: MOV R3,#0BH 的代码
MOV A,R4 MOV R0,A LCALL XIANSH1
//=========开始部分程序====== SAM: JNB P3.0,PK JMP SAM PK: JNB P3.0,PK1 JMP SAM PK1: MOV R3,#0BH SETB TR0 MOV R2,#0AH HERE: CJNE R1,#01H,YY 入STAR
JMP STAR YY: JMP HERE
//=======中断程序======= IT0P: CLR TR0 DEC R2 CJNE R2,#05H,JX0 clr P3.6
JX0: CJNE R2,#00H,JX1 setb P3.6 DEC R0 LCALL XIANSH1 MOV R2,#0AH JX1: LCALL SAMO
CJNE R1,#01H,JX2 返回 JMP RETURN JX2: JNB P3.1,PK2 JMP CZ PK2: LCALL DELAY //选手按键,复位按键,无人抢答的标志位,用于 //预判 复位键按下否 //去抖动,判断是否真按下 //复位按下,则存放选手编号的R3,放入\灭\//倒计时初值R4放入显示倒计时寄存器R0中 //扫描开始键是否按下 //按下则R3存\灭\代码, //启动定时器 //中断次数设为10次,刚好1秒 //若R1中存放的选手按键标志位为1,则转 //否则继续循环 等待中断 // 中断5次后,开启扬声器 //中断10次后,关闭扬声器,这样喇叭响0.5秒 //R2中再存入中断次数 //扫描选手按键标志位R1,未按下则转JX2 ,按下则 //检测复位键按下否
JNB P3.1,QFW JMP CZ
QFW: MOV R1,#01H JMP RETURN //按下则返回 CZ: CJNE R0,#00H,CZ1 //倒计时是否计时完毕 clr P3.6 //及时完毕 无人抢答则扬声器开启 LCALL DELAY5 MOV R1,#01H JMP RETURN CZ1: MOV TH0,#3CH MOV TL0,#0B0H SETB TR0 RETURN: RETI
//========选手键盘扫描程序======== SAMO: JNB P1.0,XS1 JNB P1.1,XS2 JNB P1.2,XS3 JNB P1.3,XS4 JNB P1.4,XS5 JNB P1.5,XS6 JNB P1.6,XS7 JNB P1.7,XS80 RETURN2:RET XS80: LJMP XS8 XS1: LCALL DELAY JNB P1.0,XS11 JMP RETURN2 XS11: MOV R1,#01H setb P3.6 MOV R3,#01H LCALL XIANSH1 JMP RETURN2 XS2: LCALL DELAY
JNB P1.1,XS22 JMP RETURN2 XS22: MOV R1,#01H setb P3.6 MOV R3,#02H LCALL XIANSH1 JMP RETURN2 XS3: LCALL DELAY
JNB P1.2,XS33 JMP RETURN2 XS33: MOV R1,#01H setb P3.6 MOV R3,#03H LCALL XIANSH1 JMP RETURN2 XS4: LCALL DELAY
//延时1秒 //R1设1 //中断返回 //计时器初值重装 //预扫描 选手按键是否按下 //未按下则返回 //去抖动再判是否按下 //按下则 显示1号 扬声器关闭 //按下则 显示2号 扬声器关闭 //按下则 显示3号 扬声器关闭 JNB P1.3,XS44 JMP RETURN2 XS44: MOV R1,#01H setb P3.6 MOV R3,#04H LCALL XIANSH1 JMP RETURN2 XS5: LCALL DELAY
JNB P1.4,XS55 JMP RETURN2 XS55: MOV R1,#01H setb P3.6 MOV R3,#05H LCALL XIANSH1 JMP RETURN2 XS6: LCALL DELAY
JNB P1.5,XS66 JMP RETURN2 XS66: MOV R1,#01H setb P3.6 MOV R3,#06H LCALL XIANSH1 JMP RETURN2 XS7: LCALL DELAY
JNB P1.6,XS77 JMP RETURN2 XS77: MOV R1,#01H setb P3.6 MOV R3,#07H LCALL XIANSH1 JMP RETURN2 XS8: LCALL DELAY
JNB P1.7,XS88 JMP RETURN2 XS88: MOV R1,#01H setb P3.6 MOV R3,#08H LCALL XIANSH1 JMP RETURN2 //=========显示程序====== XIANSH1:MOV A,R0 MOV B,#0AH 位 DIV AB MOV R7,A
MOV R6,B XIANSH2:SETB P0.4 CLR P0.5
CLR P0.6
//按下则 显示4号 扬声器关闭
//按下则 显示5号 扬声器关闭
//按下则 显示6号 扬声器关闭
//按下则 显示7号 扬声器关闭
//按下则 显示8号 扬声器关闭
//R0中存放的倒计时显示值 除10 分出十位和个
//十位存入R7中 //个位存入R6中
//选择选手编号的数码管
MOV A,R3 MOV DPTR,#SEGTAB //调入代码 MOVC A,@A+DPTR MOV P2,A //显示选手编号 CLR P0.4 SETB P0.5 //选择显示十位的数码管 CLR P0.6 MOV A,R7 MOV DPTR,#SEGTAB //调入代码 MOVC A,@A+DPTR MOV P2,A //显示十位 CLR P0.4 CLR P0.5 //选择显示个位的数码管 SETB P0.6 MOV A,R6 MOV DPTR,#SEGTAB //调入代码 MOVC A,@A+DPTR MOV P2,A //显示个位 RET
//=======抢答时间设置程序====== SHESH:INC R0 //倒计时初值加1 CJNE R0,#31,BQL //倒计时初值设置超过30 自动清零 MOV R0,#00H BQL: MOV R3,#0BH MOV A,R0 //倒计时初值存入其专用寄存器R4中,这样可以全局不变,R0会倒计时中递减而改变 MOV R4,A LCALL XIANSH1 RETI
//====10ms延时程序(去抖动)==== DELAY: MOV R7,#20 D1: MOV R6,#248 D2: DJNZ R6,D2 DJNZ R7,D1 RET
//1s延时程序(无人抢答报警)==== DELAY5:MOV R7,#40 DL1: MOV R6,#50 DL2: MOV R5,#248 DL3: DJNZ R5,DL3 DJNZ R6,DL2 DJNZ R7,DL1 RET
//======数码管显示调用代码======
SEGTAB:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,8EH,0FFH //0,1,2,3,4,5,6,7,8,9,F,灭 END
说明:
仿真开始 显示FFF;
按下 复位 键 显示倒计时初值,起初设的是30秒;
再按下 设时 键,按一下计数初值加1,到30自动清零; 按下 开始 键 开始倒计时,每减一,有0.5秒的声响;
当有选手按下,则倒计时停止,显示当前倒计时数值和选手编号; 若在倒计时计数到0,无人抢答 则有1秒声响的报警。
说明:
仿真开始 显示FFF;
按下 复位 键 显示倒计时初值,起初设的是30秒;
再按下 设时 键,按一下计数初值加1,到30自动清零; 按下 开始 键 开始倒计时,每减一,有0.5秒的声响;
当有选手按下,则倒计时停止,显示当前倒计时数值和选手编号; 若在倒计时计数到0,无人抢答 则有1秒声响的报警。
正在阅读:
8位竞赛抢答器程序与仿真图04-23
2014年餐饮行业发展情况回顾03-21
科粤版课标初中化学九年级下《食品中的有机营养素》教学设计12-21
普通员工在职期间是否负有竞业限制义务?04-12
护士针刺伤论文(DOC)12-23
行政法讲座04-08
法理学考试题型指导06-25
第 2 课时 南亚03-17
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 抢答器
- 仿真
- 竞赛
- 程序
- 金沙乡中心幼儿园效能风暴行动民主评议机关作风和政风行风实施方
- 高中英语选修9课文逐句翻译(人教版)
- 学而思超常班二年级寒假班作业及答案第五讲
- 第十章磁场
- 重量、长度、面积、时间、货币单位换算及应用题
- STM8L 电源管理以及自动唤醒AWU
- 运动生理学
- 11六上语文第2组作业本参考答案
- 人教版 高中英语必修5全册教案 全套教学设计
- 北语直属14秋《公共关系学》作业1满分答案
- 多种方法测定碳酸钙的含量
- 《教育学》模拟试题及答案(3)
- 2005年亳州市国民经济和社会发展统计公报
- 连续梁每节段技术交底 - 图文
- 基础生化复习要点
- 白秀山毕业设计 - 图文
- FLUENT-6-计算模拟过程方法及步骤
- 我国基本公共卫生服务均等化的理论与实践研究
- ai理论试题(答案卷)
- 含氟表面活性剂的应用