八路抢答器说明书概要.docx

上传人:b****8 文档编号:10230451 上传时间:2023-02-09 格式:DOCX 页数:24 大小:289.90KB
下载 相关 举报
八路抢答器说明书概要.docx_第1页
第1页 / 共24页
八路抢答器说明书概要.docx_第2页
第2页 / 共24页
八路抢答器说明书概要.docx_第3页
第3页 / 共24页
八路抢答器说明书概要.docx_第4页
第4页 / 共24页
八路抢答器说明书概要.docx_第5页
第5页 / 共24页
点击查看更多>>
下载资源
资源描述

八路抢答器说明书概要.docx

《八路抢答器说明书概要.docx》由会员分享,可在线阅读,更多相关《八路抢答器说明书概要.docx(24页珍藏版)》请在冰豆网上搜索。

八路抢答器说明书概要.docx

八路抢答器说明书概要

烟台大学

51单片机课程设计说明书

 

课题:

八路抢答器

 

学生姓名:

王志林

学号:

2

院系:

机电汽车工程学院

指导老师:

姜风国

同组成员:

张凤礼、张体栋、程事业、范光科

2013年06月05日

 

2系统总体方案...............................................................................................2

 

3硬件设计.........................................................................................................3

3.1控制系统所需硬件.....................................................................................3

3.2硬件原理介绍...........................................................................................4

 

4软件设计.........................................................................................................6

4.1软件总体设计...........................................................................................6

4.2程序流程图.............................................................................................7

 

5软件仿真........................................................................................................9

5.1Keil软件.....................................................................................................9

5.2在Proteus软件...........................................................................................9

 

6小结...................................................................................................................10

 

附1:

源程序代码............................................................................................11

附2:

参考文献...............................................................................................18

1.设计任务

本设计要求学生结合现有的实际条件,以51单片机为控制核心,设计一个8路智能抢答器。

要求实现以下功能:

1)有一主持人和8个参赛队员

2)当主持人按下抢答按键,参赛队员在10秒内可以抢答,并且抢答器开始倒计时。

剩余5秒时,如果仍无人抢答,则系统每1s报警一次。

如超出10秒则不能抢答;如抢答成功,则显示抢答队号。

3)抢答成功则需在60秒内回答完成,如超出时间则抢答无效,显示无效指示。

如果60秒完成回答,则抢答成功,显示有效。

剩余5秒时,如果仍无人回答,则系统每1s报警一次。

4)当主持人按下复位键时,系统回到初始状态。

5)倒计时期间,如果主持人想终止倒计时,可以按下“停止”按键,系统会自动进入准备状态。

主要硬件设备:

AT89C51单片机,8输入3态缓冲器/线驱动器74LS244,六反相驱动器7404,共阳极LED数码管等,12MHZ晶振,74LS04反相器,手动开关,按键若干,报警喇叭。

 

2.系统总体方案

2.1整体方案设计

该智能抢答器以AT89C51单片机为控制核心,控制精度较高,操作误差主要来自晶振自身所造成的误差。

其他外围电路包括复位电路,时钟电路,报警电路,LED显示电路,抢答按键等。

该智能抢答器具有计时记忆功能,一次时间设置完,复位后不需重新进行时间设定;通过按键扫描输出按键信息,并通过单片机将它转化为在七段数码管上显示的字符型。

单片机的P1口为8组抢答按键的输入口,P0.0~P0.6为数码管的段选口,P2.0~P2,2为数码管的片选口。

P3.6为报警电路的控制口。

智能抢答器的整体方案设计图如下所示。

智能抢答器的整体方案设计图

3.硬件设计

3.1硬件总体设计

1)控制系统主要由单片机应用电路、存储器接口电路、显示接口电路组成。

其中单片机AT89C51是系统工作的核心,它主要负责控制各个部分协调工作.

2)硬件组成及所需元件:

该系统的核心器件是AT89C51。

在其外围接上复位电路、上拉电阻、数码管、按钮及扬声器。

元件为:

晶振X1、电容C1、C2、C3、电阻RP1。

P3.0和P3.1由裁判控制,分别是开始键和抢答停止。

P1.0-P1.7是8组抢答的输入口,P2.0--P2.3口为数码管的段选口,位选口用的是P0.0--P0.6口输出

硬件接线图如图所示:

7SEG-MPX4-CCLED显示内部结构如上图所示:

3.2原理介绍

智力竞赛抢答器用单片机来设计制作完成,由于其功能的实现主要通过软件编程来完成,采用单片机AT89C51,它是低功耗、高性能的CMOS型8位单片机。

片内带有4KB的Flash存储器,且允许在系统内改写或用编程器编程。

该智力竞赛抢答器的准确度很高,其误差主要由晶振自身的误差所造成。

AT89C51单片机由微处理器,存储器,I/O口以及特殊功能寄存器SFR等部分构成。

其存储器在物理上设计成程序存储器和数据存储器两个独立的空间,片内程序存储器的容量为4KB,片内数据存储器为128个字节。

89C51单片机有4个8位的并行I/O口:

P0口,P1口,P2口和P3口。

各个接口均由接口锁存器,输出驱动器,和输入缓冲器组成。

P1口是唯一的单功能口,仅能用作通用的数据输入/输出口。

P3口是双功能口除了具有数据输入/输出功能外,每条接口还具有不同的第二功能,如P3.0是串行输入口线,P3.1口是串行输出口线。

在需要外部程序存储器和数据存储器扩展时,P0可作为分时复用的低8位地址/数据总线,P2口可作为高8位的地址总线。

P3口也可作为AT89C51的一些特殊功能口,同时为闪烁编程和编程校验接收一些控制信号。

AT89C51的管脚图:

外部振荡电路单片机必须在AT89C51的驱动下才能工作.在单片机内部有一个时钟振荡电路,只需要外接一个振荡源就能产生一定的时钟信号送到单片机内部的各个单元。

外部振荡电路见图一复位电路采用图二所示:

图一图二

外部还接有蜂鸣器用来发出报警音,其图形如下:

采用七段码7SEG-MPX4-CC显示,它是共阳极的由低电平点亮。

图形如下:

采用八个BUTTON按钮作为抢答的选择按键如图所示:

4.软件设计

4.1软件总体设计

智力竞赛抢答器要求有计时记忆功能,一次时间设置完,复位后不需重新进行时间设定,通过键盘扫描输出按键信息,再通过单片机将它转换成能在七段数码管上显示字型码.

当抢答完毕时,会在数码管上显示抢答者数字号码提示以表示抢答成功.同时显示其分数,分数的加减可由裁判手动进行.采用独立式键盘,可实现8路抢答.在显示时使用的是七段数码管显示在本设计中根据实际情况采用的是动态显示方法.并通过查表法将其在数码管上显示出来,其中P1口为字型码输入端,P2口低3位为字选段输入端.通过查表将字型码送给7段数码管显示的数字。

软件去抖动,如果"开始键"按下就向下执行,否者跳到开始。

采用倒计时程序,使其具有倒计时功能。

回答倒计时60秒。

抢答时间10秒。

采用发声警报,起到报警作用。

1、主持人按"抢答开始"键,会有提示音,并立刻进入抢答倒计时(预设10s抢答时间),如有选手抢答,会有提示音,并会显示其号数并立刻进入回答倒计时(预设60s抢答时间),不进行抢答查询,所以只有第一个按抢答的选手有效。

倒数时间到小于5s会每秒响一下提示音。

2、如倒计时期间,主持人想停止倒计时可以随时按"停止"按键,系统会自动进入准备状态,等待主持人按"抢答开始"进入下次抢答计时。

3、如果主持人未按"抢答开始"键,而有人按了抢答按键,犯规抢答,LED上不断闪烁FF和犯规号数并响个不停,直到按下"停止"键为止。

4、P3.0为开始抢答,P3.1为停止,p1.0-p1.7为八路抢答输入数码管段选P0口,位选P2口低3位,蜂鸣器输出为P3.6口。

4.2流程图

4.2.1主程序流程图

智能抢答器在正常工作的情况下,首先对控制系统进行初始化,然后进行键盘扫描,判断主持人是否按下了“开始抢答”按键按下则执行倒计时子程序和显示子程序。

其中倒计时程序包括抢答倒计时和回答倒计时。

主程序流程图如下图所示:

 

开始

初始化子程序

P3.0是否按下

倒计时子程序

显示子程序

正常抢答处理子程序

结束

非法抢答处理子程序

 

4.2.2初始化子程序流程图

任何控制系统开始正常工作前都必须要进行初始化。

初始化子程序流程图如上图所示

4.2.3非法抢答查询子程序流程图

开始

P1.0按下

P1.1按下

P1.2按下

P1.3按下

P1.4按下

P1.5按下

P1.6按下

P1.7按下

P1.8按下

将犯规号送到R3

犯规抢答程序

返回

在主持人未按下“抢答开始键”

时,为防止参赛选手发生抢答,Y

专门设计了非法抢答查询子

程序。

当有选手发生抢答时,

系统会将选手的号码保存,N

下来,并送到LED显示装置Y

进行显示,同时调用犯规抢

答子程序。

非法抢答查询子

程序流程图如图:

N

Y

N

Y

N

Y

Y

N

YY

N

YY

N

YY

N

Y

Y

 

5.软件仿真

5.1:

Keil软件

用该软件进行程序的检查调试,调试完成后在仿真器里设置生成***.HEX文件。

5.2:

Protus软件

系统仿真还用到了Protus软件,可通过仿真可以完全显示出所设计系统的功能,对于程序的调试等有很大的帮助.

系统仿真时首先要在使用Keil编译器,把所写的程序进行编译,同时在仿真器里设置生成HEX文件,编译无错误时进行Protus仿真。

首先要新建一个文档是DNS型的找出需要的器件,可以使用搜索功能。

接着把各个器件放到合适的位置都要放到蓝色框内。

然后根据自己的设计要求连线。

等所有的元件都连接完成后可以把,伟福编译生成的无错误文件加载到AT89C51中,方法是,右键点中器件然后在用左键点击,出来一个对话框在programfile后选择要添加文件,文件要求必须是HEX文件。

然后可以点击运行观察现象,看与自己设置的符合否,如果不相符在查找错误进行修改.

作好的Protus图:

八号抢答到时时的显示图:

倒计时到30秒时的显示图:

倒计时还有5秒时的报警显示图:

蜂鸣器会开始发出警报

6.小结

这次实习让我受益匪浅,无论从知识上还是其他的各个方面。

上课的时候的学习从来没有见过真正的单片机,只是从理论的角度去理解枯燥乏味。

但在实习中见过甚至使用了单片机及其系统,能够理论联系实际的学习,开阔了眼界,提高了单片机知识的理解和水平。

在这次课程设计中又让我体会到了合作与团结的力量,当遇到不会或是设计不出来的地方,我们就会在QQ群里讨论或者是同学之间相互帮助。

团结就是力量,无论在现在的学习中还是在以后的工作中,团结都是至关重要的,有了团结会有更多的理念、更多的思维、更多的情感。

  

单片机是很重要的一门课程,老师和一些工作的朋友都曾说过,如果学好一门单片机,就凭这个技术这门手艺找一个好工作也不成问题。

尽管我们在课堂学到的内容很有限,但在以后的学习中单片机还需要好好的深入研究和学习,学好了单片机也就多了一项生存的本钱。

最后感谢老师对我们的精心指导和帮助,感谢同学们对我的帮助

附1:

源程序代码

OKEQU20H;抢答开始标志位

RINGEQU22H;响铃标志位

ORG0000H;主程序入口地址

AJMPMAIN;跳转到主程序

ORG000BH;定时器0服务程序入口地址

AJMPT0INT;跳转到定时器0服务子程序

ORG001BH;定时器1服务程序入口地址

AJMPT1INT;跳转到定时器1服务子程序

ORG0040H;主程序起始地址

MAIN:

MOVR1,#0AH;初设抢答时间为10s

MOVR2,#3BH;初设答题时间为60s

MOVTMOD,#11H;设置T0,T1定时器/计数器均工作在1模式

MOVTH0,#0F0H;设置T0计数初值

MOVTL0,#0FFH;越高发声频率越高,越尖

MOVTH1,#3CH;设置T1计数初值

MOVTL1,#0B0H;50ms为一次溢出中断

SETBEA;开总中断

SETBET0;开T0中断

SETBET1;开T1中断

SETBEX0;开外部中断0

SETBEX1;开外部中断1

CLROK;清抢答开始标志位

CLRRING;清响铃标志位

SETBTR1;T1开始计数

SETBTR0;一开始就运行定时器,以开始显示FFF.如果想重新计数,重置TH1/TL1就可以了

;======查询程序======

START:

MOVR5,#0BH;R3,R4,R5赋值在DISPLAY中显示FFFF

MOVR4,#0BH

MOVR3,#0BH

ACALLDISPLAY;未开始抢答时候显示FFF

JBP3.0,NEXT;去抖动,如果"开始键"按下就向下执行,否者跳到非法抢答查询

ACALLDELAY

JBP3.0,NEXT;判断开始抢答键是否按下,否则执行进入非法程序查询

ACALLBARK;按键发声

MOVA,R1

MOVR6,A;送R1->R6,因为R1中保存了抢答时间

SETBOK;抢答标志位,用于COUNT只程序中判断是否查询抢答

MOVR7,#01H;读抢答键数据信号标志,这里表示只读一次有用信号

MOVR3,#0AH;抢答只显示计时,灭号数

AJMPCOUNT;进入倒计时程序,其中包括查询有效抢答的查询

;=======-非法抢答查询程序======

NEXT:

JNBP1.0,FALSE1;判断1号选手是否按键

JNBP1.1,FALSE2;判断2号选手是否按键

JNBP1.2,FALSE3;判断3号选手是否按键

JNBP1.3,FALSE4;判断4号选手是否按键

JNBP1.4,FALSE5;判断5号选手是否按键

JNBP1.5,FALSE6;判断6号选手是否按键

JNBP1.6,FALSE7;判断7号选手是否按键

JNBP1.7,FALSE8;判断8号选手是否按键

AJMPSTART;跳转到查询程序

FALSE1:

MOVR3,#01H;R3中保存"1"号数

AJMPERROR;跳转到ERROR犯规抢答子程序

FALSE2:

MOVR3,#02H;R3中保存"2"号数

AJMPERROR;RROR犯规抢答子程序

FALSE3:

MOVR3,#03H;R3中保存"3"号数

AJMPERROR;RROR犯规抢答子程序

FALSE4:

MOVR3,#04H;R3中保存"4"号数

AJMPERROR;RROR犯规抢答子程序

FALSE5:

MOVR3,#05H;R3中保存"5"号数

AJMPERROR;RROR犯规抢答子程序

FALSE6:

MOVR3,#06H;R3中保存"6"号数

AJMPERROR;RROR犯规抢答子程序

FALSE7:

MOVR3,#07H;R3中保存"7"号数

AJMPERROR;RROR犯规抢答子程序

FALSE8:

MOVR3,#08H;R3中保存"8"号数

AJMPERROR;RROR犯规抢答子程序

;======犯规抢答程序======

ERROR:

MOVR0,#00H

MOVTH1,#3CH;重置T1初值

MOVTL1,#0B0H

MOV34H,R3;犯规号数暂存与34H

;======指示灯闪烁处理程序======

HERE:

MOVA,R0

CJNEA,#06H,FLASH;0.3s向下运行->灭并停响

CLRRING

MOVR3,#0AH

MOVR4,#0AH

MOVR5,#0AH;三个灯全灭

AJMPCHECK1

FLASH:

CJNEA,#0CH,CHECK1;下面是0.8s的情况,响并显示号数并清R0,重新计数

SETBRING;响铃

MOVR0,#00H

MOVR3,#34H;取回号数

MOVR4,#0BH

MOVR5,#0BH;显示FF和号数

AJMPCHECK1

CHECK1:

JNBP3.1,QUIT1;判断复位键是否按下

MOVR3,34H;号数给R3

ACALLDISPLAY;显示号数

AJMPHERE

QUIT1:

CLRRING;停止响铃

CLROK;禁止抢答

AJMPSTART;跳转到查询程序

;======显示子程序========

DISPLAY:

MOVDPTR,#DAT1;查表显示程序,利用P0口做段选码口输出/P2低三位做位选码输出,

MOVA,R3

MOVCA,@A+DPTR;查第一个显示字形码

MOVP2,#0FBH;段选

MOVP0,A;字形码送到P0口

ACALLDELAY2;调用延时子程序

MOVDPTR,#DAT2

MOVA,R5

MOVCA,@A+DPTR;查第二个显示字形码

MOVP2,#0FEH;段选

MOVP0,A;字形码送到P0口

ACALLDELAY2;调用延时子程序

MOVA,R4

MOVCA,@A+DPTR;查第三个显示字形码

MOVP2,#0FDH;段选

MOVP0,A;字形码送到P0口

ACALLDELAY2;调用延时子程序

RET

DAT1:

DB0FFH,0F9H,0A4H,0B0H,099H,092H,082H,0F8H,080H,090H,0FFH,8EH

;"灭","1","2","3","4","5","6","7","8","9","灭","F"

DAT2:

DB0C0H,0F9H,0A4H,0B0H,099H,092H,082H,0F8H,080H,090H,0FFH,8EH

;第一个为零,其他与上相同,因为十位如果为零显示熄灭

;======倒计时程序======

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:

JNBP3.1,QUIT;如按下停止键退出

NEXTT:

ACALLDISPLAY

JBOK,ACCOUT;如果是抢答倒计时,如是则查询抢答,否者跳过查询继续倒数(这里起到锁抢答作用)

AJMPRECOUNT

ACCOUT:

MOVA,36H

JNBACC.0,TRUE1

JNBACC.1,TRUE2

JNBACC.2,TRUE3

JNBACC.3,TRUE4

JNBACC.4,TRUE5

JNBACC.5,TRUE6

JNBACC.6,TRUE7

JNBACC.7,TRUE8

AJMPRECOUNT

QUIT:

CLROK;如果按下了"停止键"执行的程序

CLRRING

AJMPSTART

;======正常抢答处理程序======

TRUE1:

ACALLBARK;调用发声程序

MOVA,R2

MOVR6,A;抢答时间R2送R6

MOVR3,#01H

CLROK;因为答题的计时不再查询抢答,所以就锁了抢答

AJMPCOUNT

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 求职职场 > 简历

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1