您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 湖南大学单片机课程设计抢答器
1设计课题:四路抢答器学院:电气与信息工程学院专业班级:10级电气工程及其自动化学生姓名:祝捷201007105252一.设计背景能够实现抢答器功能的方式有多种,可以采用前期的模拟电路、数字电路或模拟与数字电路相结合的方式。近年来随着科技的飞速发展,单片机的应用正在不断地走向深入,同时带动传统控制检测日新月异更新。二.设计目的1.了解单片机开发板的基本结构和各器件的基本功能;2.对单片机定时/计数、锁存、中断的概念加以深化理解;并掌握它们的寻址方式。3.掌握共阴极数码管扫描的动态扫描显示驱动及其编码方式。4.建立模块化的设计理念,使程序的可读性增加并熟练调试程序。三.任务及设计要求1.任务设计并制作一个4路抢答器,在满足基本抢答器功能的同时具有抢答器的基本功能。2.电路设计要求1)设计一个4路抢答器2)设计一个清除和抢答器控制开关,该开关由主持人控制主持人按下时,蜂鸣器响,开始倒计时进入抢答环节。3)电路具有抢答倒计时功能。4)抢答器有锁存与显示功能。选手按动按钮,锁存相应编号,3并在led数码管上相应显示,同时,蜂鸣器发出抢答警示。优先抢答的选手进入倒计时答题环节。5)本程序有相应的犯规警示环节,当主持人还没有按下抢答键时,有人抢答,记为犯规,蜂鸣器持续发出声响。并在数码管上显示出那个犯规的组号。6)本电路设计有鉴别锁定功能,在主持人按下抢答和复位键的过程中其他选手按键无效。7)当抢答时间已到或者无人抢答,则记为无效抢答。蜂鸣器报警。四.系统整体方案设计本电路中的51单片机是控制的主体,起到识别按键,对数据做出相应的处理(复位,清零,锁存,报警等)。而数码管主要显示倒计时与选手按键号码。报警时间的长短也可以调节。在整个实验中调节按键然后观察显示同步,完成实验。单片机主控制倒计时模块显示模块主持人控制开关抢答按钮蜂鸣报警4五.软件流程设计1.系统流程设计(抢答器基本原理都相同,此图从网上下载)2.倒计时流程图开始载入倒计时初值开定时器中断T=0显示子程序言程序定时寄存器减1结束5开始查表P2赋值P2值送p0口延时P0口做段选码口输出/P2.2~P2.4做位选码输出结束P2减13.数码管显示流程图6六.硬件电路及器件原理图1.硬件电路2.单片机引脚及介绍7单片机P1口是一个内部提供上拉电阻的8位双向I/O口,P1口的输出缓冲器可驱动4个TTL逻辑门电路。p1.0~p1.3口接四个按钮;XTAL1,XTAL2分别通过电容并联晶振;P0口是一组8位漏极开路双向I/O口,每位引脚可驱动8个逻辑门路。对P0口的管脚写“1”时,被定义为高阻抗输入。在访问外部数据存储器或程序存储器时,它可以被定义为数据总线和地址总线的低八位。P0.0~p0.6口外部必须接上拉电阻,再接一个7SEG-MPX4CC显示器。P3口是一个内部提供上拉电阻的8位双向I/O口,P3口的输出缓冲器可驱动4个TTL逻辑门电路。3.定时/计数器的工作方式及控制字特殊功能寄存器中TMOD和TCON是定时器的方式控制寄存器。图1为TMOD寄存器的内部结构,图2为TCON寄存器的内部结构。TMOD和TCON是寄存器的名称,我们在写程序时就可以直接用这个名称来指定它们,当然也可以直接用它们的地址89H和88H来指定它们。用于T1用于T0GATEC/TM1M0GATEC/TM1M0图1TMON用于定时/计数器用于中断TF1TR1TF0TR0IE1IT1IE0IT0图2TCON8单片机定时/计数器有四种工作方式,方式0、方式1、方式2、方式3,除方式3外,T0和T1有完全相同的工作状态1.工作方式0定时器,计数器的工作方式O称之为13位定时/计数方式。它由TL(1/0)的低5位和TH(0/1)的8位构成13位的计数器,此时TL(1/0)的高3位未用。对于定时器的工作模式可以根据定时器的寄存器TMOD来设置:①M1M0:定时/计数器共有四种工作方式,就是用M1M0来控制的,2位正好是四种组合。②C/T:定时/计数器即可作定时用也可用计数用,如果C/T为O就是用作定时器(开关往上打),如果C/T为1就是用作计数器(开关往下打)。一个定时/计数器同一时刻要么作定时用,要么作计数用,不能同时用的。③GATE:当我们选择了定时或计数工作方式后,定时/计数脉冲却不一定能到达计数器端,中间还有一个开关,显然这个开关不合上,计数脉冲就没法过去,那么开关什么时候过去呢?有两种情况GATE=0,分析一下逻辑,GATE非后是1,进入或门,或门总是输出1,和或门的另一个输入端INT1无关,在这种情况下,开关的打开、合上只取决于TR1,只要TR1是1,开关就合上,计数脉冲得以畅通无阻,而如果TR1等于0则开关打开,计数脉冲无法通过,因此定时/计数是否工作,只取决于TR1。9GATE=1,在此种情况下,计数脉冲通路上的开关不仅要由TR1来控制,而且还要受到INT1引脚的控制,只有TRl为1,且INT1引脚也是高电平,开关才合上,计数脉冲才得以通过。这个特性可以用来测量一个信号的高电平的宽度。2.工作方式1工作方式1是16位的定时/计数方式,将M1M0设为01即可,其它特性与工作方式0相同。3.工作方式28位自动装入时间常数方式。由TL1构成8位计数器,TH1仅用来存放时间常数。看图5所示,每当计数溢出,就会打开T(0/1)的高、低8位之间的开关,计预置数进入低8位。这是由硬件自动完成的,不需要由人工干预。通常这种式作方式用于波特率发生器,用于这种用途时,定时器就是为了提供一个时间基准。计数溢出后不需要做事情,要做的仅仅只有一件,就是重新装入预置数,再开始计数,而且中间不要任何延迟,可见这个任务用工作方式2来完成是最妙不过了。4.工作方式32个8位的计数器,只适合于定时器0。这种式作方式之下,定时/计数器0被拆成2个独立的定时/计数器来用。其中,TL0可以构成8位的定时器或计数器的工作方式,而THO则只能作为定时器来用。我们知道作定时、计数器来用需要控制位TR0,计满后溢出需要有溢出标记TF0。T0被分成两个来用,那就要两套控制及溢出标记,TLO还是10用原来的T0的标记,而TH0则借用T1的标记。如此T1就无标记、控制可用因此一般只有在T1以工作方式2运行(当波特率发生器用)时,才让T0工作于方式3的。六.程序#includereg52.h#defineucharunsignedchar#defineuintunsignedintsbitLS138A=P2^2;//数码管引脚定义sbitLS138B=P2^3;sbitLS138C=P2^4;sbitledbell=P2^0;//蜂鸣器引脚定义sbitled0=P3^0;sbitled1=P3^1;//指示灯引脚定义sbitled2=P3^2;sbitled3=P3^3;sbitled4=P3^4;sbitled5=P3^5;sbitled6=P3^6;bitkaishi,jieshu,success;/*定义三个标志位,主持人按下k4的开始,定时器满20秒结束20秒回答成功回答完问题*/uintt;uchara0,a1,a2,t1;//t用于倒计时,a0用于显示选手号,a1、a2用于显示时间ucharcodetable[]={~0xC0,~0xf9,~0xa4,~0xb0,~0x99,~0x92,~0x82,~0xf8,~0x80,~0x90,~0x88,~0x83,~0xc6,~0xa1,~0x86,~0x8e,~0xff,~0x0c,~0xbf};/*段码0-F、灭(16)、P.-*/11voiddelay(uintcount);//延时子程序ucharkeychuli();//键处理子程序ucharkey();//键值voiddisplay(uchar,uchar,uchar,uchar,uchar,uchar,uchar,uchar);voidini();voidqiangda();voidweigui();//***************主函数**********************************************voidmain(){uchart3,t4;ini();{while(1){display(a2,a1,16,16,16,16,16,a0);if(jieshu==0)//如果没有按下结束键switch(key()){case0:break;case2:kaishi=1;led4=0;//k4按下开始启动定时器抢答开始TR0=1;t=420;ledbell=0;break;case4:led0=1;//k5为1号选手a0=1;//显示选手号if(kaishi==1)//判断是否违规(不违规则抢答有效){led0=0;//对应的指示灯亮ledbell=0;//蜂鸣器响qiangda();led0=1;}elseweigui();break;case5:led4=1;a0=2;//k6为2号选手12if(kaishi==1){led1=0;ledbell=0;qiangda();led1=1;}elseweigui();break;case6:led4=1;a0=3;//k7为3号选手if(kaishi==1){led2=0;ledbell=0;qiangda();led2=1;}elseweigui();break;case7:led4=1;a0=4;//k8为4号选手if(kaishi==1){led3=0;ledbell=0;qiangda();led3=1;}elseweigui();break;}else{//如果结束则蜂鸣器响P3=0xff;led5=0;ledbell=0;while(!(key()==4))//k3为复位键13{delay(10);t4++;if(t4==40){t4=0;ledbell=~ledbell;}}ini();}}}}//************系统初始化*****************************voidini(){P3=0xff;TMOD=0x01,TH0=0x3c,TL0=0xb0;//定时50ms中断一次EA=1,ET0=1,TR0=0;kaishi=0,jieshu=0;success=0;a0=10,a1=16,a2=16;//显示A,示意选手们attention}//**************抢答子程序*******************************************voidqiangda(){uchart3;TR0=1;t=419;while(!jieshu){display(a2,a1,16,16,16,16,16,a0);if(key()==3)//当k2按下则为结束{success=1;jieshu=1;14P3=0xff;led5=0;ledbell=0;}}if(success!=1){P3=0xff;led6=0;ledbell=0;}while(!(key()==8))//k3为复位键{delay(40);t3++;if(t3==50){t3=0;ledbell=~ledbell;}}ini();}//***********违规抢答子程序*******************************voidweigui(){led5=0;ledbell=0;display(0,0,0,0,0,0,0,a0);while(!(key()==8)){display(16,16,16,16,16,16,16,a0);display(16,16,16,16,16,16,16,a0);ledbell=0;display(16,16,16,16,16,16,16,a0);display(16,16,16,16,16,16,16,a0);15ledbell=1;}ini();}//***********************************************ucharkeychuli(){uc
本文标题:湖南大学单片机课程设计抢答器
链接地址:https://www.777doc.com/doc-6495834 .html