八路抢答器课程设计.docx
- 文档编号:5673153
- 上传时间:2022-12-31
- 格式:DOCX
- 页数:19
- 大小:330.36KB
八路抢答器课程设计.docx
《八路抢答器课程设计.docx》由会员分享,可在线阅读,更多相关《八路抢答器课程设计.docx(19页珍藏版)》请在冰豆网上搜索。
八路抢答器课程设计
摘要
这次设计的抢答器是用89系列常用集成电路的数码显示的。
该抢答器的功能是能同时允许多个人或多个队进行抢答,并把最先抢答的人的号码通过数码管显示出来,并且保证了显示出的序号不会受随后抢答的人所发出的信号干扰。
它具有最基本的抢答功能和数码管显示功能。
这次设计的方案中利用89C51单片机及外围接口实现的抢答系统,利用proteus软件进行仿真。
本次多路抢答器我们根据需要设计为六路抢答计时器,此次的课程设计巩固了前阶段所学的理论知识,增强了动手实践能力。
在这次设计过程中,采用了模块设计,使得电路能更简洁,在排除障碍过程中也能很好的找到问题的根源。
关键词:
多路抢答器;数码管;计时器
1设计任务与要求
1.1单片机抢答器的背景
二十世纪跨越了三个“电”的时代,即电气时代、电子时代和现已进入的电脑时代。
不过,这种电脑通常是指个人计算机,简称PC机。
它由主机、键盘、显示器等组成。
还有一类计算机,大多数人却不怎么熟悉。
这种计算机就是把智能赋予各种机械的单片机(亦称微控制器)。
顾名思义,这种计算机的最小系统只用了一片集成电路,即可进行简单运算和控制。
因为它体积小,通常都藏在被控机械的“肚子”里。
它在整个装置中,起着有如人类头脑的作用,它出了毛病,整个装置就瘫痪了。
现在这种单片机的使用领域已十分广泛,如智能仪表、实时工控、通讯设备、导航系统、家用电器等。
各种产品一旦用上了单片机,就能起到使产品升级换代的功效,常在产品名称前冠以形容词——“智能型”,如智能型洗衣机等。
现在有些工厂的技术人员或其它业余电子开发者搞出来的某些产品,不是电路太复杂,就是功能太简单且极易被仿制。
究其原因,可能就卡在产品未使用单片机或其它可编程逻辑器件上。
在知识竞赛中,特别是做抢答题时,在抢答过程中,为了更确切的知道哪一组或哪一位选手先抢答到题,必须要有一个系统来完成这个任务。
若在抢答中,只靠人的视觉(或者是听觉)是很难判断出哪一组(或哪一个选手)先抢答到题的。
利用单片机编程来设计抢答器,可以使以上问题得以解决,即使两组的抢答时间相差几微秒,也能轻松的分辨出哪一组(或哪个选手)先抢答到题的。
本文主要介绍了抢答器的工作原理及设计,以及它的实际用途。
1.2基本要求
(1)抢答器同时供6名选手或6个代表队比赛,分别用6个按钮①~⑥表示。
(2)设置一个系统清除和抢答控制开关S,该开关由主持人控制。
(3)抢答器具有锁存与显示功能。
即选手按动按钮,锁存相应的编号,并在LED数码管上显示,同时扬声器发出报警声响提示。
选手抢答实行优先锁存,优先抢答选手的编号一直保持到主持人将系统清除为止。
(4)抢答器具有定时抢答功能,且一次抢答的时间由主持人设定(如30秒)。
当主持人启动"开始"键后,定时器进行减计时,同时扬声器发出短暂的声响,声响持续的时间0.5秒左右。
(5)参赛选手在设定的时间内进行抢答,抢答有效,定时器停止工作,显示器上显示选手的编号和抢答的时间,并保持到主持人将系统清除为止。
(6)如果定时时间已到,无人抢答,本次抢答无效,系统报警并禁止抢答,定时显示器上显示00。
优点:
与普通抢答器相比,本作品有以下几方面优势
①具有清零装置和抢答控制,可由主持人操纵避免有人在主持人说“开始”前提前抢答违反规则。
②具有定时功能,在60秒内无人抢答表示所有参赛选手获参赛队对本题弃权。
③55秒时仍无人抢答时,报警电路工作表示抢答时间快耗尽并在5秒后禁止抢答。
2系统主要硬件电路设计
为使硬件电路设计尽可能合理,应注意以下几方面:
(1)尽可能采用功能强的芯片,以简化电路,功能强的芯片可以代替若干普通芯片,随着生产工艺的提高,新型芯片的的价格不断下降,并不一定比若干普通芯片价格的总和高。
(2)留有设计余地。
在设计硬件电路时,要考虑到将来修改扩展的方便。
因为很少有一锤定音的电路设计,如果现在不留余地,将来可能要为一点小小的修改或扩展而被迫进行全面返工。
(3)程序空间,选用片内程序空间足够大的单片机,本设计采用AT89C51单片机。
(4)I/O端口,在样机研制出来后进行现场试用时,往往会发现一些被忽视的问题,而这些问题不是靠单纯的软件措施来解决的。
如有些新的信号需要采集,就必须增加输入检测端;有些物理量需要控制,就必须增加输出端。
如果在硬件电路设计就预留出一些I/O端口,虽然当时空着没用,那么用的时候就派上用场了。
2.1单片机控制系统原理图
如图2.1,P1.0为开始抢答,P1.7为停止,P1.1-P1.6为六路抢答输入,数码管段选P0口,位选P2口低3位,蜂鸣器输出为P3.6口。
图2.1
2.2单片机主机系统电路
该六路抢答器的设计细分为时钟频率电路的设计,复位电路的设计,显示电路的设计和键盘扫描电路的设计等。
2.2.1时钟频率电路的设计
单片机必须在时钟的驱动下才能工作.在单片机内部有一个时钟振荡电路,只需要外接一个振荡源就能产生一定的时钟信号送到单片机内部的各个单元,决定单片机的工作速度。
图2.1.1
一般选用石英晶体振荡器。
此电路在加电大约延迟10ms后振荡器起振,在XTAL2引脚产生幅度为3V左右的正弦波时钟信号,其振荡频率主要由石英晶振的频率确定。
电路中两个电容C2,C3的作用有两个:
一是帮助振荡器起振;二是对振荡器的频率进行微调。
C2,C3的典型值为22PF。
单片机在工作时,由内部振荡器产生或由外直接输入的送至内部控制逻辑单元的时钟信号的周期称为时钟周期。
其大小是时钟信号频率的倒数,常用fosc表示。
如时钟频率为12MHz,即fosc=12MHz,则时钟周期为1/12µs。
2.2.2复位电路的设计
单片机的第9脚RST为硬件复位端,只要将该端持续4个机器周期的高电平即可实现复位,复位后单片机的各状态都恢复到初始化状态,其电路图如图2.1.2所示:
图2.1.2
值得注意的是,在设计当中使用到了硬件复位和软件复位两种功能,由上面的硬件复位后的各状态可知寄存器及存储器的值都恢复到了初始值,而前面的功能介绍中提到了倒计时时间的记忆功能,该功能的实现的前提条件就是不能对单片机进行硬件复位,所以设定了软复位功能。
软复位实际上就是当程序执行完毕之后,将程序指针通过一条跳转指令让它跳转到程序执行的起始地址。
2.2.3显示电路的设计
显示功能与硬件关系极大,当硬件固定后,如何在不引起操作者误解的前提下提供尽可能丰富的信息,全靠软件来解决。
这里我们采用四个数码显示管来显示。
图2.1.3
2.2.4键盘扫描电路的设计
键盘是人与微机系统打交道的主要设备。
关于键盘硬件电路的设计方法也可以在文献和书籍中找到,配合各种不同的硬件电路,这些书籍中一般也提供了相应的键盘扫描程序。
站在系统监控软件设计的立场上来看,仅仅完成键盘扫描,读取当前时刻的键盘状态是不够的,还有不少问题需要妥善解决,否则,人们在操作键盘就容易引起误操作和操作失控现象。
在单片机应用中键盘用得最多的形式是独立键盘及矩阵键盘。
图2.1.4
它们各有自己的特点,其中独立键盘硬件电路简单,而且在程序设计上也不复杂,一般用在对硬件电路要求不高的简单电路中;矩阵键盘与独立键盘有很大区别,首先在硬件电路上它要比独立键盘复杂得多,而且在程序算法上比它要烦琐,但它在节省端口资源上有优势得多,因此它更适合于多按键电路。
其次就是消除在按键过程中产生的“毛刺”
现象。
这里采用最常用的方法,即延时重复扫描法,延时法的原理为:
因为“毛刺”脉冲一般持续时间短,约为几ms,而我们按键的时间一般远远大于这个时间,所以当单片机检测到有按键动静后再延时一段时间(这里我们取10ms)后再判断此电平是否保持原状态,如果是则为有效按键,否则无效。
2.3发声
我们知道,声音的频谱范围约在几十到几千赫兹,若能利用程序来控制单片机某个口线的“高”电平或低电平,则在该口线上就能产生一定频率的矩形波,接上喇叭就能发出一定频率的声音,若再利用延时程序控制“高”“低”电平的持续时间,就能改变输出频率,从而改变音调,使喇叭发出不同的声音。
2.4系统复位
使CPU进入初始状态,从0000H地址开始执行程序的过程叫系统复位。
从实现系统复位的方法来看,系统复位可分为硬件复位和软件复位。
硬件复位必须通过CPU外部的硬件电路给CPU的RESET端加上足够时间的高电位才能实现。
上电复位,人工按钮复位和硬件看门狗复位均为硬件复位。
硬件复位后,各专用寄存器的状态均被初始化,且对片内通用寄存器的内容没有影响。
但是,硬件复位还能自动清除中断激活标志,使中断系统能够正常工作,这样一个事实却容易为不少编码人员所忽视。
软件复位就是用一系列指令来模拟硬件复位功能,最后通过转移指令使程序从0000H地址开始执行。
对各专用寄存器的复位操作是容易的,也没有必要完全模拟,可根据实际需要去主程序初始化过程中完成。
而对中断激活标志的清除工作常被遗忘,因为它没有明确的位地址可供编程。
有的编程人员用020000(LJMP0000H)作为软件陷阱,认为直接转向0000H地址就完成了软件复位,就是这类错误的典型代表。
软件复位是使用软件陷阱和软件看门狗后必须进行的工作,这时程序出错完全有可能发生在中断子程序中,中断激活标志已置位,它将阻止同级中断响应。
由于软件看门是高级中断,它将阻止说要中断响应,由此可见清除中断激活标志的重要性。
在所有的指令中,只有RETI指令能够清除中断激活标志。
前文各处提案到的出错处理程序ERR主要完成这一功能,其他的善后工作交由复位后的系统去完成。
这部分程序如下:
POWERDATA67H;上电标志存放单元
ERR:
CLREA;关中断
MOVDPTR,#ERR1;准备返回地址
PUSHDPL
PUSHDPH
RETI;清除高级中断激活标志
ERR1:
MOVPOWER,#0AAH;重建上电标志
CLRA;准备复位地址
PUSHACC;压入复位地址0000H
PUSHACC
RETI;清除低级中断激活标志,从程序0000H开始执行
这段程序先关中断,以便后续处理能顺利进行,然后用两个RETI指令代替两个LJMP指令,从而清除了两级中断激活标志。
有相应软件陷阱捕捉来的程序可能没有全部激活两个标志,这也无妨。
3系统软件设计
软件任务分析和硬件电路设计结合进行,哪些功能由硬件完成,哪些任务由软件完成,在硬件电路设计基本定型后,也就基本上决定下来了。
3.1程序流程图
在本设计中包括了以下六个主要的程序:
主程序、非法抢答序、倒计时程序、正常抢答处理程序、犯规处理程序、显示及发声程序。
主流程图如3.1所示:
N
Y
Y
N
图3.1
3.2系统程序
P1.0为开始抢答,P1.7为停止,p1.1-p1.6为六路抢答输入数码管段选P0口,位选P2口,蜂鸣器输出为P3.6口。
程序代码如下:
OKEQU20H;抢答开始标志位
RINGEQU22H;响铃标志位
ORG0000H
AJMPMAIN
ORG000BH
AJMPT0INT
ORG001BH
AJMPT1INT
ORG0040H
MAIN:
MOVR1,#3CH;初设抢答时间为60s
MOVTMOD,#11H;设置为定时器/模式1
MOVTH0,#0ECH
MOVTL0,#0FFH;定时\计数器T0用于扫描是否发声
MOVTH1,#3CH
MOVTL1,#0B0H;50ms为一次溢出中断
SETBEA
SETBET0
SETBET1;允许两个中断T0/T1
CLROK
CLRRING
SETBTR1
SETBTR0;开启T0和T1
START:
MOVR5,#0BH
MOVR4,#0BH
MOVR3,#0BH
ACALLDISPLAY;未开始抢答时候显示000
JBP1.0,NEXT
ACALLDELAY
JBP1.0,NEXT;去抖动,如果"开始键"按下就向下执行
;否者跳到非法抢答查询
ACALLBARK;按键发声
MOVA,R1
MOVR6,A;送R1->R6,因为R1中保存了抢答时间
SETBOK;抢答标志位,用于COUNT子程序中判断
;是否查询抢答
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
COUNT:
MOVR0,#00H;重置定时器中断次数
MOVTH1,#3CH
MOVTL1,#0B0H;重置定时器初值
RECOUNT:
MOVA,R6;R6保存了倒计时之前的时间
;将抢答时间给R6
MOVB,#0AH
DIVAB;除十分出个位/十位
MOVR5,A;十位存于(R5)
MOVR4,B;个位存于(R4)
MOVR3,#0BH
MOVA,R6
SUBBA,#07H
JNCLARGER;大于5s跳到LARGER
;小于等于5s时提醒
MOVA,R0
CJNEA,#0AH,FULL;1s中0.5s向下运行
CLRRING
AJMPCHECK
FULL:
CJNEA,#14H,CHECK;判断定时1s完成情况
SETBRING
MOVA,R6
JZQUIT;计时完毕
MOVR0,#00H
DECR6;一秒标志减1
AJMPCHECK
LARGER:
MOVA,R0
CJNEA,#14H,CHECK
DECR6;计时一秒R6自动减1
MOVR0,#00H
CHECK:
JNBP1.7,QUIT;如按下停止键退出
ACALLDISPLAY
JBOK,ACCOUNT;如果是抢答倒计时,如是则查询
;否者跳过查询继续倒计时
AJMPRECOUNT
ACCOUNT:
JNBP1.1,TRUE1
JNBP1.2,TRUE2
JNBP1.3,TRUE3
JNBP1.4,TRUE4
JNBP1.5,TRUE5
JNBP1.6,TRUE6
AJMPRECOUNT
QUIT:
CLROK;如果按下了"停止键"执行的程序
CLRRING
AJMPSTART
TRUE1:
ACALLBARK
TRUE7:
CLRRING
MOVA,R6
MOVB,#0AH
DIVAB
MOVR5,A
MOVR4,B
MOVR3,#01H
LCALLDISPLAY
JNBP1.7,QUIT1
AJMPTRUE7
TRUE2:
ACALLBARK
TRUE8:
CLRRING
MOVA,R6
MOVB,#0AH
DIVAB
MOVR5,A
MOVR4,B
MOVR3,#02H
LCALLDISPLAY
JNBP1.7,QUIT1
AJMPTRUE8
TRUE3:
ACALLBARK
TRUE9:
CLRRING
MOVA,R6
MOVB,#0AH
DIVAB
MOVR5,A
MOVR4,B
MOVR3,#03H
LCALLDISPLAY
JNBP1.7,QUIT1
AJMPTRUE9
TRUE4:
ACALLBARK
TRUE10:
CLRRING
MOVA,R6
MOVB,#0AH
DIVAB
MOVR5,A
MOVR4,B
MOVR3,#04H
LCALLDISPLAY
JNBP1.7,QUIT1
AJMPTRUE10
TRUE5:
ACALLBARK
TRUE11:
CLRRING
MOVA,R6
MOVB,#0AH
DIVAB
MOVR5,A
MOVR4,B
MOVR3,#05H
LCALLDISPLAY
JNBP1.7,QUIT1
AJMPTRUE11
TRUE6:
ACALLBARK
TRUE12:
CLRRING
MOVA,R6
MOVB,#0AH
DIVAB
MOVR5,A
MOVR4,B
MOVR3,#06H
LCALLDISPLAY
JNBP1.7,QUIT1
AJMPTRUE12
QUIT1:
CLROK;如果按下了"停止键"执行的程序
CLRRING
AJMPSTART
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;判断定时1秒完成情况
SETBRING
MOVR0,#00H
MOVR3,34H;取回号数
MOVR5,#0BH
MOVR4,#0BH;显示00和号数
AJMPCHECK1
CHECK1:
JNBP1.7,QUIT2
ACALLDISPLAY
AJMPHERE
QUIT2:
CLRRING
CLROK
AJMPSTART
DISPLAY:
MOVDPTR,#DAT1;查表显示程序,利用P0口做段选码口
;输出/P2低三位做位选码输出
MOVA,R5
MOVCA,@A+DPTR
MOVP2,#0FEH
MOVP0,A
ACALLDELAY
MOVDPTR,#DAT2
MOVA,R4
MOVCA,@A+DPTR
MOVP2,#0FDH
MOVP0,A
ACALLDELAY
MOVA,R3
MOVCA,@A+DPTR
MOVP2,#0FBH
MOVP0,A
ACALLDELAY
RET
DAT1:
DB00H,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,00H,3FH
;"灭","1","2","3","4","5","6","7","8","9","灭","0"
DAT2:
DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,00H,3FH
;第一个为零,其他与上相同,因为十位如果为零显示熄灭
DELAY:
MOV32H,#12H
LOOP:
MOV33H,#0AFH
LOOP1:
DJNZ33H,LOOP1
DJNZ32H,LOOP
RET
DELAY1:
MOV35H,#08H
LOOP0:
LCALLDISPLAY
DJNZ35H,LOOP0
RET
BARK:
SETBRING
ACALLDELAY1
CLRRING;按键发声
RET
T0INT:
MOVTH0,#0ECH
MOVTL0,#0FFH
JNBRING,OUT
CPLP3.6;RING标志位为1时候P3.6口不断
;取反使喇叭发出一定频率的声音
OUT:
RETI
T1INT:
MOVTH1,#3CH
MOVTL1,#0B0H
INCR0
RETI
END
4系统仿真
运用proteus软件进行仿真现在proteus软件中建立一个新的文件,再根据自己的要求选择所需的器件,把器件进行适当的排位后进行连接,连接后运行软件进行仿真。
4.1正常抢答
2号选手在主持人按下开始键后三秒抢答成功,仿真如图
图4.1
4.2违规抢答
1号选手违反规则,主持人未按开始就先抢答,仿真图如4.2
图4.2
5结束语
结束语
我在这一次抢答器的设计过程中,很是受益匪浅。
通过对自己在这段时间里所学的知识的回顾,并充分发挥对所学知识的理解和对毕业设计的思考及书面表达能力,最终完成了。
这为自己今后进一步深化学习,积累了一定宝贵的经验。
撰写论文的过程也是专业知识的学习过程,它使我运用已有的专业基础知识,对其进行设计,分析和解决一个理论问题或实际问题,把知识转化为能力的实际训练。
培养了我运用所学知识解决实际问题的能力。
通过这次课程设计我发现,只有理论水平提高了;才能够将课本知识与实践相整合,理论知识服务于教学实践,以增强自己的动手能力。
这个实验十分有意义我获得很深刻的经验。
通过这次课程设计,我们知道了理论和实际的距离,也知道了理论和实际想结合的重要性,,也从中得知了很多书本上无法得知的知识。
我们的学习不但要立足于书本,以解决理论和实际教学中的实际问题为目的,还要以实践相结合,理论问题即实践课题,解决问题即课程研究,学生自己就是一个专家,通过自己的手来解决问题比用脑子解决问题更加深刻。
学习就应该采取理论与实践结合的方式,理论的问题,也就是实践性的课题。
这种做法既有助于完成理论知识的巩固,又有助于带动实践,解决实际问题,加强我们的动手能力和解决问题的能力。
参考文献:
[1]李光飞.单片机课程设计实例指导[M].北京:
北京航天航空大学出版社,2004
[2]李朝青.单片机原理及接口技术(第3版)[M].北京:
北京航空航天大学出版社,2002
[3]胡伟.单片机C程序设计及应用实例[M].北京:
人民邮电出版社,2003
[4]冯育长.单片机系统设计与实例指导[M].西安:
西安电子科技大学出版社,2007
[5]郭培源.电子电路及电子器件[M].北京:
高等教育出版社,2003
[6]杨志忠.数字电子技术[M].北京:
高等教育出版社,2002
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 八路 抢答 课程设计