基于单片机的16路数字抢答器Word文件下载.docx
《基于单片机的16路数字抢答器Word文件下载.docx》由会员分享,可在线阅读,更多相关《基于单片机的16路数字抢答器Word文件下载.docx(23页珍藏版)》请在冰豆网上搜索。
本次设计电路包括显示和驱动,显示采用数码管,驱动用三极管PNP。
数码管要显示抢答违规者编号、抢答10秒倒计时、正常抢答者编号和回答问题时间20秒倒计时,数码管采用动态显示。
驱动电路PNP发射极接+5V电压,当基极为低电平是集电极为高电平则能驱动数码管使其显示数字。
因为PNP是模拟器件而数码管为数字器件,PNP的集电极如果不接一个较大的电阻显示就会出问题。
所以在PNP的集电极接了一个10千欧的电阻。
图2.3显示器与显示驱动电路
2.5蜂鸣器音频输出电路
蜂鸣器是一种电子电路中常用的发声器件,蜂鸣器分为有源蜂鸣器和无源蜂鸣器两种。
提供蜂鸣器发声所需要较高的电流,单片机的I/O口驱动能力有限,而我们知道三极管有电流放大的作用,在这里就是利用三极管放大电流来使蜂鸣器获得足够的驱动电流。
蜂鸣器音频输出电路的功能是用来报警,当遇到报警信号时,发出蜂鸣声,以此来提醒操作者。
本电路通过控制不同频率的矩形脉冲来控制蜂鸣器发声。
此次课程设计中只需要一些简单的提示声音,如有抢答违规,开始抢答,抢答时间结束和回答问题时间到的提示声音。
本课程设计从P3.0口输出一个矩形脉冲来控制驱动器PNP集电极的高低电平时间来控制蜂鸣器的声音。
图2.4蜂鸣器音频输出电路图
3系统软件设计
3.1程序设计
程序设计(Programming)是指设计、编制、调试程序的方法和过程。
它是目标明确的智力活动。
在进行微机控制系统设计时,除了系统硬件设计外,大量的工作就是如何根据每个生产对象的实际需要设计应用程序。
在单片机控制系统中,大体上可分为数据处理、过程控制两个基本类型。
数据处理包括:
数据的采集、数字滤波、标度变换等。
过程控制程序主要是使单片机按一定的方法进行计算,然后再输出。
为了完成上述任务,在进行软件设计时,通常把整个过程分成若干个部分,每一部分叫做一个模块。
把一个程序分成具有多个明确任务的程序模块,分别编制、调试后再把它们连接在一起形成一个完整的程序,这样的程序设计方法称为模块化程序设计。
所谓“模块”,实质上就是能完成一定功能,并相对独立的程序段,这种程序设计方法称为模块程序设计法。
模块程序设计法的主要优点是:
(1)单个模块比起一个完整的程序易编写、调试及修改。
(2)程序的易读性好。
(3)程序的修改可局部化。
(4)模块可以共存,一个模块可以被多个任务在不同条件下调用。
(5)模块程序允许设计者分割任务和利用已有程序,为设计者提供方便。
本系统软件采用模块化结构,由主程序﹑键盘子程序、显示驱动子程序构成。
3.2主程序设计
为了能够达到抢答的公平、公正、合理,应该在主持人发布抢答命令之前必须先设定抢答的时间,因而在编开始抢答前的程序得先编写设定时间的程序,当时间设好了之后,主持人按开始键发布抢答命令,若在主持人未按开始键之前,有选手提前答题,则为违规抢答,蜂鸣器会发出警告声,并在显示器上显示犯规的选手编号。
当有选手抢答成功,则程序打开定时中断开始倒计时,然后调用键盘扫描子程序,编写键盘扫描程序,其他选手在此之后按键无效。
当在扫描到有人按下了抢答键,马上关闭T0、调用显示程序、封锁键盘。
3.3系统流程图
3.3.1硬件复位流程图
图3.1硬件复位流程图
3.3.2系统程序流程图
图3.2系统程序流程图
3.3.3显示抢答违规流程图
图3.3显示抢答违规流程图
3.3.4抢答成功流程图
图3.4抢答成功流程图
4系统仿真
4.1Proteus软件介绍
在该设计中,利用Proteus软件进行仿真。
Proteus运行于Windows操作系统上,可以仿真、分析(SPICE)数字电路、模拟电路、数模混合电路,是目前唯一能实现对51、PIC、AVR、HC11、ARM等处理器的仿真软件。
4.2仿真电路设计
将单片机最小系统、显示模块、抢答开关模块和音频输出模块进行PROTEUS设计。
打开PROTEUS的ISIS编辑环境,从PROTEUS中选取该电路所需要的元器件,放置元器件、放置电源和地,再点菜单栏工具下拉的电气规则检查,当规则检查出现:
“NETLISTGENERATEDOKNOERCERRORDFOUND”,表示通过检查,电路设计完成。
4.3仿真测试
4.3.1开始抢答仿真
主持人按开始按钮后,进入抢答10秒倒计时,仿真结果如图4.1。
图4.110秒抢答倒计时开始
4.3.2抢答犯规仿真
若在主持人还未按开始按钮时,就抢答则为抢答犯规。
4号选手在主持人未宣布开始时就抢答,从而造成犯规,犯规仿真如图4.2。
图4.24号选手犯规抢答
4.3.3抢答成功仿真
主持人按开始按钮后,10秒内抢答则为成功抢答。
仿真图为15号选手成功抢答,抢答后进入20秒倒计时答题时间,抢答成功仿真如图4.3。
图4.315号选手成功抢答
4.4仿真结果分析
通过对电路的仿真,可以看出基于AT89C51单片机控制的抢答器在PROTEUS软件上可以很好的实现抢答报警、抢答成功显示、抢答倒计时等一系列功能。
当仿真开始运行时,各个模块处于初始状态。
此时显示器并无状态显示,但此时抢答键和蜂鸣器都处于开启状态,若此时有选手按下抢答键,则蜂鸣器会发出报警声,并且在数码管上显示犯规的选手的编号。
主持人重新按下开始键,此时表示抢答正式开始,并且数码管显示10秒倒计时,同时蜂鸣器发出声音提醒选手抢答开始了。
选手抢答成功,同时也进入到倒计时20秒答题时间。
从仿真的测试结果来看,此设计还是能比较好的实现预期的目标。
5结束语
通过本次课程设计使我对Proteus仿真软件的使用和汇编语言有了更进一步的了解和掌握。
在最初编写过程中,我也曾经因为实践经验的缺乏失落过,也曾经因仿真成功而热情高涨。
特别是Proteus仿真软件的使用,不知是由于电脑的问题还是怎么,这个软件的安装就花了我很长的时间,好不容易安装好了,又对软件的使用一点都不熟悉,要从头开始学起,对着老师发给我们的芯片原理进行仿真画图,刚刚开始时候真的很难下手,因为是英文版的软件,很多东西都看不太明白,都是通过自己一个个来慢慢琢磨,才把仿真图画了出来,然后把写好的程序导入芯片,进行仿真,当看到程序正常运行的那一刻,心中真是有几分的喜悦。
虽然这只是一次的较简单的课程设计,可是平心而论,也耗费了我不少的心血。
我想说:
为完成这次课程设计我们确实很辛苦,但苦中仍有乐,和同学们相互帮助,当蜂鸣器响了起来是对我这段日子以来最好的告慰。
而且对于论文的总体构思也有了很多经验,相信自己经过这一次的训练与学习,对于今后的毕业论文会有更多帮助。
这次课程设计让我充分理解了89C51芯片的工作原理,知道了抢答器的硬件和软件的实现过程,并且通过自己动手编写程序来控制抢答器的工作,我感到非常有成就感,也锻炼了我的编程能力。
在刚开始编程的时候,我感到很茫然,不知道怎么样下手,但是通过自己的仔细的分析和老师的细心的指导,在认真分析了原来已有的代码后,和应有的硬件后,经过多次调试和测试终于成功了。
参考文献
[1]李泉溪.《单片机原理与应用实例仿真》.北京航天航空大学出版社2009年
[2]江世明.《基于Proteus的单片机应用技术》.电子工业出版社2008年
[3]喻宗泉.《单片机原理与应用技术》.西安电子科技大学出版社2005年
[4]万光毅.《单片机实验与实践教程》.北京航天航空大学出版社2003年
附录A系统电路图
系统电路图如下:
附录B原器件清单
AT89C51芯片一块
11.0592晶振一个
12864液晶显示屏一块
蜂鸣器一个
PNP三极管5个
排阻1个
500Ω电阻5个
10KΩ电阻5个
1KΩ电阻2个
1uF电容2个
1uF电解电容一个
按键18个
附录C程序清单
ORG0000H
LJMPMAIN
ORG0013H
LJMPESS1
ORG0100H
MAIN:
SETBEA
SETBEX1SETBIT1;
外部中断1初始化
L16:
MOVP1,#0FFH
MOVR2,#00H
CLRP1.0
INCR2
JBP1.4,L0
LCALLDE0
L0:
INCR2
JBP1.5,L1
L1:
JBP1.6,L2
L2:
JBP1.7,L3
L3:
SETBP1.0
CLRP1.1
JBP1.4,L4
L4:
JBP1.5,L5
L5:
JBP1.6,L6
L6:
JBP1.7,L7
L7:
SETBP1.1
CLRP1.2
JBP1.4,L8
L8:
JBP1.5,L9
L9:
JBP1.6,L10
L10:
JBP1.7,L11
L11:
SETBP1.2
CLRP1.3
JBP1.4,L12
L12:
JBP1.5,L13
L13:
JBP1.6,L14
L14:
JBP1.7,L15
L15:
LJMPL16;
读行列式键盘
ESS1:
MOV70H,#30D;
外部中断1
MOVR7,#0CH
CLRP3.0
S2:
LCALLDELAY
DJNZ70H,S2
SETBP3.0;
蜂鸣器提示开始抢答
MOVTMOD,#00010000B
MOVR3,#0AH
L20:
MOV55H,#14H
L19:
MOVTH0,#3CH
MOVTL0,#0B0H;
定时器1初始化
SETBTR1;
启动定时器1
MOVA,R3
MOVB,#0AH
DIVAB
MOVDPTR,#TAB
MOVCA,@A+DPTR
MOV53H,A
LCALLDELAY1
SETBP2.4
MOVA,B
MOV54H,A
CLRP2.5
MOVP0,54H
SETBP2.5
L18:
JNBTF1,L18
D6:
CJNER3,#0FFH,L21
LJMPL22
L21:
LJMPL20;
抢答倒计时
L22:
MOV73H,#02D
S5:
MOV70H,#20D
MOV71H,#20H
CLRP3.0
S4:
DJNZ70H,S4
SETBP3.0
S6:
DJNZ71H,S6
DJNZ73H,S5;
抢答倒计时时间到声音提示
D5:
RETI
DE0:
MOVDPTR,#TAB;
抢答违规报警并显示抢答违规组号
MOVA,R2
MOVB,#0A
S10:
MOV72H,#20D
MOV73H,#10D
S8:
LCALLLCC
DJNZ72H,S8
S9:
DJNZ73H,S9
DJNZ71H,S10
L17:
LJMPL17
LCC:
CLRP2.4
MOVP0,50H
LCALLDELAY
DELAY1:
MOVP1,#0FFH;
正常抢答读键
W0:
JBP1.5,W1
LCALLDE1
W1:
JBP1.6,W2
W2:
JBP1.7,W3
W3:
JBP1.4,W4
W4:
JBP1.5,W5
W5:
JBP1.6,W6
W6:
JBP1.7,W7
W7:
JBP1.4,W8
W8:
JBP1.5,W9
W9:
JBP1.6,W10
W10:
JBP1.7,W11
W11:
JBP1.4,W12
W12:
JBP1.5,W13
W13:
JBP1.6,W14
W14:
JBP1.7,W15
W15:
DJNZR4,W16
LJMPW18
W16:
LJMPW17
W18:
RET
DE1:
抢答成功声音提示及回答问题时间20秒倒计时
MOV70H,#20D
S3:
DJNZ70H,S3
SETBP2.0
SETBP2.1
MOV57H,A
MOVTMOD,#00000001B
MOVR5,#16H
L32:
MOVR6,#14H
L31:
MOVTL0,#0B0H
SETBTR0
CLRP2.4
MOVP0,56H
MOVP0,57H
SETBP2.5
CJNER5,#14H,L34
LJMPL35
L34:
JCL35
LJMPL30
L35:
MOVA,R5
MOV58H,A
MOV59H,A
CLRP2.6
MOVP0,58H
SETBP2.6
CLRP2.7
MOVP0,59H
SETBP2.7
L30:
JNBTF0,L30
CLRTF0
DJNZR6,L31
DECR5
CJNER5,#0FFH,L32
MOVP1,#0FFH
MOV70H,#50D
S7:
DJNZ70H,S7
MOVP2,#0FFH
MOVR3,#00H
MOVR7,#00H
RET
DELAY:
MOV51H,#10D;
延时子程序
D0:
MOV52H,#248D
D1:
DJNZ52H,D1
DJNZ51H,D0
TAB:
DB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
END