找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 10845|回复: 11
打印 上一主题 下一主题
收起左侧

单片机八路抢答器设计终极版

  [复制链接]
跳转到指定楼层
楼主
ID:211150 发表于 2017-6-15 16:21 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
抢答器系统仿真原理图如下(proteus工程文件可到附件下载):

任务描述及要求
  
任务描述
  
重难点
完成抢答器系统的软硬件设计与调试,系统主要功能要求如下:
  
     1. 在给定电路图基础上,完成8路抢答器设计;
  
2. 抢答成功后,显示组号,同时蜂鸣器响一声;
  
3. 抢答成功后,显示20秒答题倒计时,计时时间到蜂鸣器响一声;
  
3. 根据答题正确与否进行加、减分并显示累计分数。
  
     4. 设主持人复位键;主持人加、减分键;
#include<reg51.h>
sbit key1=P0^0;
sbit key2=P0^1;
sbit key3=P0^2;
sbit key4=P0^3;
sbit key5=P0^4;
sbit key6=P0^5;
sbit key7=P0^6;
sbit key8=P0^7;
sbit k1=P3^6;
sbit k2=P3^7;
sbit k3=P3^3;
sbit wy=P3^4;
sbit wk_key=P3^5;
sbit ghr_key=P3^2;
bit qd_hd,speaker_permit;
bit grade_hxj;
unsigned char duanma[13]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xbf,0xa3,0xa1};         
unsigned char fenshu[10]={0,0,0,0,0,0,0,0,0,0};
unsigned char weima[6]={0x01,0x02,0x04,0x08,0x10,0x20};
unsigned char xianshi[6]={0,0,0,0,0,0};
unsigned char  saomiao_jishu, jishi,jishu,jishu1,jishu2,zuhao=0,fuhao1,jishu3,f_speaker;
unsigned char jishi,miao,fen;
unsigned int jishi1;
unsigned char data_out;

void chushihua (void)               
  {
    zuhao=0;                                //组号  显示 0,
        TMOD=0X11;
        EA=1;                                                //设置初值;计时为0。
        ET1=1;TR1=1;
        ET0=1;TR0=1;
        TH1=(65536-1000)/256;
        TL1=(65536-1000)%256;
        TH0=(65536-10000)/256;
        TL0=(65536-10000)%256;
        jishi=0;grade_hxj=0;
        qd_hd=0;
        speaker_permit=1;
  }
void dtsm(void)           //动态扫描子程序
  {
                 
         fen=fenshu[zuhao] ;
                 xianshi[0]=duanma[zuhao/10];
                 xianshi[1]=duanma[zuhao%10];
                 xianshi[2]=duanma[miao/10];
                 xianshi[3]=duanma[miao%10];
                 xianshi[4]=duanma[fen/10];
                 xianshi[5]=duanma[fen%10];
                      saomiao_jishu++;
                      if(saomiao_jishu==6)
                        {
                                  saomiao_jishu=0;
                                }
                  P2=  weima[saomiao_jishu];//位码
                      P1=xianshi[saomiao_jishu];//段码  
                           
  
  }
void preemptive_answer(void)                 //抢答子程序
{
if(qd_hd==0)                                                 //允 许 抢 答         
                            {
                                if(key1==0)                                
                               {                                                                                
                                zuhao=1; miao=20;qd_hd=1;
                                          speaker_permit=0;grade_hxj=1;
                                                  
                                         }   
                                  if(key2==0)           
                                         {
                                     zuhao=2; miao=20;qd_hd=1;
                                          speaker_permit=0;grade_hxj=1;
                                         }
                  if(key3==0)   
                                           {                        
                                zuhao=3; miao=20;qd_hd=1;
                                          speaker_permit=0;grade_hxj=1;
                               }                     
                                     if(key4==0)
                                           {                        
                                zuhao=4; miao=20;qd_hd=1;
                                          speaker_permit=0;grade_hxj=1;
                               }                     
                                  if(key5==0)           
                                         {  
                                     zuhao=5; miao=20;qd_hd=1;
                                          speaker_permit=0;grade_hxj=1;
                                         }  
                                    if(key6==0)
                                           {                        
                                zuhao=6; miao=20;qd_hd=1;
                                          speaker_permit=0;grade_hxj=1;
                               }                     
                                  if(key7==0)           
                                         {  
                                     zuhao=7; miao=20;qd_hd=1;
                                          speaker_permit=0;grade_hxj=1;
                                         }  
                  if(key8==0)                                
                               {
                                zuhao=8; miao=20;qd_hd=1;
                                          speaker_permit=0;grade_hxj=1;                    
                                         }
                                }           
                   if(k3==0)         //开始
                                           {
                                          miao=10;qd_hd=0 ;

                                         }                                                  
if(qd_hd==1)       //计 数  
       {
                              
                   jishu2++;                                                  
           if(jishu2==200)                                          
          {
               jishu2=0;                                          
                   miao--;
                   if((miao==19)||(miao==0))        
                           {
                   speaker_permit=1;
                           }
                   if(miao==1)speaker_permit=0;                                                  
                   if(miao==0xff)miao=0;                  
              }
       }

                         if(wk_key==0)                                //复 位
                              {
                       zuhao=0;
                     miao=0;
                   qd_hd=0;
                     fen=0;
                     grade_hxj=0;   
                              }
if(grade_hxj==1)
                   {
                        if(k1==0)                                //加 分
                              {
                      fenshu[zuhao]=fenshu[zuhao]+1;
                    fen=fenshu[zuhao];
                    while(k1==0);
                                        }
                        if(k2==0)                                //减 分
                                       {
                    fenshu[zuhao]=fenshu[zuhao]-1;
                    fen=fenshu[zuhao];
                    while(k2==0);
                    }      
                 }
   
                                   

}
void zd(void) interrupt 3                        //蜂鸣 (中断)
{
    TH1=(65536-8000)/256;
    TL1=(65536-8000)%256;
         jishu2++;                                                  
           if(jishu2==250)                                          
          {
               jishu2=0;                                          
                   miao--;
                   if(miao==0xff)miao=0;
                   }
                   if(miao==0)qd_hd=1;
        dtsm();
                preemptive_answer();         
}
void zd1(void) interrupt 1                //蜂鸣(中断)
{
    TH0=(65536-1000)/256;
    TL0=(65536-1000)%256;
  if(speaker_permit==0)
        {
      f_speaker++;
          if(f_speaker==1)
           {
                   f_speaker=0;
                ghr_key=~ghr_key;
           }
    }
  if(wy==0)
                {
                 zuhao++;
                         if(zuhao==9)
                                {
                                 zuhao=0;
                                 fen=fenshu[zuhao] ;
                                }
                         while(wy==0);
            }
                 
}

void main(void)        
  {         
     chushihua();           
         while(1);

  }

1. 蜂鸣器的控制;
  
2. 加减分功能的设计;
  
3. 各种信息的交替显示;
  
4.系统的统调。


全部资料下载地址:
五组抢答器终极版.rar (71.51 KB, 下载次数: 189)




评分

参与人数 3黑币 +138 收起 理由
INVIO + 30 绝世好帖!
zqy181818 + 8 赞一个!
admin + 100 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏10 分享淘帖 顶1 踩
回复

使用道具 举报

沙发
ID:359045 发表于 2018-6-29 14:33 | 只看该作者
我转成了Proteus8.8版本了

Proteus8.8版本.7z

54.31 KB, 下载次数: 8, 下载积分: 黑币 -5

回复

使用道具 举报

板凳
ID:363252 发表于 2018-7-2 16:39 | 只看该作者
很好厉害
回复

使用道具 举报

地板
ID:417279 发表于 2018-10-29 15:03 来自手机 | 只看该作者
刚好需要,谢谢dalao
回复

使用道具 举报

5#
ID:434590 发表于 2018-11-30 14:44 | 只看该作者
抢答快了喇叭会一直响,清零也不能停止,只有停止仿真....
回复

使用道具 举报

6#
ID:272006 发表于 2019-3-24 18:08 | 只看该作者
为什么开始抢答以后,扬声器就停不下来
回复

使用道具 举报

7#
ID:736988 发表于 2020-5-4 17:28 | 只看该作者
谢谢分享
回复

使用道具 举报

8#
ID:720479 发表于 2020-5-5 18:43 | 只看该作者
太好了,刚好需要
回复

使用道具 举报

9#
ID:992517 发表于 2021-12-15 04:59 | 只看该作者

thanks for sharing
回复

使用道具 举报

10#
ID:997835 发表于 2021-12-28 15:07 | 只看该作者
牛逼哥,又美观又实用
回复

使用道具 举报

11#
ID:399179 发表于 2022-1-7 11:47 来自手机 | 只看该作者
正好需要,谢谢楼主无私奉献!
回复

使用道具 举报

12#
ID:942522 发表于 2022-3-21 16:24 | 只看该作者
你好,我想请教一下,怎么把  答错扣分  改成    答错继续抢答啊
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表