在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

單片機(jī)獨(dú)立按鍵與矩陣鍵盤實(shí)現(xiàn)原理

CHANBAEK ? 來源:電子開發(fā)之家 ? 作者:小樹 ? 2023-10-31 15:56 ? 次閱讀

1獨(dú)立按鍵

圖片
獨(dú)立按鍵模塊位置示意圖

硬件連接原理:

圖片
圖1.2獨(dú)立按鍵原理圖

把對應(yīng)的端口賦值高電平,即“1”,按鍵按下,端口被拉低至低電平,即“0”,通過檢測該端口的電平即可判斷按鍵是否按下。

去抖分析:

按鍵是機(jī)械器件,按下或者松開時(shí)有固定的機(jī)械抖動(dòng),抖動(dòng)圖如下:

圖片
圖1.3按鍵抖動(dòng)示意圖

上圖看出按鍵按下和松開的瞬間出現(xiàn)機(jī)械抖動(dòng),這個(gè)抖動(dòng)時(shí)間雖然很短,一般10~15ms,不同按鍵抖動(dòng)不同,但對應(yīng)單片機(jī)來說,很輕松就能檢測到,單片機(jī)是uS 級別。

但這個(gè)結(jié)果并不是我們需要的,實(shí)際上只進(jìn)行一次按鍵操作,但有可能執(zhí)行了多次按鍵結(jié)果,這就是抖動(dòng)造成的,所以大多數(shù)產(chǎn)品實(shí)際使用中都使用了按鍵去抖功能。

按鍵去抖分為硬件去抖和軟件去抖,硬件去抖最簡單的就是按鍵2端并聯(lián)電容,容量根據(jù)實(shí)驗(yàn)而定。軟件去抖使用方便不增加硬件成本,容易調(diào)試,所以現(xiàn)在大都使用軟件去抖。

軟件去抖原理:

1、檢測到按鍵按下后進(jìn)行10~15ms 延時(shí),用于跳過這個(gè)抖動(dòng)區(qū)域;

2、延時(shí)后再檢測按鍵狀態(tài),如果沒有按下表明是抖動(dòng)或者干擾造成,如果仍舊按下,可以

認(rèn)為是真正的按下。并進(jìn)行對應(yīng)的操作。

3、同樣按鍵釋放后也要進(jìn)行去抖延時(shí),延時(shí)后檢測按鍵是否真正松開。

程序樣例中沒有使用按鍵釋放去抖程序,用戶可以自行添加。

多數(shù)時(shí)候按鍵需要在釋放時(shí)才起作用,像電腦鼠標(biāo)一樣,這個(gè)時(shí)候需要檢測按鍵是否釋放,如果沒有釋放則一直等待。

獨(dú)立按鍵控制LED

程序如下圖:

/*-----------------------------------------------
  名稱:獨(dú)立按鍵控制led
  內(nèi)容:按一次按鍵,led點(diǎn)亮,再按一次熄滅,以此循環(huán)
------------------------------------------------*/
#include< reg52.h > //包含頭文件,一般情況不需要改動(dòng),頭文件包含特殊功能寄存器的定義

sbit KEY=P1^1;  //定義按鍵輸入端口
sbit LED=P1^2;  //定義led輸出端口


void DelayUs2x(unsigned char t);//函數(shù)聲明
void DelayMs(unsigned char t);
/*------------------------------------------------
                    主函數(shù)
------------------------------------------------*/
void main (void)
{

KEY=1; //按鍵輸入端口電平置高
while (1)         //主循環(huán)
{
  if(!KEY)  //如果檢測到低電平,說明按鍵按下
    {
     DelayMs(10); //延時(shí)去抖,一般10-20ms
     if(!KEY)     //再次確認(rèn)按鍵是否按下,沒有按下則退出
      {
        while(!KEY);//如果確認(rèn)按下按鍵等待按鍵釋放,沒有釋放則一直等待
	 {
	    LED=!LED;//釋放則執(zhí)行需要的程序
	  }
	 }
    }
     //主循環(huán)中添加其他需要一直工作的程序
  }
}
/*------------------------------------------------
 uS延時(shí)函數(shù),含有輸入?yún)?shù) unsigned char t,無返回值
 unsigned char 是定義無符號字符變量,其值的范圍是
 0~255 這里使用晶振12M,精確延時(shí)請使用匯編,大致延時(shí)
 長度如下 T=tx2+5 uS
------------------------------------------------*/
void DelayUs2x(unsigned char t)
{
 while(--t);
}
/*------------------------------------------------
 mS延時(shí)函數(shù),含有輸入?yún)?shù) unsigned char t,無返回值
 unsigned char 是定義無符號字符變量,其值的范圍是
 0~255 這里使用晶振12M,精確延時(shí)請使用匯編
------------------------------------------------*/
void DelayMs(unsigned char t)
{
 while(t--)
 {	//大致延時(shí)1mS
     DelayUs2x(245);
	 DelayUs2x(245);
 }
}

圖1.4獨(dú)立按鍵程序

接線方式:

圖片

實(shí)驗(yàn)現(xiàn)象:按一次按鍵,led點(diǎn)亮,再按一次熄滅,以此循環(huán)。

2矩陣鍵盤

圖片
圖2.1矩陣鍵盤模塊示意圖

矩陣鍵盤反轉(zhuǎn)掃描:

圖片
圖2.2矩陣鍵盤硬件原理圖

通過八個(gè)IO口控制16個(gè)按鍵,節(jié)省IO口。

重點(diǎn)是弄清基本原理,結(jié)合鍵盤掃描程序代碼分析、理解。

1.矩陣鍵盤逐行掃描(逐行掃描思路簡單,但程序較長)

2.矩陣鍵盤反轉(zhuǎn)掃描(反轉(zhuǎn)掃描程序簡短,思路巧妙)

本節(jié)著重講矩陣鍵盤的反轉(zhuǎn)掃描,逐行掃描將在外部中斷部分

程序如下:

/*-----------------------------------------------
  名稱:矩陣鍵盤反轉(zhuǎn)掃描
------------------------------------------------*/
#include< reg52.h > //包含頭文件,一般情況不需要改動(dòng),頭文件包含特殊功能寄存器的定義

#define KeyPort P3
sbit dula=P2^1;
sbit wela=P2^0;
unsigned char code DuanMa[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};

void DelayUs2x(unsigned char t);//us級延時(shí)函數(shù)聲明
void DelayMs(unsigned char t); //ms級延時(shí)

unsigned char KeyScan(void);//鍵盤掃描
unsigned char KeyPro(void);
void display(unsigned char aa);
/*------------------------------------------------
                    主函數(shù)
------------------------------------------------*/
void main (void)
{
unsigned char num;
	dula=1;
	P1=0x00;
	dula=0;
	wela=1;
	P1=0x00;
	wela=0;
while (1)         //主循環(huán)
	{
		num=KeyPro();
	if(num!=0xff)
   {
		display(num);
	}
}
}
void display(unsigned char aa)
{
	dula=1;
	P1=DuanMa[aa];
	dula=0;		
}
/*------------------------------------------------
          按鍵掃描函數(shù),返回掃描鍵值
------------------------------------------------*/
unsigned char KeyScan(void)  //鍵盤掃描函數(shù),使用行列反轉(zhuǎn)掃描法
{
	unsigned char cord_h,cord_l;//行列值中間變量
	KeyPort=0x0f;            //列線輸出全為0
	cord_h=KeyPort&0x0f;     //讀入行線值
	if(cord_h!=0x0f)    //先檢測有無按鍵按下
	{
		DelayMs(10);        //去抖
		if((KeyPort&0x0f)!=0x0f)
	{
    cord_h=KeyPort&0x0f;  //讀入行線值
    KeyPort=cord_h|0xf0;  //輸出當(dāng)前列線值
    cord_l=KeyPort&0xf0;  //讀入列線值

    while((KeyPort&0xf0)!=0xf0);//等待松開并輸出
    return(cord_h+cord_l);//鍵盤最后組合碼值
   }
  }return(0xff);     //返回該值
}
/*------------------------------------------------
              按鍵值處理函數(shù),返回掃鍵值
------------------------------------------------*/
unsigned char KeyPro(void)
{
 switch(KeyScan())
 {
  case 0x7e:return 0;break;//0 按下相應(yīng)的鍵顯示相對應(yīng)的碼值
  case 0x7d:return 1;break;//1
  case 0x7b:return 2;break;//2
  case 0x77:return 3;break;//3
  case 0xbe:return 4;break;//4
  case 0xbd:return 5;break;//5
  case 0xbb:return 6;break;//6
  case 0xb7:return 7;break;//7
  case 0xde:return 8;break;//8
  case 0xdd:return 9;break;//9
  case 0xdb:return 10;break;//a
  case 0xd7:return 11;break;//b
  case 0xee:return 12;break;//c
  case 0xed:return 13;break;//d
  case 0xeb:return 14;break;//e
  case 0xe7:return 15;break;//f
  default:return 0xff;break;
 }
}
/*------------------------------------------------
 uS延時(shí)函數(shù),含有輸入?yún)?shù) unsigned char t,無返回值
 unsigned char 是定義無符號字符變量,其值的范圍是
 0~255 這里使用晶振12M,精確延時(shí)請使用匯編,大致延時(shí)
 長度如下 T=tx2+5 uS
------------------------------------------------*/
void DelayUs2x(unsigned char t)
{
 while(--t);
}
/*------------------------------------------------
 mS延時(shí)函數(shù),含有輸入?yún)?shù) unsigned char t,無返回值
 unsigned char 是定義無符號字符變量,其值的范圍是
 0~255 這里使用晶振12M,精確延時(shí)請使用匯編
------------------------------------------------*/
void DelayMs(unsigned char t)
{
 while(t--)
 {
     //大致延時(shí)1mS
     DelayUs2x(245);
	 DelayUs2x(245);
 }
}

矩陣鍵盤反轉(zhuǎn)掃描程序

接線方式:

圖片

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 原理圖
    +關(guān)注

    關(guān)注

    1322

    文章

    6414

    瀏覽量

    239411
  • 單片機(jī)
    +關(guān)注

    關(guān)注

    6064

    文章

    44934

    瀏覽量

    647552
  • 矩陣鍵盤
    +關(guān)注

    關(guān)注

    7

    文章

    207

    瀏覽量

    31984
  • 獨(dú)立按鍵
    +關(guān)注

    關(guān)注

    1

    文章

    45

    瀏覽量

    11792
收藏 人收藏

    評論

    相關(guān)推薦
    熱點(diǎn)推薦

    基于單片機(jī)矩陣鍵盤檢測案例

    /O端口資源,導(dǎo)致單片機(jī)與其它外部設(shè)備無法連接。在這種情況下,可以使用矩陣鍵盤實(shí)現(xiàn)多個(gè)按鍵單片機(jī)
    的頭像 發(fā)表于 10-31 14:35 ?1807次閱讀
    基于<b class='flag-5'>單片機(jī)</b>的<b class='flag-5'>矩陣</b><b class='flag-5'>鍵盤</b>檢測案例

    單片機(jī)獨(dú)立按鍵矩陣鍵盤概念及原理

    個(gè)按鍵。這樣鍵盤按鍵的個(gè)數(shù)就為4*4個(gè)。這種行列式鍵盤結(jié)構(gòu)能有效地提高單片機(jī)系統(tǒng)中I/O口的利用率。
    發(fā)表于 11-30 16:32

    51單片機(jī)鍵盤接口-獨(dú)立按鍵矩陣按鍵 精選資料分享

    51單片機(jī)鍵盤接口-獨(dú)立按鍵矩陣按鍵按鍵的分類鍵輸
    發(fā)表于 07-16 07:57

    請問怎么實(shí)現(xiàn)51單片機(jī)獨(dú)立按鍵矩陣按鍵

    請問怎么實(shí)現(xiàn)51單片機(jī)獨(dú)立按鍵矩陣按鍵
    發(fā)表于 08-30 06:17

    單片機(jī)獨(dú)立按鍵矩陣鍵盤的原理是什么?

    單片機(jī)獨(dú)立按鍵矩陣鍵盤的原理是什么?鍵盤的工作方式是什么?
    發(fā)表于 01-18 07:31

    矩陣鍵盤檢測獨(dú)立按鍵單片機(jī)連接

    4.2 矩陣鍵盤檢測獨(dú)立按鍵單片機(jī)連接時(shí),每個(gè)按鍵都需要
    發(fā)表于 02-22 06:14

    使用單片機(jī)C語言實(shí)現(xiàn)獨(dú)立按鍵檢測與矩陣鍵盤操作的資料和程序

    獨(dú)立按鍵的檢測和矩陣鍵盤操作。完成本文所需硬件:基于C51系列單片機(jī)的開發(fā)板(本文是基于STC12C5A60S2處理器的一款開發(fā)板),帶中文
    發(fā)表于 07-16 17:39 ?2次下載
    使用<b class='flag-5'>單片機(jī)</b>C語言<b class='flag-5'>實(shí)現(xiàn)</b><b class='flag-5'>獨(dú)立</b><b class='flag-5'>按鍵</b>檢測與<b class='flag-5'>矩陣</b><b class='flag-5'>鍵盤</b>操作的資料和程序

    單片機(jī)鍵盤檢測與應(yīng)用

    非編碼鍵盤通常又分為獨(dú)立鍵盤矩陣鍵盤兩大類。所謂獨(dú)立鍵盤
    的頭像 發(fā)表于 09-18 16:34 ?5647次閱讀

    51單片機(jī)矩陣鍵盤

    獨(dú)立鍵盤單片機(jī)連接時(shí),每一個(gè)按鍵都需要單片機(jī)的一個(gè)I/O口若某單片機(jī)系統(tǒng)需較多
    發(fā)表于 11-12 10:51 ?12次下載
    51<b class='flag-5'>單片機(jī)</b>之<b class='flag-5'>矩陣</b><b class='flag-5'>鍵盤</b>

    51單片機(jī)按鍵檢測--獨(dú)立按鍵矩陣鍵盤

    按鍵,每個(gè)按鍵對應(yīng)一個(gè)IO口,通過循環(huán)或者中斷去檢測,這種方法常用于按鍵個(gè)數(shù)較少得時(shí)候。如果按鍵的個(gè)數(shù)較多,每個(gè)按鍵都分配一個(gè)IO口,會(huì)占用
    發(fā)表于 11-12 11:06 ?17次下載
    51<b class='flag-5'>單片機(jī)</b><b class='flag-5'>按鍵</b>檢測--<b class='flag-5'>獨(dú)立</b><b class='flag-5'>按鍵</b>與<b class='flag-5'>矩陣</b><b class='flag-5'>鍵盤</b>

    51單片機(jī)鍵盤接口-獨(dú)立按鍵矩陣按鍵

    51單片機(jī)鍵盤接口-獨(dú)立按鍵矩陣按鍵按鍵的分類鍵輸
    發(fā)表于 11-12 12:36 ?13次下載
    51<b class='flag-5'>單片機(jī)</b><b class='flag-5'>鍵盤</b>接口-<b class='flag-5'>獨(dú)立</b><b class='flag-5'>按鍵</b>和<b class='flag-5'>矩陣</b><b class='flag-5'>按鍵</b>

    51單片機(jī)按鍵控制數(shù)碼管0~9_基于proteus的51單片機(jī)開發(fā)實(shí)例24-矩陣鍵盤(行列式鍵盤)...

    1. 基于proteus的51單片機(jī)開發(fā)實(shí)例24-矩陣鍵盤1.1. 實(shí)驗(yàn)?zāi)康膱D1 矩陣鍵盤電路本實(shí)例我們來學(xué)習(xí)
    發(fā)表于 11-23 16:36 ?12次下載
    51<b class='flag-5'>單片機(jī)</b><b class='flag-5'>按鍵</b>控制數(shù)碼管0~9_基于proteus的51<b class='flag-5'>單片機(jī)</b>開發(fā)實(shí)例24-<b class='flag-5'>矩陣</b><b class='flag-5'>鍵盤</b>(行列式<b class='flag-5'>鍵盤</b>)...

    單片機(jī)AT89C51--7.按鍵(獨(dú)立按鍵矩陣按鍵)

    單片機(jī)AT89C51--7.按鍵1.鍵盤類型1.1 編碼鍵盤1.2 非編碼鍵盤2.獨(dú)立
    發(fā)表于 11-25 14:51 ?14次下載
    <b class='flag-5'>單片機(jī)</b>AT89C51--7.<b class='flag-5'>按鍵</b>(<b class='flag-5'>獨(dú)立</b><b class='flag-5'>按鍵</b>,<b class='flag-5'>矩陣</b><b class='flag-5'>按鍵</b>)

    單片機(jī)編輯庫四之矩陣按鍵

    單片機(jī)編輯庫一之延時(shí)與led燈單片機(jī)編輯庫二之按鍵單片機(jī)編輯庫三之蜂鳴器單片機(jī)編輯庫四之矩陣
    發(fā)表于 12-31 19:37 ?12次下載
    <b class='flag-5'>單片機(jī)</b>編輯庫四之<b class='flag-5'>矩陣</b><b class='flag-5'>按鍵</b>

    單片機(jī)學(xué)習(xí)-矩陣按鍵

    目錄矩陣按鍵介紹檢測方法C51例程歡迎加QQ及郵件交流矩陣按鍵介紹 獨(dú)立鍵盤
    發(fā)表于 12-31 19:37 ?15次下載
    <b class='flag-5'>單片機(jī)</b>學(xué)習(xí)-<b class='flag-5'>矩陣</b><b class='flag-5'>按鍵</b>
    主站蜘蛛池模板: 久久成人综合 | 1024国产手机视频基地 | 色色色色色色色色色色色色色色 | 天天碰夜夜操 | 国产在线一区二区三区四区 | 夜夜综合网| 日本一区二区三区不卡在线看 | 天天色天天操天天射 | sese综合| 免费播放特黄特色毛片 | 国产午夜三区视频在线 | 五月天婷婷在线观看 | 国产吧在线 | 久久综合精品视频 | 无遮挡很爽很污很黄的网站w | 456成人免费高清视频 | 伊人网视频| 男女做性无遮挡免费视频 | 久久久久久久久久久9精品视频 | 又污又黄的网站 | 午夜免费福利片 | 操久在线 | 国产成人久视频免费 | 天天爱天天操天天干 | 亚洲色图21p | 狠狠狠色丁香婷婷综合激情 | 亚洲日本色图 | 午夜综合网 | 爱婷婷网站在线观看 | 国产成人精品系列在线观看 | 日本美女黄视频 | 免费四影虎ww4hu10 | 色男人的天堂 | 免费看黄在线 | 亚洲成人免费 | 理论片午夜 | 亚洲三级电影在线播放 | 午夜影院a | 特黄特色三级在线观看 | 久青草国产高清在线视频 | 一区二区三区网站在线免费线观看 |