1、 单片机综合设计汇报 专业: 电气工程及其自动化 年级: 级 学号: 2213112 姓名: 刘伟 成绩: 指导老师: 陈勇 三路路抢答器 1.内容概述 抢答器是一个应用很广泛设备,在多种竞赛、抢答场所中,它能快速、客观地分辨出最先取得讲话权选手。现在大多数抢答器均使用单片机和数字集成电路。本设计利用C51单片机及外围接口实
2、现多路抢答系统,利用单片机定时器/计数器定时和记数原理,将软、硬件有机地结合起来,使得系统能够正确地进行计时,同时使液晶屏能够正确地显示计时时间。 现在电视节目日益丰富,其中竞赛步骤也越来越多,其中抢答器是不可或缺器材。它能正确、公正、直观地判定出第一抢答者。此次设计用STC12C5A60S2单片机作为关键控制元件,设计一个简易抢答器,并经过利用KeilC软件编辑程序,仿真验证。使系统能够完成多路抢答,且系统实用性强,判定正确,操作简单。 2.设计方案及原理 此次设计抢答过程关键分为准备抢答,开始抢答,开始答题三个阶段。本方案以STC12C5A60S2单片机作为主控关键,和晶振、液晶屏等
3、组成三路抢答器,利用了单片机电源电路、按键复位电路、时钟电路、定时电路等。具体系统设计方框图图1所表示。 图1 系统原理方框图 三抢答器由三个按键控制,程序一致判定是否有按键按下,若没有按键按下则循环判定,直到有按键按下后,立即把经过按键输入信号储存起来然后对3路输入信号进行扫描判定,发光二极管亮闪,液晶显示器显示抢答到人,表示抢答成功。软件设计利用中止系统基础组成原理编写中止服程序,其信号由按键电路提供,由CPU响应中止,并输出响应。用到了定时器模块、显示时间模块、计数器模块等。程序步骤图图2所表示。 图2系统步骤图 3.原理分析 在抢答中,只有要求开始后抢答才有效
4、假如在开始抢答前抢答为无效;液晶屏能够显示是哪位选手有效抢答,抢答时间和回复问题时间倒计时显示在液晶屏上。若选手回复完成,主持人按下准备按钮,液晶屏清零,能够进入下一提抢答。P3.0为主持人按键,提醒选手开始抢答,此时三极管D1闪亮。P3.1-P3.3为三路抢答输入,为选手抢答按键。P3.0为主持人提醒开始抢答倒计时按键,此时液晶屏倒计时。P1.1-P1.3为选手对应提醒灯按下即闪亮,反复按下无效。
4.程序设计:
#include
5、s1num,count,shijian; sbit d1=P1^0;//zhuchi sbit d2=P1^1;//xuanshou1 sbit d3=P1^2; sbit d4=P1^3; sbit d5=P1^4; sbit k1=P3^3;//zhuchi sbit k2=P3^2;//xuanshou1 sbit k3=P3^1; sbit k4=P3^0; uchar code table[]="ANSWER 2"; uchar code table3[]="ANSWER 1"; uchar code table4[]="ANSWER 3"; uchar
6、code table1[]="PLEASE DA TI"; uchar code table2[]="JINGA"; sbit lcden=P2^0; sbit lcdrs=P2^2; sbit lcdrw=P2^1; sbit beep=P2^6; void delay(uint z) { uint x,y; for(x=z;x>0;x--) for(y=110;y>0;y--); } void di() { beep=0; delay(100); beep=1; } void write_com(uchar com) { lc
7、drs=0; lcden=0; P0=com; delay(5); lcden=1; delay(5); lcden=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
8、0x40+add); write_date(0x30+shi); write_date(0x30+ge); } void init() { 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;n
9、um<13;num++) { write_date(table1[num]); 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);
10、 d1=1; } if(s1num==2) { s1num=0; d1=0; delay(500); d1=1; TR0=0; shijian=0; } } } } void main() { init(); while(1) { keyscan(); } } void timer0() interrupt 1 { TH0=(65536-50000)/256; TL0=(65536-50000)%256; cou
11、nt++; 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_
12、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(ta
13、ble[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++) {
14、 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<
15、8;num++) { write_date(table4[num]); delay(500); } } } } } 5. 实际制作结果概述 初始状态图3所表示 图3 当裁判员按键开始后 开始计时图4 图4 当有些人抢答时结果图5 此时为2号抢答到 图5 这就实现了简单抢答器功效。 6.总结 此次课程设计题目是三路抢答器设计,在设计过程中出现了以下多个问题。复位键按下电路无反应现象,经过调整变阻大小才处理了液晶屏不现实问题。而复位键不灵敏问题则是因为时间过短造成复位显示不显著。经过查阅相关资料,很多问题最终得四处理。而这些才是作为一名工科学生最宝贵财富。






