欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4203|回復(fù): 6
打印 上一主題 下一主題
收起左側(cè)

求一個(gè)8人搶答器,有原理圖+PCB圖+源程序!

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:226108 發(fā)表于 2017-8-29 00:09 來自觸屏版 | 只看該作者 |只看大圖 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
20黑幣
要求:
1.        搶答器具有定時(shí)搶答功能.且一次搶答的時(shí)間可由主持人設(shè)定.當(dāng)節(jié)目主持人啟動(dòng)”開始”鍵后,要求定時(shí)器立即開始減計(jì)時(shí),并用顯示器顯示,同時(shí)揚(yáng)聲器發(fā)出短暫的聲響,聲響持續(xù)時(shí)間0.5S左右.
2.        參賽選手在設(shè)定的時(shí)間內(nèi)搶答,搶答有效,定時(shí)器停止工作,顯示器上顯示選手的編號和搶答時(shí)刻的時(shí)間,并保持到主持人將系統(tǒng)消零為止.
~ 2 / 6 ~
3.        如果定時(shí)搶答器時(shí)間已到,卻沒有選手搶答時(shí),本次搶答無效,系統(tǒng)短暫報(bào)警,并封鎖輸入電路,禁止選手超時(shí)后搶答,時(shí)間顯示器顯示00.

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:82765 發(fā)表于 2017-8-29 08:23 | 只看該作者
提示: 作者被禁止或刪除 內(nèi)容自動(dòng)屏蔽
回復(fù)

使用道具 舉報(bào)

板凳
ID:105206 發(fā)表于 2017-8-29 09:10 | 只看該作者
這個(gè)網(wǎng)上好象有例程。百度。。。。。。
回復(fù)

使用道具 舉報(bào)

地板
ID:226108 發(fā)表于 2017-8-29 10:56 來自觸屏版 | 只看該作者
百度的都不是很理想,總是有一部分是沒有的....
回復(fù)

使用道具 舉報(bào)

5#
ID:226108 發(fā)表于 2017-8-30 14:03 來自觸屏版 | 只看該作者
有沒有大神幫幫忙啊?跪求了!
回復(fù)

使用道具 舉報(bào)

6#
ID:82765 發(fā)表于 2017-8-30 16:38 | 只看該作者
提示: 作者被禁止或刪除 內(nèi)容自動(dòng)屏蔽
回復(fù)

使用道具 舉報(bào)

7#
ID:105206 發(fā)表于 2017-8-31 14:49 | 只看該作者
看看這個(gè)別人寫的程序

#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit fmq=P3^6;
sbit Key_Start=P3^4;//開始鍵,時(shí)間設(shè)置時(shí)+
sbit Key_Stop=P3^5;//停止鍵,時(shí)間設(shè)置時(shí)-
sbit Key_Restart=P3^0;//復(fù)位鍵
sbit Key_set_Q=P3^2;//搶答時(shí)間設(shè)置鍵
sbit Key_set_H=P3^3;//回答時(shí)間設(shè)置鍵
sbit led=P3^7;//搶答LED提示
uchar code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xbf,0xff,0xc6,0xf0,0xb6};//段碼表
uchar code table_char[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xc7,0xc0,0x92,0x86,0xbf,0xb7,0xff,0xb9,0x8f};//0-9 L O S E -
uchar  table_score[9]={0,50,50,50,50,50,50,50,50};//記分?jǐn)?shù)組,初設(shè)值50分
void delay(uint z);//延時(shí)函數(shù)聲明
void init();//初始化函數(shù)聲明
void display(uchar XuanShou,uchar time);//顯示數(shù)字函數(shù)聲明
void display_char(uchar char_1,uchar char_2,uchar char_3,uchar char_4 );//顯示字符函數(shù)聲明
void display_set(uchar char_1,uchar time,uchar char_2);//時(shí)間設(shè)置閃動(dòng)顯示函數(shù)聲明
void display_score(uchar xs_num);//分?jǐn)?shù)查詢顯示函數(shù)
void beep();//蜂鳴器函數(shù)
void beep_last();//蜂鳴器特殊報(bào)警
void LED();//提示燈函數(shù)
uchar QiangDa_time,HuiDa_time,QiangDa_time_temp=20,HuiDa_time_temp=30;//搶答時(shí)間、回答時(shí)間變量
uchar count_0,count_1;//定時(shí)中計(jì)數(shù)用的
uint shan_count=0;//閃動(dòng)顯示計(jì)數(shù)用
void main()
{
        uchar AnJian,ShuJu,XuanShou_num;
Top:init();//初始化
        XuanShou_num=1;//為分?jǐn)?shù)查詢做好準(zhǔn)備
        while(1)
        {
                display(10,0);//顯示一杠
                ShuJu=P1;
                if(ShuJu!=0xff)//犯規(guī)搶答!!
                {
//                        delay(10);
//                        if(ShuJu!=0xff)
//                        {
                                AnJian=ShuJu;
                                switch(AnJian)//取出選手編號
                                {
                                        case 0xfe :        XuanShou_num=1;break;//1111 1110
                                        case 0xfd :        XuanShou_num=2;break;//1111 1101
                                        case 0xfb :        XuanShou_num=3;break;//1111 1011
                                        case 0xf7 :        XuanShou_num=4;break;//1111 0111
                                        case 0xef :        XuanShou_num=5;break;//1110 1111
                                        case 0xdf :        XuanShou_num=6;break;//1101 1111
                                        case 0xbf :        XuanShou_num=7;break;//1011 1111
                                        case 0x7f :        XuanShou_num=8;break;//0111 1111
                                        default : goto LOSE;//無法顯示了,有兩個(gè)以上的鍵同時(shí)按下了!!不過這種概率相當(dāng)小
                                }
                                while(1)
                                {
                                        display_char(13,14,14,XuanShou_num);//閃動(dòng)顯示犯規(guī)選手并且報(bào)警
                                        if(shan_count==50)
                                        {
                                                beep();
                                        }
                                        if(Key_Stop==0)
                                        {
                                                delay(10);
                                                if(Key_Stop==0)
                                                {
                                                        beep();
                                                        table_score[XuanShou_num]--;//扣分
                                                }
                                        }
                                        while(!Key_Stop)
                                        {
                                                display_char(14,14,1,16);//按鍵不放開的情況下顯示-1
                                                shan_count=1;//調(diào)用的是閃動(dòng)顯示函數(shù),但是不讓其閃動(dòng)
                                        }
                                        if(Key_Restart==0)
                                        {
                                                delay(10);
                                                if(Key_Restart==0)
                                                {
                                                        beep();
                                                        goto Top;//熱復(fù)位
                                                }
                                        }
                                }
//                        }
                }
                if(Key_Start==0)
                {
                        delay(10);
                        if(Key_Start==0)//主持人按下?lián)尨疰I,搶答正式開始!
                        {
                                QiangDa_time=QiangDa_time_temp;
                                HuiDa_time=HuiDa_time_temp;
                                beep();
                                TR1=1;//搶答時(shí)間開始倒計(jì)時(shí)
                                break;//跳出犯規(guī)搶答查詢循環(huán)
                        }
                }
//一下為查分程序測試
                 if(Key_Stop==0)
                 {
                         delay(10);
                        if(Key_Stop==0)//進(jìn)入分?jǐn)?shù)查詢顯示
                        {
                                beep();
                                while(!Key_Stop);
                                while(1)
                                {
                                        display_score(XuanShou_num);
                                        if(Key_Start==0)
                                        {
                                                delay(10);
                                                if(Key_Start==0)
                                                {
                                                        XuanShou_num++;
                                                        if(XuanShou_num==9) XuanShou_num=1;
                                                }
                                        }
                                        while(!Key_Start);//等待按鍵釋放
                                        if(Key_Stop==0)
                                        {
                                                delay(10);
                                                if(Key_Stop==0)
                                                {
                                                        XuanShou_num--;
                                                        if(XuanShou_num==0) XuanShou_num=8;
                                                }
                                        }
                                        while(!Key_Stop);//等待按鍵釋放
                                   if(Key_Restart==0)
                                        {
                                                delay(10);
                                                if(Key_Restart==0)
                                                {
                                                        beep();
                                                        goto Top;//熱復(fù)位
                                                }
                                        }
                                }
                        }
                 }
        }
        while(1) //查詢是否有按鍵按下,進(jìn)入搶答循環(huán)
        {
                display(10,QiangDa_time);//顯示搶答倒計(jì)時(shí)
                if(QiangDa_time==0)
                {
//                        beep();
                        TR1=0;//關(guān)閉定時(shí)器1
LOSE:                while(1)
                        {
                                display_char(10,11,12,13); //顯示lose 字符
                                if(Key_Restart==0)
                                {
                                        delay(10);
                                        if(Key_Restart==0)//熱復(fù)位鍵,從頭開始下一輪
                                        {
                                                beep();
                                                goto Top;
                                        }
                                }
                        }
                }
                ShuJu=P1;//把P1口的數(shù)據(jù)送給變量
                if(ShuJu!=0xff)//有按鍵按下
                {
//                        delay(10);
//                        if(ShuJu!=0xff)//確定有按鍵按下
//                        {
                                 AnJian=ShuJu;//傳遞數(shù)據(jù)掃描值
//                                 TR0=1;//啟動(dòng)定時(shí)器0
                                 TR1=0;//關(guān)閉定時(shí)器1
                                 break;//不再進(jìn)行查詢是否有按鍵按下了
//                        }
                }
        }
        switch(AnJian)//取出選手編號
        {
                case 0xfe :        XuanShou_num=1;beep();LED();break;//1111 1110
                case 0xfd :        XuanShou_num=2;beep();LED();break;//1111 1101
                case 0xfb :        XuanShou_num=3;beep();LED();break;//1111 1011
                case 0xf7 :        XuanShou_num=4;beep();LED();break;//1111 0111
                case 0xef :        XuanShou_num=5;beep();LED();break;//1110 1111
                case 0xdf :        XuanShou_num=6;beep();LED();break;//1101 1111
                case 0xbf :        XuanShou_num=7;beep();LED();break;//1011 1111
                case 0x7f :        XuanShou_num=8;beep();LED();break;//0111 1111
                default : goto LOSE;//無法顯示了,有兩個(gè)以上的鍵同時(shí)按下了!!不過這種概率相當(dāng)小
        }
        TR0=1;//啟動(dòng)定時(shí)器0(在這里啟動(dòng)比在前面好)
        while(1)
        {
                display(XuanShou_num,HuiDa_time);//顯示選手編號和回答倒計(jì)時(shí)
                if(HuiDa_time==0)
                {
                        TR0=0;//關(guān)閉定時(shí)器0
                        goto LOSE;//跳到顯示lose字符那里
                }
                if(Key_Stop==0)
                {
                        delay(30);
                        if(Key_Stop==0)//停止鍵按下
                        {
                                beep();
                                TR0=0;//關(guān)閉定時(shí)器0,選手開始回答
                                while(!Key_Stop);
                                while(1) //在顯示選手回答倒計(jì)時(shí)時(shí)只有在stop按鍵按下時(shí),才可按復(fù)位鍵
                                {
                                        display(XuanShou_num,HuiDa_time);//顯示選手編號和回答倒計(jì)時(shí)
                                        if(Key_Start==0)
                                        {
                                                delay(10);
                                                if(Key_Start==0)
                                                {
                                                        beep();
                                                        table_score[XuanShou_num]++;//加分
                                                }
                                        }
                                        while(!Key_Start)
                                        {
                                                display_char(17,18,1,16);//按鍵不放開的情況下顯示+1
                                                shan_count=1;//調(diào)用的是閃動(dòng)顯示函數(shù),但是不讓其閃動(dòng)
                                        }
                                        if(Key_Stop==0)
                                        {
                                                delay(10);
                                                if(Key_Stop==0)
                                                {
                                                        beep();
                                                        table_score[XuanShou_num]--;//扣分
                                                }
                                        }
                                        while(!Key_Stop)
                                        {
                                                display_char(14,14,1,16);//按鍵不放開的情況下顯示-1
                                                shan_count=1;//調(diào)用的是閃動(dòng)顯示函數(shù),但是不讓其閃動(dòng)
                                        }
                                        if(Key_Restart==0)
                                        {
                                                delay(10);
                                                if(Key_Restart==0)//熱復(fù)位鍵,從頭開始下一輪
                                                {
                                                        beep();
                                                        goto Top;
                                                }
                                        }
                                }
                        }
                }
//                else
/*                if(Key_Restart==0)
                {
                        delay(10);
                        if(Key_Restart==0)//熱復(fù)位鍵,從頭開始下一輪
                        {
                                beep();
                                goto Top;
                        }
                } */
        }
       
}

void delay(uint z)//1ms基準(zhǔn)延時(shí)
{
        uint x,y;
        for(x=z;x>0;x--)
                for(y=110;y>0;y--);
}

void init()//初始化函數(shù)
{
//        P1=0xff
        EA=1;//開總中斷;
        TMOD=0x11;//定時(shí)器工作方式1,16位定時(shí)計(jì)數(shù)器
        TH0=(65536-50000)/256;//50us
        TL0=(65536-50000)%256;
        ET0=1;//開定時(shí)器0中斷(暫時(shí)不啟動(dòng)定時(shí)器)

//        TMOD=0x01;//定時(shí)器工作方式1,16位定時(shí)計(jì)數(shù)器
        TH1=(65536-50000)/256;//50us
        TL1=(65536-50000)%256;
        ET1=1;//開定時(shí)器0中斷(暫時(shí)不啟動(dòng)定時(shí)器)

        EX0=1;//啟動(dòng)外中斷0
        EX1=1;//啟動(dòng)外中斷1

        P1=0xff;//讀P1口的數(shù)據(jù)要先置1準(zhǔn)備
        count_0=0;//定時(shí)器中的計(jì)數(shù)清零
        count_1=0;
        shan_count=0;
}

void display(uchar XuanShou,uchar time)//顯示數(shù)字的函數(shù)
{

                P2=0x7f;//0111 1111最后一位數(shù)碼管亮
                P0=table[XuanShou];//選手編號
                delay(1);
                P2=0x7f;//0111 1111
                P0=0xff;//消余輝
                delay(1);
       
                P2=0xdf;//1101 1111
                P0=table[time%10];//時(shí)間的個(gè)位
                delay(1);
                P2=0xdf;//0111 1111
                P0=0xff;//消余輝
                delay(1);
       
                P2=0xef;// 1110 1111
                P0=table[time/10];//時(shí)間的十位
                delay(1);
                P2=0xef;//0111 1111
                P0=0xff;//消余輝
                delay(1);
}

void display_char(uchar char_1,uchar char_2,uchar char_3,uchar char_4 )//閃動(dòng)!顯示字符的函數(shù)
{
        shan_count++;
        if(shan_count==150)        shan_count=0;
         if(shan_count>0&&shan_count<50)
         {
                P2=0x7f;//0111 1111
                P0=table_char[char_4];
                delay(1);
                P2=0x7f;//0111 1111
                P0=0xff;
                delay(1);
       
                P2=0xbf;//1011 1111
                P0=table_char[char_3];
                delay(1);
                P2=0xbf;//1011 1111
                P0=0xff;
                delay(1);
       
                P2=0xdf;//1101 1111
                P0=table_char[char_2];
                delay(1);
                P2=0xdf;//1101 1111
                P0=0xff;
                delay(1);
       
                P2=0xef;//1110 1111
                P0=table_char[char_1];
                delay(1);
                P2=0xef;//1110 1111
                P0=0xff;
                delay(1);
        }
        else
        {
                 P2=0x7f;//0111 1111
                P0=0xff;
                delay(1);

                P2=0xbf;//
                P0=0xff;
                delay(1);

                P2=0xdf;//
                P0=0xff;
                delay(1);

                P2=0xef;//
                P0=0xff;
                delay(1);
        }

}
void display_set(uchar char_1,uchar time,uchar char_2)//時(shí)間設(shè)置的閃動(dòng)顯示
{
        shan_count++;
        if(shan_count==120)        shan_count=0;
         if(shan_count>0&&shan_count<40)
         {
                 P2=0x7f;//0111 1111最后一位數(shù)碼管亮
                P0=table[char_2];//顯示一個(gè)符號
                delay(1);
                P2=0x7f;//0111 1111
                P0=0xff;//消余輝
                delay(1);

                P2=0xbf;//1011 1111
                P0=table[time%10];//時(shí)間的個(gè)位
                delay(1);
                P2=0xbf;//1011 1111
                P0=0xff;//消余輝
                delay(1);
       
                P2=0xdf;//1101 1111
                P0=table[time/10];//時(shí)間的十位
                delay(1);
                P2=0xdf;//1101 1111
                P0=0xff;//消余輝
                delay(1);
       
                P2=0xef;// 1110 1111
                P0=table[char_1];//顯示一個(gè)符號
                delay(1);
                P2=0xef;//1110 1111
                P0=0xff;//消余輝
                delay(1);
         }
         else
         {
                 P2=0x7f;//0111 1111
                P0=table[char_2];
                delay(1);

                P2=0xbf;//
                P0=0xff;
                delay(1);

                P2=0xdf;//
                P0=0xff;
                delay(1);

                P2=0xef;//
                P0=table[char_1];
                delay(1);
         }
}
void display_score(uchar xs_num)//分?jǐn)?shù)查詢顯示函數(shù)
{
                P2=0x7f;//0111 1111最后一位數(shù)碼管亮
                P0=table[(table_score[xs_num]%10)];//分?jǐn)?shù)的個(gè)位
                delay(1);
                P2=0x7f;//0111 1111
                P0=0xff;//消余輝
                delay(1);

                P2=0xbf;//1011 1111
                P0=table[(table_score[xs_num]/10)];//分?jǐn)?shù)的十位
                delay(1);
                P2=0xbf;//1011 1111
                P0=0xff;//消余輝
                delay(1);
       
                P2=0xdf;//1101 1111
                P0=table_char[15];//間隔符號
                delay(1);
                P2=0xdf;//1101 1111
                P0=0xff;//消余輝
                delay(1);
       
                P2=0xef;// 1110 1111
                P0=table[xs_num];//選手編號
                delay(1);
                P2=0xef;//1110 1111
                P0=0xff;//消余輝
                delay(1);
}
void beep()        //有源蜂鳴器函數(shù)
{
         fmq=0;
         delay(80);
         fmq=1;
}
void beep_last()//最后一聲特殊聲調(diào)
{
         fmq=0;
         delay(300);
         fmq=1;
}
void LED()
{
        led=0;
        delay(150);
        led=1;
}
void T0_time() interrupt 1//定時(shí)器0中斷函數(shù)_回答時(shí)間
{
        TH0=(65536-50000)/256;//50ms
        TL0=(65536-50000)%256;//馬上重裝初值,以免有誤差
        if(count_0==20)
        {
                count_0=0;
                HuiDa_time--;
                if(HuiDa_time<=5)
                {
                        if(HuiDa_time==0)
                        {
                                beep_last();//最后一聲特殊警告
                        }
                        beep();
                }

        }
        count_0++;
       
}

void T1_time() interrupt 3//定時(shí)器1中斷函數(shù)_搶答時(shí)間
{
        TH1=(65536-50000)/256;//50us
        TL1=(65536-50000)%256;//馬上重裝初值,這樣在后面調(diào)用beep()函數(shù)時(shí)就不會影響定時(shí)器的準(zhǔn)確計(jì)時(shí)了
        if(count_1==20)
        {
                count_1=0;
                QiangDa_time--;
                if(QiangDa_time<=5)
                {
                        if(QiangDa_time==0)
                        {
                                beep_last();//最后一聲警告
                        }
                        else
                        beep();
                }
        }
        count_1++;       
}

void EX0_set_QiangDa_time()        interrupt 0 //外中斷0,設(shè)置搶答時(shí)間
{
        delay(10);//消抖一下
        if(Key_set_Q==0)
        {
                beep();
                while(1)
                {
//                        display(11,QiangDa_time_temp);
//                        delay(100);//閃動(dòng)效果
                        display_set(12,QiangDa_time_temp,13);//調(diào)用時(shí)間設(shè)置閃動(dòng)顯示函數(shù),效果為 [時(shí)間]
                        if(Key_Start==0)//時(shí)間+1鍵
                        {
                                 delay(10);
                                 if(Key_Start==0)
                                 {
                                         QiangDa_time_temp++;
                                        if(QiangDa_time_temp==100)
                                        {
                                                QiangDa_time_temp=1;
                                        }
                                 }
                        }
                        while(!Key_Start);//等待按鍵釋放
//                        else
                        if(Key_Stop==0)//時(shí)間-1鍵
                        {
                                 delay(10);
                                 if(Key_Stop==0)
                                 {
                                         QiangDa_time_temp--;
                                        if(QiangDa_time_temp==0)
                                        {
                                                QiangDa_time_temp=99;
                                        }
                                 }
                        }
                        while(!Key_Stop);//等待按鍵釋放
//                        else
                        if(Key_Restart==0)
                        {
                                if(Key_Restart==0)
                                {
                                        beep();
                                        break;
                                }
                        }
                }
        }
}

void EX1_set_HuiDa_time()        interrupt 2 //外中斷1,設(shè)置回答時(shí)間
{
        delay(10);//消抖一下
        if(Key_set_H==0)
        {
                beep();
                while(1)
                {
                        display_set(12,HuiDa_time_temp,13);//調(diào)用時(shí)間設(shè)置閃動(dòng)顯示函數(shù),效果為 [時(shí)間]
                        if(Key_Start==0)//時(shí)間+1鍵
                        {
                                 delay(10);
                                 if(Key_Start==0)
                                 {
                                         HuiDa_time_temp++;
                                        if(HuiDa_time_temp==100)
                                        {
                                                HuiDa_time_temp=1;
                                        }
                                 }
                        }
                        while(!Key_Start);//等待按鍵釋放
//                        else
                        if(Key_Stop==0)//時(shí)間-1鍵
                        {
                                 delay(10);
                                 if(Key_Stop==0)
                                 {
                                         HuiDa_time_temp--;
                                        if(HuiDa_time_temp==0)
                                        {
                                                HuiDa_time_temp=99;
                                        }
                                 }
                        }
                        while(!Key_Stop);//等待按鍵釋放
//                        else
                        if(Key_Restart==0)
                        {
                                if(Key_Restart==0)
                                {
                                        beep();
                                        break;
                                }
                        }
                }
        }
}
回復(fù)

使用道具 舉報(bào)

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表