三路抢答器课程设计分析报告.docx
《三路抢答器课程设计分析报告.docx》由会员分享,可在线阅读,更多相关《三路抢答器课程设计分析报告.docx(13页珍藏版)》请在冰豆网上搜索。
![三路抢答器课程设计分析报告.docx](https://file1.bdocx.com/fileroot1/2023-7/10/4173841b-ee3c-402c-904c-0f47d2c7e455/4173841b-ee3c-402c-904c-0f47d2c7e4551.gif)
三路抢答器课程设计分析报告
三路抢答器课程设计报告
————————————————————————————————作者:
————————————————————————————————日期:
单片机综合设计报告
专业:
电气工程及其自动化
年级:
2012级
学号:
20122213112
姓名:
刘伟
成绩:
指导教师:
陈勇
三路路抢答器
1.内容概述
抢答器是一种应用非常广泛的设备,在各种竞赛、抢答场合中,它能迅速、客观地分辨出最先获得发言权的选手。
目前大多数抢答器均使用单片机和数字集成电路。
本设计利用C51单片机及外围接口实现多路抢答系统,利用单片机的定时器/计数器定时和记数的原理,将软、硬件有机地结合起来,使得系统能够正确地进行计时,同时使液晶屏能够正确地显示计时时间。
目前电视节目日益丰富,其中的竞赛环节也越来越多,其中抢答器是不可或缺的器材。
它能准确、公正、直观地判断出第一抢答者。
本次设计用STC12C5A60S2单片机作为核心控制元件,设计一个简易的抢答器,并通过利用KeilC软件编辑程序,仿真验证。
使系统能够完成多路抢答,且系统实用性强,判断精准,操作简单。
2.设计方案及原理
本次设计的抢答过程主要分为准备抢答,开始抢答,开始答题三个阶段。
本方案以STC12C5A60S2单片机作为主控核心,与晶振、液晶屏等构成三路抢答器,利用了单片机的电源电路、按键复位电路、时钟电路、定时电路等。
具体系统设计方框图如图1所示。
图1系统原理方框图
三抢答器由三个按键控制,程序一致判断是否有按键按下,若没有按键按下则循环判断,直到有按键按下后,立即把通过按键输入的信号储存起来然后对3路输入信号进行扫描判断,发光二极管亮闪,液晶显示屏显示抢答到的人,表示抢答成功。
软件设计利用中断系统的基本构成原理编写中断服程序,其信号由按键电路提供,由CPU响应中断,并输出响应。
用到了定时器模块、显示时间模块、计数器模块等。
程序流程图如图2所示。
图2系统流程图
3.原理分析
在抢答中,只有规定开始后抢答才有效,如果在开始抢答前抢答为无效;液晶屏可以显示是哪位选手有效抢答,抢答时间和回答问题时间倒计时显示在液晶屏上。
若选手回答完毕,主持人按下准备按钮,液晶屏清零,可以进入下一提的抢答。
P3.0为主持人按键,提示选手开始抢答,此时三极管D1闪亮。
P3.1-P3.3为三路抢答的输入,为选手抢答按键。
P3.0为主持人提示开始抢答倒计时按键,此时液晶屏倒计时。
P1.1-P1.3为选手对应的提示灯按下即闪亮,重复按下无效。
4.程序设计:
#include
#defineuintunsignedint
#defineucharunsignedchar
ucharnum,s1num,count,shijian;
sbitd1=P1^0;//zhuchi
sbitd2=P1^1;//xuanshou1
sbitd3=P1^2;
sbitd4=P1^3;
sbitd5=P1^4;
sbitk1=P3^3;//zhuchi
sbitk2=P3^2;//xuanshou1
sbitk3=P3^1;
sbitk4=P3^0;
ucharcodetable[]="ANSWER2";
ucharcodetable3[]="ANSWER1";
ucharcodetable4[]="ANSWER3";
ucharcodetable1[]="PLEASEDATI";
ucharcodetable2[]="JINGA";
sbitlcden=P2^0;
sbitlcdrs=P2^2;
sbitlcdrw=P2^1;
sbitbeep=P2^6;
voiddelay(uintz)
{
uintx,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
voiddi()
{
beep=0;
delay(100);
beep=1;
}
voidwrite_com(ucharcom)
{
lcdrs=0;
lcden=0;
P0=com;
delay(5);
lcden=1;
delay(5);
lcden=0;
}
voidwrite_date(uchardate)
{
lcdrs=1;
lcden=0;
P0=date;
delay(5);
lcden=1;
delay(5);
lcden=0;
}
voidwrite_sfm(ucharadd,uchardate)
{
ucharshi,ge;
shi=date/10;
ge=date%10;
write_com(0x80+0x40+add);
write_date(0x30+shi);
write_date(0x30+ge);
}
voidinit()
{
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1;
ET0=1;
lcden=0;
lcdrw=0;
write_com(0x38);
write_com(0x0c);
write_com(0x06);
write_com(0x01);
write_com(0x80);
for(num=0;num<13;num++)
{
write_date(table1[num]);
delay(50);
}
write_sfm(0,shijian);
}
voidkeyscan()
{
if(k1==0)
{
delay(5);
if(k1==0)
{
while(!
k1);
s1num++;
di();
if(s1num==1)
{
TR0=1;
d1=0;
delay(500);
d1=1;
}
if(s1num==2)
{
s1num=0;
d1=0;
delay(500);
d1=1;
TR0=0;
shijian=0;
}
}
}
}
voidmain()
{
init();
while
(1)
{
keyscan();
}
}
voidtimer0()interrupt1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
count++;
if(count==20)
{
count=0;
shijian++;
if(shijian==20)
{
write_com(0x80+0x40+8);
for(num=0;num<5;num++)
{
write_date(table2[num]);
delay(50);
}
}
if(shijian==60)
shijian=0;
write_sfm(0,shijian);
}
if(s1num!
=0)
{
if(k2==0)
{
delay(5);
if(k2==0)
{
while(!
k2);
TR0=0;
d2=0;
delay(500);
d2=1;
write_com(0x80+0x40+8);
for(num=0;num<8;num++)
{
write_date(table[num]);
delay(50);
}
}
}
if(k3==0)
{
delay(5);
if(k3==0)
{
while(!
k3);
TR0=0;
d3=0;
delay(500);
d3=1;
write_com(0x80+0x40+8);
for(num=0;num<8;num++)
{
write_date(table3[num]);
delay(50);
}
}
}
if(k4==0)
{
delay(5);
if(k4==0)
{
while(!
k4);
TR0=0;
d4=0;
delay(500);
d4=1;
write_com(0x80+0x40+8);
for(num=0;num<8;num++)
{
write_date(table4[num]);
delay(500);
}
}
}
}
}
5.实际制作结果概述
初始状态如图3所示
图3
当裁判员按键开始后开始计时如图4
图4
当有人抢答时结果如图5此时为2号抢答到
图5
这就实现了简单的抢答器的功能。
6.总结
本次课程设计的题目是三路抢答器设计,在设计的过程中出现了以下几种问题。
复位键按下电路无反应的现象,通过调节变阻的大小才解决了液晶屏不现实的问题。
而复位键不灵敏的问题则是因为时间过短导致复位显示不明显。
通过查阅相关资料,许多问题最终得到解决。
而这些才是作为一名工科学生最宝贵的财富。