基于单片机的多路抢答器课程设计报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于单片机的多路抢答器
摘要
抢答器是一种应用非常广泛的设备,在各种竞赛、抢答场合中,它能迅速、客观地分辨出最先获得发言权的选手。目前大多数抢答器均使用单片机和数字集成电路。本设计利用89C51单片机及外围接口实现多路抢答系统,利用单片机的定时器/计数器定时和记数的原理,将软、硬件有机地结合起来,使得系统能够正确地进行计时,同时使数码管能够正确地显示时间。
关键词:抢答器;单片机89c51 ;数字集成电路;定时器/计数器
Abstract
Responder is a kind of widely used equipment, in all kinds of competition, it can quickly and objectively identify the players get voice. Now most of the responder all use SCM and digital integrated circuit, This topic USES 89 c51 and peripheral interface implementation vies to answer first system, with the help of the microcontroller timer/counter timing and number principle, software and hardware organically, and makes the system can correctly to the time, at the same time make digital tube display the time correctly.
Key Words: Responder, 89c51, Digital integrated circuit, Timer/counter
1.引言
目前电视节目日益丰富,其中的竞赛环节也越来越多,其中抢答器是不可或缺的器材。它能准确、公正、直观地判断出第一抢答者。本次设计用AT89C51单片机作为核心控制元件,设计一个简易的抢答器,并通过Proteus软件设计并利用KeilC软件编辑程序,仿真验证。使系统能够完成多路抢答,且系统实用性强,判断精准,操作简单。
2.设计方案及原理
本次设计的抢答过程主要分为准备抢答,开始抢答,开始答题以及答题结束四个阶段。本方案以AT89C51单片机作为主控核心,与晶振、数码管等构成二路抢答器,利用了单片机的电源电路、按键复位电路、时钟电路、定时电路等。具体系统设计方框图如图1所示。
图1 系统原理方框图
3.硬件设计
在抢答中,只有规定开始后抢答才有效,如果在开始抢答前抢答为无效;显示灯可以显示是哪位选手有效抢答,抢答时间和回答问题时间倒计时显示在数码管上,时间用尽后系统自动复位。若选手回答完毕,主持人按下准备按钮,数码管清零,可以进入下一提的抢答。具体系统电路图如图2所示。图中P1.0为主持人按键,提示选手开始抢答,此时二极管D1亮。P3.0-P3.1为二路抢答的输入,为选手抢答按键。P1.1为主持人提示开始抢答倒计时按键,此时数码管P0.0-P0.7显示6秒倒计时。P3.6-P3.7为选手对应的提示灯,按下即亮,重复按下无效。
图2 系统原理电路图
4.软件设计
两路抢答器由两个按键控制,程序一致判断是否有按键按下,若没有按键按下则循环判断,直到有按键按下后,立即把通过按键输入的信号储存起来然后对2路输入信号进行扫描判断,发光二极管亮起,表示抢答成功。软件设计利用中断系统的基本构成原理编写中断服程序,其信号由按键电路提供,由CPU响应中断,并输出响应。用到了定时器模块、显示时间模块、计数器模块等。程序流程图如图3所示。
图3 系统流程图
5.系统仿真及实际调试
开始抢答倒计时仿真图如图4所示。开始答题倒计时仿真图如图5所示。
图4 开始抢答倒计时仿真图
图5 开始答题倒计时仿真图
6.总结
本次课程设计的题目是基于单片机的多路抢答器设计,在设计的过程中出现了以下几种问题。例如利用Proteus软件仿真的时候多次出现数码管不亮的情况,并且复位键按下电路无反应的现象,通过对程序的调试并重新装入才解决了数码管不亮的问题。而复位键不灵敏的问题则是因为时间过短导致复位显示不明显。此外,开始的时候并没有体现出多路抢答,后来在老师的指导下添加了两路电路才使得本次课程设计圆满完成。通过查阅相关资料,许多问题最终得到解决。而这些才是作为一名工科学生最宝贵的财富。
参考文献
[1]王思明.张金敏.苟军年.张鑫.杨乔礼.单片机原理及应用系统设计[M].北京:科学出版
社,2012.9:90-151.
[2]李华.王思明.张金敏.单片机原理及应用[M].兰州:兰州大学出版社,2001.5:59-86.
[3]吕锴.部德才.徐明达.单片机串行通讯在抢答器设计中的应用[J].齐齐哈尔大学学
报.2011(4):73-75.
[4]宋春华.江涛.王贵恩.裴小英.基于单片机控制的数字抢答器[J].河南机电高等专科学校学
报.2005(5):32-33.
[5]杨居义.杨尧.杨晓琴.王益斌.单片机课程设计指导[M].北京:清华大学出版社,2009.9:170-174.
附录源程序代码
#include
sbit start=P1^0;
sbit please=P1^1;
sbit stop=P1^2;
sbit ans=P1^3;
sbit p1=P3^0;
sbit p2=P3^1;
sbit light1=P3^6;
sbit light2=P3^7;
sbit S=P2^0;
sbit G=P2^1;
unsigned char code time[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; unsigned char cont=0,shi,ge,i;
unsigned char T; //答题时间
void inter() interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
cont++;
}
main()
{
while(1)
{
// 1.待机阶段
while( start==1 )
{
S=1;
G=0;
P0=time[0];
for( i=0 ; i<100 ; i++ ) ;
P0=0xff;
S=0;
G=1;
P0=time[0];
for( i=0 ; i<100 ; i++ ) ;
P0=0xff;
}
// 2.抢答阶段
while(1)
{
// 1).开始抢答