1、三路路抢答器1.内容概述 抢答器是一种应用非常广泛的设备,在各种竞赛、抢答场合中,它能迅速、客观地分辨出最先获得发言权的选手。目前大多数抢答器均使用单片机和数字集成电路。本设计利用C51单片机及外围接口实现多路抢答系统,利用单片机的定时器/计数器定时和记数的原理,将软、硬件有机地结合起来,使得系统能够正确地进行计时,同时使液晶屏能够正确地显示计时时间。目前电视节目日益丰富,其中的竞赛环节也越来越多,其中抢答器是不可或缺的器材。它能准确、公正、直观地判断出第一抢答者。本次设计用STC12C5A60S2单片机作为核心控制元件,设计一个简易的抢答器,并通过利用KeilC软件编辑程序,仿真验证。使系统
2、能够完成多路抢答,且系统实用性强,判断精准,操作简单。2设计方案及原理本次设计的抢答过程主要分为准备抢答,开始抢答,开始答题三个阶段。本方案以STC12C5A60S2单片机作为主控核心,与晶振、液晶屏等构成三路抢答器,利用了单片机的电源电路、按键复位电路、时钟电路、定时电路等。具体系统设计方框图如图1所示。图1 系统原理方框图三抢答器由三个按键控制,程序一致判断是否有按键按下,若没有按键按下则循环判断,直到有按键按下后,立即把通过按键输入的信号储存起来然后对3路输入信号进行扫描判断,发光二极管亮闪,液晶显示屏显示抢答到的人,表示抢答成功。软件设计利用中断系统的基本构成原理编写中断服程序,其信号
3、由按键电路提供,由CPU响应中断,并输出响应。用到了定时器模块、显示时间模块、计数器模块等。程序流程图如图2所示。图2系统流程图3原理分析在抢答中,只有规定开始后抢答才有效,如果在开始抢答前抢答为无效;液晶屏可以显示是哪位选手有效抢答,抢答时间和回答问题时间倒计时显示在液晶屏上。若选手回答完毕,主持人按下准备按钮,液晶屏清零,可以进入下一提的抢答。P3.0为主持人按键,提示选手开始抢答,此时三极管D1闪亮。P3.1-P3.3为三路抢答的输入,为选手抢答按键。P3.0为主持人提示开始抢答倒计时按键,此时液晶屏倒计时。P1.1-P1.3为选手对应的提示灯按下即闪亮,重复按下无效。 4程序设计:#i
4、nclude#define uint unsigned int#define uchar unsigned charuchar num,s1num,count,shijian;sbit d1=P10;/zhuchisbit d2=P11;/xuanshou1sbit d3=P12;sbit d4=P13;sbit d5=P14;sbit k1=P33;/zhuchisbit k2=P32;/xuanshou1sbit k3=P31;sbit k4=P30;uchar code table=ANSWER 2;uchar code table3=ANSWER 1;uchar code table4
5、=ANSWER 3;uchar code table1=PLEASE DA TI;uchar code table2=JINGA;sbit lcden=P20;sbit lcdrs=P22;sbit lcdrw=P21;sbit beep=P26;void delay(uint z)uint x,y;for(x=z;x0;x-) for(y=110;y0;y-);void di()beep=0;delay(100);beep=1;void write_com(uchar com) lcdrs=0; lcden=0; P0=com; delay(5); lcden=1; delay(5); lc
6、den=0;void write_date(uchar date) lcdrs=1;lcden=0;P0=date;delay(5);lcden=1;delay(5);lcden=0;void write_sfm(uchar add,uchar date)uchar shi,ge;shi=date/10;ge=date%10;write_com(0x80+0x40+add);write_date(0x30+shi);write_date(0x30+ge);void init() TMOD=0x01;TH0=(65536-50000)/256;TL0=(65536-50000)%256;EA=1
7、;ET0=1;lcden=0;lcdrw=0;write_com(0x38);write_com(0x0c);write_com(0x06);write_com(0x01);write_com(0x80); for(num=0;num13;num+) write_date(table1num); delay(50); write_sfm(0,shijian);void keyscan()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)s1n
8、um=0;d1=0;delay(500);d1=1;TR0=0;shijian=0; void main()init();while(1)keyscan(); void timer0() interrupt 1TH0=(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;num5;num+)write_date(table2num);delay(50); if(shijian=60) shijian
9、=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;num8;num+) write_date(tablenum); 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;num8;num+)write_
10、date(table3num);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;num8;num+)write_date(table4num);delay(500); 5. 实际制作结果概述初始状态如图3所示图3当裁判员按键开始后 开始计时如图4 图4当有人抢答时结果如图5 此时为2号抢答到 图5这就实现了简单的抢答器的功能。 6总结本次课程设计的题目是三路抢答器设计,在设计的过程中出现了以下几种问题。复位键按下电路无反应的现象,通过调节变阻的大小才解决了液晶屏不现实的问题。而复位键不灵敏的问题则是因为时间过短导致复位显示不明显。通过查阅相关资料,许多问题最终得到解决。而这些才是作为一名工科学生最宝贵的财富。.忽略此处.11