久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3451|回復: 1
打印 上一主題 下一主題
收起左側(cè)

基于單片機的精簡八路搶答器Proteus仿真程序 帶注釋

[復制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:650426 發(fā)表于 2020-5-6 20:28 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式


單片機源程序如下:
/****************************************************************************************
八路搶答器系統(tǒng)
活動規(guī)則:
>>>初始狀態(tài):上電時,臺號顯示“00”,倒計時顯示“00”,紅燈和綠燈熄滅。
>>>當主持人按下“開始/清除”鍵時(選手才能搶答),蜂鳴器響一下,臺號顯示“00”,倒計時數(shù)碼管顯示“05”,
>>>這時開始準備倒計時5秒,當準備倒計時顯示回到“00”時,然后顯示倒計時30秒開始搶答。
>>>如果倒計時未回到“00”就搶答,這時紅燈閃亮,倒計時數(shù)碼管顯示“--",這時禁止任何操作。
>>>這時只有主持人按下“開始/清除”鍵,才能恢復初始狀態(tài)。
>>>5秒結(jié)束后,等待搶答,綠燈亮起,倒計時顯示“30”后,即開始倒計時,而倒計時最后5S,蜂鳴器會發(fā)出滴滴鳴叫聲,
>>>如果30秒內(nèi)沒人搶答,則此次搶答失敗,重新回到初始狀態(tài)。   
>>>如果30秒內(nèi)有人成功搶答,則顯示選手的臺號并亮起對應(yīng)的燈,蜂鳴器響一下,倒計時顯示“00”,綠燈熄滅。
>>>主持人按下“開始/清除”鍵后,系統(tǒng)回到初始狀態(tài)且蜂鳴器響一下,然后重新按一下“開始/清除”鍵進入下一輪搶答。
*****************************************************************************************/
#include<reg51.h>
#include "smg.h"
#include "interrupt.h"

#define uchar unsigned char //宏定義
#define uint unsigned int

/************************************引腳定義********************************************/
sbit key_sc=P2^6;  //開始/清除鍵(start/clear---sc)

sbit key_1=P1^0;                //八位選手按鍵定義
sbit key_2=P1^1;
sbit key_3=P1^2;
sbit key_4=P1^3;
sbit key_5=P1^4;
sbit key_6=P1^5;
sbit key_7=P1^6;
sbit key_8=P1^7;
                           
sbit led_1=P3^0;                //八位LED燈按鍵定義
sbit led_2=P3^1;
sbit led_3=P3^2;
sbit led_4=P3^3;
sbit led_5=P3^4;
sbit led_6=P3^5;
sbit led_7=P3^6;
sbit led_8=P3^7;

/************************************變量定義********************************************/
uchar sc_f=0;                   //比賽進行階段標記位,=0表示沒有按。=1表示準備倒計時階段,=2表示倒計時階段。
uchar qiang_f=0;           //搶答犯規(guī)標記,=0沒有犯規(guī)。=1表示有人犯規(guī)
uchar wan_f=0;                   //搶答完成標記,=0搶答沒完成后還沒有開始。=1表示搶答完成
uchar time;                       //時間標記
uchar T0_num;                   //定時器0計數(shù)
uchar number;                   //搶答成功選手的編號,或犯規(guī)選手的編號。=0的時候表示沒有
uchar count=0;                   //計時標記


/********************************************************
函數(shù)名稱:void baojing()
函數(shù)作用:搶答犯規(guī)報警提示
********************************************************/
void baojing()
{
        buzz=0;                   //開蜂鳴器
        delayms(10);
        buzz=1;                   //關(guān)蜂鳴器
        delayms(10);
}

/********************************************************
函數(shù)名稱:uchar qianda()
函數(shù)作用:搶答按鍵檢測,返回搶答編號
參數(shù)說明:
********************************************************/
uchar qianda()
{
        uchar temp=0;
        if(key_1==0)                                  //一號犯規(guī),下同
                temp=1;                          //記錄1號
        else
                if(key_2==0)
                        temp=2;
                else
                        if(key_3==0)
                                temp=3;
                        else
                                if(key_4==0)
                                        temp=4;
                                else
                                        if(key_5==0)
                                                temp=5;
                                        else
                                                if(key_6==0)
                                                        temp=6;
                                                else
                                                        if(key_7==0)
                                                                temp=7;
                                                        else
                                                                if(key_8==0)
                                                                        temp=8;        
        return temp;        
}
/********************************************************
函數(shù)名稱:void led_kongzhi(uchar num,bit k,bit mode)
函數(shù)作用:LED燈控制
參數(shù)說明:num控制哪一個燈,k=1,點亮,=0關(guān)閉。mode=0全滅后在控制這個燈,=1單獨控制這個燈
********************************************************/
void led_kongzhi(uchar num,bit k,bit mode)
{
        if(mode==0)
        {
                led_1=1;           //八位LED燈全滅
                led_2=1;
                led_3=1;
                led_4=1;
                led_5=1;
                led_6=1;
                led_7=1;
                led_8=1;        
        }        
        if(k==1)
        {
                switch (num)          //控制對應(yīng)LED燈亮
                {
                        case 1:led_1=0;
                                break;
                        case 2:led_2=0;
                                break;
                        case 3:led_3=0;
                                break;
                        case 4:led_4=0;
                                break;
                        case 5:led_5=0;
                                break;
                        case 6:led_6=0;
                                break;
                        case 7:led_7=0;
                                break;
                        case 8:led_8=0;
                                break;
                }
        }
        else
        {
                switch (num)          //控制對應(yīng)LED燈滅
                {
                        case 1:led_1=1;
                                break;
                        case 2:led_2=1;
                                break;
                        case 3:led_3=1;
                                break;
                        case 4:led_4=1;
                                break;
                        case 5:led_5=1;
                                break;
                        case 6:led_6=1;
                                break;
                        case 7:led_7=1;
                                break;
                        case 8:led_8=1;
                                break;
                }        
        }
}
/********************************************************
函數(shù)名稱:void scan(void)
函數(shù)作用:按鍵檢測函數(shù)
********************************************************/
void scan(void)
{
        uchar qiangda_num=0;

        //開始/清除鍵
        if(key_sc==0)                   //按鍵按下
        {
                delayms(7);                   //顯示消抖
                if(key_sc==0&&sc_f!=2&&qiang_f==0&&wan_f==0)//判斷是否有人犯規(guī)或者搶答是否開始或者搶答是否完成
                {
                        sc_f++;               //比賽階段標記+1
                        if(sc_f==1)    //比賽準備開始
                        {
                                time=5;           //準備倒計時時間設(shè)為5s
                                TR0=1;           //開啟定時
                                wan_f=0;   //清除比賽完成標志
                                baojing(); //提示比賽開始
                        }                        
                }
                else
                        if(key_sc==0&&qiang_f==1)   //判斷是否有人犯規(guī)
                        {
                                buzz=1;                                         //清除報警
                                qiang_f=0;                                 //清除搶答標志
                                number=0;                                 //清除選手編號
                                led_kongzhi(0,0,0);                 //關(guān)閉選手指示燈
                        }
                        else                                                
                                if(key_sc==0&&wan_f==1) //判斷是否有人完成
                                {
                                        buzz=1;                                 //清除報警
                                        wan_f=0;                         //清除完成標志
                                        number=0;                         //清除選手編號
                                        led_kongzhi(0,0,0);         //關(guān)閉選手指示燈
                                }
                        
                                if(key_sc==0&&wan_f==0) //停止比賽
                                {
                                        TR0=0;                                //關(guān)閉定時
                                        sc_f=0;                            //重新回到設(shè)置比賽時間階段
                                        count=0;                        //重置計時標記參數(shù)
                                        led_red=1;                        //紅燈熄滅
                                        led_green=1;                //綠燈熄滅
                                        baojing();                        //提示停止比賽
                                }
                while(!key_sc);//檢測按鍵松開
        }

         //選手按鍵
        qiangda_num=qianda();
        if(qiangda_num!=0&&sc_f!=0)   //判斷是否有選手按下按鍵且是否開始搶答
        {
                if(sc_f!=2&&count<5&&qiang_f==0&&wan_f==0)//如果還沒有開始搶答時按下
                {
                        TR0=0;                                                  //比賽進行標記復位
                        count=0;                                          //重置計時標記參數(shù)
                        buzz=0;                                                  //蜂鳴器報警
                        qiang_f=1;                                          //搶答犯規(guī)標記
                        number=qiangda_num;                          //記錄是哪一個燈
                        led_kongzhi(number,1,0);          //顯示選手按下后對應(yīng)的燈
                        led_red=~led_red;                          //點亮紅燈
                }
                else
                        if(sc_f==2&&count>=5&&wan_f==0)         //在開始搶答時按下
                        {
                                wan_f=1;                                         //標記搶答完成
                                sc_f=0;                                             //比賽進行標記復位
                                TR0=0;                                                 //關(guān)閉倒計時定時器
                                count=0;                                         //重置計時標記參數(shù)
                                number=qiangda_num;                         //記錄是哪一個燈
                                led_kongzhi(number,1,0);         //顯示選手按下后對應(yīng)的燈
                                led_green=1;                     //綠燈熄滅
                                baojing();                                         //提示有人搶答完成
                        }
        }  
}

/*********************************************************
函數(shù)名稱:void main()
函數(shù)作用:主函數(shù)
*********************************************************/
void main()
{
        uchar i=0;
        T0_init();        //定時器初始化
        for(i=0;i<9;i++)
        {
                led_kongzhi(i,1,1);
                delayms(10);        
        }

        for(i=9;i>0;i--)
        {
                led_kongzhi(i-1,0,1);
                delayms(10);        
        }
        led_kongzhi(0,0,0);
        while(1)                                                 //死循環(huán)
        {
                scan();                                                 //按鍵檢測處理
                if(sc_f==0&&wan_f==0)                 //判斷是否還沒進入比賽階段
                {
                        display(0,0,0,0);             //未進入,顯示"0000"
                }
                else
                {        
                    if(sc_f==0&&wan_f==1)         //進入比賽階段,并且處于準備比賽時間
                                display(0,number,time/10,time%10);//顯示比賽時間
                        else         
                        {               
                                if(qiang_f==1)   //設(shè)有人犯規(guī)
                                        display(0,number,10,10);                   //顯示犯規(guī)臺號和“--”
                                else
                                        display(0,number,time/10,time%10);//顯示搶答者臺號和比賽剩余時間,未搶答顯示0
                        }
                }               
        }
}

全部資料51hei下載地址:
精簡八路搶答器.zip (346.06 KB, 下載次數(shù): 114)

評分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

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

使用道具 舉報

沙發(fā)
ID:782219 發(fā)表于 2020-8-27 10:50 | 只看該作者
這個程序就是完整的程序嗎??樓主
回復

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 天天爽夜夜骑 | 久久久久成人精品亚洲国产 | 精品国产一区二区久久 | 亚洲精品视频一区 | 成人深夜福利在线观看 | 九九热最新视频 | 欧美日韩综合 | 婷婷久久综合 | 午夜激情国产 | 精品国产一区二区三区日日嗨 | 亚洲精品在线国产 | 99免费在线 | 成人在线观看亚洲 | av日韩精品 | 神马久久久久久久久久 | 亚洲午夜精品 | 欧美日韩精品在线一区 | 久久精品国产精品青草 | 91资源在线观看 | 国产精品毛片无码 | 免费av直接看 | 亚洲视频在线观看免费 | 国产精品免费一区二区三区四区 | 国产a视频 | 国产在线精品一区二区三区 | 欧美中文字幕一区二区三区 | 男女羞羞视频在线看 | 亚洲 欧美 日韩 精品 | 久久99精品久久久久久国产越南 | 成人亚洲 | 国产日韩欧美在线 | 国产午夜精品一区二区三区嫩草 | 精品国产一区二区三区性色av | 中文字幕在线观看视频一区 | 一区久久 | 精品一区二区三区电影 | 97操操 | 人人插人人 | 91夜色在线观看 | 亚洲系列第一页 | 午夜视频在线 |