《单片机》课程设计 抢答器设计.docx
- 文档编号:10278742
- 上传时间:2023-05-24
- 格式:DOCX
- 页数:15
- 大小:96.87KB
《单片机》课程设计 抢答器设计.docx
《《单片机》课程设计 抢答器设计.docx》由会员分享,可在线阅读,更多相关《《单片机》课程设计 抢答器设计.docx(15页珍藏版)》请在冰点文库上搜索。
《单片机》课程设计抢答器设计
计算机与信息工程学院
《单片机》课程设计
抢答器的设计
专业:
计算机科学与技术
班级:
姓名:
学号:
指导教师:
年月日
摘要:
抢答器在我们的日常生活中是很常见的,特别是在一些知识竞赛和一些益智性的电视节目中抢答器的作用更是不容忽视。
能够实现抢答器功能的方式有多种,可以采用前期的模拟电路、数字电路或模拟与数字电路相结合的方式。
近年来随着科技的飞速发展,单片机的应用正在不断深入,同时带动传统控制检测日新月异更新。
现在设计一种利用微电脑芯片作为核心部件进行逻辑控制及信号产生的单片机技术设计的9路多功能智力竞赛抢答器。
关键词:
PLC;单片机;抢答器;设计
引言
在电视和学校中我们会经常看到一些智力抢答的节目,如果要是让抢答者用举手等方法,主持人很容易误判,会造成抢答的不公平,比赛中为了准确、公正、直观地判断出第一抢答者,所设计的抢答器通常由数码显示、灯光、音响等多种手段指示出第一抢答者。
为了使这种不公平不发生,只有靠电子产品的高准确性来保障抢答的公平性。
1.方案论证
抢答器是将键盘部分、单片机部分、锁存显示部分按指示的3个单元电路相接。
这样就将整个硬件部分连接起来组成一个整体电路。
抢答器由主体电路和扩展电路两部分组成。
主体电路完成基本的抢答功能;扩展电路完成定时抢答的功能。
定时抢答器的工作过程是:
接通电源时,节目主持人将开关置于“清除”位置,抢答器处于禁止工作状态,编号显示器灭灯,定时显示器显示设定的时间,当节目主持人宣布“抢答开始”,同时将控制开关拨到“开始”位置,扬声器给出声响提示,抢答器处于工作状态,定时器倒计时。
当定时时间到,却没有选手抢答时,系统报警,并封锁输入电路,禁止选手超时后抢答。
2.硬件详细设计
2.1单片机电路引脚各部分连接及功能
1)本设计采用Atmel公司生产的单片机AT89C2051实现主要功能,AT89C2051的功能与80C51功能相似。
AT89C205的各引脚功能情况为:
2)P1口(P110~P117)8个引脚:
P117为最高位,P110为最低位。
在AT89C2051不带片外存储器时,P1口可作为通用I/O口使用,
3)P110~P117:
用于传送CPU的输入/输出数据。
这时输出数据可以得到锁存,不需外接专用锁存器,输入数据可以得到缓冲,增加了数据输入的可靠性;
4)P37引脚外接电阻、放大管以及扬声器;
5)RST复位线,外接电容、电阻,使AT89C2051处于复位工作状态
6)TXD:
串行口数据发送;
7)RXD:
串行口数据接收;
8)XMT1和XMT2外接石英晶体和微调电容,为片内振荡电路输入线,用来连接AT89C2051片内OSC的定时反馈网络。
9)INT0/INT1:
外部中断0/1输入;
10)T/C1,T/C0:
定时器/计数器1/0的外部输入。
2.2单片机的锁存显示部分
1)锁存部分:
采用串行→并行8位输出锁存移位寄存器74LS595要显示字符,把这个字符转换成相应的字形码,然后通过串行口发送到74LS595,74LS595把串行口接收到的数据变为并行输出加到数码管上(提供a~dp的驱动)。
本设计采用的是共阳极8段数码管显示器。
2)显示部分:
采用动态扫描4位LED显示接口电路,LED动态显示是单片机中应用最为广泛的一种显示方式,其接口电路是把所有显示器的8个笔划段a~dp同名端并联在一起,而每一个显示器的公共极COM是各自独立地受I/O线控制,CPU的字段输出口送出字形码时,所有显示器由于同名端并联接收到相同的字形码,但究竟哪个显示器亮,则取决于COM端,这一端是由I/O控制的,可以自行决定何时显示哪一位。
在轮流点亮扫描过程中,每位显示器的点亮时间是极为短暂的,尽管实际上各位显示器并非同时点亮,但只要扫描速度足够快,给人的印象就是一组稳定的显示数据,不会有闪烁感。
3.硬件详细设计
3.1单片机内部程序信号流程
单片机AT89C2051内部程序信号流程如图1所示。
首先主持人按下复位按钮,单片机进行片内内部扫描的同时主持人可以调节抢答时间和允许答题时间,在整定的时间当中如果没有调节抢答时间,则抢答器工作为设置的默认抢答时间值,同时在主持人未按下抢答按钮的时候有选手抢答则此时单片机发出一个选手犯规信号送入扬声器,只有主持人允许后,选手才能开始抢答。
与此同时单片机开始定时并送出一个信号到数字集成电路显示抢答时间,当中如果有选手抢答则送入一个信号到扬声器并显示选手号,同时单片机开始对选手回答问题定时,时间到则对选手报警,在之前允许抢答时间到也发出报警信号。
到主持人发出下一次抢答信号。
图1 单片机内部程序信号流程图
4.PROTUCE软件仿真
系统仿真还用到了PROTUCE软件,仿真如图2、图3所示。
可通过仿真可以完全显示出所设计系统的功能,对于程序的调试等有很大的帮助.
系统仿真时首先要在使用伟福编译器,把所写的程序进行编译,同时在仿真器里设置生成HEX文件,编译无错误时进行PROTUCE仿真。
首先要新建一个文档是
DNS型的找出需要的器件,可以使用搜索功能。
接着把各个器件放到合适的位置都要放到蓝色框内。
然后根据自己的设计要求连线。
等所有的元件都连接完成后可以把,伟福编译生成的无错误文件加载到AT89C51中,方法是,右键点中器件然后在用左键点击,出来一个对话框在programfile后选择要添加文件,文件要求必须是HEX文件。
然后可以点击运行观察现象,看与自己设置的符合否,如果不相符在查找错误进行修改,一般的错误都是程序中的,所以要认真的读取程序的每一个部分。
图2六号抢答到时时的显示图
图3倒计时到30秒时的显示图
5.课程设计体会
本设计是以实际电路作为最终形式,该电路允许9人同时参赛(可扩展),并显示剩余答题时间与剩余允许抢答时间及抢答选手号,有状态显示电路及报警电路。
功能相当齐全,在以后还可扩展功能。
如自动控制记分器进行记分,并通过串行口与PC机通信,用PC机统计选手得分情况,完全实现智能化和公正,减小人为因素的影响。
通过运用我所学习的模拟电子技术、数字电子技术和通信电子线路等关于电子技术的课程中的理论知识来完成此项设计。
但在设计的过程中,我遇到了很多的问题,有一些知识都已经不太清楚了,但是通过一些资料又重新的温习了一下数字电路部分的内容,并且通过查阅书籍和相关文献资料来提高独立分析能力和解决实际问题的能力;掌握并熟练运用相关软件进行操作;熟悉常用电子器件的类型、特征和功能,并本着合理采选用的原则进行选用;进一步熟悉电子仪器的正确使用。
在此我要感谢我的指导老师,感谢老师给我这样的锻炼机会。
在整个设计过程中我懂得了许多东西,不仅培养了我独立工作的能力,树立了对自己工作能力的信心,相信这次设计对今后的工作有非常重要的影响,而且还大大提高了我的动手能力,使我充分体会到了在创造过程中的探索的艰难和成功的喜悦。
通过这次设计我最大的收获是我学到了许多新的知识。
这次的设计就到此结束了,愿这个小小的抢答器可以发出它的功能!
6.参考文献
[1]沈文斌.嵌入式硬件系统设计与开发实例详解[M].北京:
电子工业出版社,2005.
[2]张鑫.单片机原理及应用[M].北京:
电子工业出版社,2005.
[3]潘永雄.电子线路CAD实用教程[M].2版.西安:
西安电子科技大学出版社,2005.
[4]张齐.单片机应用系统设计技术———基于C语言编程[M].北京:
电子工业出版社,2004.
[5]杨元挺.电子技术技能训练[M].北京:
高等教育出版社,2002.
[6]丁元杰.弹片微机原理及应用[M].北京:
机械工业出版社,2001.
系统提示信息
7.程序清单
OKEQU20H;抢答开始标志位;将P1口与P2口互换,P3.0-P1.0,P3.1-P1.7
RINGEQU22H;响铃标志位
ORG0000H
AJMPMAIN
ORG0003H
AJMPINT0SUB
ORG000BH
AJMPT0INT
ORG0013H
AJMPINT1SUB
ORG001BH
AJMPT1INT
ORG0040H
;===============-
;单片机抢答器主程序设计
;================
MAIN:
MOVR1,#0FH;初设抢答时间为15s
MOVR2,#0AH;初设答题时间为10s
MOVTMOD,#11H;设置未定时器/模式1
MOVTH0,#0F0H
MOVTL0,#0FFH;越高发声频率越高,越尖
MOVTH1,#3CH
MOVTL1,#0B0H;50ms为一次溢出中断
SETBEA
SETBET0
SETBET1
SETBEX0
SETBEX1;允许四个中断,T0/T1/INT0/INT1
CLROK
CLRRING
SETBTR1
SETBTR0;一开始就运行定时器,以开始显示FFF.如果想重新计数,重置TH1/TL1就可以了
;=====查询程序=====
START:
MOVR5,#0BH
MOVR4,#0BH
MOVR3,#0BH
ACALLDISPLAY;未开始抢答时候显示FFF
JBP1.0,NEXT;ddddddd
ACALLDELAY
JBP1.0,NEXT;去抖动,如果"开始键"按下就向下执行,否者跳到非法抢答查询
ACALLBARK;按键发声
MOVA,R1
MOVR6,A;送R1->R6,因为R1中保存了抢答时间
SETBOK;抢答标志位,用于COUNT只程序中判断是否查询抢答
MOVR3,0AH;抢答只显示计时,灭号数
AJMPCOUNT;进入倒计时程序,"查询有效抢答的程序"在COUNT里面
NEXT:
JNBP1.1,FALSE1
JNBP1.2,FALSE2
JNBP1.3,FALSE3
JNBP1.4,FALSE4
JNBP1.5,FALSE5
JNBP1.6,FALSE6
AJMPSTART
;=====非法抢答处理程序=====
FALSE1:
ACALLBARK;按键发声
MOVR3,#01H
AJMPERROR
FALSE2:
ACALLBARK
MOVR3,#02H
AJMPERROR
FALSE3:
ACALLBARK
MOVR3,#03H
AJMPERROR
FALSE4:
ACALLBARK
MOVR3,#04H
AJMPERROR
FALSE5:
ACALLBARK
MOVR3,#05H
AJMPERROR
FALSE6:
ACALLBARK
MOVR3,#06H
AJMPERROR
;=====INT0(抢答时间R1调整程序)=====
INT0SUB:
MOVA,R1
MOVB,#0AH
DIVAB
MOVR5,A
MOVR4,B
MOVR3,#0AH
ACALLDISPLAY;先在两个时间LED上显示R1
JNBP3.4,INC0;P3.4为+1s键,如按下跳到INCO
JNBP3.5,DEC0;P3.5为-1s键,如按下跳到DECO
JNBP1.7,BACK0;P3.1为确定键,如按下跳到BACKO
AJMPINT0SUB
INC0:
MOVA,R1
CJNEA,#63H,ADD0;如果不是99,R2加1,如果加到99了,R1就置0,重新加起。
MOVR1,#00H
ACALLDELAY1
AJMPINT0SUB
ADD0:
INCR1
ACALLDELAY1
AJMPINT0SUB
DEC0:
MOVA,R1
JZSETR1;如果R1为0,R1就置99,
DECR1
ACALLDELAY1
AJMPINT0SUB
SETR1:
MOVR1,#63H
ACALLDELAY1
AJMPINT0SUB
BACK0:
RETI
;=====INT1(回答时间R2调整程序)=====
INT1SUB:
MOVA,R2
MOVB,#0AH
DIVAB
MOVR5,A
MOVR4,B
MOVR3,#0AH
ACALLDISPLAY
JNBP3.4,INC1
JNBP3.5,DEC1
JNBP1.7,BACK1
AJMPINT1SUB
INC1:
MOVA,R2
CJNEA,#63H,ADD1
MOVR2,#00H
ACALLDELAY1
AJMPINT1SUB
ADD1:
INCR2
ACALLDELAY1
AJMPINT1SUB
DEC1:
MOVA,R2
JZSETR2
DECR2
ACALLDELAY1
AJMPINT1SUB
SETR2:
MOVR2,#63H
ACALLDELAY1
AJMPINT1SUB
BACK1:
RETI
;=====倒计时程序(抢答倒计时和回答倒计时都跳到改程序)=====
COUNT:
MOVR0,#00H;重置定时器中断次数
MOVTH1,#3CH
MOVTL1,#0B0H;重置定时器
RECOUNT:
MOVA,R6;R6保存了倒计时的时间,之前先将抢答时间或回答时间给R6
MOVB,#0AH
DIVAB;除十分出个位/十位
MOV30H,A;十位存于(30H)
MOV31H,B;个位存于(31H)
MOVR5,30H;取十位
MOVR4,31H;取个位
MOVA,R6
SUBBA,#07H
JNCLARGER;大于5s跳到LARGER,小于等于5s会提醒
MOVA,R0
CJNEA,#0AH,FULL;1s中0.5s向下运行
CLRRING
AJMPCHECK
FULL:
CJNEA,#14H,CHECK;下面系1s的情况,响并显示号数并清R0,重新计
SETBRING
MOVA,R6
JZQUIT;计时完毕
MOVR0,#00H
DECR6;一秒标志减1
AJMPCHECK
LARGER:
MOVA,R0
CJNEA,#14H,CHECK;如果1s向下运行,否者跳到查"停/显示"
DECR6;计时一秒R6自动减1
MOVR0,#00H
CHECK:
JNBP1.7,QUIT;如按下停止键退出
ACALLDISPLAY
JBOK,ACCOUT;如果是抢答倒计时,如是则查询抢答,否者跳过查询继续倒数(这里起到锁抢答作用)
AJMPRECOUNT
ACCOUT:
JNBP1.1,TRUE1
JNBP1.2,TRUE2
JNBP1.3,TRUE3
JNBP1.4,TRUE4
JNBP1.5,TRUE5
JNBP1.6,TRUE5
AJMPRECOUNT
QUIT:
CLROK;如果按下了"停止键"执行的程序
CLRRING
AJMPSTART
;=====正常抢答处理程序=====
TRUE1:
ACALLBARK;按键发声
MOVA,R2
MOVR6,A;抢答时间R2送R6
MOVR3,#01H
CLROK;因为答题的计时不再查询抢答,所以就锁了抢答
AJMPCOUNT
TRUE2:
ACALLBARK;
MOVA,R2
MOVR6,A
MOVR3,#02H
CLROK
AJMPCOUNT
TRUE3:
ACALLBARK;
MOVA,R2
MOVR6,A
MOVR3,#03H
CLROK
AJMPCOUNT
TRUE4:
ACALLBARK;
MOVA,R2
MOVR6,A
MOVR3,#04H
CLROK
AJMPCOUNT
TRUE5:
ACALLBARK;
MOVA,R2
MOVR6,A
MOVR3,#05H
CLROK
AJMPCOUNT
TRUE6:
ACALLBARK;
MOVA,R2
MOVR6,A
MOVR3,#06H
CLROK
AJMPCOUNT
;=====犯规抢答程序=====
ERROR:
MOVR0,#00H
MOVTH1,#3CH
MOVTL1,#0B0H
MOV34H,R3;犯规号数暂存与(34H)
HERE:
MOVA,R0
CJNEA,#0AH,FLASH;0.5s向下运行->灭并停响
CLRRING
MOVR3,#0AH
MOVR4,#0AH
MOVR5,#0AH;三灯全灭
AJMPCHECK1
FLASH:
CJNEA,#14H,CHECK1;下面系1s的情况,响并显示号数并清R0,重新计
SETBRING
MOVR0,#00H
MOVR3,34H;取回号数
MOVR5,#0BH
MOVR4,#0BH;显示FF和号数
AJMPCHECK1
CHECK1:
JNBP1.7,QUIT1
ACALLDISPLAY
AJMPHERE
QUIT1:
CLRRING
CLROK
AJMPSTART
;=====单片机抢答器显示程序=====
DISPLAY:
MOVDPTR,#DAT1;查表显示程序,利用P0口做段选码口输出/P2低三位做位选码输出,
MOVA,R5
MOVCA,@A+DPTR
MOVP2,#01H
MOVP0,A
ACALLDELAY
MOVDPTR,#DAT2
MOVA,R4
MOVCA,@A+DPTR
MOVP2,#02H
MOVP0,A
ACALLDELAY
MOVA,R3
MOVCA,@A+DPTR
MOVP2,#04H
MOVP0,A
ACALLDELAY
RET
DAT1:
DB00H,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh,00H,71H
;"灭","1","2","3","4","5","6","7","8","9","灭","F"
DAT2:
DB3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh,00H,71H
;第一个为零,其他与上相同,因为十位如果为零显示熄灭
;====加减时间延时(起到不会按下就加N个数)======
DELAY1:
MOV35H,#08H
LOOP0:
ACALLDISPLAY
DJNZ35H,LOOP0
RET
;=====延时(显示和去抖动用到)=====
DELAY:
MOV32H,#12H
LOOP:
MOV33H,#0AFH
LOOP1:
DJNZ33H,LOOP1
DJNZ32H,LOOP
RET
;=====发声程序=====
BARK:
SETBRING
ACALLDELAY1
ACALLDELAY1
CLRRING;按键发声
RET
;=====TO溢出中断(响铃程序)=====
T0INT:
MOVTH0,#0ECH
MOVTL0,#0FFH
JNBRING,OUT;
CPLP3.6;RING标志位为1时候P3.6口不短取反使喇叭发出一定频率的声音
OUT:
RETI
;=====T1溢出中断(计时程序)=====
T1INT:
MOVTH1,#3CH
MOVTL1,#0B0H
INCR0
RETI
END
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 单片机课程设计 抢答器设计 课程设计 抢答 设计