娇小w搡bbbb搡bbb,《第一次の人妻》,中国成熟妇女毛茸茸,边啃奶头边躁狠狠躁视频免费观看

基于單片機的精簡八路搶答器

發布者:姑蘇清風泉源客最新更新時間:2020-08-28 來源: 51hei關鍵字:單片機  八路搶答器  按鍵檢測 手機看文章 掃描二維碼
隨時隨地手機看文章

單片機程序如下:
/****************************************************************************************
八路搶答器系統
活動規則:
>>>初始狀態:上電時,臺號顯示“00”,倒計時顯示“00”,紅燈和綠燈熄滅。
>>>當主持人按下“開始/清除”鍵時(選手才能搶答),蜂鳴器響一下,臺號顯示“00”,倒計時數碼管顯示“05”,
>>>這時開始準備倒計時5秒,當準備倒計時顯示回到“00”時,然后顯示倒計時30秒開始搶答。
>>>如果倒計時未回到“00”就搶答,這時紅燈閃亮,倒計時數碼管顯示“--",這時禁止任何操作。
>>>這時只有主持人按下“開始/清除”鍵,才能恢復初始狀態。
>>>5秒結束后,等待搶答,綠燈亮起,倒計時顯示“30”后,即開始倒計時,而倒計時最后5S,蜂鳴器會發出滴滴鳴叫聲,
>>>如果30秒內沒人搶答,則此次搶答失敗,重新回到初始狀態。   
>>>如果30秒內有人成功搶答,則顯示選手的臺號并亮起對應的燈,蜂鳴器響一下,倒計時顯示“00”,綠燈熄滅。
>>>主持人按下“開始/清除”鍵后,系統回到初始狀態且蜂鳴器響一下,然后重新按一下“開始/清除”鍵進入下一輪搶答。
*****************************************************************************************/
#include
#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;           //搶答犯規標記,=0沒有犯規。=1表示有人犯規
uchar wan_f=0;                   //搶答完成標記,=0搶答沒完成后還沒有開始。=1表示搶答完成
uchar time;                       //時間標記
uchar T0_num;                   //定時器0計數
uchar number;                   //搶答成功選手的編號,或犯規選手的編號。=0的時候表示沒有
uchar count=0;                   //計時標記


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

/********************************************************
函數名稱:uchar qianda()
函數作用:搶答按鍵檢測,返回搶答編號
參數說明:
********************************************************/
uchar qianda()
{
        uchar temp=0;
        if(key_1==0)                                  //一號犯規,下同
                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;        
}
/********************************************************
函數名稱:void led_kongzhi(uchar num,bit k,bit mode)
函數作用:LED燈控制
參數說明:num控制哪一個燈,k=1,點亮,=0關閉。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)          //控制對應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)          //控制對應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;
                }        
        }
}
/********************************************************
函數名稱:void scan(void)
函數作用:按鍵檢測函數
********************************************************/
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)//判斷是否有人犯規或者搶答是否開始或者搶答是否完成
                {
                        sc_f++;               //比賽階段標記+1
                        if(sc_f==1)    //比賽準備開始
                        {
                                time=5;           //準備倒計時時間設為5s
                                TR0=1;           //開啟定時
                                wan_f=0;   //清除比賽完成標志
                                baojing(); //提示比賽開始
                        }                        
                }
                else
                        if(key_sc==0&&qiang_f==1)   //判斷是否有人犯規
                        {
                                buzz=1;                                         //清除報警
                                qiang_f=0;                                 //清除搶答標志
                                number=0;                                 //清除選手編號
                                led_kongzhi(0,0,0);                 //關閉選手指示燈
                        }
                        else                                                
                                if(key_sc==0&&wan_f==1) //判斷是否有人完成
                                {
                                        buzz=1;                                 //清除報警
                                        wan_f=0;                         //清除完成標志
                                        number=0;                         //清除選手編號
                                        led_kongzhi(0,0,0);         //關閉選手指示燈
                                }
                        
                                if(key_sc==0&&wan_f==0) //停止比賽
                                {
                                        TR0=0;                                //關閉定時
                                        sc_f=0;                            //重新回到設置比賽時間階段
                                        count=0;                        //重置計時標記參數
                                        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;                                          //重置計時標記參數
                        buzz=0;                                                  //蜂鳴器報警
                        qiang_f=1;                                          //搶答犯規標記
                        number=qiangda_num;                          //記錄是哪一個燈
                        led_kongzhi(number,1,0);          //顯示選手按下后對應的燈
                        led_red=~led_red;                          //點亮紅燈
                }
                else
                        if(sc_f==2&&count>=5&&wan_f==0)         //在開始搶答時按下
                        {
                                wan_f=1;                                         //標記搶答完成
                                sc_f=0;                                             //比賽進行標記復位
                                TR0=0;                                                 //關閉倒計時定時器
                                count=0;                                         //重置計時標記參數
                                number=qiangda_num;                         //記錄是哪一個燈
                                led_kongzhi(number,1,0);         //顯示選手按下后對應的燈
                                led_green=1;                     //綠燈熄滅
                                baojing();                                         //提示有人搶答完成
                        }
        }  
}

/*********************************************************
函數名稱:void main()
函數作用:主函數
*********************************************************/
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)                                                 //死循環
        {
                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)   //設有人犯規
                                        display(0,number,10,10);                   //顯示犯規臺號和“--”
                                else
                                        display(0,number,time/10,time%10);//顯示搶答者臺號和比賽剩余時間,未搶答顯示0
                        }
                }               
        }
}

[1] [1]
關鍵字:單片機  八路搶答器  按鍵檢測 引用地址:基于單片機的精簡八路搶答器

上一篇:單片機T0方式2實現簡單時鐘
下一篇:單片機控制直流電機程序

推薦閱讀最新更新時間:2025-03-25 02:22

【GD32 MCU 入門教程】GD32 MCU 常見外設介紹(11)PMU 模塊介紹
11.1.PMU 簡介 PMU即電源管理單元,它有三個電源域,包括VDD/VDDA域、1.1V/1.2V域和備份域。電源管理單元在常規芯片提供了三種省電模式,包括睡眠模式、深度睡眠模式和待機模式;在低功耗芯片中,電源管理單元提供了十種省電模式,包括運行模式,運行模式 1,運行模式 2,睡眠模式,睡眠模式 1,睡眠模式 2,深度睡眠模式,深度睡眠模式 1,深度睡眠模式 2 和待機模式。這些模式能減少電源能耗,且使得應用程序可以在CPU運行時間要求、速度和功耗的相互沖突中獲得最佳折衷。 11.2.PMU 功能 三個電源域:備份域、 VDD/VDDA域和1.1V/1.2V電源域; 三種省電模式(常規芯片):睡眠模式、深度睡眠模式和待
[單片機]
【GD32 <font color='red'>MCU</font> 入門教程】GD32 <font color='red'>MCU</font> 常見外設介紹(11)PMU 模塊介紹
STM32單片機有哪幾種常見的開發環境?
STM32單片機是一款廣泛應用于嵌入式系統開發的單片機,針對其開發,有以下幾種常見的方式: STM32單片機有哪幾種常見的開發環境? Keil MDK是一款廣泛使用的單片機集成開發環境,支持多種單片機系列,包括STM32系列。它提供了強大的編輯、編譯、調試和仿真工具,適合于嵌入式系統的開發。Keil MDK支持使用C語言和匯編語言進行開發,同時也提供了豐富的庫函數和示例代碼。 STM32CubeIDE是STMicroelectronics官方推出的一款集成開發環境(IDE),專門用于STM32系列單片機的開發。它基于Eclipse平臺,集成了STM32CubeMX配置工具和STM32Cube HAL庫,提供了豐富的功能
[單片機]
STM32<font color='red'>單片機</font>有哪幾種常見的開發環境?
基于STM32單片機的控制步進電機實驗
一、實驗原理(以28BYJ48步進電機為例)和51控制步進電機原理一致 1、五線四相步進電機,不同線圈得電會讓步進電機的轉子轉動一個角度,按一定規律給不同的線圈通電,就可以讓步進電機連續轉動,下表就是步進電機和拆解后的圖片,以及四根線通電的順序。 注:總共五條線,一個是VCC,剩下四條分別接上ABCD相。 2、每走一個位置,都要給一定的延時,不然還沒等轉子到位,下一個脈沖就進來了,肯定會引起錯誤,導致電機堵轉、異常震動。 3、通過改變延時的時間,就可以控制電機的轉速,不能太慢,也不要太快,不斷調試到合理范圍就行,轉向用了一個枚舉類型,控制轉向。 4、單片機IO口和電機四條線連接時,一定不能錯誤,要按照順序相連接。 5、調換
[單片機]
基于STM32<font color='red'>單片機</font>的控制步進電機實驗
DS1302時鐘+單片機+普中+江科大自化協
1、現象: 2、參考程序 2.1 主程序 #include REGX52.H #include LCD1602.H #include DS1302.H void main() { LCD1602_Init(); DS1302_Init(); LCD1602_ShowString(1,1, - - ); //靜態字符初始化顯示 LCD1602_ShowString(2,1, : : ); DS1302_SetTime( ); //設置時間 while(1) { DS1302_ReadTime( ); //讀取時間 L
[單片機]
DS1302時鐘+<font color='red'>單片機</font>+普中+江科大自化協
單片機的內存映射圖解析
一、如何控制單片機? 單片機的內存映射圖解析 這里以STM32F429芯片為例,講解下單片機芯片內存映射圖。從此圖中可以看到芯片的外設被分配了512M的空間,然而真正的外設其實沒有使用到512M的內存空間。 然后我們操作外設時,只需要操作它對應的內存地址即可。更加詳細的外設內存地址,可以參考芯片的用戶手冊(不是數據手冊)的Memory map章節。 因為單片機是將外設映射到內存地址上,所以我們可以像操作內存一樣來操作外設(寫/讀)。 我們在操作內存時是通過地址來進行操作的,由于單片機已經將外設與內存進行了映射,所以我們在操作單片機外設時只需要操作外設映射的內存地址就行。 內存如何操作? 在C語言中操作內存,我們可以用指
[單片機]
<font color='red'>單片機</font>的內存映射圖解析
使用DFU方案實現STM32單片機的高級開發
什么是 DFU DFU全稱為Device Firmware update,是ST官方推出的一個通過USB接口進行IAP升級的方案,同串口ISP一樣,他們都集成在了芯片內部的Bootloader區段,可以通過配置boot引腳來啟動。(具體可參照ST文檔:AN2606)。不過內置DFU的芯片大部分型號都比較新,如果你用的型號沒有內置DFU程序,沒關系我們也可以通過CubeMX來快速生成和移植一個DFU功能程序到你的Flash中來使用。 DFU方案完整的組件包括單片機DFU Demo代碼、PC端升級程序、PC端Demo代碼以及相關資料手冊等。通過使用DFU方案,我們可以快速的集成升級功能到開發的產品中,同時還能夠快速的開發與之配套的
[單片機]
使用DFU方案實現STM32<font color='red'>單片機</font>的高級開發
STM32單片機實現Bootloader跳轉的關鍵步驟
本期話題: 現在越來越多的嵌入式設備支持遠程自動升級,不需要再借助下載器。這樣對于設備的維護非常方便。 當然若使設備支持遠程升級,需要編寫支持升級的程序代碼,可以稱之為 BootLoader。 也就是說,將設備的程序代碼分為兩部分:BootLoader 和 APP。 BootLoader 負責升級 APP 以及引導APP運行。APP 負責實現設備的業務處理功能,也就是設備的核心功能代碼。 對于Cortex-M 系列的單片機來說,若要實現 BootLoader 安全跳轉到 APP,需要進行一些配置。 本文就以 STM32 單片機為例,來聊一聊實現 BootLoader 跳轉的關鍵配置步驟。 聊一聊: 在程序開發設計階段,要根據具
[單片機]
STM32<font color='red'>單片機</font>實現Bootloader跳轉的關鍵步驟
基于STM32單片機SPWM逆變電源設計
利用晶閘管電路把直流電轉變成交流電,這種對應于整流的逆向過程,定義為逆變。例如:應用晶閘管的電力機車,當下坡時使直流電動機作為發電機制動運行,機車的位能轉變成電能,反送到交流電網中去。又如運轉著的直流電動機,要使它迅速制動,也可讓電動機作發電機運行,把電動機的動能轉變為電能,反送到電網中去。 1、基于STM32單片機SPWM逆變電源設計 功能描述: 單片機采用: STM32單片機(型號:STM32F030F4P6) 輸出:正弦波 頻率:可調; 幅值:可調; SPWM逆變原理:單片機SPWM驅動H橋+后級濾波; 調節方式:頻率加按鍵、頻率減按鍵、幅值加按鍵、幅值減按鍵; 頻率調節范圍:10hz、20hz、30hz、40hz、50
[單片機]
小廣播
設計資源 培訓 開發板 精華推薦

最新單片機文章
何立民專欄 單片機及嵌入式寶典

北京航空航天大學教授,20余年來致力于單片機與嵌入式系統推廣工作。

 
EEWorld訂閱號

 
EEWorld服務號

 
汽車開發圈

 
機器人開發圈

電子工程世界版權所有 京B2-20211791 京ICP備10001474號-1 電信業務審批[2006]字第258號函 京公網安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 衡南县| 南投县| 吉林省| 荔波县| 乌苏市| 德化县| 内黄县| 金山区| 民勤县| 奇台县| 交城县| 绥芬河市| 彭泽县| 河曲县| 济南市| 静海县| 安国市| 航空| 肃宁县| 南投市| 喜德县| 绥宁县| 平舆县| 隆德县| 民权县| 德令哈市| 嘉鱼县| 河津市| 合江县| 乌审旗| 内丘县| 永顺县| 深水埗区| 通化县| 阿拉善右旗| 慈利县| 九江市| 阿鲁科尔沁旗| 南城县| 大方县| 乡城县|