日韩一区二区三区精品,欧美疯狂xxxxbbbb牲交,热99re久久免费视精品频,人妻互换 综合,欧美激情肉欲高潮视频

歷史上的今天

今天是:2025年07月26日(星期六)

2021年07月26日 | 51單片機(jī)學(xué)習(xí)筆記【二】——按鍵實(shí)驗(yàn)

發(fā)布者:HarmoniousCharm 來(lái)源: eefocus關(guān)鍵字:51單片機(jī)  按鍵實(shí)驗(yàn)  消抖 手機(jī)看文章 掃描二維碼
隨時(shí)隨地手機(jī)看文章

一.獨(dú)立按鍵實(shí)驗(yàn)

1.電路原理圖

獨(dú)立按鍵

2.說(shuō)明:使用排線連接JP10的和JP12,JP8連接JP5。本實(shí)驗(yàn)通過(guò)八個(gè)獨(dú)立按鍵控制八個(gè)LED小燈。按鍵時(shí)會(huì)抖動(dòng),所以要消抖。


3.消抖檢測(cè)

先給按鍵對(duì)應(yīng)的I/O口置1;

判斷I/O口是否為1;

若是1,則說(shuō)明按鍵按下,若是0,則按鍵沒(méi)有按下;


4.源代碼如下:

/***********************************************

   > File Name: 獨(dú)立按鍵實(shí)驗(yàn)

   > Author: pengshp

   > Mail: pengshp3@outlook.com

   > Date: 2015年 7 月 16 日

*************************************************/

#include      //此文件中定義了51的一些特殊功能寄存器

#include

//--定義要使用的IO口--//

#define  GPIO_KEY P1           //獨(dú)立鍵盤(pán)用P1口

#define  GPIO_LED P0           //led使用P0口


void Delay10ms(unsigned int c); //延時(shí)10ms

unsigned char Key_Scan();

void main()

{

    unsigned char ledValue, keyNum;

    ledValue = 0x01;

    while (1)

    {   

        keyNum = Key_Scan();  //掃描鍵盤(pán)

        switch (keyNum)

        {

            case(0xFE) :      //返回按鍵K1的數(shù)據(jù)

                ledValue = 0x01;

                break;

            case(0xFD) :      //返回按鍵K2的數(shù)據(jù)

                ledValue = 0x02;

                break;

            case(0xFB) :      //返回按鍵K3的數(shù)據(jù)

                ledValue = 0x04;

                break;

            case(0xF7) :      //返回按鍵K4的數(shù)據(jù)

                ledValue = 0x08;

                break;

            case(0xEF) :      //返回按鍵K5的數(shù)據(jù)

                ledValue = 0x10;

                break;

            case(0xDF) :      //返回按鍵K6的數(shù)據(jù)

                ledValue = 0x20;

                break;

            case(0xBF) :      //返回按鍵K7的數(shù)據(jù)

                ledValue = 0x40;

                break;

            case(0x7F) :      //返回按鍵K8的數(shù)據(jù)

                ledValue = 0x80;

                break;

            default:

                break;

        }

        GPIO_LED = ledValue;  //點(diǎn)亮LED燈

    }               

}


unsigned char Key_Scan()   //掃描鍵盤(pán)

{

    unsigned char keyValue = 0 , i; //保存鍵值

    //--檢測(cè)按鍵1--//

    if (GPIO_KEY != 0xFF)       //檢測(cè)按鍵K1是否按下

    {

        Delay10ms(1);           //消除抖動(dòng)

        if (GPIO_KEY != 0xFF)   //再次檢測(cè)按鍵是否按下

        {

            keyValue = GPIO_KEY;

            i = 0;

            while ((i<50) && (GPIO_KEY != 0xFF))     //檢測(cè)按鍵是否松開(kāi)

            {

                Delay10ms(1);

                i++;

            }

        }

    }

    return keyValue;   //將讀取到鍵值的值返回

}

void Delay10ms(unsigned int c)   //誤差 0us

{

    unsigned char a, b;

    for (;c>0;c--)

    {

        for (b=38;b>0;b--)

        {

            for (a=130;a>0;a--);

        }     

    }       

}


二.矩陣鍵盤(pán)實(shí)驗(yàn)

1.電路原理圖

矩陣鍵盤(pán)

2.矩陣鍵盤(pán)原理:矩陣鍵盤(pán)一端接行線,一端接列線,行線控制高四位,列線控制低四位;每個(gè)按鍵位于行線和列線的交叉點(diǎn)。


3.矩陣鍵盤(pán)掃描

(1).逐行掃描

高四位輪流輸出低電平,當(dāng)?shù)退奈唤邮艿臄?shù)據(jù)不全為0時(shí),則按鍵按下,并可判斷哪個(gè)按鍵按下。


(2).行列掃描

高四位全部輸出低電平,低四位全部輸出高電平,當(dāng)接受的數(shù)據(jù)低四位不全為高電平時(shí),說(shuō)明有按鍵按下;然后反過(guò)來(lái),高四位輸出高電平,低四位輸出低電平,根據(jù)接收到的高四位的值來(lái)判斷哪一行有按鍵按下。


4.說(shuō)明:可通過(guò)按下按鍵并在液晶屏上顯示相應(yīng)的鍵值。但較為復(fù)雜,液晶屏后面介紹。接線為JP4接JP8(P1),JP10接JP12,并將JP165斷開(kāi)。


5.程序源代碼

/**************************************

  > File Name: 矩陣鍵盤(pán)實(shí)驗(yàn)

  > Author: pengshp

  > Mail: pengshp3@outlook.com

  > Date: 2015年 7 月 16 日

***************************************/

#include

#define uchar unsigned char

#define GPIO_DIG P0

#define GPIO_KEY P1


uchar code DIG_CODE[17]={0x3f,0x06,0x5b,0x4f,

                         0x66,0x6d,0x7d,0x07,

                         0x7f,0x6f,0x77,0x7c,

                         0x39,0x5e,0x79,0x71};

uchar KeyValue;

void Delay10ms();    //延時(shí)10ms

void KeyDown();      //檢測(cè)按鍵函數(shù)


void main(void)

{

    while(1)

    {

        KeyDown();

        GPIO_DIG=~DIG_CODE[KeyValue];

    }               

}


void KeyDown()

{

    char a=0;

    GPIO_KEY=0x0f;            //0000 1111 高四位全為0,低四位為1

    if(GPIO_KEY!=0x0f)        //讀取按鍵是否按下

    {

        Delay10ms();          //延時(shí)10ms進(jìn)行消抖

        if(GPIO_KEY!=0x0f)    //再次檢測(cè)鍵盤(pán)是否按下

        {

            //測(cè)試列

            GPIO_KEY=0X0F;

            switch(GPIO_KEY)

            {

                case(0X07): KeyValue=0;break;

                case(0X0b): KeyValue=1;break;

                case(0X0d): KeyValue=2;break;

                case(0X0e): KeyValue=3;break;

            }

            //測(cè)試行

            GPIO_KEY=0XF0;

            switch(GPIO_KEY)

            {

                case(0X70): KeyValue=KeyValue;break;

                case(0Xb0): KeyValue=KeyValue+4;break;

                case(0Xd0): KeyValue=KeyValue+8;break;

                case(0Xe0): KeyValue=KeyValue+12;break;

            }

            while((a<50)&&(GPIO_KEY!=0xf0))  //檢測(cè)按鍵松手檢測(cè)

            {

                Delay10ms();                 //延時(shí)處理

                a++;

            }

        }

    }

}


void Delay10ms()   //誤差 0us

{

    unsigned char a,b,c;

    for(c=1;c>0;c--)

        for(b=38;b>0;b--)

            for(a=130;a>0;a--);

}

關(guān)鍵字:51單片機(jī)  按鍵實(shí)驗(yàn)  消抖 引用地址:51單片機(jī)學(xué)習(xí)筆記【二】——按鍵實(shí)驗(yàn)

上一篇:51單片機(jī)學(xué)習(xí)筆記【0】——基礎(chǔ)知識(shí)
下一篇:51單片機(jī)學(xué)習(xí)筆記【一】——LED燈實(shí)驗(yàn)

推薦閱讀

2018年初,智齒科技第二代智能客服機(jī)器人上線,相比第一代信息式機(jī)器人,第二代智能客服機(jī)器人擁有更高的解決問(wèn)題、任務(wù)執(zhí)行能力,是技術(shù)能力、產(chǎn)品化方面的更高的升級(jí)。 本月中,第二代智能客服機(jī)器人在原有基礎(chǔ)上再次完成了迭代更新,本次升級(jí)繼續(xù)圍繞“問(wèn)題解決”能力進(jìn)行,以更高效、更直接的方式解決客戶問(wèn)題,使第二代客服機(jī)器人可以獨(dú)當(dāng)一面,解...
據(jù)環(huán)球網(wǎng)報(bào)道,在中國(guó)珠海等地設(shè)有工廠的美國(guó)知名上市代工企業(yè)“偉創(chuàng)力”,曾在美國(guó)政府將中國(guó)的華為公司列入“黑名單”后,私自扣押了華為高達(dá)7億元人民幣的物料和設(shè)備。然而,偉創(chuàng)力并沒(méi)有在華為前來(lái)索要這些物料和設(shè)備時(shí)進(jìn)行歸還,反而是持續(xù)將華為的物資私自扣押了1個(gè)多月之久,給華為造成了嚴(yán)重的損失。私自扣下7億多元的華為物資,拒不歸還此前,國(guó)...
  在全球工業(yè)革命、技術(shù)創(chuàng)新大背景環(huán)境影響下,我國(guó)機(jī)器人產(chǎn)業(yè)得以蓬勃發(fā)展,工業(yè)機(jī)器人應(yīng)用空間進(jìn)一步擴(kuò)大,服務(wù)機(jī)器人產(chǎn)品百花齊放,特種機(jī)器人智能化技術(shù)水平也在不斷提升。同時(shí),在國(guó)家相關(guān)政策引導(dǎo)下,機(jī)器人、機(jī)器人用芯片、機(jī)器人用等產(chǎn)業(yè)園區(qū)遍地開(kāi)花,整個(gè)機(jī)器人研發(fā)熱度居高不下。   然而,中國(guó)機(jī)器人產(chǎn)業(yè)70%以上的市場(chǎng)份額已經(jīng)被美國(guó)ABB...
動(dòng)力鋰電池是以鋰離子電池為材料的一種高能量密度電池的、能夠儲(chǔ)存電能并可再充電的、為汽車(chē)或電動(dòng)工具供應(yīng)動(dòng)力的裝置。近年來(lái),在中國(guó)、歐洲、日韓、美國(guó)等主要國(guó)家大力發(fā)展全球新能源汽車(chē)的背景下,全球動(dòng)力鋰電池市場(chǎng)保持快速增長(zhǎng),全球動(dòng)力鋰電池行業(yè)技術(shù)也在不斷發(fā)展。本文帶你解讀全球動(dòng)力鋰電池行業(yè)技術(shù)發(fā)展全景。行業(yè)主要上市公司:寧德時(shí)代(3007...

史海拾趣

問(wèn)答坊 | AI 解惑

PCB多層板設(shè)計(jì)相關(guān)技術(shù)

PCB多層板設(shè)計(jì)相關(guān)技術(shù)對(duì)多層板的分層一直搞的不是很清楚,因這一板的電路比較重要,所以還是決定花點(diǎn)時(shí)間學(xué)習(xí)一下。網(wǎng)上搜了一些資料,整理如下。 多層板層設(shè)計(jì)的幾個(gè)原則: 1-每個(gè)信號(hào)層都與平面相鄰 2-信號(hào)層與與相鄰平面成對(duì) 3-電源層和 ...…

查看全部問(wèn)答∨

bootrom中的中斷如何調(diào)試?

在MPC8247的單板上調(diào)試BOOTROM,現(xiàn)在感覺(jué)不能產(chǎn)生中斷,如何調(diào)試中斷的驅(qū)動(dòng)?…

查看全部問(wèn)答∨

Windows mobile下EDB的問(wèn)題

{0,};         LPWSTR lpwszDBVol = L\"volume.d…

查看全部問(wèn)答∨

請(qǐng)問(wèn)誰(shuí)用C#寫(xiě)過(guò)在WinCE上讀GPIO(如GPG0上的ds18b20溫度計(jì))的值?

幫忙寫(xiě)下啊,實(shí)在不知道c#在compact framework上怎么實(shí)現(xiàn)??!…

查看全部問(wèn)答∨

~~~wince5.0下怎樣實(shí)現(xiàn)類(lèi)似的鼠標(biāo)鉤子函數(shù)的?

       如題;    請(qǐng)問(wèn)各位大俠:聽(tīng)說(shuō)WINCE下沒(méi)有支持鼠標(biāo)的鉤子函數(shù),而我先實(shí)現(xiàn)攔截鼠標(biāo)(即光筆)的輸入信息,以此來(lái)屏蔽光筆的 點(diǎn)擊功能,有哪些好方案呢?    另外我在PC機(jī)上可以很容易實(shí)現(xiàn)WIN32 ...…

查看全部問(wèn)答∨

【MSP430共享】在MSP430F1611上實(shí)現(xiàn)周期圖譜分析及校正

基于 F F T的周期圖譜分析方法可以有效地從含有噪聲的信號(hào)中提取有用信息; 但是 , 由于低功耗單片機(jī)的速度和 內(nèi)存有 限, 所 以無(wú)法 實(shí)時(shí)地 完成 F F T運(yùn) 算 。為此 , 我們 采 用匯編語(yǔ) 言編制 F F T程 序。采 用定點(diǎn)運(yùn)算來(lái)減 少運(yùn)算量和存儲(chǔ)量 ...…

查看全部問(wèn)答∨

1000重金求大神幫忙pic的畢設(shè)

是個(gè)boost為主電路的充電電路, 需要采集boost電路中電壓模擬量輸入單片機(jī)(pic單片機(jī)) 單片機(jī)輸出PWM波 輸入的電壓模擬量控制PWM的占空比 具體加 Q742986432 詳談 …

查看全部問(wèn)答∨
小廣播
設(shè)計(jì)資源 培訓(xùn) 開(kāi)發(fā)板 精華推薦

最新單片機(jī)文章

 
EEWorld訂閱號(hào)

 
EEWorld服務(wù)號(hào)

 
汽車(chē)開(kāi)發(fā)圈

 
機(jī)器人開(kāi)發(fā)圈

電子工程世界版權(quán)所有 京ICP證060456號(hào) 京ICP備10001474號(hào)-1 電信業(yè)務(wù)審批[2006]字第258號(hào)函 京公網(wǎng)安備 11010802033920號(hào) Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved